/* PCSX2 - PS2 Emulator for PCs * Copyright (C) 2002-2010 PCSX2 Dev Team * * PCSX2 is free software: you can redistribute it and/or modify it under the terms * of the GNU Lesser General Public License as published by the Free Software Found- * ation, either version 3 of the License, or (at your option) any later version. * * PCSX2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with PCSX2. * If not, see . */ #pragma once #if defined(__linux__) && defined(__clang__) #define ATTR_DEP [[deprecated]] #define ATTR_DEP [[deprecated]] #else #define ATTR_DEP #endif //------------------------------------------------------------------ // legacy jump/align functions //------------------------------------------------------------------ ATTR_DEP extern void x86SetPtr( u8 *ptr ); ATTR_DEP extern void x86SetJ8( u8 *j8 ); ATTR_DEP extern void x86SetJ8A( u8 *j8 ); ATTR_DEP extern void x86SetJ16( u16 *j16 ); ATTR_DEP extern void x86SetJ16A( u16 *j16 ); ATTR_DEP extern void x86SetJ32( u32 *j32 ); ATTR_DEP extern void x86SetJ32A( u32 *j32 ); ATTR_DEP extern void x86Align( int bytes ); ATTR_DEP extern void x86AlignExecutable( int align ); //------------------------------------------------------------------ //////////////////////////////////// // jump instructions // //////////////////////////////////// // jmp rel8 ATTR_DEP extern u8* JMP8( u8 to ); // jmp rel32 ATTR_DEP extern u32* JMP32( uptr to ); // jp rel8 ATTR_DEP extern u8* JP8( u8 to ); // jnp rel8 ATTR_DEP extern u8* JNP8( u8 to ); // je rel8 ATTR_DEP extern u8* JE8( u8 to ); // jz rel8 ATTR_DEP extern u8* JZ8( u8 to ); // jg rel8 ATTR_DEP extern u8* JG8( u8 to ); // jge rel8 ATTR_DEP extern u8* JGE8( u8 to ); // js rel8 ATTR_DEP extern u8* JS8( u8 to ); // jns rel8 ATTR_DEP extern u8* JNS8( u8 to ); // jl rel8 ATTR_DEP extern u8* JL8( u8 to ); // ja rel8 ATTR_DEP extern u8* JA8( u8 to ); // jae rel8 ATTR_DEP extern u8* JAE8( u8 to ); // jb rel8 ATTR_DEP extern u8* JB8( u8 to ); // jbe rel8 ATTR_DEP extern u8* JBE8( u8 to ); // jle rel8 ATTR_DEP extern u8* JLE8( u8 to ); // jne rel8 ATTR_DEP extern u8* JNE8( u8 to ); // jnz rel8 ATTR_DEP extern u8* JNZ8( u8 to ); // jng rel8 ATTR_DEP extern u8* JNG8( u8 to ); // jnge rel8 ATTR_DEP extern u8* JNGE8( u8 to ); // jnl rel8 ATTR_DEP extern u8* JNL8( u8 to ); // jnle rel8 ATTR_DEP extern u8* JNLE8( u8 to ); // jo rel8 ATTR_DEP extern u8* JO8( u8 to ); // jno rel8 ATTR_DEP extern u8* JNO8( u8 to ); /* // jb rel16 ATTR_DEP extern u16* JA16( u16 to ); // jb rel16 ATTR_DEP extern u16* JB16( u16 to ); // je rel16 ATTR_DEP extern u16* JE16( u16 to ); // jz rel16 ATTR_DEP extern u16* JZ16( u16 to ); */ // jns rel32 ATTR_DEP extern u32* JNS32( u32 to ); // js rel32 ATTR_DEP extern u32* JS32( u32 to ); // jb rel32 ATTR_DEP extern u32* JB32( u32 to ); // je rel32 ATTR_DEP extern u32* JE32( u32 to ); // jz rel32 ATTR_DEP extern u32* JZ32( u32 to ); // jg rel32 ATTR_DEP extern u32* JG32( u32 to ); // jge rel32 ATTR_DEP extern u32* JGE32( u32 to ); // jl rel32 ATTR_DEP extern u32* JL32( u32 to ); // jle rel32 ATTR_DEP extern u32* JLE32( u32 to ); // jae rel32 ATTR_DEP extern u32* JAE32( u32 to ); // jne rel32 ATTR_DEP extern u32* JNE32( u32 to ); // jnz rel32 ATTR_DEP extern u32* JNZ32( u32 to ); // jng rel32 ATTR_DEP extern u32* JNG32( u32 to ); // jnge rel32 ATTR_DEP extern u32* JNGE32( u32 to ); // jnl rel32 ATTR_DEP extern u32* JNL32( u32 to ); // jnle rel32 ATTR_DEP extern u32* JNLE32( u32 to ); // jo rel32 ATTR_DEP extern u32* JO32( u32 to ); // jno rel32 ATTR_DEP extern u32* JNO32( u32 to ); // js rel32 ATTR_DEP extern u32* JS32( u32 to ); //****************** // FPU instructions //****************** // fld m32 to fpu reg stack ATTR_DEP extern void FLD32( u32 from ); // fld st(i) ATTR_DEP extern void FLD(int st); // fld1 (push +1.0f on the stack) ATTR_DEP extern void FLD1(); // fld1 (push log_2 e on the stack) ATTR_DEP extern void FLDL2E(); // fstp m32 from fpu reg stack ATTR_DEP extern void FSTP32( u32 to ); // fstp st(i) ATTR_DEP extern void FSTP(int st); // frndint ATTR_DEP extern void FRNDINT(); ATTR_DEP extern void FXCH(int st); ATTR_DEP extern void F2XM1(); ATTR_DEP extern void FSCALE(); // fadd ST(0) to fpu reg stack ST(src) ATTR_DEP extern void FADD320toR( x86IntRegType src ); // fsub ST(src) to fpu reg stack ST(0) ATTR_DEP extern void FSUB32Rto0( x86IntRegType src ); // fmul m32 to fpu reg stack ATTR_DEP extern void FMUL32( u32 from ); // fdiv m32 to fpu reg stack ATTR_DEP extern void FDIV32( u32 from ); // ftan fpu reg stack ATTR_DEP extern void FPATAN( void ); // fsin fpu reg stack ATTR_DEP extern void FSIN( void ); //********************* // SSE instructions * //********************* ATTR_DEP extern void SSE_MAXSS_XMM_to_XMM( x86SSERegType to, x86SSERegType from ); ATTR_DEP extern void SSE_MINSS_XMM_to_XMM( x86SSERegType to, x86SSERegType from ); ATTR_DEP extern void SSE_ADDSS_XMM_to_XMM( x86SSERegType to, x86SSERegType from ); ATTR_DEP extern void SSE_SUBSS_XMM_to_XMM( x86SSERegType to, x86SSERegType from ); //********************* // SSE 2 Instructions* //********************* ATTR_DEP extern void SSE2_MAXSD_XMM_to_XMM( x86SSERegType to, x86SSERegType from ); ATTR_DEP extern void SSE2_MINSD_XMM_to_XMM( x86SSERegType to, x86SSERegType from ); ATTR_DEP extern void SSE2_ADDSD_XMM_to_XMM( x86SSERegType to, x86SSERegType from ); ATTR_DEP extern void SSE2_SUBSD_XMM_to_XMM( x86SSERegType to, x86SSERegType from );