Module tme

Source
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_CNCLExperimental
Transaction executed a TCANCEL instruction
_TMFAILURE_DBGExperimental
Transaction aborted due to a debug trap.
_TMFAILURE_ERRExperimental
Transaction aborted because a non-permissible operation was attempted
_TMFAILURE_IMPExperimental
Fallback error type for any other reason
_TMFAILURE_INTExperimental
Transaction failed from interrupt
_TMFAILURE_MEMExperimental
Transaction aborted because a conflict occurred
_TMFAILURE_NESTExperimental
Transaction aborted due to transactional nesting level was exceeded
_TMFAILURE_REASONExperimental
Extraction mask for failure reason
_TMFAILURE_RTRYExperimental
Transaction retry is possible.
_TMFAILURE_SIZEExperimental
Transaction aborted due to read or write set limit was exceeded
_TMFAILURE_TRIVIALExperimental
Indicates a TRIVIAL version of TM is available
_TMSTART_SUCCESSExperimental
Transaction successfully started.

Functionsยง

aarch64_tcancel ๐Ÿ”’ โš 
aarch64_tcommit ๐Ÿ”’ โš 
aarch64_tstart ๐Ÿ”’ โš 
aarch64_ttest ๐Ÿ”’ โš 
__tcancelโš Experimentaltme
Cancels the current transaction and discards all state modifications that were performed transactionally.
__tcommitโš Experimentaltme
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โš Experimentaltme
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โš Experimentaltme
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.