Lines Matching refs:compiler

286 #define INC_SIZE(s)			(*inst++ = U8(s), compiler->size += (s))
583 SLJIT_API_FUNC_ATTRIBUTE void* sljit_generate_code(struct sljit_compiler *compiler) in sljit_generate_code() argument
600 CHECK_PTR(check_sljit_generate_code(compiler)); in sljit_generate_code()
601 reverse_buf(compiler); in sljit_generate_code()
604 code = (sljit_u8*)SLJIT_MALLOC_EXEC(compiler->size, compiler->exec_allocator_data); in sljit_generate_code()
606 buf = compiler->buf; in sljit_generate_code()
609 label = compiler->labels; in sljit_generate_code()
610 jump = compiler->jumps; in sljit_generate_code()
611 const_ = compiler->consts; in sljit_generate_code()
612 put_label = compiler->put_labels; in sljit_generate_code()
671 SLJIT_ASSERT(code_ptr <= code + compiler->size); in sljit_generate_code()
673 jump = compiler->jumps; in sljit_generate_code()
707 put_label = compiler->put_labels; in sljit_generate_code()
725 compiler->error = SLJIT_ERR_COMPILED; in sljit_generate_code()
726 compiler->executable_offset = executable_offset; in sljit_generate_code()
727 compiler->executable_size = (sljit_uw)(code_ptr - code); in sljit_generate_code()
811 inst = emit_x86_instruction(compiler, 1 | EX86_BIN_INS, SLJIT_IMM, immw, arg, argw); \
820 if (IS_HALFWORD(immw) || compiler->mode32) { \
824 FAIL_IF(emit_load_imm64(compiler, (arg == TMP_REG1) ? TMP_REG2 : TMP_REG1, immw)); \
825 … inst = emit_x86_instruction(compiler, 1, (arg == TMP_REG1) ? TMP_REG2 : TMP_REG1, 0, arg, argw); \
832 FAIL_IF(emit_do_imm32(compiler, (!compiler->mode32) ? REX_W : 0, (op_eax_imm), immw))
840 FAIL_IF(emit_do_imm(compiler, (op_eax_imm), immw))
844 static sljit_s32 emit_mov(struct sljit_compiler *compiler,
848 #define EMIT_MOV(compiler, dst, dstw, src, srcw) \ argument
849 FAIL_IF(emit_mov(compiler, dst, dstw, src, srcw));
851 static SLJIT_INLINE sljit_s32 emit_sse2_store(struct sljit_compiler *compiler,
854 static SLJIT_INLINE sljit_s32 emit_sse2_load(struct sljit_compiler *compiler,
857 static sljit_s32 emit_cmp_binary(struct sljit_compiler *compiler,
861 static SLJIT_INLINE sljit_s32 emit_endbranch(struct sljit_compiler *compiler) in emit_endbranch() argument
866 inst = (sljit_u8*)ensure_buf(compiler, 1 + 4); in emit_endbranch()
878 SLJIT_UNUSED_ARG(compiler); in emit_endbranch()
885 static SLJIT_INLINE sljit_s32 emit_rdssp(struct sljit_compiler *compiler, sljit_s32 reg) in emit_rdssp() argument
896 inst = (sljit_u8*)ensure_buf(compiler, 1 + size); in emit_rdssp()
909 static SLJIT_INLINE sljit_s32 emit_incssp(struct sljit_compiler *compiler, sljit_s32 reg) in emit_incssp() argument
920 inst = (sljit_u8*)ensure_buf(compiler, 1 + size); in emit_incssp()
944 static SLJIT_INLINE sljit_s32 adjust_shadow_stack(struct sljit_compiler *compiler, in adjust_shadow_stack() argument
951 sljit_uw size_before_rdssp_inst = compiler->size; in adjust_shadow_stack()
954 FAIL_IF(emit_rdssp(compiler, TMP_REG1)); in adjust_shadow_stack()
961 inst = (sljit_u8*)ensure_buf(compiler, 1 + 3); in adjust_shadow_stack()
968 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_MEM1(TMP_REG1), 0); in adjust_shadow_stack()
972 FAIL_IF(emit_cmp_binary (compiler, TMP_REG1, 0, src, srcw)); in adjust_shadow_stack()
976 inst = (sljit_u8*)ensure_buf(compiler, 1 + 2); in adjust_shadow_stack()
980 size_jz_after_cmp_inst = compiler->size; in adjust_shadow_stack()
985 compiler->mode32 = 1; in adjust_shadow_stack()
988 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_IMM, 1); in adjust_shadow_stack()
991 FAIL_IF(emit_incssp(compiler, TMP_REG1)); in adjust_shadow_stack()
994 inst = (sljit_u8*)ensure_buf(compiler, 1 + 2); in adjust_shadow_stack()
998 *inst = size_before_rdssp_inst - compiler->size; in adjust_shadow_stack()
1000 *jz_after_cmp_inst = compiler->size - size_jz_after_cmp_inst; in adjust_shadow_stack()
1002 SLJIT_UNUSED_ARG(compiler); in adjust_shadow_stack()
1015 static sljit_s32 emit_mov(struct sljit_compiler *compiler, in emit_mov() argument
1022 inst = emit_x86_instruction(compiler, 1, src, 0, dst, dstw); in emit_mov()
1030 return emit_do_imm(compiler, MOV_r_i32 | reg_map[dst], srcw); in emit_mov()
1032 if (!compiler->mode32) { in emit_mov()
1034 return emit_load_imm64(compiler, dst, srcw); in emit_mov()
1037 …return emit_do_imm32(compiler, (reg_map[dst] >= 8) ? REX_B : 0, U8(MOV_r_i32 | reg_lmap[dst]), src… in emit_mov()
1041 if (!compiler->mode32 && NOT_HALFWORD(srcw)) { in emit_mov()
1044 FAIL_IF(emit_load_imm64(compiler, TMP_REG1, srcw)); in emit_mov()
1045 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, dst, dstw); in emit_mov()
1051 inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, srcw, dst, dstw); in emit_mov()
1057 inst = emit_x86_instruction(compiler, 1, dst, 0, src, srcw); in emit_mov()
1065 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, src, srcw); in emit_mov()
1068 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, dst, dstw); in emit_mov()
1074 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op0(struct sljit_compiler *compiler, sljit_s32 op) in sljit_emit_op0() argument
1082 CHECK(check_sljit_emit_op0(compiler, op)); in sljit_emit_op0()
1086 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1); in sljit_emit_op0()
1092 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1); in sljit_emit_op0()
1115 compiler->mode32 = op & SLJIT_32; in sljit_emit_op0()
1122 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_R1, 0); in sljit_emit_op0()
1123 inst = emit_x86_instruction(compiler, 1, SLJIT_R1, 0, SLJIT_R1, 0); in sljit_emit_op0()
1125 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, TMP_REG1, 0); in sljit_emit_op0()
1133 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_R1, 0); in sljit_emit_op0()
1137 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1); in sljit_emit_op0()
1142 if (compiler->mode32) { in sljit_emit_op0()
1143 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1); in sljit_emit_op0()
1148 inst = (sljit_u8*)ensure_buf(compiler, 1 + 2); in sljit_emit_op0()
1158 inst = (sljit_u8*)ensure_buf(compiler, 1 + 2); in sljit_emit_op0()
1165 size = (!compiler->mode32 || op >= SLJIT_DIVMOD_UW) ? 3 : 2; in sljit_emit_op0()
1167 size = (!compiler->mode32) ? 3 : 2; in sljit_emit_op0()
1169 inst = (sljit_u8*)ensure_buf(compiler, 1 + size); in sljit_emit_op0()
1173 if (!compiler->mode32) in sljit_emit_op0()
1180 if (!compiler->mode32) in sljit_emit_op0()
1204 EMIT_MOV(compiler, SLJIT_R1, 0, TMP_REG1, 0); in sljit_emit_op0()
1207 EMIT_MOV(compiler, SLJIT_R1, 0, TMP_REG1, 0); in sljit_emit_op0()
1211 return emit_endbranch(compiler); in sljit_emit_op0()
1213 return skip_frames_before_return(compiler); in sljit_emit_op0()
1221 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1); \
1227 static sljit_s32 emit_mov_byte(struct sljit_compiler *compiler, sljit_s32 sign, in emit_mov_byte() argument
1238 compiler->mode32 = 0; in emit_mov_byte()
1244 return emit_do_imm(compiler, MOV_r_i32 | reg_map[dst], srcw); in emit_mov_byte()
1246 inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, srcw, dst, 0); in emit_mov_byte()
1252 …inst = emit_x86_instruction(compiler, 1 | EX86_BYTE_ARG | EX86_NO_REXW, SLJIT_IMM, srcw, dst, dstw… in emit_mov_byte()
1264 EMIT_MOV(compiler, TMP_REG1, 0, src, 0); in emit_mov_byte()
1277 EMIT_MOV(compiler, dst, 0, src, 0); in emit_mov_byte()
1278 inst = emit_x86_instruction(compiler, 2, dst, 0, dst, 0); in emit_mov_byte()
1285 EMIT_MOV(compiler, dst, 0, src, 0); in emit_mov_byte()
1288 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, SLJIT_IMM, 24, dst, 0); in emit_mov_byte()
1292 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, SLJIT_IMM, 24, dst, 0); in emit_mov_byte()
1297 inst = emit_x86_instruction(compiler, 1 | EX86_BIN_INS, SLJIT_IMM, 0xff, dst, 0); in emit_mov_byte()
1307 inst = emit_x86_instruction(compiler, 2, dst_r, 0, src, srcw); in emit_mov_byte()
1336 inst = emit_x86_instruction(compiler, 1, work_r, 0, dst_r, 0); in emit_mov_byte()
1341 inst = emit_x86_instruction(compiler, 1, work_r, 0, dst, dstw); in emit_mov_byte()
1349 inst = emit_x86_instruction(compiler, 1, work_r, 0, dst_r, 0); in emit_mov_byte()
1355 inst = emit_x86_instruction(compiler, 1, dst_r, 0, dst, dstw); in emit_mov_byte()
1360 inst = emit_x86_instruction(compiler, 1 | EX86_REX | EX86_NO_REXW, dst_r, 0, dst, dstw); in emit_mov_byte()
1369 static sljit_s32 emit_prefetch(struct sljit_compiler *compiler, sljit_s32 op, in emit_prefetch() argument
1375 compiler->mode32 = 1; in emit_prefetch()
1378 inst = emit_x86_instruction(compiler, 2, 0, 0, src, srcw); in emit_prefetch()
1393 static sljit_s32 emit_mov_half(struct sljit_compiler *compiler, sljit_s32 sign, in emit_mov_half() argument
1401 compiler->mode32 = 0; in emit_mov_half()
1407 return emit_do_imm(compiler, MOV_r_i32 | reg_map[dst], srcw); in emit_mov_half()
1409 inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, srcw, dst, 0); in emit_mov_half()
1415 …inst = emit_x86_instruction(compiler, 1 | EX86_HALF_ARG | EX86_NO_REXW | EX86_PREF_66, SLJIT_IMM, … in emit_mov_half()
1426 inst = emit_x86_instruction(compiler, 2, dst_r, 0, src, srcw); in emit_mov_half()
1433 inst = emit_x86_instruction(compiler, 1 | EX86_NO_REXW | EX86_PREF_66, dst_r, 0, dst, dstw); in emit_mov_half()
1441 static sljit_s32 emit_unary(struct sljit_compiler *compiler, sljit_u8 opcode, in emit_unary() argument
1449 inst = emit_x86_instruction(compiler, 1, 0, 0, dst, dstw); in emit_unary()
1457 EMIT_MOV(compiler, dst, 0, src, srcw); in emit_unary()
1458 inst = emit_x86_instruction(compiler, 1, 0, 0, dst, 0); in emit_unary()
1465 EMIT_MOV(compiler, TMP_REG1, 0, src, srcw); in emit_unary()
1466 inst = emit_x86_instruction(compiler, 1, 0, 0, TMP_REG1, 0); in emit_unary()
1470 EMIT_MOV(compiler, dst, dstw, TMP_REG1, 0); in emit_unary()
1474 static sljit_s32 emit_not_with_flags(struct sljit_compiler *compiler, in emit_not_with_flags() argument
1481 EMIT_MOV(compiler, dst, 0, src, srcw); in emit_not_with_flags()
1482 inst = emit_x86_instruction(compiler, 1, 0, 0, dst, 0); in emit_not_with_flags()
1486 inst = emit_x86_instruction(compiler, 1, dst, 0, dst, 0); in emit_not_with_flags()
1492 EMIT_MOV(compiler, TMP_REG1, 0, src, srcw); in emit_not_with_flags()
1493 inst = emit_x86_instruction(compiler, 1, 0, 0, TMP_REG1, 0); in emit_not_with_flags()
1497 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, TMP_REG1, 0); in emit_not_with_flags()
1500 EMIT_MOV(compiler, dst, dstw, TMP_REG1, 0); in emit_not_with_flags()
1509 static sljit_s32 emit_clz_ctz(struct sljit_compiler *compiler, sljit_s32 is_clz, in emit_clz_ctz() argument
1524 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1); in emit_clz_ctz()
1529 inst = emit_x86_instruction(compiler, 2, dst_r, 0, src, srcw); in emit_clz_ctz()
1535 EMIT_MOV(compiler, dst, dstw, TMP_REG1, 0); in emit_clz_ctz()
1539 inst = emit_x86_instruction(compiler, 2, dst_r, 0, src, srcw); in emit_clz_ctz()
1549 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_IMM, max); in emit_clz_ctz()
1550 inst = emit_x86_instruction(compiler, 2, dst_r, 0, TMP_REG1, 0); in emit_clz_ctz()
1553 …inst = emit_x86_instruction(compiler, 2, dst_r, 0, SLJIT_MEM0(), is_clz ? (sljit_sw)&emit_clz_arg … in emit_clz_ctz()
1560 FAIL_IF(sljit_emit_cmov_generic(compiler, SLJIT_EQUAL, dst_r, SLJIT_IMM, max)); in emit_clz_ctz()
1563 inst = emit_x86_instruction(compiler, 1 | EX86_BIN_INS, SLJIT_IMM, 31, dst_r, 0); in emit_clz_ctz()
1569 max = compiler->mode32 ? (32 + 31) : (64 + 63); in emit_clz_ctz()
1571 max = compiler->mode32 ? 32 : 64; in emit_clz_ctz()
1574 EMIT_MOV(compiler, TMP_REG2, 0, SLJIT_IMM, max); in emit_clz_ctz()
1576 inst = emit_x86_instruction(compiler, 2, dst_r, 0, TMP_REG2, 0); in emit_clz_ctz()
1582 FAIL_IF(sljit_emit_cmov_generic(compiler, SLJIT_EQUAL, dst_r, SLJIT_IMM, max)); in emit_clz_ctz()
1585 inst = emit_x86_instruction(compiler, 1 | EX86_BIN_INS, SLJIT_IMM, max >> 1, dst_r, 0); in emit_clz_ctz()
1592 EMIT_MOV(compiler, dst, dstw, TMP_REG1, 0); in emit_clz_ctz()
1596 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op1(struct sljit_compiler *compiler, sljit_s32 op, in sljit_emit_op1() argument
1606 CHECK(check_sljit_emit_op1(compiler, op, dst, dstw, src, srcw)); in sljit_emit_op1()
1613 compiler->mode32 = op_flags & SLJIT_32; in sljit_emit_op1()
1620 compiler->mode32 = 0; in sljit_emit_op1()
1666 return emit_mov(compiler, dst, dstw, src, srcw); in sljit_emit_op1()
1685 EMIT_MOV(compiler, dst, dstw, src, srcw); in sljit_emit_op1()
1688 FAIL_IF(emit_mov_byte(compiler, 0, dst, dstw, src, srcw)); in sljit_emit_op1()
1691 FAIL_IF(emit_mov_byte(compiler, 1, dst, dstw, src, srcw)); in sljit_emit_op1()
1694 FAIL_IF(emit_mov_half(compiler, 0, dst, dstw, src, srcw)); in sljit_emit_op1()
1697 FAIL_IF(emit_mov_half(compiler, 1, dst, dstw, src, srcw)); in sljit_emit_op1()
1701 FAIL_IF(emit_mov_int(compiler, 0, dst, dstw, src, srcw)); in sljit_emit_op1()
1704 FAIL_IF(emit_mov_int(compiler, 1, dst, dstw, src, srcw)); in sljit_emit_op1()
1707 compiler->mode32 = 1; in sljit_emit_op1()
1708 EMIT_MOV(compiler, dst, dstw, src, srcw); in sljit_emit_op1()
1709 compiler->mode32 = 0; in sljit_emit_op1()
1716 return emit_mov(compiler, SLJIT_MEM1(SLJIT_SP), dstw, TMP_REG1, 0); in sljit_emit_op1()
1724 return emit_not_with_flags(compiler, dst, dstw, src, srcw); in sljit_emit_op1()
1725 return emit_unary(compiler, NOT_rm, dst, dstw, src, srcw); in sljit_emit_op1()
1729 return emit_clz_ctz(compiler, (op == SLJIT_CLZ), dst, dstw, src, srcw); in sljit_emit_op1()
1735 static sljit_s32 emit_cum_binary(struct sljit_compiler *compiler, argument
1750 …if ((dst == SLJIT_R0) && (src2w > 127 || src2w < -128) && (compiler->mode32 || IS_HALFWORD(src2w))…
1761 inst = emit_x86_instruction(compiler, 1, dst, dstw, src2, src2w);
1767 inst = emit_x86_instruction(compiler, 1, src2, src2w, dst, dstw);
1772 EMIT_MOV(compiler, TMP_REG1, 0, src2, src2w);
1773 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, dst, dstw);
1784 …if ((dst == SLJIT_R0) && (src1w > 127 || src1w < -128) && (compiler->mode32 || IS_HALFWORD(src1w))…
1795 inst = emit_x86_instruction(compiler, 1, dst, dstw, src1, src1w);
1800 inst = emit_x86_instruction(compiler, 1, src1, src1w, dst, dstw);
1805 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
1806 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, dst, dstw);
1815 EMIT_MOV(compiler, dst, 0, src1, src1w);
1820 inst = emit_x86_instruction(compiler, 1, dst, 0, src2, src2w);
1827 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
1832 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, src2, src2w);
1836 EMIT_MOV(compiler, dst, dstw, TMP_REG1, 0);
1842 static sljit_s32 emit_non_cum_binary(struct sljit_compiler *compiler, argument
1857 …if ((dst == SLJIT_R0) && (src2w > 127 || src2w < -128) && (compiler->mode32 || IS_HALFWORD(src2w))…
1868 inst = emit_x86_instruction(compiler, 1, dst, dstw, src2, src2w);
1873 inst = emit_x86_instruction(compiler, 1, src2, src2w, dst, dstw);
1878 EMIT_MOV(compiler, TMP_REG1, 0, src2, src2w);
1879 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, dst, dstw);
1888 EMIT_MOV(compiler, dst, 0, src1, src1w);
1893 inst = emit_x86_instruction(compiler, 1, dst, 0, src2, src2w);
1900 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
1905 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, src2, src2w);
1909 EMIT_MOV(compiler, dst, dstw, TMP_REG1, 0);
1915 static sljit_s32 emit_mul(struct sljit_compiler *compiler, argument
1925 inst = emit_x86_instruction(compiler, 2, dst_r, 0, src2, src2w);
1931 inst = emit_x86_instruction(compiler, 2, dst_r, 0, src1, src1w);
1938 EMIT_MOV(compiler, dst_r, 0, SLJIT_IMM, src2w);
1944 inst = emit_x86_instruction(compiler, 1, dst_r, 0, src2, src2w);
1947 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1);
1954 inst = emit_x86_instruction(compiler, 1, dst_r, 0, src2, src2w);
1957 inst = (sljit_u8*)ensure_buf(compiler, 1 + 4);
1964 inst = emit_x86_instruction(compiler, 1, dst_r, 0, src2, src2w);
1967 inst = (sljit_u8*)ensure_buf(compiler, 1 + 4);
1974 EMIT_MOV(compiler, dst_r, 0, src2, src2w);
1975 FAIL_IF(emit_load_imm64(compiler, TMP_REG2, src1w));
1976 inst = emit_x86_instruction(compiler, 2, dst_r, 0, TMP_REG2, 0);
1987 inst = emit_x86_instruction(compiler, 1, dst_r, 0, src1, src1w);
1990 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1);
1997 inst = emit_x86_instruction(compiler, 1, dst_r, 0, src1, src1w);
2000 inst = (sljit_u8*)ensure_buf(compiler, 1 + 4);
2007 inst = emit_x86_instruction(compiler, 1, dst_r, 0, src1, src1w);
2010 inst = (sljit_u8*)ensure_buf(compiler, 1 + 4);
2017 EMIT_MOV(compiler, dst_r, 0, src1, src1w);
2018 FAIL_IF(emit_load_imm64(compiler, TMP_REG2, src2w));
2019 inst = emit_x86_instruction(compiler, 2, dst_r, 0, TMP_REG2, 0);
2030 EMIT_MOV(compiler, dst_r, 0, src1, src1w);
2031 inst = emit_x86_instruction(compiler, 2, dst_r, 0, src2, src2w);
2038 EMIT_MOV(compiler, dst, dstw, TMP_REG1, 0);
2043 static sljit_s32 emit_lea_binary(struct sljit_compiler *compiler, argument
2061 inst = emit_x86_instruction(compiler, 1, dst_r, 0, SLJIT_MEM2(src1, src2), 0);
2067 if ((src2 & SLJIT_IMM) && (compiler->mode32 || IS_HALFWORD(src2w))) {
2068 inst = emit_x86_instruction(compiler, 1, dst_r, 0, SLJIT_MEM1(src1), (sljit_s32)src2w);
2071 inst = emit_x86_instruction(compiler, 1, dst_r, 0, SLJIT_MEM1(src1), src2w);
2080 if ((src1 & SLJIT_IMM) && (compiler->mode32 || IS_HALFWORD(src1w))) {
2081 inst = emit_x86_instruction(compiler, 1, dst_r, 0, SLJIT_MEM1(src2), (sljit_s32)src1w);
2084 inst = emit_x86_instruction(compiler, 1, dst_r, 0, SLJIT_MEM1(src2), src1w);
2094 return emit_mov(compiler, dst, dstw, TMP_REG1, 0);
2100 static sljit_s32 emit_cmp_binary(struct sljit_compiler *compiler, argument
2107 …if (src1 == SLJIT_R0 && (src2 & SLJIT_IMM) && (src2w > 127 || src2w < -128) && (compiler->mode32 |…
2120 inst = emit_x86_instruction(compiler, 1, src1, 0, src2, src2w);
2128 inst = emit_x86_instruction(compiler, 1, src2, 0, src1, src1w);
2136 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2143 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2144 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, src2, src2w);
2151 static sljit_s32 emit_test_binary(struct sljit_compiler *compiler, argument
2158 …if (src1 == SLJIT_R0 && (src2 & SLJIT_IMM) && (src2w > 127 || src2w < -128) && (compiler->mode32 |…
2167 …if (src2 == SLJIT_R0 && (src1 & SLJIT_IMM) && (src1w > 127 || src1w < -128) && (compiler->mode32 |…
2178 if (IS_HALFWORD(src2w) || compiler->mode32) {
2179 inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src2w, src1, src1w);
2184 FAIL_IF(emit_load_imm64(compiler, TMP_REG1, src2w));
2185 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, src1, src1w);
2190 inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src2w, src1, src1w);
2197 inst = emit_x86_instruction(compiler, 1, src1, 0, src2, src2w);
2207 if (IS_HALFWORD(src1w) || compiler->mode32) {
2208 inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src1w, src2, src2w);
2213 FAIL_IF(emit_load_imm64(compiler, TMP_REG1, src1w));
2214 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, src2, src2w);
2219 inst = emit_x86_instruction(compiler, 1, src1, src1w, src2, src2w);
2226 inst = emit_x86_instruction(compiler, 1, src2, 0, src1, src1w);
2233 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2236 if (IS_HALFWORD(src2w) || compiler->mode32) {
2237 inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src2w, TMP_REG1, 0);
2242 FAIL_IF(emit_load_imm64(compiler, TMP_REG2, src2w));
2243 inst = emit_x86_instruction(compiler, 1, TMP_REG2, 0, TMP_REG1, 0);
2248 inst = emit_x86_instruction(compiler, 1, SLJIT_IMM, src2w, TMP_REG1, 0);
2254 inst = emit_x86_instruction(compiler, 1, TMP_REG1, 0, src2, src2w);
2261 static sljit_s32 emit_shift(struct sljit_compiler *compiler, argument
2274 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, src2, src2w, dst, dstw);
2280 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2281 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, SLJIT_PREF_SHIFT_REG, 0, TMP_REG1, 0);
2284 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, TMP_REG1, 0);
2288 EMIT_MOV(compiler, dst, 0, src1, src1w);
2289 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, src2, src2w, dst, 0);
2295 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2296 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, src2, src2w, TMP_REG1, 0);
2299 EMIT_MOV(compiler, dst, dstw, TMP_REG1, 0);
2304 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2305 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, src2, src2w);
2306 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, SLJIT_PREF_SHIFT_REG, 0, TMP_REG1, 0);
2309 return emit_mov(compiler, SLJIT_PREF_SHIFT_REG, 0, TMP_REG1, 0);
2314 EMIT_MOV(compiler, dst, 0, src1, src1w);
2316 mode32 = compiler->mode32;
2317 compiler->mode32 = 0;
2319 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_PREF_SHIFT_REG, 0);
2321 compiler->mode32 = mode32;
2323 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, src2, src2w);
2324 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, SLJIT_PREF_SHIFT_REG, 0, dst, 0);
2328 compiler->mode32 = 0;
2330 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, TMP_REG1, 0);
2332 compiler->mode32 = mode32;
2339 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2341 EMIT_MOV(compiler, SLJIT_MEM1(SLJIT_SP), 0, SLJIT_PREF_SHIFT_REG, 0);
2343 mode32 = compiler->mode32;
2344 compiler->mode32 = 0;
2345 EMIT_MOV(compiler, TMP_REG2, 0, SLJIT_PREF_SHIFT_REG, 0);
2346 compiler->mode32 = mode32;
2349 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, src2, src2w);
2350 inst = emit_x86_instruction(compiler, 1 | EX86_SHIFT_INS, SLJIT_PREF_SHIFT_REG, 0, TMP_REG1, 0);
2355 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, SLJIT_MEM1(SLJIT_SP), 0);
2357 compiler->mode32 = 0;
2358 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, TMP_REG2, 0);
2359 compiler->mode32 = mode32;
2363 return emit_mov(compiler, dst, dstw, TMP_REG1, 0);
2368 static sljit_s32 emit_shift_with_flags(struct sljit_compiler *compiler, argument
2377 src2w &= compiler->mode32 ? 0x1f : 0x3f;
2382 return emit_shift(compiler, mode, dst, dstw, src1, src1w, src2, src2w);
2385 return emit_mov(compiler, dst, dstw, src1, src1w);
2387 return emit_cum_binary(compiler, BINARY_OPCODE(OR),
2392 return emit_shift(compiler, mode, dst, dstw, src1, src1w, src2, src2w);
2395 FAIL_IF(emit_cmp_binary(compiler, src1, src1w, SLJIT_IMM, 0));
2397 FAIL_IF(emit_shift(compiler, mode, dst, dstw, src1, src1w, src2, src2w));
2400 return emit_cmp_binary(compiler, dst, dstw, SLJIT_IMM, 0);
2404 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2(struct sljit_compiler *compiler, sljit_s32 op, argument
2410 CHECK(check_sljit_emit_op2(compiler, op, 0, dst, dstw, src1, src1w, src2, src2w));
2419 compiler->mode32 = op & SLJIT_32;
2427 if (emit_lea_binary(compiler, dst, dstw, src1, src1w, src2, src2w) != SLJIT_ERR_UNSUPPORTED)
2428 return compiler->error;
2430 return emit_cum_binary(compiler, BINARY_OPCODE(ADD),
2433 return emit_cum_binary(compiler, BINARY_OPCODE(ADC),
2437 return emit_unary(compiler, NEG_rm, dst, dstw, src2, src2w);
2440 …if ((src2 & SLJIT_IMM) && emit_lea_binary(compiler, dst, dstw, src1, src1w, SLJIT_IMM, -src2w) != …
2441 return compiler->error;
2443 FAIL_IF(emit_non_cum_binary(compiler, BINARY_OPCODE(SUB), dst, 0, dst, 0, src1, src1w));
2444 return emit_unary(compiler, NEG_rm, dst, 0, dst, 0);
2448 return emit_non_cum_binary(compiler, BINARY_OPCODE(SUB),
2451 return emit_non_cum_binary(compiler, BINARY_OPCODE(SBB),
2454 return emit_mul(compiler, dst, dstw, src1, src1w, src2, src2w);
2456 return emit_cum_binary(compiler, BINARY_OPCODE(AND),
2459 return emit_cum_binary(compiler, BINARY_OPCODE(OR),
2462 return emit_cum_binary(compiler, BINARY_OPCODE(XOR),
2466 return emit_shift_with_flags(compiler, SHL, HAS_FLAGS(op),
2470 return emit_shift_with_flags(compiler, SHR, HAS_FLAGS(op),
2474 return emit_shift_with_flags(compiler, SAR, HAS_FLAGS(op),
2477 return emit_shift_with_flags(compiler, ROL, 0,
2480 return emit_shift_with_flags(compiler, ROR, 0,
2487 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2u(struct sljit_compiler *compiler, sljit_s32 op, argument
2494 CHECK(check_sljit_emit_op2(compiler, op, 1, 0, 0, src1, src1w, src2, src2w));
2497 SLJIT_SKIP_CHECKS(compiler);
2498 return sljit_emit_op2(compiler, op, TMP_REG1, 0, src1, src1w, src2, src2w);
2507 compiler->mode32 = op & SLJIT_32;
2511 return emit_cmp_binary(compiler, src1, src1w, src2, src2w);
2513 return emit_test_binary(compiler, src1, src1w, src2, src2w);
2516 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_shift_into(struct sljit_compiler *compiler, sljit_s32… argument
2532 CHECK(check_sljit_emit_shift_into(compiler, op, src_dst, src1, src1w, src2, src2w));
2540 compiler->mode32 = op & SLJIT_32;
2560 return emit_shift(compiler, is_left ? ROL : ROR, src_dst, dstw, src1, src1w, src2, src2w);
2564 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2569 compiler->mode32 = 0;
2571 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_PREF_SHIFT_REG, 0);
2573 compiler->mode32 = op & SLJIT_32;
2575 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, src2, src2w);
2585 EMIT_MOV(compiler, TMP_REG1, 0, src1, src1w);
2587 compiler->mode32 = 0;
2589 EMIT_MOV(compiler, tmp2, 0, SLJIT_PREF_SHIFT_REG, 0);
2591 compiler->mode32 = op & SLJIT_32;
2593 EMIT_MOV(compiler, SLJIT_PREF_SHIFT_REG, 0, src2, src2w);
2605 inst = emit_x86_instruction(compiler, 2, src1, 0, src_dst, dstw);
2613 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1);
2621 compiler->mode32 = 0;
2625 return emit_mov(compiler, SLJIT_PREF_SHIFT_REG, 0, TMP_REG1, 0);
2627 return emit_mov(compiler, SLJIT_PREF_SHIFT_REG, 0, tmp2, 0);
2632 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_src(struct sljit_compiler *compiler, sljit_s32 op, argument
2636 CHECK(check_sljit_emit_op_src(compiler, op, src, srcw));
2643 return emit_fast_return(compiler, src, srcw);
2648 return adjust_shadow_stack(compiler, src, srcw);
2653 return emit_prefetch(compiler, op, src, srcw);
2679 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_custom(struct sljit_compiler *compiler, argument
2685 CHECK(check_sljit_emit_op_custom(compiler, instruction, size));
2687 inst = (sljit_u8*)ensure_buf(compiler, 1 + size);
2717 static sljit_s32 emit_sse2(struct sljit_compiler *compiler, sljit_u8 opcode, argument
2722 …inst = emit_x86_instruction(compiler, 2 | (single ? EX86_PREF_F3 : EX86_PREF_F2) | EX86_SSE2, xmm1…
2729 static sljit_s32 emit_sse2_logic(struct sljit_compiler *compiler, sljit_u8 opcode, argument
2734 …inst = emit_x86_instruction(compiler, 2 | (pref66 ? EX86_PREF_66 : 0) | EX86_SSE2, xmm1, 0, xmm2, …
2741 static SLJIT_INLINE sljit_s32 emit_sse2_load(struct sljit_compiler *compiler, argument
2744 return emit_sse2(compiler, MOVSD_x_xm, single, dst, src, srcw);
2747 static SLJIT_INLINE sljit_s32 emit_sse2_store(struct sljit_compiler *compiler, argument
2750 return emit_sse2(compiler, MOVSD_xm_x, single, src, dst, dstw);
2753 static SLJIT_INLINE sljit_s32 sljit_emit_fop1_conv_sw_from_f64(struct sljit_compiler *compiler, slj… argument
2762 compiler->mode32 = 0;
2765 …inst = emit_x86_instruction(compiler, 2 | ((op & SLJIT_32) ? EX86_PREF_F3 : EX86_PREF_F2) | EX86_S…
2771 return emit_mov(compiler, dst, dstw, TMP_REG1, 0);
2775 static SLJIT_INLINE sljit_s32 sljit_emit_fop1_conv_f64_from_sw(struct sljit_compiler *compiler, slj… argument
2784 compiler->mode32 = 0;
2792 EMIT_MOV(compiler, TMP_REG1, 0, src, srcw);
2797 …inst = emit_x86_instruction(compiler, 2 | ((op & SLJIT_32) ? EX86_PREF_F3 : EX86_PREF_F2) | EX86_S…
2803 compiler->mode32 = 1;
2806 return emit_sse2_store(compiler, op & SLJIT_32, dst, dstw, TMP_FREG);
2810 static SLJIT_INLINE sljit_s32 sljit_emit_fop1_cmp(struct sljit_compiler *compiler, sljit_s32 op, argument
2820 FAIL_IF(emit_sse2_load(compiler, op & SLJIT_32, TMP_FREG, src2, src2w));
2824 return emit_sse2_logic(compiler, UCOMISD_x_xm, !(op & SLJIT_32), src2, src1, src1w);
2828 FAIL_IF(emit_sse2_load(compiler, op & SLJIT_32, TMP_FREG, src1, src1w));
2832 return emit_sse2_logic(compiler, UCOMISD_x_xm, !(op & SLJIT_32), src1, src2, src2w);
2835 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop1(struct sljit_compiler *compiler, sljit_s32 op, argument
2842 compiler->mode32 = 1;
2846 SELECT_FOP1_OPERATION_WITH_CHECKS(compiler, op, dst, dstw, src, srcw);
2850 return emit_sse2_load(compiler, op & SLJIT_32, dst, src, srcw);
2852 return emit_sse2_store(compiler, op & SLJIT_32, dst, dstw, src);
2853 FAIL_IF(emit_sse2_load(compiler, op & SLJIT_32, TMP_FREG, src, srcw));
2854 return emit_sse2_store(compiler, op & SLJIT_32, dst, dstw, TMP_FREG);
2863 FAIL_IF(emit_sse2_logic(compiler, UNPCKLPD_x_xm, op & SLJIT_32, src, src, 0));
2866 FAIL_IF(emit_sse2_load(compiler, !(op & SLJIT_32), TMP_FREG, src, srcw));
2870 FAIL_IF(emit_sse2_logic(compiler, CVTPD2PS_x_xm, op & SLJIT_32, dst_r, src, 0));
2872 return emit_sse2_store(compiler, op & SLJIT_32, dst, dstw, TMP_FREG);
2879 FAIL_IF(emit_sse2_load(compiler, op & SLJIT_32, dst_r, src, srcw));
2883 FAIL_IF(emit_sse2_load(compiler, op & SLJIT_32, dst_r, src, srcw));
2888 …FAIL_IF(emit_sse2_logic(compiler, XORPD_x_xm, 1, dst_r, SLJIT_MEM0(), (sljit_sw)(op & SLJIT_32 ? s…
2892 …FAIL_IF(emit_sse2_logic(compiler, ANDPD_x_xm, 1, dst_r, SLJIT_MEM0(), (sljit_sw)(op & SLJIT_32 ? s…
2897 return emit_sse2_store(compiler, op & SLJIT_32, dst, dstw, TMP_FREG);
2901 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop2(struct sljit_compiler *compiler, sljit_s32 op, argument
2909 CHECK(check_sljit_emit_fop2(compiler, op, dst, dstw, src1, src1w, src2, src2w));
2915 compiler->mode32 = 1;
2928 FAIL_IF(emit_sse2_load(compiler, op & SLJIT_32, dst_r, src1, src1w));
2931 FAIL_IF(emit_sse2_load(compiler, op & SLJIT_32, TMP_FREG, src1, src1w));
2936 FAIL_IF(emit_sse2_load(compiler, op & SLJIT_32, TMP_FREG, src1, src1w));
2941 FAIL_IF(emit_sse2(compiler, ADDSD_x_xm, op & SLJIT_32, dst_r, src2, src2w));
2945 FAIL_IF(emit_sse2(compiler, SUBSD_x_xm, op & SLJIT_32, dst_r, src2, src2w));
2949 FAIL_IF(emit_sse2(compiler, MULSD_x_xm, op & SLJIT_32, dst_r, src2, src2w));
2953 FAIL_IF(emit_sse2(compiler, DIVSD_x_xm, op & SLJIT_32, dst_r, src2, src2w));
2958 return emit_sse2_store(compiler, op & SLJIT_32, dst, dstw, TMP_FREG);
2966 SLJIT_API_FUNC_ATTRIBUTE struct sljit_label* sljit_emit_label(struct sljit_compiler *compiler) argument
2972 CHECK_PTR(check_sljit_emit_label(compiler));
2974 if (compiler->last_label && compiler->last_label->size == compiler->size)
2975 return compiler->last_label;
2977 label = (struct sljit_label*)ensure_abuf(compiler, sizeof(struct sljit_label));
2979 set_label(label, compiler);
2981 inst = (sljit_u8*)ensure_buf(compiler, 2);
2990 SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_jump(struct sljit_compiler *compiler, sljit_… argument
2996 CHECK_PTR(check_sljit_emit_jump(compiler, type));
2998 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump));
3000 …set_jump(jump, compiler, (sljit_u32)((type & SLJIT_REWRITABLE_JUMP) | ((type & 0xff) << TYPE_SHIFT…
3005 compiler->size += (type >= SLJIT_JUMP) ? 5 : 6;
3007 compiler->size += (type >= SLJIT_JUMP) ? (10 + 3) : (2 + 10 + 3);
3010 inst = (sljit_u8*)ensure_buf(compiler, 2);
3018 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_ijump(struct sljit_compiler *compiler, sljit_s32 type… argument
3024 CHECK(check_sljit_emit_ijump(compiler, type, src, srcw));
3030 jump = (struct sljit_jump*)ensure_abuf(compiler, sizeof(struct sljit_jump));
3032 set_jump(jump, compiler, (sljit_u32)(JUMP_ADDR | (type << TYPE_SHIFT)));
3037 compiler->size += 5;
3039 compiler->size += 10 + 3;
3042 inst = (sljit_u8*)ensure_buf(compiler, 2);
3051 compiler->mode32 = 1;
3053 inst = emit_x86_instruction(compiler, 1, 0, 0, src, srcw);
3061 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_flags(struct sljit_compiler *compiler, sljit_s32 o… argument
3075 CHECK(check_sljit_emit_op_flags(compiler, op, dst, dstw, type));
3085 inst = (sljit_u8*)ensure_buf(compiler, 1 + 4 + 3);
3101 inst = (sljit_u8*)ensure_buf(compiler, 1 + 4 + 4);
3119 compiler->mode32 = GET_OPCODE(op) != SLJIT_MOV;
3120 return emit_mov(compiler, dst, dstw, TMP_REG1, 0);
3123 SLJIT_SKIP_CHECKS(compiler);
3124 return sljit_emit_op2(compiler, op, dst_save, dstw_save, dst_save, dstw_save, TMP_REG1, 0);
3131 inst = (sljit_u8*)ensure_buf(compiler, 1 + 3 + 3);
3150 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_IMM, 1);
3152 EMIT_MOV(compiler, dst, 0, SLJIT_IMM, 0);
3154 inst = (sljit_u8*)ensure_buf(compiler, 1 + 3);
3165 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1 + 3 + 3 + 1);
3185 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1 + 3 + 2 + 1);
3198 inst = (sljit_u8*)ensure_buf(compiler, 1 + 2 + 3 + 2 + 2);
3216 inst = (sljit_u8*)ensure_buf(compiler, 1 + 1 + 3 + 3 + 1);
3232 return emit_mov(compiler, dst, dstw, TMP_REG1, 0);
3234 SLJIT_SKIP_CHECKS(compiler);
3235 return sljit_emit_op2(compiler, op, dst_save, dstw_save, dst_save, dstw_save, TMP_REG1, 0);
3239 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_cmov(struct sljit_compiler *compiler, sljit_s32 type, argument
3246 CHECK(check_sljit_emit_cmov(compiler, type, dst_reg, src, srcw));
3252 return sljit_emit_cmov_generic(compiler, type, dst_reg, src, srcw);
3255 return sljit_emit_cmov_generic(compiler, type, dst_reg, src, srcw);
3262 compiler->mode32 = type & SLJIT_32;
3267 EMIT_MOV(compiler, TMP_REG1, 0, SLJIT_IMM, srcw);
3272 inst = emit_x86_instruction(compiler, 2, dst_reg, 0, src, srcw);
3279 SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_local_base(struct sljit_compiler *compiler, sljit_s32 … argument
3282 CHECK(check_sljit_get_local_base(compiler, dst, dstw, offset));
3288 compiler->mode32 = 0;
3295 FAIL_IF(emit_load_imm64(compiler, TMP_REG1, offset));
3297 …SLJIT_ASSERT(emit_lea_binary(compiler, dst, dstw, SLJIT_SP, 0, TMP_REG1, 0) != SLJIT_ERR_UNSUPPORT…
3298 return compiler->error;
3300 return emit_lea_binary(compiler, dst, dstw, SLJIT_SP, 0, TMP_REG1, 0);
3306 return emit_lea_binary(compiler, dst, dstw, SLJIT_SP, 0, SLJIT_IMM, offset);
3307 return emit_mov(compiler, dst, dstw, SLJIT_SP, 0);
3310 SLJIT_API_FUNC_ATTRIBUTE struct sljit_const* sljit_emit_const(struct sljit_compiler *compiler, slji… argument
3319 CHECK_PTR(check_sljit_emit_const(compiler, dst, dstw, init_value));
3324 const_ = (struct sljit_const*)ensure_abuf(compiler, sizeof(struct sljit_const));
3326 set_const(const_, compiler);
3329 compiler->mode32 = 0;
3332 if (emit_load_imm64(compiler, reg, init_value))
3335 if (emit_mov(compiler, dst, dstw, SLJIT_IMM, init_value))
3339 inst = (sljit_u8*)ensure_buf(compiler, 2);
3347 if (emit_mov(compiler, dst, dstw, TMP_REG1, 0))
3354 …UTE struct sljit_put_label* sljit_emit_put_label(struct sljit_compiler *compiler, sljit_s32 dst, s… argument
3364 CHECK_PTR(check_sljit_emit_put_label(compiler, dst, dstw));
3369 put_label = (struct sljit_put_label*)ensure_abuf(compiler, sizeof(struct sljit_put_label));
3371 set_put_label(put_label, compiler, 0);
3374 compiler->mode32 = 0;
3377 if (emit_load_imm64(compiler, reg, 0))
3380 if (emit_mov(compiler, dst, dstw, SLJIT_IMM, 0))
3386 start_size = compiler->size;
3387 if (emit_mov(compiler, dst, dstw, TMP_REG1, 0))
3389 put_label->flags = compiler->size - start_size;
3393 inst = (sljit_u8*)ensure_buf(compiler, 2);