Lines Matching refs:flags

205 	if (jump->flags & SLJIT_REWRITABLE_JUMP)
208 if (jump->flags & JUMP_ADDR)
211 SLJIT_ASSERT(jump->flags & JUMP_LABEL);
217 if (jump->flags & IS_CALL) {
219 jump->flags |= PATCH_CALL;
220 if (jump->flags & IS_MOVABLE) {
235 if (jump->flags & IS_COND)
238 if (jump->flags & IS_MOVABLE) {
241 jump->flags |= PATCH_B;
243 if (jump->flags & IS_COND) {
258 jump->flags |= PATCH_B;
259 if (jump->flags & IS_COND)
348 addr = (jump->flags & JUMP_LABEL) ? jump->u.label->addr : jump->u.target;
351 if (jump->flags & PATCH_CALL) {
357 if (jump->flags & PATCH_B) {
524 static sljit_si getput_arg_fast(struct sljit_compiler *compiler, sljit_si flags, sljit_si reg, sljit_si arg, sljit_sw argw)
528 if (!(flags & WRITE_BACK) || !(arg & REG_MASK)) {
532 if (SLJIT_UNLIKELY(flags & ARG_TEST))
534 FAIL_IF(push_inst(compiler, data_transfer_insts[flags & MEM_MASK]
535 | ((flags & MEM_MASK) <= GPR_REG ? D(reg) : DA(reg))
537 ((flags & MEM_MASK) <= GPR_REG && (flags & LOAD_DATA)) ? DR(reg) : MOVABLE_INS));
567 static sljit_si getput_arg(struct sljit_compiler *compiler, sljit_si flags, sljit_si reg, sljit_si arg, sljit_sw argw, sljit_si next_arg, sljit_sw next_argw)
592 else if ((flags & LOAD_DATA) && ((flags & MEM_MASK) <= GPR_REG) && reg != base && reg != OFFS_REG(arg))
613 else if ((flags & LOAD_DATA) && ((flags & MEM_MASK) <= GPR_REG) && reg != base)
621 dest = ((flags & MEM_MASK) <= GPR_REG ? D(reg) : DA(reg));
622 delay_slot = ((flags & MEM_MASK) <= GPR_REG && (flags & LOAD_DATA)) ? DR(reg) : MOVABLE_INS;
624 return push_inst(compiler, data_transfer_insts[flags & MEM_MASK] | dest | S1(arg2) | IMM(0), delay_slot);
625 if (!(flags & WRITE_BACK))
626 return push_inst(compiler, data_transfer_insts[flags & MEM_MASK] | dest | S1(base) | S2(arg2), delay_slot);
627 FAIL_IF(push_inst(compiler, data_transfer_insts[flags & MEM_MASK] | dest | S1(base) | S2(arg2), delay_slot));
631 static SLJIT_INLINE sljit_si emit_op_mem(struct sljit_compiler *compiler, sljit_si flags, sljit_si reg, sljit_si arg, sljit_sw argw)
633 if (getput_arg_fast(compiler, flags, reg, arg, argw))
637 return getput_arg(compiler, flags, reg, arg, argw, 0, 0);
640 static SLJIT_INLINE sljit_si emit_op_mem2(struct sljit_compiler *compiler, sljit_si flags, sljit_si reg, sljit_si arg1, sljit_sw arg1w, sljit_si arg2, sljit_sw arg2w)
642 if (getput_arg_fast(compiler, flags, reg, arg1, arg1w))
644 return getput_arg(compiler, flags, reg, arg1, arg1w, arg2, arg2w);
647 static sljit_si emit_op(struct sljit_compiler *compiler, sljit_si op, sljit_si flags,
661 if (!(flags & ALT_KEEP_CACHE)) {
672 flags |= REG_DEST;
676 else if ((dst & SLJIT_MEM) && !getput_arg_fast(compiler, flags | ARG_TEST, TMP_REG1, dst, dstw))
677 flags |= SLOW_DEST;
679 if (flags & IMM_OP) {
682 flags |= SRC2_IMM;
686 if (!(flags & SRC2_IMM) && (flags & CUMULATIVE_OP) && (src1 & SLJIT_IMM) && src1w) {
688 flags |= SRC2_IMM;
712 if (getput_arg_fast(compiler, flags | LOAD_DATA, TMP_REG1, src1, src1w))
715 flags |= SLOW_SRC1;
722 flags |= REG2_SOURCE;
723 if (!(flags & REG_DEST) && op >= SLJIT_MOV && op <= SLJIT_MOVU_SI)
727 if (!(flags & SRC2_IMM)) {
740 if (getput_arg_fast(compiler, flags | LOAD_DATA, sugg_src2_r, src2, src2w))
743 flags |= SLOW_SRC2;
747 if ((flags & (SLOW_SRC1 | SLOW_SRC2)) == (SLOW_SRC1 | SLOW_SRC2)) {
750 FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG2, src2, src2w, src1, src1w));
751 FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG1, src1, src1w, dst, dstw));
754 FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG1, src1, src1w, src2, src2w));
755 FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG2, src2, src2w, dst, dstw));
758 else if (flags & SLOW_SRC1)
759 FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, TMP_REG1, src1, src1w, dst, dstw));
760 else if (flags & SLOW_SRC2)
761 FAIL_IF(getput_arg(compiler, flags | LOAD_DATA, sugg_src2_r, src2, src2w, dst, dstw));
763 FAIL_IF(emit_single_op(compiler, op, flags, dst_r, src1_r, src2_r));
766 if (!(flags & SLOW_DEST)) {
767 getput_arg_fast(compiler, flags, dst_r, dst, dstw);
770 return getput_arg(compiler, flags, dst_r, dst, dstw, 0, 0);
821 sljit_si flags = GET_FLAGS(op) ? SET_FLAGS : 0;
832 return emit_op(compiler, SLJIT_MOV, flags | WORD_DATA, dst, dstw, TMP_REG1, 0, src, srcw);
835 return emit_op(compiler, SLJIT_MOV_UI, flags | INT_DATA, dst, dstw, TMP_REG1, 0, src, srcw);
838 return emit_op(compiler, SLJIT_MOV_SI, flags | INT_DATA | SIGNED_DATA, dst, dstw, TMP_REG1, 0, src, srcw);
841 return emit_op(compiler, SLJIT_MOV_UB, flags | BYTE_DATA, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_ub)srcw : srcw);
844 return emit_op(compiler, SLJIT_MOV_SB, flags | BYTE_DATA | SIGNED_DATA, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_sb)srcw : srcw);
847 return emit_op(compiler, SLJIT_MOV_UH, flags | HALF_DATA, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_uh)srcw : srcw);
850 return emit_op(compiler, SLJIT_MOV_SH, flags | HALF_DATA | SIGNED_DATA, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_sh)srcw : srcw);
854 return emit_op(compiler, SLJIT_MOV, flags | WORD_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, srcw);
857 return emit_op(compiler, SLJIT_MOV_UI, flags | INT_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, srcw);
860 return emit_op(compiler, SLJIT_MOV_SI, flags | INT_DATA | SIGNED_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, srcw);
863 return emit_op(compiler, SLJIT_MOV_UB, flags | BYTE_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_ub)srcw : srcw);
866 return emit_op(compiler, SLJIT_MOV_SB, flags | BYTE_DATA | SIGNED_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_sb)srcw : srcw);
869 return emit_op(compiler, SLJIT_MOV_UH, flags | HALF_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_uh)srcw : srcw);
872 return emit_op(compiler, SLJIT_MOV_SH, flags | HALF_DATA | SIGNED_DATA | WRITE_BACK, dst, dstw, TMP_REG1, 0, src, (src & SLJIT_IMM) ? (sljit_sh)srcw : srcw);
876 return emit_op(compiler, op, flags, dst, dstw, TMP_REG1, 0, src, srcw);
879 return emit_op(compiler, SLJIT_SUB, flags | IMM_OP, dst, dstw, SLJIT_IMM, 0, src, srcw);
890 sljit_si flags = GET_FLAGS(op) ? SET_FLAGS : 0;
906 return emit_op(compiler, op, flags | CUMULATIVE_OP | IMM_OP, dst, dstw, src1, src1w, src2, src2w);
910 return emit_op(compiler, op, flags | IMM_OP, dst, dstw, src1, src1w, src2, src2w);
921 return emit_op(compiler, op, flags | IMM_OP, dst, dstw, src1, src1w, src2, src2w);
1106 sljit_si dst_r, flags = 0;
1124 flags |= SLOW_SRC1;
1134 flags |= SLOW_SRC2;
1139 if ((flags & (SLOW_SRC1 | SLOW_SRC2)) == (SLOW_SRC1 | SLOW_SRC2)) {
1149 else if (flags & SLOW_SRC1)
1151 else if (flags & SLOW_SRC2)
1154 if (flags & SLOW_SRC1)
1156 if (flags & SLOW_SRC2)
1329 jump->flags |= IS_COND;
1331 jump->flags |= IS_MOVABLE;
1339 jump->flags |= IS_COND;
1341 jump->flags |= IS_MOVABLE;
1349 jump->flags |= IS_MOVABLE;
1351 jump->flags |= IS_CALL;
1379 jump->flags |= IS_MOVABLE;
1381 jump->flags |= IS_CALL;
1402 sljit_si reg, flags = (GET_FLAGS(op) ? SET_FLAGS : 0);
1433 return emit_op(compiler, op, flags | CUMULATIVE_OP | IMM_OP | ALT_KEEP_CACHE, dst, dstw, src, srcw, TMP_REG2, 0);