Fixup the special case constant bus handling pre-gfx10.
Details
Details
Diff Detail
Diff Detail
Event Timeline
Comment Actions
Pre-gfx10 writelane v0, m0, s0 is legal, isn't it? Does your implementation allow for that? You don't seem to have any tests for that case.
Comment Actions
This is covered by @test_writelane_m0_s_v, but it looks like it ends up swapping the registers:
; GFX7-NEXT: s_mov_b32 s0, m0 ; GFX7-NEXT: s_mov_b32 m0, s2 ; GFX7-NEXT: v_writelane_b32 v0, s0, m0
Comment Actions
I'm not sure there's a principled way to fold this during selection. I think handling this correctly would require us to finally stop treating m0 as a reserved register
Comment Actions
I guess it's probably not worth worrying about this case? It all looks functionally correct anyway.