jit f30f11/movss

This commit is contained in:
Fabian 2020-12-31 19:14:34 -06:00
parent cf4af74d95
commit 3a8102811d
3 changed files with 11 additions and 4 deletions

View file

@ -624,7 +624,7 @@ const encodings = [
{ sse: 1, opcode: 0x660F10, e: 1, custom: 1 },
{ sse: 1, opcode: 0xF20F10, e: 1, custom: 1 },
{ sse: 1, opcode: 0x0F11, e: 1, custom: 1 },
{ sse: 1, opcode: 0xF30F11, e: 1 },
{ sse: 1, opcode: 0xF30F11, e: 1, custom: 1 },
{ sse: 1, opcode: 0x660F11, e: 1, custom: 1 },
{ sse: 1, opcode: 0xF20F11, e: 1, custom: 1 },
{ sse: 1, opcode: 0x0F12, e: 1 },

View file

@ -514,13 +514,11 @@ pub unsafe fn instr_0F11_mem(addr: i32, r: i32) {
// movups xmm/m128, xmm
mov_r_m128(addr, r);
}
#[no_mangle]
pub unsafe fn instr_F30F11_reg(rm_dest: i32, reg_src: i32) {
// movss xmm/m32, xmm
let data = read_xmm128s(reg_src);
write_xmm32(rm_dest, data.u32_0[0] as i32);
}
#[no_mangle]
pub unsafe fn instr_F30F11_mem(addr: i32, r: i32) {
// movss xmm/m32, xmm
let data = read_xmm128s(r);
@ -540,7 +538,6 @@ pub unsafe fn instr_F20F11_reg(r1: i32, r2: i32) {
let data = read_xmm128s(r2);
write_xmm64(r1, data.u64_0[0]);
}
#[no_mangle]
pub unsafe fn instr_F20F11_mem(addr: i32, r: i32) {
// movsd xmm/m64, xmm
let data = read_xmm64s(r);

View file

@ -4817,6 +4817,16 @@ pub fn instr_F20F11_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
ctx.builder.const_i32(r2 as i32);
ctx.builder.call_fn2("instr_F20F11_reg");
}
pub fn instr_F30F11_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
instr_660F7E_mem_jit(ctx, modrm_byte, r)
}
pub fn instr_F30F11_reg_jit(ctx: &mut JitContext, r1: u32, r2: u32) {
ctx.builder.const_i32(0);
ctx.builder
.load_fixed_i32(global_pointers::get_reg_xmm_offset(r2));
ctx.builder
.store_aligned_i32(global_pointers::get_reg_xmm_offset(r1));
}
pub fn instr_0F28_mem_jit(ctx: &mut JitContext, modrm_byte: ModrmByte, r: u32) {
let dest = global_pointers::get_reg_xmm_offset(r);