diff --git a/common/emitter/groups.cpp b/common/emitter/groups.cpp index a9b2a9d245..c811687f77 100644 --- a/common/emitter/groups.cpp +++ b/common/emitter/groups.cpp @@ -102,7 +102,6 @@ namespace x86Emitter ImplementGroup1(xImpl_Group1, InstType) ImplementGroup1(xImpl_G1Logic, InstType) ImplementGroup1(xImpl_G1Arith, InstType) - ImplementGroup1(xImpl_G1Compare, G1Type_CMP) const xImpl_G1Logic xAND = {G1Type_AND, {0x00, 0x54}, {0x66, 0x54}}; const xImpl_G1Logic xOR = {G1Type_OR, {0x00, 0x56}, {0x66, 0x56}}; @@ -110,10 +109,10 @@ namespace x86Emitter const xImpl_G1Arith xADD = {G1Type_ADD, {0x00, 0x58}, {0x66, 0x58}, {0xf3, 0x58}, {0xf2, 0x58}}; const xImpl_G1Arith xSUB = {G1Type_SUB, {0x00, 0x5c}, {0x66, 0x5c}, {0xf3, 0x5c}, {0xf2, 0x5c}}; - const xImpl_G1Compare xCMP = {{0x00, 0xc2}, {0x66, 0xc2}, {0xf3, 0xc2}, {0xf2, 0xc2}}; const xImpl_Group1 xADC = {G1Type_ADC}; const xImpl_Group1 xSBB = {G1Type_SBB}; + const xImpl_Group1 xCMP = {G1Type_CMP}; // ===================================================================================================== // Group 2 Instructions - SHR, SHL, etc. diff --git a/common/emitter/implement/group1.h b/common/emitter/implement/group1.h index 1351a04d28..9e6b94dfe5 100644 --- a/common/emitter/implement/group1.h +++ b/common/emitter/implement/group1.h @@ -111,21 +111,4 @@ namespace x86Emitter xImplSimd_DestRegSSE SD; // scalar double precision }; - // ------------------------------------------------------------------------ - struct xImpl_G1Compare - { - void operator()(const xRegisterInt& to, const xRegisterInt& from) const; - - void operator()(const xIndirectVoid& to, const xRegisterInt& from) const; - void operator()(const xRegisterInt& to, const xIndirectVoid& from) const; - void operator()(const xRegisterInt& to, int imm) const; - - void operator()(const xIndirect64orLess& to, int imm) const; - - xImplSimd_DestSSE_CmpImm PS; - xImplSimd_DestSSE_CmpImm PD; - xImplSimd_DestSSE_CmpImm SS; - xImplSimd_DestSSE_CmpImm SD; - }; - } // End namespace x86Emitter diff --git a/common/emitter/instructions.h b/common/emitter/instructions.h index 073d0d9034..6768bb965e 100644 --- a/common/emitter/instructions.h +++ b/common/emitter/instructions.h @@ -29,6 +29,7 @@ namespace x86Emitter extern const xImpl_Group1 xADC; extern const xImpl_Group1 xSBB; + extern const xImpl_Group1 xCMP; extern const xImpl_G1Logic xAND; extern const xImpl_G1Logic xOR; @@ -36,7 +37,6 @@ namespace x86Emitter extern const xImpl_G1Arith xADD; extern const xImpl_G1Arith xSUB; - extern const xImpl_G1Compare xCMP; // ------------------------------------------------------------------------ // Group 2 Instruction Class diff --git a/common/emitter/simd.cpp b/common/emitter/simd.cpp index 349e8f150a..4a3f5cdd06 100644 --- a/common/emitter/simd.cpp +++ b/common/emitter/simd.cpp @@ -481,7 +481,7 @@ namespace x86Emitter const xImplSimd_Compare xCMPEQ = {SSE2_Equal}; const xImplSimd_Compare xCMPLT = {SSE2_Less}; const xImplSimd_Compare xCMPLE = {SSE2_LessOrEqual}; - const xImplSimd_Compare xCMPUNORD = {SSE2_LessOrEqual}; + const xImplSimd_Compare xCMPUNORD = {SSE2_Unordered}; const xImplSimd_Compare xCMPNE = {SSE2_NotEqual}; const xImplSimd_Compare xCMPNLT = {SSE2_NotLess}; const xImplSimd_Compare xCMPNLE = {SSE2_NotLessOrEqual};