[llvm] [AMDGPU] Fix SIFoldOperands miscompiling values that leave a divergent loop (PR #203256)

Jay Foad via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 30 03:04:49 PDT 2026


jayfoad wrote:

> > Please take a look at #136003 which seems to fix exactly the same problem in a different way. Why doesn't it work for your test code? What kind of IR input leads to a COPY-to-vgpr without an `implicit $exec` operand? Which fix should we prefer in the long term? We should not need both of them. Cc @mariusz-sikora-at-amd
> 
> I see two reasons why this case is not fixed by #136003
> 
> 1. The COPY's implicit operands is empty
>    `(OpToFold.DefMI->implicit_operands().empty())` is true
> 2. `UseMI->isCopy()` is false anyway, because the UseMI is
>    `%11:vgpr_32 = V_ADD_U32_e64 %9, 1, 0, implicit $exec`
>    so we never get to even check the implicit operand list.

Does the current PR also fix the test case from #136003? We should not need both fixes going forward.

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


More information about the llvm-commits mailing list