mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-23 13:30:02 +00:00
interp: Apply T prefix to D in vcmov.
This commit is contained in:
parent
fef8e71b8f
commit
30223cb17f
@ -1643,7 +1643,6 @@ namespace MIPSInt
|
|||||||
int vt = _VT;
|
int vt = _VT;
|
||||||
int vs = _VS;
|
int vs = _VS;
|
||||||
int vd = _VD;
|
int vd = _VD;
|
||||||
int cond = op&15;
|
|
||||||
VectorSize sz = GetVecSize(op);
|
VectorSize sz = GetVecSize(op);
|
||||||
int numElements = GetNumVectorElements(sz);
|
int numElements = GetNumVectorElements(sz);
|
||||||
float s[4];
|
float s[4];
|
||||||
@ -1669,7 +1668,6 @@ namespace MIPSInt
|
|||||||
int vt = _VT;
|
int vt = _VT;
|
||||||
int vs = _VS;
|
int vs = _VS;
|
||||||
int vd = _VD;
|
int vd = _VD;
|
||||||
int cond = op&15;
|
|
||||||
VectorSize sz = GetVecSize(op);
|
VectorSize sz = GetVecSize(op);
|
||||||
int numElements = GetNumVectorElements(sz);
|
int numElements = GetNumVectorElements(sz);
|
||||||
float s[4];
|
float s[4];
|
||||||
@ -1692,8 +1690,7 @@ namespace MIPSInt
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Int_Vcmov(MIPSOpcode op)
|
void Int_Vcmov(MIPSOpcode op) {
|
||||||
{
|
|
||||||
int vs = _VS;
|
int vs = _VS;
|
||||||
int vd = _VD;
|
int vd = _VD;
|
||||||
int tf = (op >> 19) & 1;
|
int tf = (op >> 19) & 1;
|
||||||
@ -1704,28 +1701,23 @@ namespace MIPSInt
|
|||||||
float d[4];
|
float d[4];
|
||||||
ReadVector(s, sz, vs);
|
ReadVector(s, sz, vs);
|
||||||
ApplySwizzleS(s, sz);
|
ApplySwizzleS(s, sz);
|
||||||
ReadVector(d, sz, vd); //Yes!
|
// Not only is D read (as T), but the T prefix applies to it.
|
||||||
|
ReadVector(d, sz, vd);
|
||||||
|
ApplySwizzleT(d, sz);
|
||||||
|
|
||||||
int CC = currentMIPS->vfpuCtrl[VFPU_CTRL_CC];
|
int CC = currentMIPS->vfpuCtrl[VFPU_CTRL_CC];
|
||||||
|
|
||||||
if (imm3 < 6)
|
if (imm3 < 6) {
|
||||||
{
|
if (((CC >> imm3) & 1) == !tf) {
|
||||||
if (((CC >> imm3) & 1) == !tf)
|
|
||||||
{
|
|
||||||
for (int i = 0; i < n; i++)
|
for (int i = 0; i < n; i++)
|
||||||
d[i] = s[i];
|
d[i] = s[i];
|
||||||
}
|
}
|
||||||
}
|
} else if (imm3 == 6) {
|
||||||
else if (imm3 == 6)
|
for (int i = 0; i < n; i++) {
|
||||||
{
|
|
||||||
for (int i = 0; i < n; i++)
|
|
||||||
{
|
|
||||||
if (((CC >> i) & 1) == !tf)
|
if (((CC >> i) & 1) == !tf)
|
||||||
d[i] = s[i];
|
d[i] = s[i];
|
||||||
}
|
}
|
||||||
}
|
} else {
|
||||||
else
|
|
||||||
{
|
|
||||||
ERROR_LOG_REPORT(CPU, "Bad Imm3 in cmov: %d", imm3);
|
ERROR_LOG_REPORT(CPU, "Bad Imm3 in cmov: %d", imm3);
|
||||||
}
|
}
|
||||||
ApplyPrefixD(d, sz);
|
ApplyPrefixD(d, sz);
|
||||||
|
Loading…
Reference in New Issue
Block a user