Implement movups xmm/m128, xmm
This commit is contained in:
parent
7013405402
commit
58bfd4593c
|
@ -403,6 +403,7 @@ const encodings = [
|
|||
|
||||
{ opcode: 0x0F10, e: 1 },
|
||||
{ opcode: 0xF30F10, e: 1 },
|
||||
{ opcode: 0x0F11, e: 1 },
|
||||
{ opcode: 0x0F12, e: 1, skip: 1, },
|
||||
{ opcode: 0x660F12, only_mem: 1, e: 1 },
|
||||
{ opcode: 0xF20F12, e: 1, skip: 1, },
|
||||
|
|
|
@ -323,7 +323,15 @@ static void instr_F30F10_mem(int32_t addr, int32_t r) {
|
|||
write_xmm128(r, data, 0, 0, 0);
|
||||
}
|
||||
|
||||
static void instr_0F11() { unimplemented_sse(); }
|
||||
static void instr_0F11_reg(int32_t r1, int32_t r2) {
|
||||
// movups xmm/m128, xmm
|
||||
mov_r_r128(r1, r2);
|
||||
}
|
||||
static void instr_0F11_mem(int32_t addr, int32_t r) {
|
||||
// movups xmm/m128, xmm
|
||||
mov_r_m128(addr, r);
|
||||
}
|
||||
|
||||
static void instr_0F12_mem(int32_t addr, int32_t r) { unimplemented_sse(); }
|
||||
static void instr_0F12_reg(int32_t r1, int32_t r2) { unimplemented_sse(); }
|
||||
|
||||
|
@ -3522,7 +3530,15 @@ switch(opcode)
|
|||
break;
|
||||
case 0x11:
|
||||
{
|
||||
instr_0F11();
|
||||
int32_t modrm_byte = read_imm8();
|
||||
if(modrm_byte < 0xC0)
|
||||
{
|
||||
instr_0F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7);
|
||||
}
|
||||
else
|
||||
{
|
||||
instr_0F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x12:
|
||||
|
@ -7890,7 +7906,15 @@ switch(opcode)
|
|||
break;
|
||||
case 0x11:
|
||||
{
|
||||
instr_0F11();
|
||||
int32_t modrm_byte = read_imm8();
|
||||
if(modrm_byte < 0xC0)
|
||||
{
|
||||
instr_0F11_mem(modrm_resolve(modrm_byte), modrm_byte >> 3 & 7);
|
||||
}
|
||||
else
|
||||
{
|
||||
instr_0F11_reg(modrm_byte & 7, modrm_byte >> 3 & 7);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x12:
|
||||
|
|
Loading…
Reference in a new issue