[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