rm x86 and ppc dynarec remains
[pcsx_rearmed.git] / libpcsxcore / ix86 / ix86.h
diff --git a/libpcsxcore/ix86/ix86.h b/libpcsxcore/ix86/ix86.h
deleted file mode 100644 (file)
index 2b60dff..0000000
+++ /dev/null
@@ -1,673 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2007 Ryan Schultz, PCSX-df Team, PCSX team              *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program 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 this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02111-1307 USA.           *
- ***************************************************************************/
-
-/*
- * ix86 definitions v0.5.1
- *  Authors: linuzappz <linuzappz@pcsx.net>
- *           alexey silinov
- */
-
-#ifndef __IX86_H__
-#define __IX86_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// include basic types
-#include "../psxcommon.h"
-#include "../r3000a.h"
-#include "../psxhle.h"
-
-// x86Flags defines
-#define X86FLAG_FPU                    0x00000001
-#define X86FLAG_VME                    0x00000002
-#define X86FLAG_DEBUGEXT       0x00000004
-#define X86FLAG_4MPAGE         0x00000008
-#define X86FLAG_TSC                    0x00000010
-#define X86FLAG_MSR                    0x00000020
-#define X86FLAG_PAE                    0x00000040
-#define X86FLAG_MCHKXCP                0x00000080
-#define X86FLAG_CMPXCHG8B      0x00000100
-#define X86FLAG_APIC           0x00000200
-#define X86FLAG_SYSENTER       0x00000800
-#define X86FLAG_MTRR           0x00001000
-#define X86FLAG_GPE                    0x00002000
-#define X86FLAG_MCHKARCH       0x00004000
-#define X86FLAG_CMOV           0x00008000
-#define X86FLAG_PAT                    0x00010000
-#define X86FLAG_PSE36          0x00020000
-#define X86FLAG_PN                     0x00040000
-#define X86FLAG_MMX                    0x00800000
-#define X86FLAG_FXSAVE         0x01000000
-#define X86FLAG_SSE                    0x02000000
-
-// x86EFlags defines
-
-#define X86EFLAG_MMXEXT                0x00400000
-#define X86EFLAG_3DNOWEXT      0x40000000
-#define X86EFLAG_3DNOW         0x80000000
-
-/* general defines */
-#define write8(val)  *(u8 *)x86Ptr = val; x86Ptr++;
-#define write16(val) *(u16*)x86Ptr = val; x86Ptr+=2;
-#define write32(val) *(u32*)x86Ptr = val; x86Ptr+=4;
-#define write64(val) *(u64*)x86Ptr = val; x86Ptr+=8;
-
-#define EAX 0
-#define EBX 3
-#define ECX 1
-#define EDX 2
-#define ESI 6
-#define EDI 7
-#define EBP 5
-#define ESP 4
-
-#define MM0 0
-#define MM1 1
-#define MM2 2
-#define MM3 3
-#define MM4 4
-#define MM5 5
-#define MM6 6
-#define MM7 7
-
-#define XMM0 0
-#define XMM1 1
-#define XMM2 2
-#define XMM3 3
-#define XMM4 4
-#define XMM5 5
-#define XMM6 6
-#define XMM7 7
-
-extern s8  *x86Ptr;
-extern u8  *j8Ptr[32];
-extern u32 *j32Ptr[32];
-
-void x86Init();
-void x86SetPtr(char *ptr);
-void x86Shutdown();
-
-void x86SetJ8(u8 *j8);
-void x86SetJ32(u32 *j32);
-void x86Align(int bytes);
-
-
-/********************/
-/* IX86 intructions */
-/********************/
-
-/*
- * scale values:
- *  0 - *1
- *  1 - *2
- *  2 - *4
- *  3 - *8
- */
-
-////////////////////////////////////
-// mov instructions                /
-////////////////////////////////////
-
-/* mov r32 to r32 */
-void MOV32RtoR(int to, int from);
-/* mov r32 to m32 */
-void MOV32RtoM(u32 to, int from);
-/* mov m32 to r32 */
-void MOV32MtoR(int to, u32 from);
-/* mov [r32] to r32 */
-void MOV32RmtoR(int to, int from);
-/* mov [r32][r32*scale] to r32 */
-void MOV32RmStoR(int to, int from, int from2, int scale);
-/* mov r32 to [r32] */
-void MOV32RtoRm(int to, int from);
-/* mov r32 to [r32][r32*scale] */
-void MOV32RtoRmS(int to, int to2, int scale, int from);
-/* mov imm32 to r32 */
-void MOV32ItoR(int to, u32 from);
-/* mov imm32 to m32 */
-void MOV32ItoM(u32 to, u32 from);
-
-/* mov r16 to m16 */
-void MOV16RtoM(u32 to, int from);
-/* mov m16 to r16 */
-void MOV16MtoR(int to, u32 from);
-/* mov imm16 to m16 */
-void MOV16ItoM(u32 to, u16 from);
-
-/* mov r8 to m8 */
-void MOV8RtoM(u32 to, int from);
-/* mov m8 to r8 */
-void MOV8MtoR(int to, u32 from);
-/* mov imm8 to m8 */
-void MOV8ItoM(u32 to, u8 from);
-
-/* movsx r8 to r32 */
-void MOVSX32R8toR(int to, int from);
-/* movsx m8 to r32 */
-void MOVSX32M8toR(int to, u32 from);
-/* movsx r16 to r32 */
-void MOVSX32R16toR(int to, int from);
-/* movsx m16 to r32 */
-void MOVSX32M16toR(int to, u32 from);
-
-/* movzx r8 to r32 */
-void MOVZX32R8toR(int to, int from);
-/* movzx m8 to r32 */
-void MOVZX32M8toR(int to, u32 from);
-/* movzx r16 to r32 */
-void MOVZX32R16toR(int to, int from);
-/* movzx m16 to r32 */
-void MOVZX32M16toR(int to, u32 from);
-
-/* cmovne r32 to r32 */
-void CMOVNE32RtoR(int to, int from);
-/* cmovne m32 to r32*/
-void CMOVNE32MtoR(int to, u32 from);
-/* cmove r32 to r32*/
-void CMOVE32RtoR(int to, int from);
-/* cmove m32 to r32*/
-void CMOVE32MtoR(int to, u32 from);
-/* cmovg r32 to r32*/
-void CMOVG32RtoR(int to, int from);
-/* cmovg m32 to r32*/
-void CMOVG32MtoR(int to, u32 from);
-/* cmovge r32 to r32*/
-void CMOVGE32RtoR(int to, int from);
-/* cmovge m32 to r32*/
-void CMOVGE32MtoR(int to, u32 from);
-/* cmovl r32 to r32*/
-void CMOVL32RtoR(int to, int from);
-/* cmovl m32 to r32*/
-void CMOVL32MtoR(int to, u32 from);
-/* cmovle r32 to r32*/
-void CMOVLE32RtoR(int to, int from);
-/* cmovle m32 to r32*/
-void CMOVLE32MtoR(int to, u32 from);
-
-////////////////////////////////////
-// arithmetic instructions         /
-////////////////////////////////////
-
-/* add imm32 to r32 */
-void ADD32ItoR(int to, u32 from);
-/* add imm32 to m32 */
-void ADD32ItoM(u32 to, u32 from);
-/* add r32 to r32 */
-void ADD32RtoR(int to, int from);
-/* add r32 to m32 */
-void ADD32RtoM(u32 to, int from);
-/* add m32 to r32 */
-void ADD32MtoR(int to, u32 from);
-
-/* adc imm32 to r32 */
-void ADC32ItoR(int to, u32 from);
-/* adc r32 to r32 */
-void ADC32RtoR(int to, int from);
-/* adc m32 to r32 */
-void ADC32MtoR(int to, u32 from);
-
-/* inc r32 */
-void INC32R(int to);
-/* inc m32 */
-void INC32M(u32 to);
-
-/* sub imm32 to r32 */
-void SUB32ItoR(int to, u32 from);
-/* sub r32 to r32 */
-void SUB32RtoR(int to, int from);
-/* sub m32 to r32 */
-void SUB32MtoR(int to, u32 from);
-
-/* sbb imm32 to r32 */
-void SBB32ItoR(int to, u32 from);
-/* sbb r32 to r32 */
-void SBB32RtoR(int to, int from);
-/* sbb m32 to r32 */
-void SBB32MtoR(int to, u32 from);
-
-/* dec r32 */
-void DEC32R(int to);
-/* dec m32 */
-void DEC32M(u32 to);
-
-/* mul eax by r32 to edx:eax */
-void MUL32R(int from);
-/* mul eax by m32 to edx:eax */
-void MUL32M(u32 from);
-
-/* imul eax by r32 to edx:eax */
-void IMUL32R(int from);
-/* imul eax by m32 to edx:eax */
-void IMUL32M(u32 from);
-/* imul r32 by r32 to r32 */
-void IMUL32RtoR(int to, int from);
-
-/* div eax by r32 to edx:eax */
-void DIV32R(int from);
-/* div eax by m32 to edx:eax */
-void DIV32M(u32 from);
-
-/* idiv eax by r32 to edx:eax */
-void IDIV32R(int from);
-/* idiv eax by m32 to edx:eax */
-void IDIV32M(u32 from);
-
-////////////////////////////////////
-// shifting instructions           /
-////////////////////////////////////
-
-/* shl imm8 to r32 */
-void SHL32ItoR(int to, u8 from);
-/* shl cl to r32 */
-void SHL32CLtoR(int to);
-
-/* shr imm8 to r32 */
-void SHR32ItoR(int to, u8 from);
-/* shr cl to r32 */
-void SHR32CLtoR(int to);
-
-/* sar imm8 to r32 */
-void SAR32ItoR(int to, u8 from);
-/* sar cl to r32 */
-void SAR32CLtoR(int to);
-
-/* sal imm8 to r32 */
-#define SAL32ItoR SHL32ItoR
-/* sal cl to r32 */
-#define SAL32CLtoR SHL32CLtoR
-
-// logical instructions
-
-/* or imm32 to r32 */
-void OR32ItoR(int to, u32 from);
-/* or imm32 to m32 */
-void OR32ItoM(u32 to, u32 from);
-/* or r32 to r32 */
-void OR32RtoR(int to, int from);
-/* or r32 to m32 */
-void OR32RtoM(u32 to, int from);
-/* or m32 to r32 */
-void OR32MtoR(int to, u32 from);
-
-/* xor imm32 to r32 */
-void XOR32ItoR(int to, u32 from);
-/* xor imm32 to m32 */
-void XOR32ItoM(u32 to, u32 from);
-/* xor r32 to r32 */
-void XOR32RtoR(int to, int from);
-/* xor r32 to m32 */
-void XOR32RtoM(u32 to, int from);
-/* xor m32 to r32 */
-void XOR32MtoR(int to, u32 from);
-
-/* and imm32 to r32 */
-void AND32ItoR(int to, u32 from);
-/* and imm32 to m32 */
-void AND32ItoM(u32 to, u32 from);
-/* and r32 to r32 */
-void AND32RtoR(int to, int from);
-/* and r32 to m32 */
-void AND32RtoM(u32 to, int from);
-/* and m32 to r32 */
-void AND32MtoR(int to, u32 from);
-
-/* not r32 */
-void NOT32R(int from);
-/* neg r32 */
-void NEG32R(int from);
-
-////////////////////////////////////
-// jump instructions               /
-////////////////////////////////////
-
-/* jmp rel8 */
-u8*  JMP8(u8 to);
-
-/* jmp rel32 */
-u32* JMP32(u32 to);
-/* jmp r32 */
-void JMP32R(int to);
-
-/* je rel8 */
-u8*  JE8(u8 to);
-/* jz rel8 */
-u8*  JZ8(u8 to);
-/* jg rel8 */
-u8*  JG8(u8 to);
-/* jge rel8 */
-u8*  JGE8(u8 to);
-/* jl rel8 */
-u8*  JL8(u8 to);
-/* jle rel8 */
-u8*  JLE8(u8 to);
-/* jne rel8 */
-u8*  JNE8(u8 to);
-/* jnz rel8 */
-u8*  JNZ8(u8 to);
-/* jng rel8 */
-u8*  JNG8(u8 to);
-/* jnge rel8 */
-u8*  JNGE8(u8 to);
-/* jnl rel8 */
-u8*  JNL8(u8 to);
-/* jnle rel8 */
-u8*  JNLE8(u8 to);
-/* jo rel8 */
-u8*  JO8(u8 to);
-/* jno rel8 */
-u8*  JNO8(u8 to);
-
-/* je rel32 */
-u32* JE32(u32 to);
-/* jz rel32 */
-u32* JZ32(u32 to);
-/* jg rel32 */
-u32* JG32(u32 to);
-/* jge rel32 */
-u32* JGE32(u32 to);
-/* jl rel32 */
-u32* JL32(u32 to);
-/* jle rel32 */
-u32* JLE32(u32 to);
-/* jne rel32 */
-u32* JNE32(u32 to);
-/* jnz rel32 */
-u32* JNZ32(u32 to);
-/* jng rel32 */
-u32* JNG32(u32 to);
-/* jnge rel32 */
-u32* JNGE32(u32 to);
-/* jnl rel32 */
-u32* JNL32(u32 to);
-/* jnle rel32 */
-u32* JNLE32(u32 to);
-/* jo rel32 */
-u32* JO32(u32 to);
-/* jno rel32 */
-u32* JNO32(u32 to);
-
-/* call func */
-void CALLFunc(u32 func); // based on CALL32
-/* call rel32 */
-void CALL32(u32 to);
-/* call r32 */
-void CALL32R(int to);
-/* call m32 */
-void CALL32M(u32 to);
-
-////////////////////////////////////
-// misc instructions               /
-////////////////////////////////////
-
-/* cmp imm32 to r32 */
-void CMP32ItoR(int to, u32 from);
-/* cmp imm32 to m32 */
-void CMP32ItoM(u32 to, u32 from);
-/* cmp r32 to r32 */
-void CMP32RtoR(int to, int from);
-/* cmp m32 to r32 */
-void CMP32MtoR(int to, u32 from);
-
-/* test imm32 to r32 */
-void TEST32ItoR(int to, u32 from);
-/* test r32 to r32 */
-void TEST32RtoR(int to, int from);
-/* sets r8 */
-void SETS8R(int to);
-/* setl r8 */
-void SETL8R(int to);
-/* setb r8 */
-void SETB8R(int to);
-
-/* cbw */
-void CBW();
-/* cwd */
-void CWD();
-/* cdq */
-void CDQ();
-
-/* push r32 */
-void PUSH32R(int from);
-/* push m32 */
-void PUSH32M(u32 from);
-/* push imm32 */
-void PUSH32I(u32 from);
-
-/* pop r32 */
-void POP32R(int from);
-
-/* pushad */
-void PUSHA32();
-/* popad */
-void POPA32();
-
-/* ret */
-void RET();
-
-/********************/
-/* FPU instructions */
-/********************/
-
-/* fild m32 to fpu reg stack */
-void FILD32(u32 from);
-/* fistp m32 from fpu reg stack */
-void FISTP32(u32 from);
-/* fld m32 to fpu reg stack */
-void FLD32(u32 from);
-/* fstp m32 from fpu reg stack */
-void FSTP32(u32 to);
-
-/* fldcw fpu control word from m16 */
-void FLDCW(u32 from);
-/* fstcw fpu control word to m16 */
-void FNSTCW(u32 to);
-
-/* fadd m32 to fpu reg stack */
-void FADD32(u32 from);
-/* fsub m32 to fpu reg stack */
-void FSUB32(u32 from);
-/* fmul m32 to fpu reg stack */
-void FMUL32(u32 from);
-/* fdiv m32 to fpu reg stack */
-void FDIV32(u32 from);
-/* fabs fpu reg stack */
-void FABS();
-/* fsqrt fpu reg stack */
-void FSQRT();
-/* fchs fpu reg stack */
-void FCHS();
-
-/********************/
-/* MMX instructions */
-/********************/
-
-// r64 = mm
-
-/* movq m64 to r64 */
-void MOVQMtoR(int to, u32 from);
-/* movq r64 to m64 */
-void MOVQRtoM(u32 to, int from);
-
-/* pand r64 to r64 */
-void PANDRtoR(int to, int from);
-/* pand m64 to r64 */
-void PANDMtoR(int to, u32 from);
-
-/* pandn r64 to r64 */
-void PANDNRtoR(int to, int from);
-
-/* pandn r64 to r64 */
-void PANDNMtoR(int to, u32 from);
-
-/* por r64 to r64 */
-void PORRtoR(int to, int from);
-/* por m64 to r64 */
-void PORMtoR(int to, u32 from);
-
-/* pxor r64 to r64 */
-void PXORRtoR(int to, int from);
-/* pxor m64 to r64 */
-void PXORMtoR(int to, u32 from);
-
-/* psllq r64 to r64 */
-void PSLLQRtoR(int to, int from);
-/* psllq m64 to r64 */
-void PSLLQMtoR(int to, u32 from);
-/* psllq imm8 to r64 */
-void PSLLQItoR(int to, u8 from);
-
-/* psrlq r64 to r64 */
-void PSRLQRtoR(int to, int from);
-/* psrlq m64 to r64 */
-void PSRLQMtoR(int to, u32 from);
-/* psrlq imm8 to r64 */
-void PSRLQItoR(int to, u8 from);
-
-/* paddusb r64 to r64 */
-void PADDUSBRtoR(int to, int from);
-/* paddusb m64 to r64 */
-void PADDUSBMtoR(int to, u32 from);
-/* paddusw r64 to r64 */
-void PADDUSWRtoR(int to, int from);
-/* paddusw m64 to r64 */
-void PADDUSWMtoR(int to, u32 from);
-
-/* paddb r64 to r64 */
-void PADDBRtoR(int to, int from);
-/* paddb m64 to r64 */
-void PADDBMtoR(int to, u32 from);
-/* paddw r64 to r64 */
-void PADDWRtoR(int to, int from);
-/* paddw m64 to r64 */
-void PADDWMtoR(int to, u32 from);
-/* paddd r64 to r64 */
-void PADDDRtoR(int to, int from);
-/* paddd m64 to r64 */
-void PADDDMtoR(int to, u32 from);
-
-/* emms */
-void EMMS();
-void FEMMS();
-void BT32ItoR(int to,int from);
-void RCR32ItoR(int to,int from);
-
-//Basara:changed
-void PADDSBRtoR(int to, int from);
-void PADDSWRtoR(int to, int from);
-void PADDSDRtoR(int to, int from);
-void PSUBSBRtoR(int to, int from); 
-void PSUBSWRtoR(int to, int from);
-void PSUBSDRtoR(int to, int from);
-
-void PSUBBRtoR(int to, int from);
-void PSUBWRtoR(int to, int from);
-void PSUBDRtoR(int to, int from);
-
-void MOVQ64ItoR(int reg,u64 i); //Prototype.Todo add all consts to end of block.not after jr $+8
-
-void PMAXSWRtoR(int to,int from);
-void PMINSWRtoR(int to,int from);
-
-void PCMPEQBRtoR(int to,int from);
-void PCMPEQWRtoR(int to,int from);
-void PCMPEQDRtoR(int to,int from);
-
-void PCMPGTBRtoR(int to,int from);
-void PCMPGTWRtoR(int to,int from);
-void PCMPGTDRtoR(int to,int from);
-
-void PSRLWItoR(int to,int from);
-void PSRLDItoR(int to,int from);
-void PSLLWItoR(int to,int from);
-void PSLLDItoR(int to,int from);
-void PSRAWItoR(int to,int from);
-void PSRADItoR(int to,int from);
-
-//Added:basara 11.01.2003
-void FCOMP32(u32 from);
-void FNSTSWtoAX();
-void SETNZ8R(int to);
-
-//Added:basara 14.01.2003
-void PFCMPEQMtoR(int to,int from);
-void PFCMPGTMtoR(int to,int from);
-void PFCMPGEMtoR(int to,int from);
-
-void PFADDMtoR(int to,int from);
-void PFADDRtoR(int to,int from);
-
-void PFSUBMtoR(int to,int from);
-void PFSUBRtoR(int to,int from);
-
-void PFMULMtoR(int to,int from);
-void PFMULRtoR(int to,int from);
-
-void PFRCPMtoR(int to,int from);
-void PFRCPRtoR(int to,int from);
-void PFRCPIT1RtoR(int to,int from);
-void PFRCPIT2RtoR(int to,int from);
-
-void PFRSQRTRtoR(int to,int from);
-void PFRSQIT1RtoR(int to,int from);
-
-void PF2IDMtoR(int to,int from);
-void PF2IDRtoR(int to,int from);
-void PI2FDMtoR(int to,int from);
-void PI2FDRtoR(int to,int from);
-
-void PFMAXMtoR(int to,int from);
-void PFMAXRtoR(int to,int from);
-void PFMINMtoR(int to,int from);
-void PFMINRtoR(int to,int from);
-
-void MOVDMtoR(int to, u32 from);
-void MOVDRtoM(u32 to, int from);
-void MOVD32RtoR(int to, int from);
-void MOVD64RtoR(int to, int from);
-
-void MOVQRtoR(int to,int from);
-
-//if to==from MMLO=MMHI
-void PUNPCKHDQRtoR(int to,int from);
-
-//if to==from MMHI=MMLO
-void PUNPCKLDQRtoR(int to,int from);
-
-/*
-       SSE     intructions 
-*/
-void MOVAPSMtoR(int to,int from);
-void MOVAPSRtoM(int to,int from);
-void MOVAPSRtoR(int to,int from);
-
-void ORPSMtoR(int to,int from);
-void ORPSRtoR(int to,int from);
-
-void XORPSMtoR(int to,int from);
-void XORPSRtoR(int to,int from);
-
-void ANDPSMtoR(int to,int from);
-void ANDPSRtoR(int to,int from);
-
-#ifdef __cplusplus
-}
-#endif
-#endif