mirror of
https://github.com/libretro/ppsspp.git
synced 2025-03-04 22:49:46 +00:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
eb087120da
@ -851,6 +851,31 @@ namespace MIPSInt
|
||||
EatPrefixes();
|
||||
}
|
||||
|
||||
void Int_VHdp(u32 op)
|
||||
{
|
||||
float s[4], t[4];
|
||||
float d;
|
||||
int vd = _VD;
|
||||
int vs = _VS;
|
||||
int vt = _VT;
|
||||
VectorSize sz = GetVecSize(op);
|
||||
ReadVector(s, sz, vs);
|
||||
ApplySwizzleS(s, sz);
|
||||
ReadVector(t, sz, vt);
|
||||
ApplySwizzleT(t, sz);
|
||||
float sum = 0.0f;
|
||||
int n = GetNumVectorElements(sz);
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
sum += (i == n - 1) ? t[i] : s[i]*t[i];
|
||||
}
|
||||
d = sum;
|
||||
ApplyPrefixD(&d,V_Single);
|
||||
V(vd) = d;
|
||||
PC += 4;
|
||||
EatPrefixes();
|
||||
}
|
||||
|
||||
void Int_Vbfy(u32 op)
|
||||
{
|
||||
float s[4];
|
||||
|
@ -39,6 +39,7 @@ namespace MIPSInt
|
||||
void Int_VV2Op(u32 op);
|
||||
void Int_Vrot(u32 op);
|
||||
void Int_VDot(u32 op);
|
||||
void Int_VHdp(u32 op);
|
||||
void Int_Vavg(u32 op);
|
||||
void Int_Vfad(u32 op);
|
||||
void Int_Vocp(u32 op);
|
||||
|
@ -492,8 +492,8 @@ MIPSInstruction tableVFPU1[8] =
|
||||
INSTR("vmul",&Jit::Comp_Generic, Dis_VectorSet3, Int_VecDo3, IS_VFPU),
|
||||
INSTR("vdot",&Jit::Comp_Generic, Dis_VectorDot, Int_VDot, IS_VFPU),
|
||||
INSTR("vscl",&Jit::Comp_Generic, Dis_VScl, Int_VScl, IS_VFPU),
|
||||
INSTR("vhdp",&Jit::Comp_Generic, Dis_Generic, 0, IS_VFPU),
|
||||
{-2},
|
||||
{-2},
|
||||
INSTR("vhdp",&Jit::Comp_Generic, Dis_Generic, Int_VHdp, IS_VFPU),
|
||||
INSTR("vcrs",&Jit::Comp_Generic, Dis_Vcrs, Int_Vcrs, IS_VFPU),
|
||||
INSTR("vdet",&Jit::Comp_Generic, Dis_Generic, 0, IS_VFPU),
|
||||
{-2},
|
||||
@ -848,13 +848,10 @@ const MIPSInstruction *MIPSGetInstruction(u32 op)
|
||||
instr = &table[subop];
|
||||
if (encoding == Rese)
|
||||
return 0; //invalid instruction
|
||||
// if (encoding == Spe3)
|
||||
// __asm int 3
|
||||
if (!instr)
|
||||
return 0;
|
||||
if (instr->altEncoding == -2)
|
||||
{
|
||||
//BAD!!
|
||||
//ERROR_LOG(CPU, "Invalid instruction %08x in table %i, entry %i", op, (int)encoding, subop);
|
||||
return 0; //invalid instruction
|
||||
}
|
||||
@ -924,7 +921,7 @@ void MIPSInterpret(u32 op) //only for those rare ones
|
||||
instr->interpret(op);
|
||||
else
|
||||
{
|
||||
ERROR_LOG(CPU,"Unknown instruction %08x", op);
|
||||
ERROR_LOG(CPU,"Unknown instruction %08x at %08x", op, currentMIPS->pc);
|
||||
// Try to disassemble it
|
||||
char disasm[256];
|
||||
MIPSDisAsm(op, currentMIPS->pc, disasm);
|
||||
|
Loading…
x
Reference in New Issue
Block a user