mirror of
https://github.com/PCSX2/pcsx2.git
synced 2025-04-02 10:52:54 -04:00
git-svn-id: http://pcsx2.googlecode.com/svn/branches/pcsx2_0.9.1@159 96395faa-99c1-11dd-bbfe-3dabce05a288
184 lines
3.2 KiB
C
184 lines
3.2 KiB
C
|
|
#include "ix86.h"
|
|
|
|
/**********************/
|
|
/* 3DNOW instructions */
|
|
/**********************/
|
|
|
|
/* femms */
|
|
void FEMMS( void )
|
|
{
|
|
write16( 0x0E0F );
|
|
}
|
|
|
|
void PFCMPEQMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0xB0 );
|
|
}
|
|
|
|
void PFCMPGTMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0xA0 );
|
|
}
|
|
|
|
void PFCMPGEMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0x90 );
|
|
}
|
|
|
|
void PFADDMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0x9E );
|
|
}
|
|
|
|
void PFADDRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0x9E );
|
|
}
|
|
|
|
void PFSUBMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0x9A );
|
|
}
|
|
|
|
void PFSUBRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0x9A );
|
|
}
|
|
|
|
void PFMULMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0xB4 );
|
|
}
|
|
|
|
void PFMULRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0xB4 );
|
|
}
|
|
|
|
void PFRCPMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0x96 );
|
|
}
|
|
|
|
void PFRCPRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0x96 );
|
|
}
|
|
|
|
void PFRCPIT1RtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0xA6 );
|
|
}
|
|
|
|
void PFRCPIT2RtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0xB6 );
|
|
}
|
|
|
|
void PFRSQRTRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0x97 );
|
|
}
|
|
|
|
void PFRSQIT1RtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0xA7 );
|
|
}
|
|
|
|
void PF2IDMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0x1D );
|
|
}
|
|
|
|
void PF2IDRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0x1D );
|
|
}
|
|
|
|
void PI2FDMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0x0D );
|
|
}
|
|
|
|
void PI2FDRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0x0D );
|
|
}
|
|
|
|
void PFMAXMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0xA4 );
|
|
}
|
|
|
|
void PFMAXRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0xA4 );
|
|
}
|
|
|
|
void PFMINMtoR( x86IntRegType to, u32 from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 0, to, DISP32 );
|
|
write32( from );
|
|
write8( 0x94 );
|
|
}
|
|
|
|
void PFMINRtoR( x86IntRegType to, x86IntRegType from )
|
|
{
|
|
write16( 0x0F0F );
|
|
ModRM( 3, to, from );
|
|
write8( 0x94 );
|
|
}
|