mirror of https://github.com/PCSX2/pcsx2.git
x86emitter: extend group8 type
This commit is contained in:
parent
39a6bda52d
commit
ef21a8dbd0
|
@ -61,11 +61,12 @@ struct xImpl_Group8
|
|||
{
|
||||
G8Type InstType;
|
||||
|
||||
void operator()( const xRegister32& bitbase, const xRegister32& bitoffset ) const;
|
||||
void operator()( const xRegister16& bitbase, const xRegister16& bitoffset ) const;
|
||||
void operator()( const xRegister16or32& bitbase, u8 bitoffset ) const;
|
||||
void operator()( const xRegister16or32or64& bitbase, const xRegister16or32or64& bitoffset ) const;
|
||||
void operator()( const xRegister16or32or64& bitbase, u8 bitoffset ) const;
|
||||
|
||||
void operator()( const xIndirectVoid& bitbase, const xRegister16or32& bitoffset ) const;
|
||||
void operator()( const xIndirectVoid& bitbase, const xRegister16or32or64& bitoffset ) const;
|
||||
|
||||
void operator()( const xIndirect64& bitbase, u8 bitoffset ) const;
|
||||
void operator()( const xIndirect32& bitbase, u8 bitoffset ) const;
|
||||
void operator()( const xIndirect16& bitbase, u8 bitoffset ) const;
|
||||
};
|
||||
|
|
|
@ -259,19 +259,22 @@ const xImpl_iMul xMUL = { { 0x00, 0x59 }, { 0x66, 0x59 }, { 0xf3, 0x59 }, { 0xf2
|
|||
// Group 8 Instructions
|
||||
// =====================================================================================================
|
||||
|
||||
void xImpl_Group8::operator()( const xRegister32& bitbase, const xRegister32& bitoffset ) const { xOpWrite0F( 0xa3 | (InstType << 3), bitbase, bitoffset ); }
|
||||
void xImpl_Group8::operator()( const xRegister16& bitbase, const xRegister16& bitoffset ) const { xOpWrite0F( 0x66, 0xa3 | (InstType << 3), bitbase, bitoffset ); }
|
||||
void xImpl_Group8::operator()( const xRegister16or32or64& bitbase, const xRegister16or32or64& bitoffset ) const {
|
||||
pxAssert( bitbase->GetOperandSize() == bitoffset->GetOperandSize() );
|
||||
xOpWrite0F( bitbase->GetPrefix16(), 0xa3 | (InstType << 3), bitbase, bitoffset );
|
||||
}
|
||||
void xImpl_Group8::operator()( const xIndirect64& bitbase, u8 bitoffset ) const { xOpWrite0F( 0xba, InstType, bitbase, bitoffset ); }
|
||||
void xImpl_Group8::operator()( const xIndirect32& bitbase, u8 bitoffset ) const { xOpWrite0F( 0xba, InstType, bitbase, bitoffset ); }
|
||||
void xImpl_Group8::operator()( const xIndirect16& bitbase, u8 bitoffset ) const { xOpWrite0F( 0x66, 0xba, InstType, bitbase, bitoffset ); }
|
||||
|
||||
void xImpl_Group8::operator()( const xRegister16or32& bitbase, u8 bitoffset ) const
|
||||
void xImpl_Group8::operator()( const xRegister16or32or64& bitbase, u8 bitoffset ) const
|
||||
{
|
||||
xOpWrite0F( (bitbase->GetOperandSize() == 2) ? 0x66 : 0x00, 0xba, InstType, bitbase, bitoffset );
|
||||
xOpWrite0F( bitbase->GetPrefix16(), 0xba, InstType, bitbase, bitoffset );
|
||||
}
|
||||
|
||||
void xImpl_Group8::operator()( const xIndirectVoid& bitbase, const xRegister16or32& bitoffset ) const
|
||||
void xImpl_Group8::operator()( const xIndirectVoid& bitbase, const xRegister16or32or64& bitoffset ) const
|
||||
{
|
||||
xOpWrite0F( (bitoffset->GetOperandSize() == 2) ? 0x66 : 0x00, 0xa3 | (InstType << 3), bitoffset, bitbase );
|
||||
xOpWrite0F( bitoffset->GetPrefix16(), 0xa3 | (InstType << 3), bitoffset, bitbase );
|
||||
}
|
||||
|
||||
const xImpl_Group8 xBT = { G8Type_BT };
|
||||
|
|
Loading…
Reference in New Issue