VRSQ + VNAND + fix "Paused" in window title

This commit is contained in:
Simone Coco
2022-10-05 17:21:03 +02:00
parent 4757cbb8ef
commit 89daa969eb
5 changed files with 46 additions and 7 deletions

View File

@@ -1062,6 +1062,23 @@ void RSP::vrcp(u32 instr) {
}
}
void RSP::vrsq(u32 instr) {
VPR& vd = vpr[VD(instr)];
VPR& vt = vpr[VT(instr)];
VPR vte = GetVTE(vpr[VT(instr)], E2(instr));
int e = E2(instr) & 7;
int de = DE(instr) & 7;
s32 input = vt.selement[ELEMENT_INDEX(e)];
s32 result = rsq(input);
vd.element[ELEMENT_INDEX(de)] = result;
divOut = result >> 16;
divInLoaded = false;
for (int i = 0; i < 8; i++) {
acc.l.element[i] = vte.element[i];
}
}
void RSP::vrsql(u32 instr) {
VPR& vd = vpr[VD(instr)];
VPR& vt = vpr[VT(instr)];
@@ -1209,6 +1226,18 @@ void RSP::vand(u32 instr) {
}
}
void RSP::vnand(u32 instr) {
int e = E2(instr);
VPR& vs = vpr[VS(instr)];
VPR& vd = vpr[VD(instr)];
VPR vte = GetVTE(vpr[VT(instr)], e);
for(int i = 0; i < 8; i++) {
acc.l.element[i] = ~(vte.element[i] & vs.element[i]);
vd.element[i] = acc.l.element[i];
}
}
void RSP::vnor(u32 instr) {
int e = E2(instr);
VPR& vs = vpr[VS(instr)];