tcommit
Transaction Commit
TCOMMIT
Commits the current transaction.
Details
Commits the current transactional region and exits transactional execution. If the transaction is successful, execution continues at the next instruction with all transactional memory updates committed atomically. If the transaction fails, execution aborts to the TSTART instruction and the failure reason is recorded. No condition flags are affected. AArch64-only; requires TME extension.
Pseudocode Operation
if PSTATE.TME == TRUE then
Commit the current transaction
if transaction fails then
ABORT_TRANSACTION
else
Continue to next instruction
else
UNDEFINED
Example
TCOMMIT
Encoding
Binary Layout
11010101000000110011
0000
011
11111
Operands
Reference (Arm A64 ISA)
Instruction Forms
| Encoding | Instruction | ISA | Bit pattern | ||
|---|---|---|---|---|---|
| 0xD503307F | TCOMMIT | A64 | 11010101000000110011 | 0000 | 011 | 11111 |
Description
This instruction commits the current transaction. If the current transaction is an outer transaction, then Transactional state is exited, and all state modifications performed transactionally are committed to the architectural state. TCOMMIT takes no inputs and returns no value.
Execution of TCOMMIT is UNDEFINED in Non-transactional state.
Operation
if !IsTMEEnabled() then UNDEFINED;
if TSTATE.depth == 0 then
UNDEFINED;
if TSTATE.depth == 1 then
CommitTransactionalWrites();
ClearExclusiveLocal(ProcessorID());
TSTATE.depth = TSTATE.depth - 1;