ghidra/Ghidra/Processors/x86/data/languages/avx_manual.sinc

66 lines
2.3 KiB
Plaintext

# MOVSD 4-111 PAGE 1231 LINE 63970
:VMOVSD XmmReg1, vexVVVV_XmmReg, XmmReg2 is $(VEX_NDS) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG) & vexVVVV_XmmReg; byte=0x10; XmmReg1 & YmmReg1 & (mod=0x3 & XmmReg2)
{
local tmpa:8 = XmmReg2[0,64];
local tmpb:8 = vexVVVV_XmmReg[64,64];
YmmReg1 = 0;
XmmReg1[0,64] = tmpa;
XmmReg1[64,64] = tmpb;
# TODO ZmmReg1 = zext(XmmReg1)
}
# MOVSD 4-111 PAGE 1231 LINE 63972
:VMOVSD XmmReg1, m64 is $(VEX_NONE) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG); byte=0x10; (XmmReg1 & YmmReg1) ... & m64
{
YmmReg1[0,64] = m64;
YmmReg1[64,64] = 0;
# TODO ZmmReg1 = zext(XmmReg1)
}
# MOVSD 4-111 PAGE 1231 LINE 63974
:VMOVSD XmmReg2, vexVVVV_XmmReg, XmmReg1 is $(VEX_NDS) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG) & vexVVVV_XmmReg; byte=0x11; XmmReg1 & (mod=0x3 & (XmmReg2 & YmmReg2))
{
local tmpa:8 = XmmReg1[0,64];
local tmpb:8 = vexVVVV_XmmReg[64,64];
YmmReg2 = 0;
XmmReg2[0,64] = tmpa;
XmmReg2[64,64] = tmpb;
# TODO ZmmReg2 = zext(XmmReg2)
}
# MOVSD 4-111 PAGE 1231 LINE 63976
:VMOVSD m64, XmmReg1 is $(VEX_NONE) & $(VEX_LIG) & $(VEX_PRE_F2) & $(VEX_0F) & $(VEX_WIG); byte=0x11; XmmReg1 ... & m64
{
m64 = XmmReg1[0,64];
}
# MOVUPS 4-130 PAGE 1250 LINE 64872
:VMOVUPS XmmReg1, XmmReg2_m128 is $(VEX_NONE) & $(VEX_L128) & $(VEX_PRE_NONE) & $(VEX_0F) & $(VEX_WIG); byte=0x10; (XmmReg1 & YmmReg1) ... & XmmReg2_m128
{
local tmp:16 = XmmReg2_m128;
YmmReg1[0,128] = tmp;
YmmReg1[128,64] = 0;
YmmReg1[192,64] = 0;
}
# MOVUPS 4-130 PAGE 1250 LINE 64874
# TODO in general, what do we do with the zext of only the register case; needs investigation
:VMOVUPS XmmReg2_m128, XmmReg1 is $(VEX_NONE) & $(VEX_L128) & $(VEX_PRE_NONE) & $(VEX_0F) & $(VEX_WIG); byte=0x11; XmmReg1 ... & XmmReg2_m128
{
XmmReg2_m128 = XmmReg1;
}
# MOVUPS 4-130 PAGE 1250 LINE 64876
:VMOVUPS YmmReg1, YmmReg2_m256 is $(VEX_NONE) & $(VEX_L256) & $(VEX_PRE_NONE) & $(VEX_0F) & $(VEX_WIG); byte=0x10; YmmReg1 ... & YmmReg2_m256
{
YmmReg1 = YmmReg2_m256;
# TODO ZmmReg1 = zext(YmmReg1)
}
# MOVUPS 4-130 PAGE 1250 LINE 64878
# TODO in general, what do we do with the zext of only the register case; needs investigation
:VMOVUPS YmmReg2_m256, YmmReg1 is $(VEX_NONE) & $(VEX_L256) & $(VEX_PRE_NONE) & $(VEX_0F) & $(VEX_WIG); byte=0x11; YmmReg1 ... & YmmReg2_m256
{
YmmReg2_m256 = YmmReg1;
}