SPU Analyzer: fix wrong divisor in Giga const-prop re-decode
The "Fill more block info" re-decode indexed result.data[(ia - lsa) / 41] instead of / 4 (its companion decode uses / 4), so it read the wrong word and corrupted the per-block reg_const / reg_val32 constant propagation. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
committed by
Elad
parent
064365d6fb
commit
42242b3c43
@@ -4573,7 +4573,7 @@ spu_program spu_recompiler_base::analyse(const be_t<u32>* ls, u32 entry_point, s
|
|||||||
for (u32 ia = addr; ia < addr + bb.size * 4; ia += 4)
|
for (u32 ia = addr; ia < addr + bb.size * 4; ia += 4)
|
||||||
{
|
{
|
||||||
// Decode instruction again
|
// Decode instruction again
|
||||||
op.opcode = std::bit_cast<be_t<u32>>(result.data[(ia - lsa) / 41]);
|
op.opcode = std::bit_cast<be_t<u32>>(result.data[(ia - lsa) / 4]);
|
||||||
last_inst = g_spu_itype.decode(op.opcode);
|
last_inst = g_spu_itype.decode(op.opcode);
|
||||||
|
|
||||||
// Propagate some constants
|
// Propagate some constants
|
||||||
|
|||||||
Reference in New Issue
Block a user