Available on AArch64 or
target_arch="arm64ec"
only.Expand description
ARMโs Transactional Memory Extensions (TME).
This CPU feature is available on Aarch64 - A architecture profile. This feature is in the non-neon feature set. TME specific vendor documentation can be found TME Intrinsics Introduction.
The reference is ACLE Q4 2019.
ACLE has a section for TME extensions and state masks for aborts and failure codes. ARM A64 Architecture Register Datasheet also describes possible failure code scenarios.
Constantsยง
- _TMFAILURE_
CNCL Experimental - Transaction executed a TCANCEL instruction
- _TMFAILURE_
DBG Experimental - Transaction aborted due to a debug trap.
- _TMFAILURE_
ERR Experimental - Transaction aborted because a non-permissible operation was attempted
- _TMFAILURE_
IMP Experimental - Fallback error type for any other reason
- _TMFAILURE_
INT Experimental - Transaction failed from interrupt
- _TMFAILURE_
MEM Experimental - Transaction aborted because a conflict occurred
- _TMFAILURE_
NEST Experimental - Transaction aborted due to transactional nesting level was exceeded
- _TMFAILURE_
REASON Experimental - Extraction mask for failure reason
- _TMFAILURE_
RTRY Experimental - Transaction retry is possible.
- _TMFAILURE_
SIZE Experimental - Transaction aborted due to read or write set limit was exceeded
- _TMFAILURE_
TRIVIAL Experimental - Indicates a TRIVIAL version of TM is available
- _TMSTART_
SUCCESS Experimental - Transaction successfully started.
Functionsยง
- aarch64_
tcancel ๐ โ - aarch64_
tcommit ๐ โ - aarch64_
tstart ๐ โ - aarch64_
ttest ๐ โ - __
tcancel โExperimental tme
- Cancels the current transaction and discards all state modifications that were performed transactionally.
- __
tcommit โExperimental tme
- Commits the current transaction. For a nested transaction, the only effect is that the transactional nesting depth is decreased. For an outer transaction, the state modifications performed transactionally are committed to the architectural state.
- __
tstart โExperimental tme
- Starts a new transaction. When the transaction starts successfully the return value is 0. If the transaction fails, all state modifications are discarded and a cause of the failure is encoded in the return value.
- __ttestโ
Experimental tme
- Tests if executing inside a transaction. If no transaction is currently executing, the return value is 0. Otherwise, this intrinsic returns the depth of the transaction.