Added PSRLD/PSRLQ/PSLLD/PSLLQ support to x64Emitter
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@6180 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
parent
43c11a491a
commit
58ac6e541f
|
@ -1200,6 +1200,36 @@ void XEmitter::PUNPCKLWD(X64Reg dest, const OpArg &arg) {WriteSSEOp(64, 0x61, tr
|
||||||
void XEmitter::PUNPCKLDQ(X64Reg dest, const OpArg &arg) {WriteSSEOp(64, 0x62, true, dest, arg);}
|
void XEmitter::PUNPCKLDQ(X64Reg dest, const OpArg &arg) {WriteSSEOp(64, 0x62, true, dest, arg);}
|
||||||
//void PUNPCKLQDQ(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x60, true, dest, arg);}
|
//void PUNPCKLQDQ(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0x60, true, dest, arg);}
|
||||||
|
|
||||||
|
void XEmitter::PSRLW(X64Reg reg, int shift) {
|
||||||
|
WriteSSEOp(64, 0x71, true, (X64Reg)2, R(reg));
|
||||||
|
Write8(shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
void XEmitter::PSRLD(X64Reg reg, int shift) {
|
||||||
|
WriteSSEOp(64, 0x72, true, (X64Reg)2, R(reg));
|
||||||
|
Write8(shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
void XEmitter::PSRLQ(X64Reg reg, int shift) {
|
||||||
|
WriteSSEOp(64, 0x73, true, (X64Reg)2, R(reg));
|
||||||
|
Write8(shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
void XEmitter::PSLLW(X64Reg reg, int shift) {
|
||||||
|
WriteSSEOp(64, 0x71, true, (X64Reg)6, R(reg));
|
||||||
|
Write8(shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
void XEmitter::PSLLD(X64Reg reg, int shift) {
|
||||||
|
WriteSSEOp(64, 0x72, true, (X64Reg)6, R(reg));
|
||||||
|
Write8(shift);
|
||||||
|
}
|
||||||
|
|
||||||
|
void XEmitter::PSLLQ(X64Reg reg, int shift) {
|
||||||
|
WriteSSEOp(64, 0x73, true, (X64Reg)6, R(reg));
|
||||||
|
Write8(shift);
|
||||||
|
}
|
||||||
|
|
||||||
// WARNING not REX compatible
|
// WARNING not REX compatible
|
||||||
void XEmitter::PSRAW(X64Reg reg, int shift) {
|
void XEmitter::PSRAW(X64Reg reg, int shift) {
|
||||||
if (reg > 7)
|
if (reg > 7)
|
||||||
|
@ -1211,16 +1241,6 @@ void XEmitter::PSRAW(X64Reg reg, int shift) {
|
||||||
Write8(shift);
|
Write8(shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
void XEmitter::PSRLW(X64Reg reg, int shift) {
|
|
||||||
WriteSSEOp(64, 0x71, true, (X64Reg)2, R(reg));
|
|
||||||
Write8(shift);
|
|
||||||
}
|
|
||||||
|
|
||||||
void XEmitter::PSLLW(X64Reg reg, int shift) {
|
|
||||||
WriteSSEOp(64, 0x71, true, (X64Reg)6, R(reg));
|
|
||||||
Write8(shift);
|
|
||||||
}
|
|
||||||
|
|
||||||
// WARNING not REX compatible
|
// WARNING not REX compatible
|
||||||
void XEmitter::PSRAD(X64Reg reg, int shift) {
|
void XEmitter::PSRAD(X64Reg reg, int shift) {
|
||||||
if (reg > 7)
|
if (reg > 7)
|
||||||
|
|
|
@ -526,8 +526,6 @@ public:
|
||||||
void PUNPCKLWD(X64Reg dest, const OpArg &arg);
|
void PUNPCKLWD(X64Reg dest, const OpArg &arg);
|
||||||
void PUNPCKLDQ(X64Reg dest, const OpArg &arg);
|
void PUNPCKLDQ(X64Reg dest, const OpArg &arg);
|
||||||
|
|
||||||
void PSRAD(X64Reg dest, int shift);
|
|
||||||
|
|
||||||
void PAND(X64Reg dest, OpArg arg);
|
void PAND(X64Reg dest, OpArg arg);
|
||||||
void PANDN(X64Reg dest, OpArg arg);
|
void PANDN(X64Reg dest, OpArg arg);
|
||||||
void PXOR(X64Reg dest, OpArg arg);
|
void PXOR(X64Reg dest, OpArg arg);
|
||||||
|
@ -581,8 +579,15 @@ public:
|
||||||
void PSHUFLW(X64Reg dest, OpArg arg, u8 shuffle);
|
void PSHUFLW(X64Reg dest, OpArg arg, u8 shuffle);
|
||||||
|
|
||||||
void PSRLW(X64Reg reg, int shift);
|
void PSRLW(X64Reg reg, int shift);
|
||||||
|
void PSRLD(X64Reg reg, int shift);
|
||||||
|
void PSRLQ(X64Reg reg, int shift);
|
||||||
|
|
||||||
void PSLLW(X64Reg reg, int shift);
|
void PSLLW(X64Reg reg, int shift);
|
||||||
|
void PSLLD(X64Reg reg, int shift);
|
||||||
|
void PSLLQ(X64Reg reg, int shift);
|
||||||
|
|
||||||
void PSRAW(X64Reg reg, int shift);
|
void PSRAW(X64Reg reg, int shift);
|
||||||
|
void PSRAD(X64Reg reg, int shift);
|
||||||
|
|
||||||
void RTDSC();
|
void RTDSC();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue