[#BloombergLP-bsls-AtomicOperations_ALL_ALL_ClangIntrinsics]
= xref:BloombergLP.adoc[BloombergLP]::xref:BloombergLP/bsls.adoc[bsls]::AtomicOperations&lowbar;ALL&lowbar;ALL&lowbar;ClangIntrinsics
:relfileprefix: ../../
:mrdocs:

Platform&hyphen;specific atomic operations using clang `&lowbar;&lowbar;c11&lowbar;atomic&lowbar;&ast;` intrinsics&period;

== Synopsis

Declared in `&lt;bsls&lowbar;atomicoperations&lowbar;all&lowbar;all&lowbar;clangintrinsics&period;h&gt;`

[source,cpp,subs="verbatim,replacements,macros,-callouts"]
----
struct AtomicOperations&lowbar;ALL&lowbar;ALL&lowbar;ClangIntrinsics
    : xref:BloombergLP/bsls/AtomicOperations_Default64-0b.adoc[AtomicOperations&lowbar;Default64&lt;AtomicOperations&lowbar;ALL&lowbar;ALL&lowbar;ClangIntrinsics&gt;]
----

== Base Classes

[cols="1,4"]
|===
| Name| Description
| `xref:BloombergLP/bsls/AtomicOperations_Default64-0b.adoc[AtomicOperations&lowbar;Default64&lt;AtomicOperations&lowbar;ALL&lowbar;ALL&lowbar;ClangIntrinsics&gt;]`
| Default atomic operations for a generic 64&hyphen;bit platform&period;
|===

== Type Aliases

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/AtomicInt_SizeCheck.adoc[`AtomicInt&lowbar;SizeCheck`] 
| compile&hyphen;time assert
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/AtomicTypes.adoc[`AtomicTypes`] 
| Alias for platform&hyphen;specific atomic integer, pointer, and Int64 types&period;
|===


== Static Member Functions

[cols="1,4"]
|===
| Name| Description
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/addInt64Nv.adoc[`addInt64Nv`] 
| Atomically add to the specified `atomicInt` the specified `value` and return the resulting value, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/addInt64NvAcqRel.adoc[`addInt64NvAcqRel`] 
| Atomically add to the specified `atomicInt` the specified `value` and return the resulting value, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/addInt64NvRelaxed.adoc[`addInt64NvRelaxed`] 
| Atomically add to the specified `atomicInt` the specified `value` and return the resulting value, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/addIntNv.adoc[`addIntNv`] 
| Atomically add to the specified `atomicInt` the specified `value` and return the resulting value, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/addIntNvAcqRel.adoc[`addIntNvAcqRel`] 
| Atomically add to the specified `atomicInt` the specified `value` and return the resulting value, providing the acquire&sol;release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/addIntNvRelaxed.adoc[`addIntNvRelaxed`] 
| Atomically add to the specified `atomicInt` the specified `value` and return the resulting value, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/getInt.adoc[`getInt`] 
| Return the current value of the specified `atomicInt`&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/getInt64.adoc[`getInt64`] 
| Atomically retrieve the value of the specified `atomicInt`, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/getInt64Acquire.adoc[`getInt64Acquire`] 
| Atomically retrieve the value of the specified `atomicInt`, providing the acquire memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/getInt64Relaxed.adoc[`getInt64Relaxed`] 
| Atomically retrieve the value of the specified `atomicInt`, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/getIntAcquire.adoc[`getIntAcquire`] 
| Atomically retrieve the value of the specified `atomicInt`, providing the acquire memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/getIntRelaxed.adoc[`getIntRelaxed`] 
| Atomically retrieve the value of the specified `atomicInt`, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/initInt.adoc[`initInt`] 
| Initialize the specified `atomicInt` to the specified `value`&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/initInt64.adoc[`initInt64`] 
| Initialize the specified `atomicInt` and set its value to the specified `value`&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/setInt.adoc[`setInt`] 
| Atomically set the value of the specified `atomicInt` to the specified `value`, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/setInt64.adoc[`setInt64`] 
| Atomically set the value of the specified `atomicInt` to the specified `value`, providing the sequential consistency memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/setInt64Relaxed.adoc[`setInt64Relaxed`] 
| Atomically set the value of the specified `atomicInt` to the specified `value`, without providing any memory ordering guarantees&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/setInt64Release.adoc[`setInt64Release`] 
| Atomically set the value of the specified `atomicInt` to the specified `value`, providing the release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/setIntRelaxed.adoc[`setIntRelaxed`] 
| Store the specified `value` into the specified `atomicInt` with relaxed memory ordering&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/setIntRelease.adoc[`setIntRelease`] 
| Atomically set the value of the specified `atomicInt` to the specified `value`, providing the release memory ordering guarantee&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/swapInt.adoc[`swapInt`] 
| Atomically swap `atomicInt` with sequential consistency&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/swapInt64.adoc[`swapInt64`] 
| Atomically swap `atomicInt` with sequential consistency&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/swapInt64AcqRel.adoc[`swapInt64AcqRel`] 
| Atomically swap `atomicInt` with acquire&sol;release ordering&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/swapIntAcqRel.adoc[`swapIntAcqRel`] 
| Atomically swap `atomicInt` with acquire&sol;release ordering&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/testAndSwapInt.adoc[`testAndSwapInt`] 
| Conditionally swap `atomicInt` with sequential consistency&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/testAndSwapInt64.adoc[`testAndSwapInt64`] 
| Conditionally swap `atomicInt` with sequential consistency&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/testAndSwapInt64AcqRel.adoc[`testAndSwapInt64AcqRel`] 
| Conditionally swap `atomicInt` with acquire&sol;release ordering&period;
| xref:BloombergLP/bsls/AtomicOperations_ALL_ALL_ClangIntrinsics/testAndSwapIntAcqRel.adoc[`testAndSwapIntAcqRel`] 
| Conditionally swap `atomicInt` with acquire&sol;release ordering&period;
|===



[.small]#Created with https://www.mrdocs.com[MrDocs]#
