mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-15 02:29:51 +01:00
interp: Cleanup vsocp size handling.
This commit is contained in:
1 parent
d35ea0e81a
commit
3842c4f6b5
2 files changed
+8
-7
No files matched your search
@@ -1894,7 +1894,7 @@ namespace MIPSComp {
|
||||
|
||||
void IRFrontend::Comp_Vocp(MIPSOpcode op) {
|
||||
CONDITIONAL_DISABLE(VFPU_VEC);
|
||||
if (js.HasUnknownPrefix()) {
|
||||
if (js.HasUnknownPrefix() || !IsPrefixWithinSize(js.prefixS, op) || js.HasTPrefix() || (js.prefixS & VFPU_NEGATE(1, 1, 1, 1)) != 0) {
|
||||
DISABLE;
|
||||
}
|
||||
|
||||
|
||||
@@ -631,8 +631,7 @@ namespace MIPSInt
|
||||
EatPrefixes();
|
||||
}
|
||||
|
||||
void Int_Vocp(MIPSOpcode op)
|
||||
{
|
||||
void Int_Vocp(MIPSOpcode op) {
|
||||
float s[4], t[4], d[4];
|
||||
int vd = _VD;
|
||||
int vs = _VS;
|
||||
@@ -653,19 +652,21 @@ namespace MIPSInt
|
||||
// Always positive NaN. Note that s is always negated from the registers.
|
||||
d[i] = my_isnan(s[i]) ? fabsf(s[i]) : t[i] + s[i];
|
||||
}
|
||||
RetainInvalidSwizzleST(d, sz);
|
||||
ApplyPrefixD(d, sz);
|
||||
WriteVector(d, sz, vd);
|
||||
PC += 4;
|
||||
EatPrefixes();
|
||||
}
|
||||
|
||||
void Int_Vsocp(MIPSOpcode op)
|
||||
{
|
||||
void Int_Vsocp(MIPSOpcode op) {
|
||||
float s[4], t[4], d[4];
|
||||
int vd = _VD;
|
||||
int vs = _VS;
|
||||
VectorSize sz = GetVecSize(op);
|
||||
VectorSize outSize = GetDoubleVectorSize(sz);
|
||||
VectorSize outSize = GetDoubleVectorSizeSafe(sz);
|
||||
if (outSize == V_Invalid)
|
||||
outSize = V_Quad;
|
||||
ReadVector(s, sz, vs);
|
||||
|
||||
// S prefix forces negate in even/odd and xxyy swizzle.
|
||||
@@ -688,7 +689,7 @@ namespace MIPSInt
|
||||
d[2] = nanclamp(t[2] + s[2], 0.0f, 1.0f);
|
||||
d[3] = nanclamp(t[3] + s[3], 0.0f, 1.0f);
|
||||
}
|
||||
ApplyPrefixD(d, sz);
|
||||
ApplyPrefixD(d, sz, true);
|
||||
WriteVector(d, outSize, vd);
|
||||
PC += 4;
|
||||
EatPrefixes();
|
||||
|
||||
Reference in new issue
Block a user