Parent Directory
|
Revision Log
|
Patch
--- trunk/pcsx2/VUops.h 2010/09/07 03:24:11 31 +++ trunk/pcsx2/VUops.h 2010/09/07 11:08:22 62 @@ -27,354 +27,35 @@ #define MAC_Reset( VU ) VU->VI[REG_MAC_FLAG].UL = VU->VI[REG_MAC_FLAG].UL & (~0xFFFF) +struct _VURegsNum { + u8 pipe; // if 0xff, COP2 + u8 VFwrite; + u8 VFwxyzw; + u8 VFr0xyzw; + u8 VFr1xyzw; + u8 VFread0; + u8 VFread1; + u32 VIwrite; + u32 VIread; + int cycles; +}; + +#define __vuRegsCall __fastcall +typedef void __vuRegsCall FnType_VuRegsN(_VURegsNum *VUregsn); +typedef FnType_VuRegsN* Fnptr_VuRegsN; + +extern __aligned16 const Fnptr_Void VU0_LOWER_OPCODE[128]; +extern __aligned16 const Fnptr_Void VU0_UPPER_OPCODE[64]; +extern __aligned16 const Fnptr_VuRegsN VU0regs_LOWER_OPCODE[128]; +extern __aligned16 const Fnptr_VuRegsN VU0regs_UPPER_OPCODE[64]; + +extern __aligned16 const Fnptr_Void VU1_LOWER_OPCODE[128]; +extern __aligned16 const Fnptr_Void VU1_UPPER_OPCODE[64]; +extern __aligned16 const Fnptr_VuRegsN VU1regs_LOWER_OPCODE[128]; +extern __aligned16 const Fnptr_VuRegsN VU1regs_UPPER_OPCODE[64]; + extern void _vuTestPipes(VURegs * VU); extern void _vuTestUpperStalls(VURegs * VU, _VURegsNum *VUregsn); extern void _vuTestLowerStalls(VURegs * VU, _VURegsNum *VUregsn); extern void _vuAddUpperStalls(VURegs * VU, _VURegsNum *VUregsn); extern void _vuAddLowerStalls(VURegs * VU, _VURegsNum *VUregsn); - -/******************************/ -/* VU Upper instructions */ -/******************************/ - -void _vuABS(VURegs * VU); -void _vuADD(VURegs * VU); -void _vuADDi(VURegs * VU); -void _vuADDq(VURegs * VU); -void _vuADDx(VURegs * VU); -void _vuADDy(VURegs * VU); -void _vuADDz(VURegs * VU); -void _vuADDw(VURegs * VU); -void _vuADDA(VURegs * VU); -void _vuADDAi(VURegs * VU); -void _vuADDAq(VURegs * VU); -void _vuADDAx(VURegs * VU); -void _vuADDAy(VURegs * VU); -void _vuADDAz(VURegs * VU); -void _vuADDAw(VURegs * VU); -void _vuSUB(VURegs * VU); -void _vuSUBi(VURegs * VU); -void _vuSUBq(VURegs * VU); -void _vuSUBx(VURegs * VU); -void _vuSUBy(VURegs * VU); -void _vuSUBz(VURegs * VU); -void _vuSUBw(VURegs * VU); -void _vuSUBA(VURegs * VU); -void _vuSUBAi(VURegs * VU); -void _vuSUBAq(VURegs * VU); -void _vuSUBAx(VURegs * VU); -void _vuSUBAy(VURegs * VU); -void _vuSUBAz(VURegs * VU); -void _vuSUBAw(VURegs * VU); -void _vuMUL(VURegs * VU); -void _vuMULi(VURegs * VU); -void _vuMULq(VURegs * VU); -void _vuMULx(VURegs * VU); -void _vuMULy(VURegs * VU); -void _vuMULz(VURegs * VU); -void _vuMULw(VURegs * VU); -void _vuMULA(VURegs * VU); -void _vuMULAi(VURegs * VU); -void _vuMULAq(VURegs * VU); -void _vuMULAx(VURegs * VU); -void _vuMULAy(VURegs * VU); -void _vuMULAz(VURegs * VU); -void _vuMULAw(VURegs * VU); -void _vuMADD(VURegs * VU) ; -void _vuMADDi(VURegs * VU); -void _vuMADDq(VURegs * VU); -void _vuMADDx(VURegs * VU); -void _vuMADDy(VURegs * VU); -void _vuMADDz(VURegs * VU); -void _vuMADDw(VURegs * VU); -void _vuMADDA(VURegs * VU); -void _vuMADDAi(VURegs * VU); -void _vuMADDAq(VURegs * VU); -void _vuMADDAx(VURegs * VU); -void _vuMADDAy(VURegs * VU); -void _vuMADDAz(VURegs * VU); -void _vuMADDAw(VURegs * VU); -void _vuMSUB(VURegs * VU); -void _vuMSUBi(VURegs * VU); -void _vuMSUBq(VURegs * VU); -void _vuMSUBx(VURegs * VU); -void _vuMSUBy(VURegs * VU); -void _vuMSUBz(VURegs * VU) ; -void _vuMSUBw(VURegs * VU) ; -void _vuMSUBA(VURegs * VU); -void _vuMSUBAi(VURegs * VU); -void _vuMSUBAq(VURegs * VU); -void _vuMSUBAx(VURegs * VU); -void _vuMSUBAy(VURegs * VU); -void _vuMSUBAz(VURegs * VU); -void _vuMSUBAw(VURegs * VU); -void _vuMAX(VURegs * VU); -void _vuMAXi(VURegs * VU); -void _vuMAXx(VURegs * VU); -void _vuMAXy(VURegs * VU); -void _vuMAXz(VURegs * VU); -void _vuMAXw(VURegs * VU); -void _vuMINI(VURegs * VU); -void _vuMINIi(VURegs * VU); -void _vuMINIx(VURegs * VU); -void _vuMINIy(VURegs * VU); -void _vuMINIz(VURegs * VU); -void _vuMINIw(VURegs * VU); -void _vuOPMULA(VURegs * VU); -void _vuOPMSUB(VURegs * VU); -void _vuNOP(VURegs * VU); -void _vuFTOI0(VURegs * VU); -void _vuFTOI4(VURegs * VU); -void _vuFTOI12(VURegs * VU); -void _vuFTOI15(VURegs * VU); -void _vuITOF0(VURegs * VU) ; -void _vuITOF4(VURegs * VU) ; -void _vuITOF12(VURegs * VU); -void _vuITOF15(VURegs * VU); -void _vuCLIP(VURegs * VU); -/******************************/ -/* VU Lower instructions */ -/******************************/ -void _vuDIV(VURegs * VU); -void _vuSQRT(VURegs * VU); -void _vuRSQRT(VURegs * VU); -void _vuIADDI(VURegs * VU); -void _vuIADDIU(VURegs * VU); -void _vuIADD(VURegs * VU); -void _vuIAND(VURegs * VU); -void _vuIOR(VURegs * VU); -void _vuISUB(VURegs * VU); -void _vuISUBIU(VURegs * VU); -void _vuMOVE(VURegs * VU); -void _vuMFIR(VURegs * VU); -void _vuMTIR(VURegs * VU); -void _vuMR32(VURegs * VU); -void _vuLQ(VURegs * VU) ; -void _vuLQD(VURegs * VU); -void _vuLQI(VURegs * VU); -void _vuSQ(VURegs * VU); -void _vuSQD(VURegs * VU); -void _vuSQI(VURegs * VU); -void _vuILW(VURegs * VU); -void _vuISW(VURegs * VU); -void _vuILWR(VURegs * VU); -void _vuISWR(VURegs * VU); -void _vuLOI(VURegs * VU); -void _vuRINIT(VURegs * VU); -void _vuRGET(VURegs * VU); -void _vuRNEXT(VURegs * VU); -void _vuRXOR(VURegs * VU); -void _vuWAITQ(VURegs * VU); -void _vuFSAND(VURegs * VU); -void _vuFSEQ(VURegs * VU); -void _vuFSOR(VURegs * VU); -void _vuFSSET(VURegs * VU); -void _vuFMAND(VURegs * VU); -void _vuFMEQ(VURegs * VU); -void _vuFMOR(VURegs * VU); -void _vuFCAND(VURegs * VU); -void _vuFCEQ(VURegs * VU); -void _vuFCOR(VURegs * VU); -void _vuFCSET(VURegs * VU); -void _vuFCGET(VURegs * VU); -void _vuIBEQ(VURegs * VU); -void _vuIBGEZ(VURegs * VU); -void _vuIBGTZ(VURegs * VU); -void _vuIBLEZ(VURegs * VU); -void _vuIBLTZ(VURegs * VU); -void _vuIBNE(VURegs * VU); -void _vuB(VURegs * VU); -void _vuBAL(VURegs * VU); -void _vuJR(VURegs * VU); -void _vuJALR(VURegs * VU); -void _vuMFP(VURegs * VU); -void _vuWAITP(VURegs * VU); -void _vuESADD(VURegs * VU); -void _vuERSADD(VURegs * VU); -void _vuELENG(VURegs * VU); -void _vuERLENG(VURegs * VU); -void _vuEATANxy(VURegs * VU); -void _vuEATANxz(VURegs * VU); -void _vuESUM(VURegs * VU); -void _vuERCPR(VURegs * VU); -void _vuESQRT(VURegs * VU); -void _vuERSQRT(VURegs * VU); -void _vuESIN(VURegs * VU); -void _vuEATAN(VURegs * VU); -void _vuEEXP(VURegs * VU); -void _vuXITOP(VURegs * VU); -void _vuXGKICK(VURegs * VU); -void _vuXTOP(VURegs * VU); - -/******************************/ -/* VU Upper instructions */ -/******************************/ - -void _vuRegsABS(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADD(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDA(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDAi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDAq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDAx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDAy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDAz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsADDAw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUB(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBA(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBAi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBAq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBAx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBAy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBAz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSUBAw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMUL(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULA(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULAi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULAq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULAx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULAy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULAz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMULAw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADD(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDA(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDAi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDAq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDAx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDAy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDAz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMADDAw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUB(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBA(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBAi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBAq(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBAx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBAy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBAz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMSUBAw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMAX(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMAXi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMAXx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMAXy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMAXz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMAXw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMINI(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMINIi(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMINIx(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMINIy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMINIz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMINIw(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsOPMULA(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsOPMSUB(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsNOP(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFTOI0(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFTOI4(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFTOI12(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFTOI15(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsITOF0(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsITOF4(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsITOF12(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsITOF15(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsCLIP(VURegs * VU, _VURegsNum *VUregsn); -/******************************/ -/* VU Lower instructions */ -/******************************/ -void _vuRegsDIV(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSQRT(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsRSQRT(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIADDI(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIADDIU(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIADD(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIAND(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIOR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsISUB(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsISUBIU(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMOVE(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMFIR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMTIR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMR32(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsLQ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsLQD(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsLQI(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSQ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSQD(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsSQI(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsILW(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsISW(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsILWR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsISWR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsLOI(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsRINIT(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsRGET(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsRNEXT(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsRXOR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsWAITQ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFSAND(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFSEQ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFSOR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFSSET(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFMAND(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFMEQ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFMOR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFCAND(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFCEQ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFCOR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFCSET(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsFCGET(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIBEQ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIBGEZ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIBGTZ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIBLEZ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIBLTZ(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsIBNE(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsB(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsBAL(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsJR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsJALR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsMFP(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsWAITP(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsESADD(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsERSADD(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsELENG(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsERLENG(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsEATANxy(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsEATANxz(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsESUM(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsERCPR(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsESQRT(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsERSQRT(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsESIN(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsEATAN(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsEEXP(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsXITOP(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsXGKICK(VURegs * VU, _VURegsNum *VUregsn); -void _vuRegsXTOP(VURegs * VU, _VURegsNum *VUregsn);
ViewVC Help | |
Powered by ViewVC 1.1.22 |