2015-05-06 00:54:15 -04:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "../MIPSArchitecture.h"
|
|
|
|
#include "../MIPSReflection.h"
|
|
|
|
#include "VUShared.h"
|
|
|
|
|
|
|
|
#undef MAX
|
|
|
|
#undef ABS
|
|
|
|
|
|
|
|
class CMA_VU : public CMIPSArchitecture
|
|
|
|
{
|
|
|
|
public:
|
2018-04-30 21:01:23 +01:00
|
|
|
CMA_VU(uint32);
|
2017-03-31 22:43:42 -04:00
|
|
|
|
2022-10-18 20:01:20 +01:00
|
|
|
void CompileInstruction(uint32, CMipsJitter*, CMIPS*, uint32) override;
|
2018-04-30 21:01:23 +01:00
|
|
|
void GetInstructionMnemonic(CMIPS*, uint32, uint32, char*, unsigned int) override;
|
|
|
|
void GetInstructionOperands(CMIPS*, uint32, uint32, char*, unsigned int) override;
|
|
|
|
MIPS_BRANCH_TYPE IsInstructionBranch(CMIPS*, uint32, uint32) override;
|
|
|
|
uint32 GetInstructionEffectiveAddress(CMIPS*, uint32, uint32) override;
|
|
|
|
VUShared::OPERANDSET GetAffectedOperands(CMIPS*, uint32, uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2019-10-22 08:04:52 -04:00
|
|
|
void SetRelativePipeTime(uint32, uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
private:
|
2018-04-30 21:01:23 +01:00
|
|
|
void SetupReflectionTables();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
class CUpper : public CMIPSInstructionFactory
|
|
|
|
{
|
|
|
|
public:
|
2018-04-30 21:01:23 +01:00
|
|
|
CUpper();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
void SetupReflectionTables();
|
2022-10-18 20:01:20 +01:00
|
|
|
void CompileInstruction(uint32, CMipsJitter*, CMIPS*, uint32) override;
|
2018-04-30 21:01:23 +01:00
|
|
|
void GetInstructionMnemonic(CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
void GetInstructionOperands(CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
VUShared::OPERANDSET GetAffectedOperands(CMIPS*, uint32, uint32);
|
|
|
|
MIPS_BRANCH_TYPE IsInstructionBranch(CMIPS*, uint32, uint32);
|
|
|
|
uint32 GetInstructionEffectiveAddress(CMIPS*, uint32, uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2019-10-22 08:04:52 -04:00
|
|
|
void SetRelativePipeTime(uint32, uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
private:
|
|
|
|
typedef void (CUpper::*InstructionFuncConstant)();
|
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
static InstructionFuncConstant m_pOpVector[0x40];
|
|
|
|
static InstructionFuncConstant m_pOpVector0[0x20];
|
|
|
|
static InstructionFuncConstant m_pOpVector1[0x20];
|
|
|
|
static InstructionFuncConstant m_pOpVector2[0x20];
|
|
|
|
static InstructionFuncConstant m_pOpVector3[0x20];
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
uint8 m_nFT;
|
|
|
|
uint8 m_nFS;
|
|
|
|
uint8 m_nFD;
|
|
|
|
uint8 m_nBc;
|
|
|
|
uint8 m_nDest;
|
2019-10-22 08:04:52 -04:00
|
|
|
uint32 m_relativePipeTime = 0;
|
|
|
|
uint32 m_compileHints = 0;
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
static void ReflOpFtFs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
void LOI(uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector
|
2018-04-30 21:01:23 +01:00
|
|
|
void ADDbc();
|
|
|
|
void SUBbc();
|
|
|
|
void MADDbc();
|
|
|
|
void MSUBbc();
|
|
|
|
void MAXbc();
|
|
|
|
void MINIbc();
|
|
|
|
void MULbc();
|
|
|
|
void MULq();
|
|
|
|
void MAXi();
|
|
|
|
void MULi();
|
|
|
|
void MINIi();
|
|
|
|
void ADDq();
|
|
|
|
void MADDq();
|
|
|
|
void ADDi();
|
|
|
|
void MADDi();
|
|
|
|
void SUBq();
|
|
|
|
void MSUBq();
|
|
|
|
void SUBi();
|
|
|
|
void MSUBi();
|
|
|
|
void ADD();
|
|
|
|
void MADD();
|
|
|
|
void MUL();
|
|
|
|
void MAX();
|
|
|
|
void SUB();
|
|
|
|
void MSUB();
|
|
|
|
void OPMSUB();
|
|
|
|
void MINI();
|
|
|
|
void VECTOR0();
|
|
|
|
void VECTOR1();
|
|
|
|
void VECTOR2();
|
|
|
|
void VECTOR3();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector X Common
|
2018-04-30 21:01:23 +01:00
|
|
|
void ADDAbc();
|
|
|
|
void SUBAbc();
|
|
|
|
void MADDAbc();
|
|
|
|
void MSUBAbc();
|
|
|
|
void MULAbc();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector 0
|
2018-04-30 21:01:23 +01:00
|
|
|
void ITOF0();
|
|
|
|
void FTOI0();
|
|
|
|
void MULAq();
|
2020-05-13 12:09:01 -04:00
|
|
|
void ADDAq();
|
2018-04-30 21:01:23 +01:00
|
|
|
void ADDA();
|
|
|
|
void SUBA();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector 1
|
2018-04-30 21:01:23 +01:00
|
|
|
void ITOF4();
|
|
|
|
void FTOI4();
|
|
|
|
void ABS();
|
2019-05-29 13:21:01 -04:00
|
|
|
void MADDAq();
|
2018-04-30 21:01:23 +01:00
|
|
|
void MSUBAq();
|
|
|
|
void MADDA();
|
|
|
|
void MSUBA();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector 2
|
2018-04-30 21:01:23 +01:00
|
|
|
void ITOF12();
|
|
|
|
void FTOI12();
|
|
|
|
void MULAi();
|
|
|
|
void ADDAi();
|
|
|
|
void SUBAi();
|
|
|
|
void MULA();
|
|
|
|
void OPMULA();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector 3
|
2018-04-30 21:01:23 +01:00
|
|
|
void ITOF15();
|
|
|
|
void FTOI15();
|
|
|
|
void CLIP();
|
|
|
|
void MADDAi();
|
|
|
|
void MSUBAi();
|
|
|
|
void NOP();
|
|
|
|
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflV[64];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflVX0[32];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflVX1[32];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflVX2[32];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflVX3[32];
|
|
|
|
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflV[64];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflVX0[32];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflVX1[32];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflVX2[32];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflVX3[32];
|
|
|
|
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVTable;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVX0Table;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVX1Table;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVX2Table;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVX3Table;
|
|
|
|
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVTable;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVX0Table;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVX1Table;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVX2Table;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVX3Table;
|
|
|
|
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflV[64];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflVX0[32];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflVX1[32];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflVX2[32];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflVX3[32];
|
|
|
|
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflV[64];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflVX0[32];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflVX1[32];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflVX2[32];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflVX3[32];
|
2015-05-06 00:54:15 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
class CLower : public CMIPSInstructionFactory
|
|
|
|
{
|
|
|
|
public:
|
2018-04-30 21:01:23 +01:00
|
|
|
CLower(uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
void SetupReflectionTables();
|
2022-10-18 20:01:20 +01:00
|
|
|
void CompileInstruction(uint32, CMipsJitter*, CMIPS*, uint32) override;
|
2018-04-30 21:01:23 +01:00
|
|
|
void GetInstructionMnemonic(CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
void GetInstructionOperands(CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
MIPS_BRANCH_TYPE IsInstructionBranch(CMIPS*, uint32, uint32);
|
|
|
|
uint32 GetInstructionEffectiveAddress(CMIPS*, uint32, uint32);
|
|
|
|
VUShared::OPERANDSET GetAffectedOperands(CMIPS*, uint32, uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
2019-10-22 08:04:52 -04:00
|
|
|
void SetRelativePipeTime(uint32, uint32);
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
private:
|
|
|
|
enum
|
|
|
|
{
|
|
|
|
OPCODE_NOP = 0x8000033C
|
|
|
|
};
|
|
|
|
|
|
|
|
typedef void (CLower::*InstructionFuncConstant)();
|
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
static InstructionFuncConstant m_pOpGeneral[0x80];
|
|
|
|
static InstructionFuncConstant m_pOpLower[0x40];
|
|
|
|
static InstructionFuncConstant m_pOpVector0[0x20];
|
|
|
|
static InstructionFuncConstant m_pOpVector1[0x20];
|
|
|
|
static InstructionFuncConstant m_pOpVector2[0x20];
|
|
|
|
static InstructionFuncConstant m_pOpVector3[0x20];
|
|
|
|
|
|
|
|
uint8 m_nIT = 0;
|
|
|
|
uint8 m_nIS = 0;
|
|
|
|
uint8 m_nID = 0;
|
|
|
|
uint8 m_nFSF = 0;
|
|
|
|
uint8 m_nFTF = 0;
|
|
|
|
uint8 m_nDest = 0;
|
|
|
|
uint8 m_nImm5 = 0;
|
|
|
|
uint16 m_nImm11 = 0;
|
|
|
|
uint16 m_nImm12 = 0;
|
|
|
|
uint16 m_nImm15 = 0;
|
|
|
|
uint16 m_nImm15S = 0;
|
|
|
|
uint32 m_nImm24 = 0;
|
|
|
|
uint32 m_relativePipeTime = 0;
|
2019-10-22 08:04:52 -04:00
|
|
|
uint32 m_compileHints = 0;
|
2018-04-30 21:01:23 +01:00
|
|
|
uint32 m_vuMemAddressMask;
|
|
|
|
|
|
|
|
void SetBranchAddress(bool, int32);
|
|
|
|
static bool IsLOI(CMIPS*, uint32);
|
|
|
|
|
|
|
|
static void ReflOpIs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpIsOfs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpIt(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpImm12(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpItImm12(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpItIs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpOfs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpItOfs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpItIsOfs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpItIsImm15(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpItOfsIsDst(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpImm24(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpVi1Imm24(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpFsDstOfsIt(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpFtDstOfsIs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpFtDstFsDst(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpPFs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpPFsf(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
static void ReflOpFtP(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32, char*, unsigned int);
|
|
|
|
|
|
|
|
static uint32 ReflEaOffset(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32);
|
|
|
|
static uint32 ReflEaIs(MIPSReflection::INSTRUCTION*, CMIPS*, uint32, uint32);
|
|
|
|
|
|
|
|
static void ReflOpAffRdIs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffRdItFs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffRdItIs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2016-12-22 12:17:01 -05:00
|
|
|
static void ReflOpAffP(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2021-02-09 11:27:53 -05:00
|
|
|
static void ReflOpAffQ(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2018-04-30 21:01:23 +01:00
|
|
|
static void ReflOpAffWrFtRdIs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrFtRdP(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrFtIsRdIs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrIdRdItIs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrIt(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrItBv(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2019-10-22 08:04:52 -04:00
|
|
|
static void ReflOpAffWrItBvRdFmac(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2021-02-01 17:25:11 -05:00
|
|
|
static void ReflOpAffWrItRdFsf(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2018-04-30 21:01:23 +01:00
|
|
|
static void ReflOpAffWrItRdIs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrItBvRdIs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2019-10-22 08:04:52 -04:00
|
|
|
static void ReflOpAffWrItBvRdFmacIs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2018-04-30 21:01:23 +01:00
|
|
|
static void ReflOpAffWrItRdItFs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrPRdFs(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2021-02-01 17:25:11 -05:00
|
|
|
static void ReflOpAffWrPRdFsf(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrQRdFtf(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrQRdFsfFtf(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrRRdFsf(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
static void ReflOpAffWrFtRdR(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
2018-04-30 21:01:23 +01:00
|
|
|
static void ReflOpAffWrVi1Bv(VUShared::VUINSTRUCTION*, CMIPS*, uint32, uint32, VUShared::OPERANDSET&);
|
|
|
|
|
|
|
|
void ApplySumSeries(size_t, const uint32*, const unsigned int*, unsigned int);
|
|
|
|
void GenerateEATAN();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//General
|
2018-04-30 21:01:23 +01:00
|
|
|
void LQ();
|
|
|
|
void SQ();
|
|
|
|
void ILW();
|
|
|
|
void ISW();
|
|
|
|
void IADDIU();
|
|
|
|
void ISUBIU();
|
|
|
|
void FCEQ();
|
|
|
|
void FCSET();
|
|
|
|
void FCAND();
|
|
|
|
void FCOR();
|
|
|
|
void FSSET();
|
|
|
|
void FSAND();
|
|
|
|
void FSOR();
|
|
|
|
void FMEQ();
|
|
|
|
void FMAND();
|
|
|
|
void FMOR();
|
|
|
|
void FCGET();
|
|
|
|
void B();
|
|
|
|
void BAL();
|
|
|
|
void JR();
|
|
|
|
void JALR();
|
|
|
|
void IBEQ();
|
|
|
|
void IBNE();
|
|
|
|
void IBLTZ();
|
|
|
|
void IBGTZ();
|
|
|
|
void IBLEZ();
|
|
|
|
void IBGEZ();
|
|
|
|
void LOWEROP();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//LowerOp
|
2018-04-30 21:01:23 +01:00
|
|
|
void IADD();
|
|
|
|
void ISUB();
|
|
|
|
void IADDI();
|
|
|
|
void IAND();
|
|
|
|
void IOR();
|
|
|
|
void VECTOR0();
|
|
|
|
void VECTOR1();
|
|
|
|
void VECTOR2();
|
|
|
|
void VECTOR3();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector0
|
2018-04-30 21:01:23 +01:00
|
|
|
void MOVE();
|
|
|
|
void LQI();
|
|
|
|
void DIV();
|
|
|
|
void MTIR();
|
|
|
|
void RNEXT();
|
|
|
|
void MFP();
|
|
|
|
void XTOP();
|
|
|
|
void XGKICK();
|
|
|
|
void ESADD();
|
|
|
|
void EATANxy();
|
|
|
|
void ESQRT();
|
|
|
|
void ESIN();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector1
|
2018-04-30 21:01:23 +01:00
|
|
|
void MR32();
|
|
|
|
void SQI();
|
|
|
|
void SQRT();
|
|
|
|
void MFIR();
|
|
|
|
void RGET();
|
|
|
|
void XITOP();
|
2020-05-27 13:25:45 -04:00
|
|
|
void ERSADD();
|
2018-04-30 21:01:23 +01:00
|
|
|
void EATANxz();
|
|
|
|
void ERSQRT();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector2
|
2018-04-30 21:01:23 +01:00
|
|
|
void LQD();
|
|
|
|
void RSQRT();
|
|
|
|
void ILWR();
|
|
|
|
void RINIT();
|
|
|
|
void ELENG();
|
|
|
|
void ESUM();
|
|
|
|
void ERCPR();
|
|
|
|
void EEXP();
|
2015-05-06 00:54:15 -04:00
|
|
|
|
|
|
|
//Vector3
|
2018-04-30 21:01:23 +01:00
|
|
|
void SQD();
|
|
|
|
void WAITQ();
|
|
|
|
void ISWR();
|
|
|
|
void RXOR();
|
|
|
|
void ERLENG();
|
|
|
|
void WAITP();
|
|
|
|
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflGeneral[128];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflV[64];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflVX0[32];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflVX1[32];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflVX2[32];
|
|
|
|
MIPSReflection::INSTRUCTION m_ReflVX3[32];
|
|
|
|
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflGeneral[128];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflV[64];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflVX0[32];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflVX1[32];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflVX2[32];
|
|
|
|
VUShared::VUINSTRUCTION m_VuReflVX3[32];
|
|
|
|
|
|
|
|
MIPSReflection::SUBTABLE m_ReflGeneralTable;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVTable;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVX0Table;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVX1Table;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVX2Table;
|
|
|
|
MIPSReflection::SUBTABLE m_ReflVX3Table;
|
|
|
|
|
|
|
|
VUShared::VUSUBTABLE m_VuReflGeneralTable;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVTable;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVX0Table;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVX1Table;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVX2Table;
|
|
|
|
VUShared::VUSUBTABLE m_VuReflVX3Table;
|
|
|
|
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflGeneral[128];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflV[64];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflVX0[32];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflVX1[32];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflVX2[32];
|
|
|
|
static MIPSReflection::INSTRUCTION m_cReflVX3[32];
|
|
|
|
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflGeneral[128];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflV[64];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflVX0[32];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflVX1[32];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflVX2[32];
|
|
|
|
static VUShared::VUINSTRUCTION m_cVuReflVX3[32];
|
2015-05-06 00:54:15 -04:00
|
|
|
};
|
|
|
|
|
2018-04-30 21:01:23 +01:00
|
|
|
CUpper m_Upper;
|
|
|
|
CLower m_Lower;
|
2015-05-06 00:54:15 -04:00
|
|
|
};
|