[PATCH] D17012: Update document about convergent attribute.

Justin Lebar via llvm-commits llvm-commits at lists.llvm.org
Tue Feb 9 14:18:37 PST 2016


jlebar updated this revision to Diff 47368.
jlebar added a comment.

Update again after IRC conversation with joker.eph.


http://reviews.llvm.org/D17012

Files:
  docs/LangRef.rst

Index: docs/LangRef.rst
===================================================================
--- docs/LangRef.rst
+++ docs/LangRef.rst
@@ -1239,10 +1239,18 @@
     function call are also considered to be cold; and, thus, given low
     weight.
 ``convergent``
-    This attribute indicates that the callee is dependent on a convergent
-    thread execution pattern under certain parallel execution models.
-    Transformations that are execution model agnostic may not make the execution
-    of a convergent operation control dependent on any additional values.
+    In some parallel execution models, there exist operations that cannot be
+    made control-dependent on any additional values.  We call such operations
+    ``convergent``, and mark them with this function attribute.
+
+    For example, the intrinsic ``llvm.cuda.syncthreads`` is ``convergent``, so
+    calls to this intrinsic cannot be made control-dependent on additional
+    values.  Other functions may also be marked as convergent; this prevents
+    the same optimization on those functions, unless the optimizer can prove
+    that they never execute a convergent operation.
+
+    The optimizer may remove the ``convergent`` attribute when it can prove
+    that the function does not execute any convergent operations.
 ``inaccessiblememonly``
     This attribute indicates that the function may only access memory that
     is not accessible by the module being compiled. This is a weaker form


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D17012.47368.patch
Type: text/x-patch
Size: 1473 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160209/b5476299/attachment.bin>


More information about the llvm-commits mailing list