X86: Implement the remaining unpack instructions.
This commit is contained in:
parent
7b18f8a062
commit
63403bd562
|
@ -295,8 +295,8 @@
|
|||
default: movlps_Vq_Mq();
|
||||
}
|
||||
0x3: movlps_Mq_Vq();
|
||||
0x4: unpcklps();
|
||||
0x5: unpckhps();
|
||||
0x4: Inst::UNPCKLPS(Vps,Wq);
|
||||
0x5: Inst::UNPCKHPS(Vpd,Wq);
|
||||
0x6: decode MODRM_MOD {
|
||||
0x3: movlhps_Vq_VRq();
|
||||
default: movhps_Vq_Mq();
|
||||
|
@ -317,8 +317,8 @@
|
|||
0x1: movupd_Wo_Vo();
|
||||
0x2: Inst::MOVLPD(Vq,Mq);
|
||||
0x3: Inst::MOVLPD(Mq,Vq);
|
||||
0x4: unpcklpd_Vo_Wq();
|
||||
0x5: unpckhpd_Vo_Wo();
|
||||
0x4: Inst::UNPCKLPD(Vo,Wq);
|
||||
0x5: Inst::UNPCKHPD(Vo,Wo);
|
||||
0x6: movhpd_Vq_Mq();
|
||||
0x7: movhpd_Mq_Vq();
|
||||
}
|
||||
|
|
|
@ -54,8 +54,74 @@
|
|||
# Authors: Gabe Black
|
||||
|
||||
microcode = '''
|
||||
# UNPCKHPS
|
||||
# UNPCKHPD
|
||||
# UNPCKLPS
|
||||
# UNPCKLPD
|
||||
def macroop UNPCKLPS_XMM_XMM {
|
||||
unpack xmmh, xmml, xmmlm, sel=1, size=4
|
||||
unpack xmml, xmml, xmmlm, sel=0, size=4
|
||||
};
|
||||
|
||||
def macroop UNPCKLPS_XMM_M {
|
||||
ldfp ufp1, seg, sib, disp, dataSize=8
|
||||
unpack xmmh, xmml, ufp1, sel=1, size=4
|
||||
unpack xmml, xmml, ufp1, sel=0, size=4
|
||||
};
|
||||
|
||||
def macroop UNPCKLPS_XMM_P {
|
||||
rdip t7
|
||||
ldfp ufp1, seg, riprel, disp, dataSize=8
|
||||
unpack xmmh, xmml, ufp1, sel=1, size=4
|
||||
unpack xmml, xmml, ufp1, sel=0, size=4
|
||||
};
|
||||
|
||||
def macroop UNPCKLPD_XMM_XMM {
|
||||
movfp xmmh, xmmlm
|
||||
};
|
||||
|
||||
def macroop UNPCKLPD_XMM_M {
|
||||
ldfp xmmh, seg, sib, disp, dataSize=8
|
||||
};
|
||||
|
||||
def macroop UNPCKLPD_XMM_P {
|
||||
rdip t7
|
||||
ldfp xmmh, seg, riprel, disp, dataSize=8
|
||||
};
|
||||
|
||||
def macroop UNPCKHPS_XMM_XMM {
|
||||
unpack xmml, xmmh, xmmhm, sel=0, size=4
|
||||
unpack xmmh, xmmh, xmmhm, sel=1, size=4
|
||||
};
|
||||
|
||||
def macroop UNPCKHPS_XMM_M {
|
||||
lea t1, seg, sib, disp, dataSize=asz
|
||||
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
|
||||
unpack xmml, xmmh, ufp1, sel=0, size=4
|
||||
unpack xmmh, xmmh, ufp1, sel=1, size=4
|
||||
};
|
||||
|
||||
def macroop UNPCKHPS_XMM_P {
|
||||
rdip t7
|
||||
lea t1, seg, riprel, disp, dataSize=asz
|
||||
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
|
||||
unpack xmml, xmmh, ufp1, sel=0, size=4
|
||||
unpack xmmh, xmmh, ufp1, sel=1, size=4
|
||||
};
|
||||
|
||||
def macroop UNPCKHPD_XMM_XMM {
|
||||
movfp xmml, xmmh
|
||||
movfp xmmh, xmmhm
|
||||
};
|
||||
|
||||
def macroop UNPCKHPD_XMM_M {
|
||||
lea t1, seg, sib, disp, dataSize=asz
|
||||
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
|
||||
movfp xmml, xmmh
|
||||
movfp xmmh, ufp1
|
||||
};
|
||||
|
||||
def macroop UNPCKHPD_XMM_P {
|
||||
rdip t7
|
||||
lea t1, seg, riprel, disp, dataSize=asz
|
||||
ldfp ufp1, seg, [1, t0, t1], 8, dataSize=8
|
||||
movfp xmml, xmmh
|
||||
movfp xmmh, ufp1
|
||||
};
|
||||
'''
|
||||
|
|
Loading…
Reference in a new issue