#if defined(__has_feature)
#if __has_feature(memory_sanitizer)
#include <sanitizer/msan_interface.h>
#endif
#endif
SLJIT_API_FUNC_ATTRIBUTE const char* sljit_get_platform_name(void)
{ … }
#define TMP_REG1 …
#define TMP_FREG …
#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS + 3] = {
0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 5, 7, 6, 4, 3
};
static const sljit_u8 freg_map[SLJIT_NUMBER_OF_FLOAT_REGISTERS + 2] = {
0, 1, 2, 3, 4, 5, 6, 7, 0
};
#define CHECK_EXTRA_REGS …
#else
#define TMP_REG2 …
#ifndef _WIN64
static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS + 4] = …;
static const sljit_u8 reg_lmap[SLJIT_NUMBER_OF_REGISTERS + 4] = …;
#else
static const sljit_u8 reg_map[SLJIT_NUMBER_OF_REGISTERS + 4] = {
0, 0, 2, 8, 1, 11, 12, 5, 13, 14, 15, 7, 6, 3, 4, 9, 10
};
static const sljit_u8 reg_lmap[SLJIT_NUMBER_OF_REGISTERS + 4] = {
0, 0, 2, 0, 1, 3, 4, 5, 5, 6, 7, 7, 6, 3, 4, 1, 2
};
#endif
static const sljit_u8 freg_map[SLJIT_NUMBER_OF_FLOAT_REGISTERS + 2] = …;
static const sljit_u8 freg_lmap[SLJIT_NUMBER_OF_FLOAT_REGISTERS + 2] = …;
#define REX_W …
#define REX_R …
#define REX_X …
#define REX_B …
#define REX …
#ifndef _WIN64
#define HALFWORD_MAX …
#define HALFWORD_MIN …
#else
#define HALFWORD_MAX …
#define HALFWORD_MIN …
#endif
#define IS_HALFWORD(x) …
#define NOT_HALFWORD(x) …
#define CHECK_EXTRA_REGS(p, w, do) …
#endif
#define U8(v) …
#define EX86_BIN_INS …
#define EX86_SHIFT_INS …
#define EX86_BYTE_ARG …
#define EX86_HALF_ARG …
#define EX86_REX …
#define EX86_NO_REXW …
#define EX86_PREF_66 …
#define EX86_PREF_F2 …
#define EX86_PREF_F3 …
#define EX86_SSE2_OP1 …
#define EX86_SSE2_OP2 …
#define EX86_SSE2 …
#define EX86_VEX_EXT …
#define VEX_OP_0F38 …
#define VEX_OP_0F3A …
#define VEX_SSE2_OPV …
#define VEX_AUTO_W …
#define VEX_W …
#define VEX_256 …
#define EX86_SELECT_66(op) …
#define EX86_SELECT_F2_F3(op) …
#define ADD …
#define ADD_EAX_i32 …
#define ADD_r_rm …
#define ADD_rm_r …
#define ADDSD_x_xm …
#define ADC …
#define ADC_EAX_i32 …
#define ADC_r_rm …
#define ADC_rm_r …
#define AND …
#define AND_EAX_i32 …
#define AND_r_rm …
#define AND_rm_r …
#define ANDPD_x_xm …
#define BSR_r_rm …
#define BSF_r_rm …
#define BSWAP_r …
#define CALL_i32 …
#define CALL_rm …
#define CDQ …
#define CMOVE_r_rm …
#define CMP ( 7 << 3) …
#define CMP_EAX_i32 …
#define CMP_r_rm …
#define CMP_rm_r …
#define CMPS_x_xm …
#define CMPXCHG_rm_r …
#define CMPXCHG_rm8_r …
#define CVTPD2PS_x_xm …
#define CVTPS2PD_x_xm …
#define CVTSI2SD_x_rm …
#define CVTTSD2SI_r_xm …
#define DIV …
#define DIVSD_x_xm …
#define EXTRACTPS_x_xm …
#define FLDS …
#define FLDL …
#define FSTPS …
#define FSTPD …
#define INSERTPS_x_xm …
#define INT3 …
#define IDIV …
#define IMUL …
#define IMUL_r_rm …
#define IMUL_r_rm_i8 …
#define IMUL_r_rm_i32 …
#define JL_i8 …
#define JE_i8 …
#define JNC_i8 …
#define JNE_i8 …
#define JMP_i8 …
#define JMP_i32 …
#define JMP_rm …
#define LEA_r_m …
#define LOOP_i8 …
#define LZCNT_r_rm …
#define MOV_r_rm …
#define MOV_r_i32 …
#define MOV_rm_r …
#define MOV_rm_i32 …
#define MOV_rm8_i8 …
#define MOV_rm8_r8 …
#define MOVAPS_x_xm …
#define MOVAPS_xm_x …
#define MOVD_x_rm …
#define MOVD_rm_x …
#define MOVDDUP_x_xm …
#define MOVDQA_x_xm …
#define MOVDQA_xm_x …
#define MOVHLPS_x_x …
#define MOVHPD_m_x …
#define MOVHPD_x_m …
#define MOVLHPS_x_x …
#define MOVLPD_m_x …
#define MOVLPD_x_m …
#define MOVMSKPS_r_x …
#define MOVQ_x_xm …
#define MOVSD_x_xm …
#define MOVSD_xm_x …
#define MOVSHDUP_x_xm …
#define MOVSXD_r_rm …
#define MOVSX_r_rm8 …
#define MOVSX_r_rm16 …
#define MOVUPS_x_xm …
#define MOVZX_r_rm8 …
#define MOVZX_r_rm16 …
#define MUL …
#define MULSD_x_xm …
#define NEG_rm …
#define NOP …
#define NOT_rm …
#define OR …
#define OR_r_rm …
#define OR_EAX_i32 …
#define OR_rm_r …
#define OR_rm8_r8 …
#define ORPD_x_xm …
#define PACKSSWB_x_xm …
#define PAND_x_xm …
#define PCMPEQD_x_xm …
#define PINSRB_x_rm_i8 …
#define PINSRW_x_rm_i8 …
#define PINSRD_x_rm_i8 …
#define PEXTRB_rm_x_i8 …
#define PEXTRW_rm_x_i8 …
#define PEXTRD_rm_x_i8 …
#define PMOVMSKB_r_x …
#define PMOVSXBD_x_xm …
#define PMOVSXBQ_x_xm …
#define PMOVSXBW_x_xm …
#define PMOVSXDQ_x_xm …
#define PMOVSXWD_x_xm …
#define PMOVSXWQ_x_xm …
#define PMOVZXBD_x_xm …
#define PMOVZXBQ_x_xm …
#define PMOVZXBW_x_xm …
#define PMOVZXDQ_x_xm …
#define PMOVZXWD_x_xm …
#define PMOVZXWQ_x_xm …
#define POP_r …
#define POP_rm …
#define POPF …
#define POR_x_xm …
#define PREFETCH …
#define PSHUFB_x_xm …
#define PSHUFD_x_xm …
#define PSHUFLW_x_xm …
#define PSRLDQ_x …
#define PSLLD_x_i8 …
#define PSLLQ_x_i8 …
#define PUSH_i32 …
#define PUSH_r …
#define PUSH_rm …
#define PUSHF …
#define PXOR_x_xm …
#define ROL …
#define ROR …
#define RET_near …
#define RET_i16 …
#define SBB …
#define SBB_EAX_i32 …
#define SBB_r_rm …
#define SBB_rm_r …
#define SAR …
#define SHL …
#define SHLD …
#define SHRD …
#define SHR …
#define SHUFPS_x_xm …
#define SUB …
#define SUB_EAX_i32 …
#define SUB_r_rm …
#define SUB_rm_r …
#define SUBSD_x_xm …
#define TEST_EAX_i32 …
#define TEST_rm_r …
#define TZCNT_r_rm …
#define UCOMISD_x_xm …
#define UNPCKLPD_x_xm …
#define UNPCKLPS_x_xm …
#define VBROADCASTSD_x_xm …
#define VBROADCASTSS_x_xm …
#define VEXTRACTF128_x_ym …
#define VEXTRACTI128_x_ym …
#define VINSERTF128_y_y_xm …
#define VINSERTI128_y_y_xm …
#define VPBROADCASTB_x_xm …
#define VPBROADCASTD_x_xm …
#define VPBROADCASTQ_x_xm …
#define VPBROADCASTW_x_xm …
#define VPERMPD_y_ym …
#define VPERMQ_y_ym …
#define XCHG_EAX_r …
#define XCHG_r_rm …
#define XOR …
#define XOR_EAX_i32 …
#define XOR_r_rm …
#define XOR_rm_r …
#define XORPD_x_xm …
#define GROUP_0F …
#define GROUP_66 …
#define GROUP_F3 …
#define GROUP_F7 …
#define GROUP_FF …
#define GROUP_BINARY_81 …
#define GROUP_BINARY_83 …
#define GROUP_SHIFT_1 …
#define GROUP_SHIFT_N …
#define GROUP_SHIFT_CL …
#define GROUP_LOCK …
#define MOD_REG …
#define MOD_DISP8 …
#define INC_SIZE(s) …
#define PUSH_REG(r) …
#define POP_REG(r) …
#define RET() …
#define RET_I16(n) …
#define CPU_FEATURE_DETECTED …
#if (defined SLJIT_DETECT_SSE2 && SLJIT_DETECT_SSE2)
#define CPU_FEATURE_SSE2 …
#endif
#define CPU_FEATURE_SSE41 …
#define CPU_FEATURE_LZCNT …
#define CPU_FEATURE_TZCNT …
#define CPU_FEATURE_CMOV …
#define CPU_FEATURE_AVX …
#define CPU_FEATURE_AVX2 …
static sljit_u32 cpu_feature_list = …;
#ifdef _WIN32_WCE
#include <cmnintrin.h>
#elif defined(_MSC_VER) && _MSC_VER >= 1400
#include <intrin.h>
#endif
static SLJIT_INLINE void sljit_unaligned_store_s16(void *addr, sljit_s16 value)
{ … }
static SLJIT_INLINE void sljit_unaligned_store_s32(void *addr, sljit_s32 value)
{ … }
static SLJIT_INLINE void sljit_unaligned_store_sw(void *addr, sljit_sw value)
{ … }
static void execute_cpu_id(sljit_u32 info[4])
{ … }
static void get_cpu_features(void)
{ … }
static sljit_u8 get_jump_code(sljit_uw type)
{ … }
#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
static sljit_u8* generate_far_jump_code(struct sljit_jump *jump, sljit_u8 *code_ptr, sljit_sw executable_offset);
#else
static sljit_u8* generate_far_jump_code(struct sljit_jump *jump, sljit_u8 *code_ptr);
static sljit_u8* generate_put_label_code(struct sljit_put_label *put_label, sljit_u8 *code_ptr, sljit_uw max_label);
#endif
static sljit_u8* generate_near_jump_code(struct sljit_jump *jump, sljit_u8 *code_ptr, sljit_u8 *code, sljit_sw executable_offset)
{ … }
SLJIT_API_FUNC_ATTRIBUTE void* sljit_generate_code(struct sljit_compiler *compiler)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_has_cpu_feature(sljit_s32 feature_type)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_cmp_info(sljit_s32 type)
{ … }
#define BINARY_OPCODE(opcode) …
#define BINARY_IMM32(op_imm, immw, arg, argw) …
#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
#define BINARY_IMM(op_imm, op_mr, immw, arg, argw) …
#define BINARY_EAX_IMM(op_eax_imm, immw) …
#else
#define BINARY_IMM …
#define BINARY_EAX_IMM …
#endif
static sljit_s32 emit_byte(struct sljit_compiler *compiler, sljit_u8 byte)
{ … }
static sljit_s32 emit_mov(struct sljit_compiler *compiler,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw);
#define EMIT_MOV(compiler, dst, dstw, src, srcw) …
static sljit_s32 emit_groupf(struct sljit_compiler *compiler,
sljit_uw op,
sljit_s32 dst, sljit_s32 src, sljit_sw srcw);
static sljit_s32 emit_groupf_ext(struct sljit_compiler *compiler,
sljit_uw op,
sljit_s32 dst, sljit_s32 src, sljit_sw srcw);
static SLJIT_INLINE sljit_s32 emit_sse2_store(struct sljit_compiler *compiler,
sljit_s32 single, sljit_s32 dst, sljit_sw dstw, sljit_s32 src);
static SLJIT_INLINE sljit_s32 emit_sse2_load(struct sljit_compiler *compiler,
sljit_s32 single, sljit_s32 dst, sljit_s32 src, sljit_sw srcw);
static sljit_s32 emit_cmp_binary(struct sljit_compiler *compiler,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w);
static sljit_s32 emit_cmov_generic(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 dst_reg,
sljit_s32 src, sljit_sw srcw);
static SLJIT_INLINE sljit_s32 emit_endbranch(struct sljit_compiler *compiler)
{ … }
#if (defined SLJIT_CONFIG_X86_CET && SLJIT_CONFIG_X86_CET) && defined (__SHSTK__)
static SLJIT_INLINE sljit_s32 emit_rdssp(struct sljit_compiler *compiler, sljit_s32 reg)
{
sljit_u8 *inst;
sljit_s32 size;
#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
size = 5;
#else
size = 4;
#endif
inst = (sljit_u8*)ensure_buf(compiler, 1 + size);
FAIL_IF(!inst);
INC_SIZE(size);
*inst++ = GROUP_F3;
#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
*inst++ = REX_W | (reg_map[reg] <= 7 ? 0 : REX_B);
#endif
inst[0] = GROUP_0F;
inst[1] = 0x1e;
#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
inst[2] = U8(MOD_REG | (0x1 << 3) | reg_lmap[reg]);
#else
inst[2] = U8(MOD_REG | (0x1 << 3) | reg_map[reg]);
#endif
return SLJIT_SUCCESS;
}
static SLJIT_INLINE sljit_s32 emit_incssp(struct sljit_compiler *compiler, sljit_s32 reg)
{
sljit_u8 *inst;
sljit_s32 size;
#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
size = 5;
#else
size = 4;
#endif
inst = (sljit_u8*)ensure_buf(compiler, 1 + size);
FAIL_IF(!inst);
INC_SIZE(size);
*inst++ = GROUP_F3;
#if (defined SLJIT_CONFIG_X86_64 && SLJIT_CONFIG_X86_64)
*inst++ = REX_W | (reg_map[reg] <= 7 ? 0 : REX_B);
#endif
inst[0] = GROUP_0F;
inst[1] = 0xae;
inst[2] = (0x3 << 6) | (0x5 << 3) | (reg_map[reg] & 0x7);
return SLJIT_SUCCESS;
}
#endif
static SLJIT_INLINE sljit_s32 cpu_has_shadow_stack(void)
{ … }
static SLJIT_INLINE sljit_s32 adjust_shadow_stack(struct sljit_compiler *compiler,
sljit_s32 src, sljit_sw srcw)
{ … }
#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
#include "sljitNativeX86_32.c"
#else
#include "sljitNativeX86_64.c"
#endif
static sljit_s32 emit_mov(struct sljit_compiler *compiler,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
static sljit_s32 emit_cmov_generic(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 dst_reg,
sljit_s32 src, sljit_sw srcw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op0(struct sljit_compiler *compiler, sljit_s32 op)
{ … }
static sljit_s32 emit_mov_byte(struct sljit_compiler *compiler, sljit_s32 sign,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
static sljit_s32 emit_prefetch(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 src, sljit_sw srcw)
{ … }
static sljit_s32 emit_mov_half(struct sljit_compiler *compiler, sljit_s32 sign,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
static sljit_s32 emit_unary(struct sljit_compiler *compiler, sljit_u8 opcode,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
static const sljit_sw emit_clz_arg = 32 + 31;
static const sljit_sw emit_ctz_arg = 32;
#endif
static sljit_s32 emit_clz_ctz(struct sljit_compiler *compiler, sljit_s32 is_clz,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
static sljit_s32 emit_bswap(struct sljit_compiler *compiler,
sljit_s32 op,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op1(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
static sljit_s32 emit_cum_binary(struct sljit_compiler *compiler,
sljit_u32 op_types,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
static sljit_s32 emit_non_cum_binary(struct sljit_compiler *compiler,
sljit_u32 op_types,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
static sljit_s32 emit_mul(struct sljit_compiler *compiler,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
static sljit_s32 emit_lea_binary(struct sljit_compiler *compiler,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
static sljit_s32 emit_cmp_binary(struct sljit_compiler *compiler,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
static sljit_s32 emit_test_binary(struct sljit_compiler *compiler,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
static sljit_s32 emit_shift(struct sljit_compiler *compiler,
sljit_u8 mode,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
static sljit_s32 emit_shift_with_flags(struct sljit_compiler *compiler,
sljit_u8 mode, sljit_s32 set_flags,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op2u(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_shift_into(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst_reg,
sljit_s32 src1_reg,
sljit_s32 src2_reg,
sljit_s32 src3, sljit_sw src3w)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_src(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 src, sljit_sw srcw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_dst(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst, sljit_sw dstw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_register_index(sljit_s32 type, sljit_s32 reg)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_custom(struct sljit_compiler *compiler,
void *instruction, sljit_u32 size)
{ … }
static sljit_u32 sse2_data[3 + (4 * 4)];
static sljit_u32 *sse2_buffer;
static void init_compiler(void)
{ … }
static sljit_s32 emit_groupf(struct sljit_compiler *compiler,
sljit_uw op,
sljit_s32 dst, sljit_s32 src, sljit_sw srcw)
{ … }
static sljit_s32 emit_groupf_ext(struct sljit_compiler *compiler,
sljit_uw op,
sljit_s32 dst, sljit_s32 src, sljit_sw srcw)
{ … }
static SLJIT_INLINE sljit_s32 emit_sse2_load(struct sljit_compiler *compiler,
sljit_s32 single, sljit_s32 dst, sljit_s32 src, sljit_sw srcw)
{ … }
static SLJIT_INLINE sljit_s32 emit_sse2_store(struct sljit_compiler *compiler,
sljit_s32 single, sljit_s32 dst, sljit_sw dstw, sljit_s32 src)
{ … }
static SLJIT_INLINE sljit_s32 sljit_emit_fop1_conv_sw_from_f64(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
static SLJIT_INLINE sljit_s32 sljit_emit_fop1_conv_f64_from_sw(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
static SLJIT_INLINE sljit_s32 sljit_emit_fop1_cmp(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop1(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src, sljit_sw srcw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop2(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fop2r(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst_freg,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2, sljit_sw src2w)
{ … }
SLJIT_API_FUNC_ATTRIBUTE struct sljit_label* sljit_emit_label(struct sljit_compiler *compiler)
{ … }
SLJIT_API_FUNC_ATTRIBUTE struct sljit_jump* sljit_emit_jump(struct sljit_compiler *compiler, sljit_s32 type)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_ijump(struct sljit_compiler *compiler, sljit_s32 type, sljit_s32 src, sljit_sw srcw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_op_flags(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst, sljit_sw dstw,
sljit_s32 type)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_select(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 dst_reg,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2_reg)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_fselect(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 dst_freg,
sljit_s32 src1, sljit_sw src1w,
sljit_s32 src2_freg)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_mov(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 freg,
sljit_s32 srcdst, sljit_sw srcdstw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_replicate(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 freg,
sljit_s32 src, sljit_sw srcw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_lane_mov(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 freg, sljit_s32 lane_index,
sljit_s32 srcdst, sljit_sw srcdstw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_lane_replicate(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 freg,
sljit_s32 src, sljit_s32 src_lane_index)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_extend(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 freg,
sljit_s32 src, sljit_sw srcw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_sign(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 freg,
sljit_s32 dst, sljit_sw dstw)
{ … }
static sljit_s32 emit_simd_mov(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 dst_freg, sljit_s32 src_freg)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_simd_op2(struct sljit_compiler *compiler, sljit_s32 type,
sljit_s32 dst_freg, sljit_s32 src1_freg, sljit_s32 src2_freg)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_atomic_load(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 dst_reg,
sljit_s32 mem_reg)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_emit_atomic_store(struct sljit_compiler *compiler, sljit_s32 op,
sljit_s32 src_reg,
sljit_s32 mem_reg,
sljit_s32 temp_reg)
{ … }
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_get_local_base(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, sljit_sw offset)
{ … }
SLJIT_API_FUNC_ATTRIBUTE struct sljit_const* sljit_emit_const(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw, sljit_sw init_value)
{ … }
SLJIT_API_FUNC_ATTRIBUTE struct sljit_put_label* sljit_emit_put_label(struct sljit_compiler *compiler, sljit_s32 dst, sljit_sw dstw)
{ … }
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_jump_addr(sljit_uw addr, sljit_uw new_target, sljit_sw executable_offset)
{ … }
SLJIT_API_FUNC_ATTRIBUTE void sljit_set_const(sljit_uw addr, sljit_sw new_constant, sljit_sw executable_offset)
{ … }