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:
Christopher Hotchkiss 2026-06-23 11:59:11 -08:00
parent 3c3de78cc8
commit 4e73b5549b

View File

@ -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)
{
// 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);
// Propagate some constants