diff options
| author | Andrew Trick <atrick@apple.com> | 2011-08-12 00:36:38 +0000 |
|---|---|---|
| committer | Andrew Trick <atrick@apple.com> | 2011-08-12 00:36:38 +0000 |
| commit | 7bab70a7a5c8a946611d60e2d34a2c45e42476d7 (patch) | |
| tree | f89be928504e4eda80dd50206614e7dcfdbd2295 /llvm/docs | |
| parent | 10a18d55ce457b3fd1a045105f40a1dbb7f58054 (diff) | |
| download | bcm5719-llvm-7bab70a7a5c8a946611d60e2d34a2c45e42476d7.tar.gz bcm5719-llvm-7bab70a7a5c8a946611d60e2d34a2c45e42476d7.zip | |
Clarify the definition of SequentiallyConsistent operations.
llvm-svn: 137403
Diffstat (limited to 'llvm/docs')
| -rw-r--r-- | llvm/docs/Atomics.html | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/llvm/docs/Atomics.html b/llvm/docs/Atomics.html index 2b097b3faeb..d5bf9fa5c0f 100644 --- a/llvm/docs/Atomics.html +++ b/llvm/docs/Atomics.html @@ -330,9 +330,10 @@ instructions has been clarified in the IR.</p> <div> -<p>SequentiallyConsistent (<code>seq_cst</code> in IR) provides Acquire and/or - Release semantics, and in addition guarantees a total ordering exists with - all other SequentiallyConsistent operations. +<p>SequentiallyConsistent (<code>seq_cst</code> in IR) provides + Acquire semantics for loads and Release semantics for + stores. Additionally, it guarantees that a total ordering exists + between all SequentiallyConsistent operations. <dl> <dt>Relevant standard</dt> @@ -344,11 +345,17 @@ instructions has been clarified in the IR.</p> reason about for the programmer than other kinds of operations, and using them is generally a practical performance tradeoff.</dd> <dt>Notes for optimizers</dt> - <dd>In general, optimizers should treat this like a nothrow call; the - the possible optimizations are usually not interesting.</dd> + <dd>In general, optimizers should treat this like a nothrow call. + However, optimizers may improve performance by reordering a + store followed by a load unless both operations are sequentially + consistent.</dd> <dt>Notes for code generation</dt> - <dd>SequentiallyConsistent operations generally require the strongest - barriers supported by the architecture.</dd> + <dd>SequentiallyConsistent loads minimally require the same barriers + as Acquire operations and SequeuentiallyConsistent stores require + Release barriers. Additionally, the code generator must enforce + ordering between SequeuentiallyConsistent stores followed by + SequeuentiallyConsistent loads. On common architectures, this + requires emitting a full fence after SequeuentiallyConsistent stores.</dd> </dl> </div> |

