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
 
Format System
Opcode 0xD503307F
Extension TME (Transactional)

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;