mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-02-04 08:16:49 +00:00
Update documentation about convergent attribute.
Summary: Be more explicit about what 'convergent' means, and indicate that the compiler may remove the attribute from a function if it can prove that the function doesn't in fact execute any convergent ops. Reviewers: resistor, jingyue, joker.eph Subscribers: hfinkel, chandlerc, arsenm, jhen, tra, llvm-commits Differential Revision: http://reviews.llvm.org/D17012 llvm-svn: 260318
This commit is contained in:
parent
9b656527f1
commit
d5fb6957a9
@ -1238,10 +1238,17 @@ example:
|
|||||||
function call are also considered to be cold; and, thus, given low
|
function call are also considered to be cold; and, thus, given low
|
||||||
weight.
|
weight.
|
||||||
``convergent``
|
``convergent``
|
||||||
This attribute indicates that the callee is dependent on a convergent
|
In some parallel execution models, there exist operations that cannot be
|
||||||
thread execution pattern under certain parallel execution models.
|
made control-dependent on any additional values. We call such operations
|
||||||
Transformations that are execution model agnostic may not make the execution
|
``convergent``, and mark them with this function attribute.
|
||||||
of a convergent operation control dependent on any additional values.
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
The optimizer may remove the ``convergent`` attribute when it can prove
|
||||||
|
that the function does not execute any convergent operations.
|
||||||
``inaccessiblememonly``
|
``inaccessiblememonly``
|
||||||
This attribute indicates that the function may only access memory that
|
This attribute indicates that the function may only access memory that
|
||||||
is not accessible by the module being compiled. This is a weaker form
|
is not accessible by the module being compiled. This is a weaker form
|
||||||
|
Loading…
x
Reference in New Issue
Block a user