mirror of
https://github.com/libretro/ppsspp.git
synced 2024-11-28 10:51:06 +00:00
Implement msub/msubu
This commit is contained in:
parent
1391d83afd
commit
dc86fbe818
@ -525,6 +525,26 @@ namespace MIPSInt
|
||||
HI = (u32)(result>>32);
|
||||
}
|
||||
break;
|
||||
case 46: //msub
|
||||
{
|
||||
u32 a=R(rs),b=R(rt),hi=HI,lo=LO;
|
||||
u64 origValBits = (u64)lo | ((u64)(hi)<<32);
|
||||
s64 origVal = (s64)origValBits;
|
||||
s64 result = origVal - (s64)(s32)a * (s64)(s32)b;
|
||||
u64 resultBits = (u64)(result);
|
||||
LO = (u32)(resultBits);
|
||||
HI = (u32)(resultBits>>32);
|
||||
}
|
||||
break;
|
||||
case 47: //msubu
|
||||
{
|
||||
u32 a=R(rs),b=R(rt),hi=HI,lo=LO;
|
||||
u64 origVal = (u64)lo | ((u64)(hi)<<32);
|
||||
u64 result = origVal - (u64)a * (u64)b;
|
||||
LO = (u32)(result);
|
||||
HI = (u32)(result>>32);
|
||||
}
|
||||
break;
|
||||
case 16: R(rd) = HI; break; //mfhi
|
||||
case 17: HI = R(rs); break; //mthi
|
||||
case 18: R(rd) = LO; break; //mflo
|
||||
|
@ -227,8 +227,8 @@ const MIPSInstruction tableSpecial[64] = /// 000000 ...... ...... .......... xxx
|
||||
INSTR("sltu", &Jit::Comp_Generic, Dis_RType3, Int_RType3,IN_RS|IN_RT|OUT_RD),
|
||||
INSTR("max", &Jit::Comp_Generic, Dis_RType3, Int_RType3,IN_RS|IN_RT|OUT_RD),
|
||||
INSTR("min", &Jit::Comp_Generic, Dis_RType3, Int_RType3,IN_RS|IN_RT|OUT_RD),
|
||||
{-2},
|
||||
{-2},
|
||||
INSTR("msub", &Jit::Comp_Generic, Dis_MulDivType, Int_MulDivType, IN_RS|IN_RT|OUT_OTHER),
|
||||
INSTR("msubu", &Jit::Comp_Generic, Dis_MulDivType, Int_MulDivType, IN_RS|IN_RT|OUT_OTHER),
|
||||
|
||||
//48
|
||||
INSTR("tge", &Jit::Comp_Generic, Dis_RType3, 0, 0),
|
||||
|
Loading…
Reference in New Issue
Block a user