X86: Implement the integer media max instructions.
This commit is contained in:
parent
c9a954c77a
commit
5d834c28eb
3 changed files with 72 additions and 8 deletions
|
@ -983,7 +983,7 @@
|
|||
0x3: Inst::PAND(Pq,Qq);
|
||||
0x4: Inst::PADDUSB(Pq,Qq);
|
||||
0x5: Inst::PADDUSW(Pq,Qq);
|
||||
0x6: pmaxub_Pq_Qq();
|
||||
0x6: Inst::PMAXUB(Pq,Qq);
|
||||
0x7: Inst::PANDN(Pq,Qq);
|
||||
}
|
||||
// operand size (0x66)
|
||||
|
@ -994,7 +994,7 @@
|
|||
0x3: Inst::PAND(Vo,Wo);
|
||||
0x4: Inst::PADDUSB(Vo,Wo);
|
||||
0x5: Inst::PADDUSW(Vo,Wo);
|
||||
0x6: pmaxub_Vo_Wo();
|
||||
0x6: Inst::PMAXUB(Vo,Wo);
|
||||
0x7: Inst::PANDN(Vo,Wo);
|
||||
}
|
||||
default: Inst::UD2();
|
||||
|
@ -1043,7 +1043,7 @@
|
|||
0x3: Inst::POR(Pq,Qq);
|
||||
0x4: Inst::PADDSB(Pq,Qq);
|
||||
0x5: Inst::PADDSW(Pq,Qq);
|
||||
0x6: pmaxsw_Pq_Qq();
|
||||
0x6: Inst::PMAXSW(Pq,Qq);
|
||||
0x7: Inst::PXOR(Pq,Qq);
|
||||
}
|
||||
// operand size (0x66)
|
||||
|
@ -1054,7 +1054,7 @@
|
|||
0x3: Inst::POR(Vo,Wo);
|
||||
0x4: Inst::PADDSB(Vo,Wo);
|
||||
0x5: Inst::PADDSW(Vo,Wo);
|
||||
0x6: pmaxsw_Vo_Wo();
|
||||
0x6: Inst::PMAXSW(Vo,Wo);
|
||||
0x7: Inst::PXOR(Vo,Wo);
|
||||
}
|
||||
default: Inst::UD2();
|
||||
|
|
|
@ -94,6 +94,43 @@ def macroop PMINSW_XMM_P {
|
|||
mmini xmmh, xmmh, ufp2, size=2, ext=2
|
||||
};
|
||||
|
||||
# PMAXUB
|
||||
# PMAXSW
|
||||
def macroop PMAXUB_XMM_XMM {
|
||||
mmaxi xmml, xmml, xmmlm, size=1, ext=0
|
||||
mmaxi xmmh, xmmh, xmmhm, size=1, ext=0
|
||||
};
|
||||
|
||||
def macroop PMAXUB_XMM_M {
|
||||
ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8
|
||||
ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8
|
||||
mmaxi xmml, xmml, ufp1, size=1, ext=0
|
||||
mmaxi xmmh, xmmh, ufp2, size=1, ext=0
|
||||
};
|
||||
|
||||
def macroop PMAXUB_XMM_P {
|
||||
rdip t7
|
||||
ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8
|
||||
ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8
|
||||
mmaxi xmml, xmml, ufp1, size=1, ext=0
|
||||
mmaxi xmmh, xmmh, ufp2, size=1, ext=0
|
||||
};
|
||||
|
||||
def macroop PMAXSW_XMM_XMM {
|
||||
mmaxi xmml, xmml, xmmlm, size=2, ext=2
|
||||
mmaxi xmmh, xmmh, xmmhm, size=2, ext=2
|
||||
};
|
||||
|
||||
def macroop PMAXSW_XMM_M {
|
||||
ldfp ufp1, seg, sib, "DISPLACEMENT", dataSize=8
|
||||
ldfp ufp2, seg, sib, "DISPLACEMENT + 8", dataSize=8
|
||||
mmaxi xmml, xmml, ufp1, size=2, ext=2
|
||||
mmaxi xmmh, xmmh, ufp2, size=2, ext=2
|
||||
};
|
||||
|
||||
def macroop PMAXSW_XMM_P {
|
||||
rdip t7
|
||||
ldfp ufp1, seg, riprel, "DISPLACEMENT", dataSize=8
|
||||
ldfp ufp2, seg, riprel, "DISPLACEMENT + 8", dataSize=8
|
||||
mmaxi xmml, xmml, ufp1, size=2, ext=2
|
||||
mmaxi xmmh, xmmh, ufp2, size=2, ext=2
|
||||
};
|
||||
'''
|
||||
|
|
|
@ -84,6 +84,33 @@ def macroop PMINSW_MMX_P {
|
|||
mmini mmx, mmx, ufp1, size=2, ext=2
|
||||
};
|
||||
|
||||
# PMAXUB
|
||||
# PMAXSW
|
||||
def macroop PMAXUB_MMX_MMX {
|
||||
mmaxi mmx, mmx, mmxm, size=1, ext=0
|
||||
};
|
||||
|
||||
def macroop PMAXUB_MMX_M {
|
||||
ldfp ufp1, seg, sib, disp, dataSize=8
|
||||
mmaxi mmx, mmx, ufp1, size=1, ext=0
|
||||
};
|
||||
|
||||
def macroop PMAXUB_MMX_P {
|
||||
rdip t7
|
||||
ldfp ufp1, seg, riprel, disp, dataSize=8
|
||||
mmaxi mmx, mmx, ufp1, size=1, ext=0
|
||||
};
|
||||
|
||||
def macroop PMAXSW_MMX_MMX {
|
||||
mmaxi mmx, mmx, mmxm, size=2, ext=2
|
||||
};
|
||||
|
||||
def macroop PMAXSW_MMX_M {
|
||||
ldfp ufp1, seg, sib, disp, dataSize=8
|
||||
mmaxi mmx, mmx, ufp1, size=2, ext=2
|
||||
};
|
||||
|
||||
def macroop PMAXSW_MMX_P {
|
||||
rdip t7
|
||||
ldfp ufp1, seg, riprel, disp, dataSize=8
|
||||
mmaxi mmx, mmx, ufp1, size=2, ext=2
|
||||
};
|
||||
'''
|
||||
|
|
Loading…
Reference in a new issue