Move code into sse_read64_xmm_{mem,xmm}

This commit is contained in:
Fabian 2021-04-04 15:07:36 -05:00
parent c18cf46022
commit e2ec0c9442

View file

@ -114,6 +114,19 @@ pub fn instr_F3_jit(ctx: &mut JitContext, instr_flags: &mut u32) {
jit_handle_prefix(ctx, instr_flags)
}
fn sse_read64_xmm_mem(ctx: &mut JitContext, name: &str, modrm_byte: ModrmByte, r: u32) {
codegen::gen_modrm_resolve_safe_read64(ctx, modrm_byte);
ctx.builder.const_i32(r as i32);
ctx.builder.call_fn2_i64_i32(name);
}
fn sse_read64_xmm_xmm(ctx: &mut JitContext, name: &str, r1: u32, r2: u32) {
ctx.builder
.const_i32(global_pointers::get_reg_xmm_offset(r1) as i32);
ctx.builder.load_aligned_i64(0);
ctx.builder.const_i32(r2 as i32);
ctx.builder.call_fn2_i64_i32(name);
}
fn sse_read128_xmm_mem(ctx: &mut JitContext, name: &str, modrm_byte: ModrmByte, r: u32) {
let dest = global_pointers::sse_scratch_register as u32;
codegen::gen_modrm_resolve_safe_read128(ctx, modrm_byte, dest);
@ -6298,16 +6311,10 @@ pub fn instr_F20FE6_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
sse_read128_xmm_xmm(ctx, "instr_F20FE6", r1, r2);
}
pub fn instr_F30FE6_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
codegen::gen_modrm_resolve_safe_read64(ctx, modrm_byte);
ctx.builder.const_i32(r as i32);
ctx.builder.call_fn2_i64_i32("instr_F30FE6")
sse_read64_xmm_mem(ctx, "instr_F30FE6", modrm_byte, r);
}
pub fn instr_F30FE6_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
ctx.builder
.const_i32(global_pointers::get_reg_xmm_offset(r1) as i32);
ctx.builder.load_aligned_i64(0);
ctx.builder.const_i32(r2 as i32);
ctx.builder.call_fn2_i64_i32("instr_F30FE6")
sse_read64_xmm_xmm(ctx, "instr_F30FE6", r1, r2);
}
pub fn instr_660FE7_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {