void orc_x86_emit_cmp_imm_reg (OrcCompiler *compiler, int size, int value, int reg) { if (value >= -128 && value < 128) { orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_cmp_imm8_rm, size, value, reg); } else { orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_cmp_imm32_rm, size, value, reg); } }
void orc_sse_set_mxcsr (OrcCompiler *compiler) { orc_x86_emit_cpuinsn_load_memoffset (compiler, ORC_X86_stmxcsr, 4, 0, (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), compiler->exec_reg, 0); orc_x86_emit_mov_memoffset_reg (compiler, 4, (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), compiler->exec_reg, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_C1]), compiler->exec_reg); orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_or_imm32_rm, 4, 0x8040, compiler->gp_tmpreg); orc_x86_emit_mov_reg_memoffset (compiler, 4, compiler->gp_tmpreg, (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), compiler->exec_reg); orc_x86_emit_cpuinsn_load_memoffset (compiler, ORC_X86_ldmxcsr, 4, 0, (int)ORC_STRUCT_OFFSET(OrcExecutor,params[ORC_VAR_A4]), compiler->exec_reg, 0); }
void orc_x86_emit_add_imm_reg (OrcCompiler *compiler, int size, int value, int reg, orc_bool record) { if (!record) { if (size == 4 && !compiler->is_64bit) { orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_leal, size, value, reg, reg); return; } if (size == 8 && compiler->is_64bit) { orc_x86_emit_cpuinsn_memoffset_reg (compiler, ORC_X86_leaq, size, value, reg, reg); return; } } if (value >= -128 && value < 128) { orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_add_imm8_rm, size, value, reg); } else { orc_x86_emit_cpuinsn_imm_reg (compiler, ORC_X86_add_imm32_rm, size, value, reg); } }