From 97e01e31d02e6de9808c3ee6fc3fe2d3b0ecf08a Mon Sep 17 00:00:00 2001 From: magumagu9 Date: Thu, 18 Dec 2008 06:46:32 +0000 Subject: [PATCH] Some small emitter enhancements; I was originally planning on actually using these, but I changed my mind. They could potentially be useful in the future, though. git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@1574 8ced0084-cf51-0410-be5f-012b33b47a6e --- Source/Core/Common/Src/x64Emitter.cpp | 14 +++++++++++++- Source/Core/Common/Src/x64Emitter.h | 6 ++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Source/Core/Common/Src/x64Emitter.cpp b/Source/Core/Common/Src/x64Emitter.cpp index 64ca290ca0..dd6c35918f 100644 --- a/Source/Core/Common/Src/x64Emitter.cpp +++ b/Source/Core/Common/Src/x64Emitter.cpp @@ -1230,7 +1230,17 @@ namespace Gen Write8(0xE0 | reg); Write8(shift); } - + + void PSRLW(X64Reg reg, int shift) { + WriteSSEOp(64, 0x71, true, (X64Reg)2, R(reg)); + Write8(shift); + } + + void PSLLW(X64Reg reg, int shift) { + WriteSSEOp(64, 0x71, true, (X64Reg)6, R(reg)); + Write8(shift); + } + // WARNING not REX compatible void PSRAD(X64Reg reg, int shift) { if (reg > 7) @@ -1304,6 +1314,8 @@ namespace Gen void PMOVMSKB(X64Reg dest, OpArg arg) {WriteSSEOp(64, 0xD7, true, dest, arg); } + void PSHUFLW(X64Reg regOp, OpArg arg, u8 shuffle) {WriteSSEOp(64, 0x70, false, regOp, arg, 1); Write8(shuffle);} + // Prefixes void LOCK() { Write8(0xF0); } diff --git a/Source/Core/Common/Src/x64Emitter.h b/Source/Core/Common/Src/x64Emitter.h index c96b20b4cf..bf32b10c9b 100644 --- a/Source/Core/Common/Src/x64Emitter.h +++ b/Source/Core/Common/Src/x64Emitter.h @@ -520,6 +520,12 @@ namespace Gen void PMOVMSKB(X64Reg dest, OpArg arg); void PSHUFB(X64Reg dest, OpArg arg); + void PSHUFLW(X64Reg dest, OpArg arg, u8 shuffle); + + void PSRLW(X64Reg reg, int shift); + void PSLLW(X64Reg reg, int shift); + void PSRAW(X64Reg reg, int shift); + void RTDSC(); void CallCdeclFunction3(void* fnptr, u32 arg0, u32 arg1, u32 arg2);