[PATCH] D73030: GlobalISel: Assume G_INTRINSIC* are convergent
Matt Arsenault via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 4 12:51:24 PST 2020
arsenm added a comment.
In D73030#1857708 <https://reviews.llvm.org/D73030#1857708>, @aemerson wrote:
> I'm not 100% sure on what the convergent attribute means here, but assuming that it means it's not allowed to sink instructions into control flow etc, I don't think we should be marking these generic intrinsic ops with it. On arm64 we can use G_INTRINSIC to represent user-written intrinsic instructions which have no problem with being made control dependent.
The intrinsic opcodes need to conservatively assume it could call an intrinsic with any property. These can be used to call an intrinsic or call site marked as convergent, so they have to be convergent to be conservatively correct. Since nothing in the globalisel pipeline currently does any control flow sinking or anything, it's not worth the hassle of optimizing this by adding an additional 2 G_INTRINSIC* variants. Until that comes up, I'd rather leave this in the safe state so somebody doesn't silently break convergent handling at some point in the future.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D73030/new/
https://reviews.llvm.org/D73030
More information about the llvm-commits
mailing list