mirror of https://github.com/PCSX2/pcsx2.git
microVU: bugfix for prev revision (.r and .flag member mixup); and removed an unneeded check against exactMatch.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3718 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
76d639ff39
commit
96855850f3
|
@ -90,9 +90,8 @@ public:
|
||||||
else { // Can do Simple Search (Only Matches the Important Pipeline Stuff)
|
else { // Can do Simple Search (Only Matches the Important Pipeline Stuff)
|
||||||
for (microBlockLink* linkI = blockList; linkI != NULL; linkI = linkI->next) {
|
for (microBlockLink* linkI = blockList; linkI != NULL; linkI = linkI->next) {
|
||||||
if (doConstProp && (linkI->block.pState.vi15 != pState->vi15)) continue;
|
if (doConstProp && (linkI->block.pState.vi15 != pState->vi15)) continue;
|
||||||
if (linkI->block.pState.simple32[0] != pState->simple32[0]) continue;
|
if (linkI->block.pState.quick32[0] != pState->quick32[0]) continue;
|
||||||
if (linkI->block.pState.simple32[1] != pState->simple32[1]) continue;
|
if (linkI->block.pState.quick32[1] != pState->quick32[1]) continue;
|
||||||
if (linkI->block.pState.needExactMatch & 7) continue;
|
|
||||||
return &linkI->block;
|
return &linkI->block;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,31 +25,33 @@ union regInfo {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
union __aligned16 microRegInfo { // Ordered for Faster Compares
|
// microRegInfo is carefully ordered for faster compares. The "important" information is
|
||||||
struct
|
// housed in a union that is accessed via 'quick32' so that several u8 fields can be compared
|
||||||
{
|
// using a pair of 32-bit equalities.
|
||||||
|
// vi15 is only used if microVU constprop is enabled (it is *not* by default). When constprop
|
||||||
|
// is disabled the vi15 field acts as additional padding that is required for 16 byte alignment
|
||||||
|
// needed by the xmm compare.
|
||||||
|
union __aligned16 microRegInfo {
|
||||||
|
struct {
|
||||||
u32 vi15; // Constant Prop Info for vi15 (only valid if sign-bit set)
|
u32 vi15; // Constant Prop Info for vi15 (only valid if sign-bit set)
|
||||||
|
|
||||||
union
|
union {
|
||||||
{
|
struct {
|
||||||
struct
|
|
||||||
{
|
|
||||||
u8 needExactMatch; // If set, block needs an exact match of pipeline state
|
u8 needExactMatch; // If set, block needs an exact match of pipeline state
|
||||||
u8 q;
|
u8 q;
|
||||||
u8 p;
|
u8 p;
|
||||||
u8 r;
|
u8 flags; // clip x2 :: status x2
|
||||||
u8 xgkick;
|
u8 xgkick;
|
||||||
u8 viBackUp; // VI reg number that was written to on branch-delay slot
|
u8 viBackUp; // VI reg number that was written to on branch-delay slot
|
||||||
u8 blockType; // 0 = Normal; 1,2 = Compile one instruction (E-bit/Branch Ending)
|
u8 blockType; // 0 = Normal; 1,2 = Compile one instruction (E-bit/Branch Ending)
|
||||||
};
|
};
|
||||||
u32 simple32[2];
|
u32 quick32[2];
|
||||||
};
|
};
|
||||||
|
|
||||||
struct
|
struct {
|
||||||
{
|
|
||||||
u8 VI[16];
|
u8 VI[16];
|
||||||
regInfo VF[32];
|
regInfo VF[32];
|
||||||
u8 flags; // clip x2 :: status x2
|
u8 r;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue