[llvm] AMDGPU: Fix temporal divergence introduced by machine-sink and performance regression introduced by D155343 (PR #67456)

Nicolai Hähnle via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 4 12:45:33 PDT 2023


https://github.com/nhaehnle commented:

Thanks, this looks pretty close to landing IMO.

> blockPrologueInterferes in tryToSinkCopy seems to be required,
> For example see _amdgpu_ps_main2 from llvm/test/CodeGen/AMDGPU/sink-after-control-flow-postra.mir
> blockPrologueInterferes stops sink of
> renamable $sgpr0_sgpr1 = COPY $sgpr6_sgpr7
> past its use $sgpr4_sgpr5 = S_AND_SAVEEXEC_B64 $sgpr0_sgpr1, implicit-def $exec, implicit-def $scc, implicit $exec

Does that make sense? Whatever PostRAMachineSink is trying to do, surely it shouldn't need target-specific block prologue logic to understand that a def can't be sunk past its use...

https://github.com/llvm/llvm-project/pull/67456


More information about the llvm-commits mailing list