Operands and parameters
PRED_IMM- fence predecessor access-class mask
SUCC_IMM- fence successor access-class mask
FENCE.D records predecessor/successor ordering masks and invalidates the local reservation.
PTO-SCALAR-FENCE-Dfence.d pred_imm, succ_imm| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
PRED_IMM | 4 | encoding-defined | fence predecessor access-class mask | Encoded zero selects value zero of the fence predecessor access-class mask. |
SUCC_IMM | 4 | encoding-defined | fence successor access-class mask | Encoded zero selects value zero of the fence successor access-class mask. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 31:28 | 4'b0000 |
| PRED_IMM | 27:24 | variable |
| SUCC_IMM | 23:20 | variable |
| Constant | 19:0 | 20'b00000010000000101011 |
{
"reg": [
{
"bits": 20,
"name": "20'b00000010000000101011"
},
{
"bits": 4,
"name": "SUCC_IMM"
},
{
"bits": 4,
"name": "PRED_IMM"
},
{
"bits": 4,
"name": "4'b0000"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}fence.d pred_imm, succ_imm
PRED_IMMSUCC_IMMThis Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_FENCE_D() => ScalarOperationbegin return ScalarOperation_FENCE_D;end;readonly func InstructionContractHandler_FENCE_D() => ScalarSemanticHandlerbegin return ScalarHandler_FenceData;end;
pure func InstructionContractRequiresSystemBlock_FENCE_D() => booleanbegin return TRUE;end;
pure func InstructionContractFenceMaskWidth_FENCE_D() => integer {4}begin return 4;end;
pure func InstructionContractFenceInvalidatesReservation_FENCE_D() => booleanbegin return TRUE;end;// PTO-INSTRUCTION: {"assembly":["fence.d pred_imm, succ_imm"],"block":[],"catalog_indices":[96],"catalog_records":[{"asm":"fence.d pred_imm, succ_imm","constraints":[],"encoding":[{"index":0,"mask":"0xf00fffff","match":"0x0000202b","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"PRED_IMM","pieces":[{"instruction_lsb":24,"value_lsb":0,"width":4}],"signedness":"encoding-defined","width":4},{"name":"SUCC_IMM","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":4}],"signedness":"encoding-defined","width":4}],"form_id":"fence_d_32_f4783f17d84d","length_bits":32,"mnemonic":"FENCE.D","semantic_family":"SYS","semantic_group":"SYS","semantic_handler":"FenceData","semantic_summary":"FENCE.D records predecessor/successor ordering masks and invalidates the local reservation.","status":"accepted"}],"classification":["sys"],"contract":{"block_composition":["FENCE.D executes as one scalar operation in the body of an active SYS block."],"canonical_assembly":["fence.d pred_imm, succ_imm"],"defaults":["Every displayed operand is encoded explicitly. Encoded zero is an assigned value and never denotes omission."],"encoding_class":"standalone-encoded","examples":["fence.d pred_imm, succ_imm"],"exceptions":["Invalid block placement raises Illegal Block Exception before encoded-field legality or effects.","A reserved encoding or rejected access raises Illegal Instruction before destination, queue, system-state, or TPC effects."],"field_contracts":{},"field_zero_meanings":{"PRED_IMM":"Encoded zero selects value zero of the fence predecessor access-class mask.","SUCC_IMM":"Encoded zero selects value zero of the fence successor access-class mask."},"legality":["All sixteen values of each four-bit predecessor and successor mask are assigned."],"memory_effects":["none"],"operands":[{"field":"PRED_IMM","role":"fence predecessor access-class mask"},{"field":"SUCC_IMM","role":"fence successor access-class mask"}],"ordering":["Record the exact predecessor and successor masks as one data-fence event.","If either mask carries the instruction-visibility bit, advance the instruction-cache epoch."],"standalone_opcode":true,"state_effects":["Invalidate the local reservation, record both masks, emit the fence event, and advance TPC."]},"depends_on":["PTO-SCALAR-MODEL-SYS-SEMANTICS"],"id":"PTO-SCALAR-FENCE-D","mnemonic":"FENCE.D","summary":"FENCE.D records predecessor/successor ordering masks and invalidates the local reservation.","surface":"scalar"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// NDF-BEGIN: PTO-FENCE-D-DECISION-BINDING-001// ndf: kind=contract level=L1 layer=scalar status=accepted// FENCE.D MUST implement the mnemonic-local canonical assembly, encoded// legality, defaults, state and memory effects, ordering, and fault boundaries// declared in this owner. The operation region below is the executable binding// for every accepted decision that names this mnemonic.// NDF-END: PTO-FENCE-D-DECISION-BINDING-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_FENCE_D() => ScalarOperationbegin return ScalarOperation_FENCE_D;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_FENCE_D() => ScalarSemanticHandlerbegin return ScalarHandler_FenceData;end;
pure func InstructionContractRequiresSystemBlock_FENCE_D() => booleanbegin return TRUE;end;
pure func InstructionContractFenceMaskWidth_FENCE_D() => integer {4}begin return 4;end;
pure func InstructionContractFenceInvalidatesReservation_FENCE_D() => booleanbegin return TRUE;end;// DOC-END: operation
FENCE.D records predecessor and successor access-class masks as one data-fence event, invalidates the local reservation, and retires as a scalar operation inside an active SYS block.
PRED_IMM and SUCC_IMM are independent 4-bit masks. The instruction records both exact values in architectural fence state and in the emitted fence event.
If either mask contains the instruction-visibility bit, FENCE.D also advances the instruction-cache epoch.
Both masks accept all 16 encoded values from 0 through 15. Encoded zero is an assigned all-zero mask, not an omitted operand.
FENCE.D has no Reg5 source and no scalar destination; its visible result is the ordering event and system-state updates.
A successful execution invalidates the local reservation, records both masks, emits one acquire-release fence event for the current memory agent, and advances TPC.
The instruction does not itself load or store data memory; its ordering effect is represented by the exact masks in the emitted fence event.
FENCE.D is legal only in the body of an active SYS block. Invalid placement raises an Illegal Block Exception before encoded-field checks or effects.
A fixed-bit mismatch raises Fault_IllegalInstruction before reservation, fence-state, event, cache-epoch, or TPC effects.
These examples illustrate assigned mask values; they do not replace the normative fence relation.
With both masks equal to 0, FENCE.D still invalidates the reservation and emits one fence event, but it does not advance the instruction-cache epoch. With both masks equal to 15, it records all-one masks and advances that epoch because the instruction-visibility bit is present.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
FENCE.D MUST implement the mnemonic-local canonical assembly, encoded legality, defaults, state and memory effects, ordering, and fault boundaries declared in this owner. The operation region below is the executable binding for every accepted decision that names this mnemonic.
PTO-FENCE-D-DECISION-BINDING-001asl/scalar/sys/FENCE.D.asl465a2dcce31deb1a8cef196dea8478d913b76076555a3e13677761e426bd095c0e0806af02f344846e448d38df4d59399c0e6f32b9ae91a51384336e4531a35014 matching entries
PTO-AVS-SCALAR-FENCE-D-DECODE-001tests/asl/scalar/sys/FENCE.D/scalar-decode-fence-d-canonical-001.aslb21f67d63ecb45518e76174be7fc45a94015667d543b71ea737ddc2958559670PTO-AVS-SYS-FENCE-D-EXEC-001tests/asl/scalar/sys/FENCE.D/scalar-exec-fence-d-direct-001.asl347ff12becebbe6a8c2a088c3a0cbba910e9aad9fb7c49cbb52f105ee785d987PTO-AVS-SYS-FENCE-D-PLACE-001tests/asl/scalar/sys/FENCE.D/scalar-fault-fence-d-place-001.asl33c584104ebb4606d8b1a6012f682c19f98019a6c284904f4352084d17645741PTO-AVS-SYS-FENCE-D-VISIBLE-001tests/asl/scalar/sys/FENCE.D/scalar-order-fence-d-visible-001.asl2f8b4367b854adf27bc2ea954bb0be999c0f8b61789d713a135ae322cf49b452PTO-AVS-SYS-FENCE-D-ZERO-001tests/asl/scalar/sys/FENCE.D/scalar-bound-fence-d-zero-001.asld6a316b07261474fbebf9f9cede7cda3894689194e6044dd98ba1c99fb0b9ce1PTO-EVIDENCE-RELEASE-TRACEABILITYPTO-EVIDENCE-RELEASE-TRACEABILITYspec/evidence/release-traceability-readiness.jsonc7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3ePTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSUREspec/evidence/instruction-contract-closure.json3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106aPTO-EVIDENCE-ARCHITECTURE-READINESSPTO-EVIDENCE-ARCHITECTURE-READINESSspec/evidence/architecture-readiness.json4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004PTO-EVIDENCE-RELEASE-GATE-READINESSPTO-EVIDENCE-RELEASE-GATE-READINESSspec/evidence/release-gate-readiness.jsona0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0PTO-EVIDENCE-RELEASE-MANIFESTPTO-EVIDENCE-RELEASE-MANIFESTspec/release-manifest.json1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8Loading ADR-0018…
ADR-0018docs/status/decisions/0018-pto-v0-trap-disposition.mdce33454ffd2a595425ebece5954c9990ea2b9c4890008ad700599f767d7b9716Loading ADR-0031…
ADR-0031docs/status/decisions/0031-scalar-sys-totality-and-profile-boundaries.md5680b3516be6c28a1ccb198c99f5efb66317c65330f6d87434173024d2795a7dLoading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196Loading ADR-0084…
ADR-0084docs/status/decisions/0084-scalar-system-and-queue-operations.mde068992fa81e2c4ac46e492391a2f784141d68e041bf0b9e0586c37217d1e08c{
"classification": [
"sys"
],
"documentation": "docs/scalar/sys/FENCE.D.md",
"id": "PTO-SCALAR-FENCE-D",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "FENCE.D",
"ndf_clause": "PTO-INST-SCALAR-FENCE-D"
},
"mnemonic": "FENCE.D",
"readiness_subjects": [
"ADR-0018",
"ADR-0031",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-SYS-FENCE-D-EXEC-001",
"PTO-AVS-SYS-FENCE-D-PLACE-001",
"PTO-AVS-SYS-FENCE-D-VISIBLE-001",
"PTO-AVS-SYS-FENCE-D-ZERO-001"
],
"source": "asl/scalar/sys/FENCE.D.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-FENCE-D-DECODE-001",
"PTO-AVS-SYS-FENCE-D-EXEC-001",
"PTO-AVS-SYS-FENCE-D-PLACE-001",
"PTO-AVS-SYS-FENCE-D-VISIBLE-001",
"PTO-AVS-SYS-FENCE-D-ZERO-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd86812465a2dcce31deb1a8cef196dea8478d913b76076555a3e13677761e426bd095cabb4699fd7ad7353df33bcfa376a59a11657133ee27a65e801d8e5795b58bc46asl/scalar/sys/FENCE.D.aslasl/scalar/sys/FENCE.D.aslasl/scalar/sys/FENCE.D.asl