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 🔒
__tcancelExperimentaltme
Cancels the current transaction and discards all state modifications that were performed transactionally.
__tcommitExperimentaltme
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.
__tstartExperimentaltme
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.
__ttestExperimentaltme
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.