diff --git a/llvm/docs/LangRef.rst b/llvm/docs/LangRef.rst --- a/llvm/docs/LangRef.rst +++ b/llvm/docs/LangRef.rst @@ -1746,16 +1746,16 @@ function call are also considered to be cold; and, thus, given low weight. ``convergent`` - 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 attribute. + In some parallel execution models, there exist operations that implicitly + depend on the set of values upon which they are control-dependent. We call + such operations ``convergent``, and mark them with this attribute. The ``convergent`` attribute may appear on functions or call/invoke instructions. When it appears on a function, it indicates that calls to - this function should not be made control-dependent on additional values. - For example, the intrinsic ``llvm.nvvm.barrier0`` is ``convergent``, so - calls to this intrinsic cannot be made control-dependent on additional - values. + this function should not be made control-dependent on a different set of + values. For example, the intrinsic ``llvm.nvvm.barrier0`` is + ``convergent``, so calls to this intrinsic cannot be made control-dependent + on additional values. When it appears on a call/invoke, the ``convergent`` attribute indicates that we should treat the call as though we're calling a convergent