[PATCH] D26114: [AMDGPU] Allow hoisting of comparisons out of a loop and eliminate condition copies

Stanislav Mekhanoshin via llvm-commits llvm-commits at lists.llvm.org
Fri Nov 18 11:09:13 PST 2016


rampitec added a comment.

It looks like combining EXEC bit logic is too early before the SI Lower control flow pseudo instructions. Before that point it is:

  %vreg20<def> = S_AND_B64 %EXEC, %vreg18, %SCC<imp-def>; SReg_64:%vreg20,%vreg18
  %vreg3<def> = SI_IF %vreg20, <BB#3>, %EXEC<imp-def,dead>, %SCC<imp-def,dead>, %EXEC<imp-use>; SReg_64:%vreg3,%vreg20

After we have two S_AND_B64 which can be combined together:

  %vreg20<def> = S_AND_B64 %EXEC, %vreg18, %SCC<imp-def,dead>; SReg_64:%vreg20,%vreg18
  %vreg46<def> = COPY %vreg19<kill>; VGPR_32:%vreg46,%vreg19
  %vreg3<def> = COPY %EXEC, %EXEC<imp-def>; SReg_64:%vreg3
  %vreg47<def> = S_AND_B64 %vreg3, %vreg20, %SCC<imp-def,dead>; SReg_64:%vreg47,%vreg3,%vreg20

Not an easiest transformation because of the COPY in between, but doable.


Repository:
  rL LLVM

https://reviews.llvm.org/D26114





More information about the llvm-commits mailing list