mirror of https://github.com/PCSX2/pcsx2.git
Added COMI.SS/COMI.SD to the emitter (and moved UCOMI from moremovs to comparisons, where it belongs -- oops)
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@1224 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
9eda5dc951
commit
faf535a461
|
@ -55,6 +55,22 @@ public:
|
|||
SimdImpl_Compare() {} //GCWhat?
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Compare scalar floating point values and set EFLAGS (Ordered or Unordered)
|
||||
//
|
||||
template< bool Ordered >
|
||||
class SimdImpl_COMI
|
||||
{
|
||||
protected:
|
||||
static const u16 OpcodeSSE = Ordered ? 0x2f : 0x2e;
|
||||
|
||||
public:
|
||||
const SimdImpl_DestRegSSE<0x00,OpcodeSSE> SS;
|
||||
const SimdImpl_DestRegSSE<0x66,OpcodeSSE> SD;
|
||||
|
||||
SimdImpl_COMI() {}
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
|
|
|
@ -165,18 +165,6 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
template< u8 AltPrefix, u16 OpcodeSSE >
|
||||
class SimdImpl_UcomI
|
||||
{
|
||||
public:
|
||||
const SimdImpl_DestRegSSE<0x00,OpcodeSSE> SS;
|
||||
const SimdImpl_DestRegSSE<AltPrefix,OpcodeSSE> SD;
|
||||
SimdImpl_UcomI() {}
|
||||
};
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
// Blend - Conditional copying of values in src into dest.
|
||||
//
|
||||
|
|
|
@ -451,16 +451,17 @@ namespace x86Emitter
|
|||
extern const Internal::SimdImpl_DestRegEither<0x66,0xeb> xPOR;
|
||||
extern const Internal::SimdImpl_DestRegEither<0x66,0xef> xPXOR;
|
||||
|
||||
extern const Internal::SimdImpl_AndNot xANDN;
|
||||
extern const Internal::SimdImpl_AndNot xANDN;
|
||||
|
||||
extern const Internal::SimdImpl_UcomI<0x66,0x2e> xUCOMI;
|
||||
extern const Internal::SimdImpl_rSqrt<0x53> xRCP;
|
||||
extern const Internal::SimdImpl_rSqrt<0x52> xRSQRT;
|
||||
extern const Internal::SimdImpl_Sqrt<0x51> xSQRT;
|
||||
extern const Internal::SimdImpl_COMI<true> xCOMI;
|
||||
extern const Internal::SimdImpl_COMI<false> xUCOMI;
|
||||
extern const Internal::SimdImpl_rSqrt<0x53> xRCP;
|
||||
extern const Internal::SimdImpl_rSqrt<0x52> xRSQRT;
|
||||
extern const Internal::SimdImpl_Sqrt<0x51> xSQRT;
|
||||
|
||||
extern const Internal::SimdImpl_MinMax<0x5f> xMAX;
|
||||
extern const Internal::SimdImpl_MinMax<0x5d> xMIN;
|
||||
extern const Internal::SimdImpl_Shuffle<0xc6> xSHUF;
|
||||
extern const Internal::SimdImpl_MinMax<0x5f> xMAX;
|
||||
extern const Internal::SimdImpl_MinMax<0x5d> xMIN;
|
||||
extern const Internal::SimdImpl_Shuffle<0xc6> xSHUF;
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
|
@ -510,35 +511,35 @@ namespace x86Emitter
|
|||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
extern const Internal::SimdImpl_Shift<0xf0, 6> xPSLL;
|
||||
extern const Internal::SimdImpl_Shift<0xd0, 2> xPSRL;
|
||||
extern const Internal::SimdImpl_Shift<0xf0, 6> xPSLL;
|
||||
extern const Internal::SimdImpl_Shift<0xd0, 2> xPSRL;
|
||||
extern const Internal::SimdImpl_ShiftWithoutQ<0xe0, 4> xPSRA;
|
||||
|
||||
extern const Internal::SimdImpl_AddSub<0xdc, 0xd4> xPADD;
|
||||
extern const Internal::SimdImpl_AddSub<0xd8, 0xfb> xPSUB;
|
||||
extern const Internal::SimdImpl_PMinMax<0xde,0x3c> xPMAX;
|
||||
extern const Internal::SimdImpl_PMinMax<0xda,0x38> xPMIN;
|
||||
extern const Internal::SimdImpl_AddSub<0xdc, 0xd4> xPADD;
|
||||
extern const Internal::SimdImpl_AddSub<0xd8, 0xfb> xPSUB;
|
||||
extern const Internal::SimdImpl_PMinMax<0xde,0x3c> xPMAX;
|
||||
extern const Internal::SimdImpl_PMinMax<0xda,0x38> xPMIN;
|
||||
|
||||
extern const Internal::SimdImpl_PMul xPMUL;
|
||||
extern const Internal::SimdImpl_PCompare xPCMP;
|
||||
extern const Internal::SimdImpl_PShuffle xPSHUF;
|
||||
extern const Internal::SimdImpl_PUnpack xPUNPCK;
|
||||
extern const Internal::SimdImpl_Unpack xUNPCK;
|
||||
extern const Internal::SimdImpl_Pack xPACK;
|
||||
extern const Internal::SimdImpl_PMul xPMUL;
|
||||
extern const Internal::SimdImpl_PCompare xPCMP;
|
||||
extern const Internal::SimdImpl_PShuffle xPSHUF;
|
||||
extern const Internal::SimdImpl_PUnpack xPUNPCK;
|
||||
extern const Internal::SimdImpl_Unpack xUNPCK;
|
||||
extern const Internal::SimdImpl_Pack xPACK;
|
||||
|
||||
extern const Internal::SimdImpl_PAbsolute xPABS;
|
||||
extern const Internal::SimdImpl_PSign xPSIGN;
|
||||
extern const Internal::SimdImpl_PInsert xPINSR;
|
||||
extern const Internal::SimdImpl_PExtract xPEXTR;
|
||||
extern const Internal::SimdImpl_PMultAdd xPMADD;
|
||||
extern const Internal::SimdImpl_HorizAdd xHADD;
|
||||
extern const Internal::SimdImpl_PAbsolute xPABS;
|
||||
extern const Internal::SimdImpl_PSign xPSIGN;
|
||||
extern const Internal::SimdImpl_PInsert xPINSR;
|
||||
extern const Internal::SimdImpl_PExtract xPEXTR;
|
||||
extern const Internal::SimdImpl_PMultAdd xPMADD;
|
||||
extern const Internal::SimdImpl_HorizAdd xHADD;
|
||||
|
||||
extern const Internal::SimdImpl_Blend xBLEND;
|
||||
extern const Internal::SimdImpl_DotProduct xDP;
|
||||
extern const Internal::SimdImpl_Round xROUND;
|
||||
extern const Internal::SimdImpl_Blend xBLEND;
|
||||
extern const Internal::SimdImpl_DotProduct xDP;
|
||||
extern const Internal::SimdImpl_Round xROUND;
|
||||
|
||||
extern const Internal::SimdImpl_PMove<true> xPMOVSX;
|
||||
extern const Internal::SimdImpl_PMove<false> xPMOVZX;
|
||||
extern const Internal::SimdImpl_PMove<true> xPMOVSX;
|
||||
extern const Internal::SimdImpl_PMove<false> xPMOVZX;
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -209,6 +209,7 @@ DEFINE_LEGACY_CMP_OPCODE( NLT )
|
|||
DEFINE_LEGACY_CMP_OPCODE( NLE )
|
||||
DEFINE_LEGACY_CMP_OPCODE( ORD )
|
||||
|
||||
DEFINE_LEGACY_SSSD_OPCODE( COMI )
|
||||
DEFINE_LEGACY_SSSD_OPCODE( UCOMI )
|
||||
DEFINE_LEGACY_RSQRT_OPCODE( RCP )
|
||||
DEFINE_LEGACY_RSQRT_OPCODE( RSQRT )
|
||||
|
|
|
@ -90,27 +90,27 @@ const SimdImpl_MoveSSE<0x66,true> xMOVAPD;
|
|||
const SimdImpl_MoveSSE<0x66,false> xMOVUPD;
|
||||
#endif
|
||||
|
||||
const MovhlImplAll<0x16> xMOVH;
|
||||
const MovhlImplAll<0x12> xMOVL;
|
||||
const MovhlImpl_RtoR<0x16> xMOVLH;
|
||||
const MovhlImpl_RtoR<0x12> xMOVHL;
|
||||
const MovhlImplAll<0x16> xMOVH;
|
||||
const MovhlImplAll<0x12> xMOVL;
|
||||
const MovhlImpl_RtoR<0x16> xMOVLH;
|
||||
const MovhlImpl_RtoR<0x12> xMOVHL;
|
||||
|
||||
const SimdImpl_AndNot xANDN;
|
||||
const SimdImpl_COMI<true> xCOMI;
|
||||
const SimdImpl_COMI<false> xUCOMI;
|
||||
const SimdImpl_rSqrt<0x53> xRCP;
|
||||
const SimdImpl_rSqrt<0x52> xRSQRT;
|
||||
const SimdImpl_Sqrt<0x51> xSQRT;
|
||||
|
||||
const SimdImpl_MinMax<0x5f> xMAX;
|
||||
const SimdImpl_MinMax<0x5d> xMIN;
|
||||
const SimdImpl_Shuffle<0xc6> xSHUF;
|
||||
|
||||
const SimdImpl_DestRegEither<0x66,0xdb> xPAND;
|
||||
const SimdImpl_DestRegEither<0x66,0xdf> xPANDN;
|
||||
const SimdImpl_DestRegEither<0x66,0xeb> xPOR;
|
||||
const SimdImpl_DestRegEither<0x66,0xef> xPXOR;
|
||||
|
||||
const SimdImpl_AndNot xANDN;
|
||||
|
||||
const SimdImpl_UcomI<0x66,0x2e> xUCOMI;
|
||||
const SimdImpl_rSqrt<0x53> xRCP;
|
||||
const SimdImpl_rSqrt<0x52> xRSQRT;
|
||||
const SimdImpl_Sqrt<0x51> xSQRT;
|
||||
|
||||
const SimdImpl_MinMax<0x5f> xMAX;
|
||||
const SimdImpl_MinMax<0x5d> xMIN;
|
||||
const SimdImpl_Shuffle<0xc6> xSHUF;
|
||||
|
||||
// ------------------------------------------------------------------------
|
||||
|
||||
// [SSE-4.1] Performs a bitwise AND of dest against src, and sets the ZF flag
|
||||
|
|
Loading…
Reference in New Issue