{
"block_composition": [
"Optional header command after BSTART and before the first body instruction. At most one B.CATR may appear in a block."
],
"canonical_assembly": [
"B.CATR {trap, atomic, <aq, rl, aqrl>, far, dr}"
],
"defaults": [
"Omitting B.CATR is equivalent to trap=0, atom=0, aq=0, rl=0, far=0, and DR=0. Every encoded bit is explicit; zero never means an omitted instruction."
],
"encoding_class": "standalone-encoded",
"examples": [
"B.CATR {trap, atomic, <aq, rl, aqrl>, far, dr}"
],
"exceptions": [
"A B.CATR outside an active header or a second B.CATR raises Illegal Block Exception before changing pending or architectural state.",
"DR=1 in CUBE or a non-tile block raises Illegal Block Exception before block effects; VEC, SFU, and TLSU blocks may consume dimension-reduction mode.",
"A failed or rejected block commit produces no post-commit trap and exposes no partial atomic-block result."
],
"field_contracts": {},
"field_zero_meanings": {
"DR": "Encoded zero selects the default multidimensional operation mode.",
"trap": "Encoded zero disables the synchronous post-commit trap request.",
"far": "Encoded zero executes the block on the initiating core.",
"atom": "Encoded zero selects normal operation-specific commit visibility.",
"aq": "Encoded zero disables acquire ordering.",
"rl": "Encoded zero disables release ordering."
},
"legality": [
"All six one-bit fields are independently assigned; aq and rl do not require atom=1.",
"B.CATR is header-only and unique per block.",
"DR=1 is assigned only for VEC, SFU, and TLSU blocks and rejects for CUBE and non-tile blocks before effects."
],
"memory_effects": [
"aq prevents later-block memory effects from preceding this block; rl prevents earlier-block memory effects from following it; aq+rl applies both constraints.",
"atom=1 makes the complete block one non-interleavable all-or-nothing architectural transaction: memory and register-output effects become visible together or remain ineffective.",
"far=1 may transport inputs and returned results through a remote target selected by routing state, but only the initiating core's final commit is architecturally visible."
],
"operands": [
{
"field": "DR",
"role": "dimension-reduction selector: zero multidimensional; one group-executed reduction mode"
},
{
"field": "trap",
"role": "synchronous post-commit trap request"
},
{
"field": "far",
"role": "remote execution request using existing routing state"
},
{
"field": "atom",
"role": "whole-block transaction selector"
},
{
"field": "aq",
"role": "acquire ordering bit"
},
{
"field": "rl",
"role": "release ordering bit"
}
],
"ordering": [
"aq prevents later-block memory effects from preceding this block.",
"rl prevents earlier-block memory effects from following this block.",
"When both bits are one, both acquire and release constraints apply independently."
],
"standalone_opcode": true,
"state_effects": [
"Defines one optional block control record for post-commit trap, transactional visibility, acquire/release ordering, remote execution, and dimension-reduction mode.",
"trap=1 first commits and clears the block, then saves the selected continuation in a clean trap context; trap return resumes that continuation.",
"far=1 captures the block inputs for the routing-selected remote target, waits for returned results, and commits those results only on the initiating core.",
"DR=1 selects operation-defined dimension-reduction behavior for VEC, SFU, or TLSU; it never means dynamic rounding or direct-register addressing."
]
}