X86: Implement movd_Vo_Edp on X86
This patch implements the movd_Vo_Edp series of instructions. It addresses various concerns by Gabe Black about which file the instruction belonged in, as well as supporting REX prefixed instructions properly. This instruction is needed for some of the spec2k benchmarks, most notably bzip2.
This commit is contained in:
@@ -615,7 +615,7 @@
|
||||
0x3: PACKSSDW(Vo,Wo);
|
||||
0x4: PUNPCKLQDQ(Vo,Wq);
|
||||
0x5: PUNPCKHQDQ(Vo,Wq);
|
||||
0x6: WarnUnimpl::movd_Vo_Ed();
|
||||
0x6: MOVD(Vo,Edp);
|
||||
0x7: MOVDQA(Vo,Wo);
|
||||
}
|
||||
default: UD2();
|
||||
@@ -709,7 +709,7 @@
|
||||
0x1: decode OPCODE_OP_BOTTOM3 {
|
||||
0x4: HADDPD(Vo,Wo);
|
||||
0x5: WarnUnimpl::hsubpd_Vo_Wo();
|
||||
0x6: WarnUnimpl::movd_Ed_Vd();
|
||||
0x6: MOVD(Edp,Vd);
|
||||
0x7: MOVDQA(Wo,Vo);
|
||||
default: UD2();
|
||||
}
|
||||
|
||||
@@ -355,6 +355,36 @@ def macroop MOVNTI_P_R {
|
||||
rdip t7
|
||||
st reg, seg, riprel, disp
|
||||
};
|
||||
|
||||
def macroop MOVD_XMM_R {
|
||||
mov2fp xmml, regm, srcSize=dsz, destSize=dsz
|
||||
lfpimm xmmh, 0
|
||||
};
|
||||
|
||||
def macroop MOVD_XMM_M {
|
||||
ldfp xmml, seg, sib, disp, dataSize=dsz
|
||||
lfpimm xmmh, 0
|
||||
};
|
||||
|
||||
def macroop MOVD_XMM_P {
|
||||
rdip t7
|
||||
ldfp xmml, seg, riprel, disp, dataSize=dsz
|
||||
lfpimm xmmh, 0
|
||||
};
|
||||
|
||||
def macroop MOVD_R_XMM {
|
||||
mov2int reg, xmml, size=dsz
|
||||
};
|
||||
|
||||
def macroop MOVD_M_XMM {
|
||||
stfp xmml, seg, sib, disp, dataSize=dsz
|
||||
};
|
||||
|
||||
def macroop MOVD_P_XMM {
|
||||
rdip t7
|
||||
stfp xmml, seg, riprel, disp, dataSize=dsz
|
||||
};
|
||||
|
||||
'''
|
||||
#let {{
|
||||
# class MOVD(Inst):
|
||||
|
||||
Reference in New Issue
Block a user