[PATCH] D17012: Update document about convergent attribute.
Mehdi AMINI via llvm-commits
llvm-commits at lists.llvm.org
Tue Feb 9 13:50:29 PST 2016
joker.eph added a comment.
Here is a straw-man proposal since I don't get the need for distinction between intrinsics and regular functions:
In these execution models, certain operations have the property that they
cannot be made control-dependent on any additional values. We call these
operations ``convergent``. For example, the ``llvm.cuda.syncthreads``
intrinsic is convergent, and so functions which (transitively) invoke it
must also be convergent. Any call to a function with the convergent
attribute is considered a ``convergent operation``.
The optimizer is safely allowed to remove the convergent attribute from a
function if it can be proven that it'll never execute a convergent operation.
http://reviews.llvm.org/D17012
More information about the llvm-commits
mailing list