Merge pull request #2900 from aroulin/x64emitter-rcp
x64Emitter: add RCPPS and RCPSS SSE instructions
This commit is contained in:
commit
6015e2d812
|
@ -56,6 +56,7 @@ enum NormalSSEOps
|
||||||
sseCOMIS = 0x2F, //COMIS
|
sseCOMIS = 0x2F, //COMIS
|
||||||
sseUCOMIS = 0x2E, //UCOMIS
|
sseUCOMIS = 0x2E, //UCOMIS
|
||||||
sseSQRT = 0x51, //SQRT
|
sseSQRT = 0x51, //SQRT
|
||||||
|
sseRCP = 0x53, //RCP
|
||||||
sseRSQRT = 0x52, //RSQRT (NO DOUBLE PRECISION!!!)
|
sseRSQRT = 0x52, //RSQRT (NO DOUBLE PRECISION!!!)
|
||||||
sseMOVAPfromRM = 0x28, //MOVAP from RM
|
sseMOVAPfromRM = 0x28, //MOVAP from RM
|
||||||
sseMOVAPtoRM = 0x29, //MOVAP to RM
|
sseMOVAPtoRM = 0x29, //MOVAP to RM
|
||||||
|
@ -1543,6 +1544,7 @@ void XEmitter::MAXSS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF3, sseMAX,
|
||||||
void XEmitter::MAXSD(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF2, sseMAX, regOp, arg);}
|
void XEmitter::MAXSD(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF2, sseMAX, regOp, arg);}
|
||||||
void XEmitter::SQRTSS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF3, sseSQRT, regOp, arg);}
|
void XEmitter::SQRTSS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF3, sseSQRT, regOp, arg);}
|
||||||
void XEmitter::SQRTSD(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF2, sseSQRT, regOp, arg);}
|
void XEmitter::SQRTSD(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF2, sseSQRT, regOp, arg);}
|
||||||
|
void XEmitter::RCPSS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF3, sseRCP, regOp, arg);}
|
||||||
void XEmitter::RSQRTSS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF3, sseRSQRT, regOp, arg);}
|
void XEmitter::RSQRTSS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0xF3, sseRSQRT, regOp, arg);}
|
||||||
|
|
||||||
void XEmitter::ADDPS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x00, sseADD, regOp, arg);}
|
void XEmitter::ADDPS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x00, sseADD, regOp, arg);}
|
||||||
|
@ -1569,6 +1571,7 @@ void XEmitter::MAXPS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x00, sseMAX,
|
||||||
void XEmitter::MAXPD(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x66, sseMAX, regOp, arg);}
|
void XEmitter::MAXPD(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x66, sseMAX, regOp, arg);}
|
||||||
void XEmitter::SQRTPS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x00, sseSQRT, regOp, arg);}
|
void XEmitter::SQRTPS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x00, sseSQRT, regOp, arg);}
|
||||||
void XEmitter::SQRTPD(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x66, sseSQRT, regOp, arg);}
|
void XEmitter::SQRTPD(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x66, sseSQRT, regOp, arg);}
|
||||||
|
void XEmitter::RCPPS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x00, sseRCP, regOp, arg);}
|
||||||
void XEmitter::RSQRTPS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x00, sseRSQRT, regOp, arg);}
|
void XEmitter::RSQRTPS(X64Reg regOp, const OpArg& arg) {WriteSSEOp(0x00, sseRSQRT, regOp, arg);}
|
||||||
void XEmitter::SHUFPS(X64Reg regOp, const OpArg& arg, u8 shuffle) {WriteSSEOp(0x00, sseSHUF, regOp, arg,1); Write8(shuffle);}
|
void XEmitter::SHUFPS(X64Reg regOp, const OpArg& arg, u8 shuffle) {WriteSSEOp(0x00, sseSHUF, regOp, arg,1); Write8(shuffle);}
|
||||||
void XEmitter::SHUFPD(X64Reg regOp, const OpArg& arg, u8 shuffle) {WriteSSEOp(0x66, sseSHUF, regOp, arg,1); Write8(shuffle);}
|
void XEmitter::SHUFPD(X64Reg regOp, const OpArg& arg, u8 shuffle) {WriteSSEOp(0x66, sseSHUF, regOp, arg,1); Write8(shuffle);}
|
||||||
|
|
|
@ -538,6 +538,7 @@ public:
|
||||||
void MAXSD(X64Reg regOp, const OpArg& arg);
|
void MAXSD(X64Reg regOp, const OpArg& arg);
|
||||||
void SQRTSS(X64Reg regOp, const OpArg& arg);
|
void SQRTSS(X64Reg regOp, const OpArg& arg);
|
||||||
void SQRTSD(X64Reg regOp, const OpArg& arg);
|
void SQRTSD(X64Reg regOp, const OpArg& arg);
|
||||||
|
void RCPSS(X64Reg regOp, const OpArg& arg);
|
||||||
void RSQRTSS(X64Reg regOp, const OpArg& arg);
|
void RSQRTSS(X64Reg regOp, const OpArg& arg);
|
||||||
|
|
||||||
// SSE/SSE2: Floating point bitwise (yes)
|
// SSE/SSE2: Floating point bitwise (yes)
|
||||||
|
@ -561,6 +562,7 @@ public:
|
||||||
void MAXPD(X64Reg regOp, const OpArg& arg);
|
void MAXPD(X64Reg regOp, const OpArg& arg);
|
||||||
void SQRTPS(X64Reg regOp, const OpArg& arg);
|
void SQRTPS(X64Reg regOp, const OpArg& arg);
|
||||||
void SQRTPD(X64Reg regOp, const OpArg& arg);
|
void SQRTPD(X64Reg regOp, const OpArg& arg);
|
||||||
|
void RCPPS(X64Reg regOp, const OpArg& arg);
|
||||||
void RSQRTPS(X64Reg regOp, const OpArg& arg);
|
void RSQRTPS(X64Reg regOp, const OpArg& arg);
|
||||||
|
|
||||||
// SSE/SSE2: Floating point packed bitwise (x4 for float, x2 for double)
|
// SSE/SSE2: Floating point packed bitwise (x4 for float, x2 for double)
|
||||||
|
|
Loading…
Reference in New Issue