aco/ra: don't write to scc/ttmp with s_fmac

Fixes: 4bd229ac50 ("aco/gfx11.5: select SOP2 float instructions")

Reviewed-by: Rhys Perry <pendingchaos02@gmail.com>
(cherry picked from commit 65506e635b)

Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/32730>
This commit is contained in:
Georg Lehmann 2024-12-10 16:51:53 +01:00 committed by Dylan Baker
parent 1a98685055
commit e92e02a71f
2 changed files with 9 additions and 2 deletions

View file

@ -514,7 +514,7 @@
"description": "aco/ra: don't write to scc/ttmp with s_fmac",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "4bd229ac50f21621fc57cfbf9a4f81d6618ca6cc",
"notes": null

View file

@ -2092,7 +2092,14 @@ operand_can_use_reg(amd_gfx_level gfx_level, aco_ptr<Instruction>& instr, unsign
gfx_level >= GFX10); /* sdata can be vcc */
case Format::MUBUF:
case Format::MTBUF: return idx != 2 || gfx_level < GFX12 || reg != scc;
case Format::SOPK: return idx != 0 || reg != scc;
case Format::SOPK:
if (idx == 0 && reg == scc)
return false;
FALLTHROUGH;
case Format::SOP2:
case Format::SOP1:
return get_op_fixed_to_def(instr.get()) != (int)idx ||
is_sgpr_writable_without_side_effects(gfx_level, reg);
default:
// TODO: there are more instructions with restrictions on registers
return true;