[PATCH] D69498: IR: Invert convergent attribute handling

Nicolai Hähnle via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Fri Apr 23 09:34:50 PDT 2021


nhaehnle added a comment.

In D69498#2711396 <https://reviews.llvm.org/D69498#2711396>, @foad wrote:

> I don't have much to add to the conversation except to point out that this definition defines `noconvergent` in terms of divergent control flow, but the langref itself doesn't define what divergent control flow //is//, which makes it an incomplete spec. (Perhaps I'm just restating @arsenm's objections.) This seems unsatisfactory to me but I have no idea what to do about it. I agree with @sameerds that the current definition of `convergent` is too restrictive because in practice we really do want to be able to move convergent calls past uniform control flow.

That is one of the things that D85603 <https://reviews.llvm.org/D85603> addresses. I suspect Sameer was assuming the language from there in the background.

I agree with Matt that it would be best to avoid too much TTI dependence. The existing situation with the intrinsics is already a bit of a strange one. I wonder if it is possible to move to a world where isSourceOfDivergence need to be target-dependent. (This requires e.g. new attributes on function arguments as well as new information about address spaces in the data layout, plus some new attributes to define intrinsic data flow. Likely beyond the scope of this patch.)


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69498/new/

https://reviews.llvm.org/D69498



More information about the llvm-commits mailing list