diff options
Diffstat (limited to 'Source/Core/Common/x64Emitter.cpp')
| -rw-r--r-- | Source/Core/Common/x64Emitter.cpp | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/Source/Core/Common/x64Emitter.cpp b/Source/Core/Common/x64Emitter.cpp index 0a122e1121..f9a8a015f9 100644 --- a/Source/Core/Common/x64Emitter.cpp +++ b/Source/Core/Common/x64Emitter.cpp @@ -2519,19 +2519,19 @@ void XEmitter::PUNPCKLQDQ(X64Reg dest, const OpArg& arg) WriteSSEOp(0x66, 0x6C, dest, arg); } -void XEmitter::PSRLW(X64Reg reg, int shift) +void XEmitter::PSRLW(X64Reg reg, u8 shift) { WriteSSEOp(0x66, 0x71, (X64Reg)2, R(reg)); Write8(shift); } -void XEmitter::PSRLD(X64Reg reg, int shift) +void XEmitter::PSRLD(X64Reg reg, u8 shift) { WriteSSEOp(0x66, 0x72, (X64Reg)2, R(reg)); Write8(shift); } -void XEmitter::PSRLQ(X64Reg reg, int shift) +void XEmitter::PSRLQ(X64Reg reg, u8 shift) { WriteSSEOp(0x66, 0x73, (X64Reg)2, R(reg)); Write8(shift); @@ -2542,38 +2542,38 @@ void XEmitter::PSRLQ(X64Reg reg, const OpArg& arg) WriteSSEOp(0x66, 0xd3, reg, arg); } -void XEmitter::PSRLDQ(X64Reg reg, int shift) +void XEmitter::PSRLDQ(X64Reg reg, u8 shift) { WriteSSEOp(0x66, 0x73, (X64Reg)3, R(reg)); Write8(shift); } -void XEmitter::PSLLW(X64Reg reg, int shift) +void XEmitter::PSLLW(X64Reg reg, u8 shift) { WriteSSEOp(0x66, 0x71, (X64Reg)6, R(reg)); Write8(shift); } -void XEmitter::PSLLD(X64Reg reg, int shift) +void XEmitter::PSLLD(X64Reg reg, u8 shift) { WriteSSEOp(0x66, 0x72, (X64Reg)6, R(reg)); Write8(shift); } -void XEmitter::PSLLQ(X64Reg reg, int shift) +void XEmitter::PSLLQ(X64Reg reg, u8 shift) { WriteSSEOp(0x66, 0x73, (X64Reg)6, R(reg)); Write8(shift); } -void XEmitter::PSLLDQ(X64Reg reg, int shift) +void XEmitter::PSLLDQ(X64Reg reg, u8 shift) { WriteSSEOp(0x66, 0x73, (X64Reg)7, R(reg)); Write8(shift); } // WARNING not REX compatible -void XEmitter::PSRAW(X64Reg reg, int shift) +void XEmitter::PSRAW(X64Reg reg, u8 shift) { if (reg > 7) PanicAlertFmt("The PSRAW-emitter does not support regs above 7"); @@ -2585,7 +2585,7 @@ void XEmitter::PSRAW(X64Reg reg, int shift) } // WARNING not REX compatible -void XEmitter::PSRAD(X64Reg reg, int shift) +void XEmitter::PSRAD(X64Reg reg, u8 shift) { if (reg > 7) PanicAlertFmt("The PSRAD-emitter does not support regs above 7"); @@ -2695,6 +2695,11 @@ void XEmitter::BLENDPD(X64Reg dest, const OpArg& arg, u8 blend) Write8(blend); } +void XEmitter::PCMPEQQ(X64Reg dest, const OpArg& arg) +{ + WriteSSE41Op(0x66, 0x3829, dest, arg); +} + void XEmitter::PAND(X64Reg dest, const OpArg& arg) { WriteSSEOp(0x66, 0xDB, dest, arg); @@ -3038,6 +3043,12 @@ void XEmitter::VPXOR(X64Reg regOp1, X64Reg regOp2, const OpArg& arg) WriteAVXOp(0x66, 0xEF, regOp1, regOp2, arg); } +void XEmitter::VPSLLQ(X64Reg regOp1, X64Reg regOp2, u8 shift) +{ + WriteAVXOp(0x66, 0x73, (X64Reg)6, regOp1, R(regOp2)); + Write8(shift); +} + void XEmitter::VMOVAPS(const OpArg& arg, X64Reg regOp) { WriteAVXOp(0x00, 0x29, regOp, X64Reg::INVALID_REG, arg); |
