Operands and parameters
SrcL- Reg5 source of the queue address
RegDst0- Reg5 destination for popped data
RegDst1- Reg5 destination for the operation result
e- success-event selector
r- relaxed-ordering selector
Atomically pops one 64-bit head entry from a General Queue Management queue.
PTO-BLOCK-HL-QPOPhl.qpop SrcL, ->RegDst0, RegDst1hl.qpop.e SrcL, ->RegDst0, RegDst1hl.qpop.r SrcL, ->RegDst0, RegDst1hl.qpop.er SrcL, ->RegDst0, RegDst1| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
RegDst0 | 5 | encoding-defined | Reg5 destination for popped data | Encoded zero names R0; reads produce zero and writes are discarded. |
RegDst1 | 5 | encoding-defined | Reg5 destination for the operation result | Encoded zero names R0; reads produce zero and writes are discarded. |
SrcL | 5 | encoding-defined | Reg5 source of the queue address | Encoded zero names R0; reads produce zero and writes are discarded. |
e | 1 | encoding-defined | success-event selector | Zero suppresses event notification. |
r | 1 | encoding-defined | relaxed-ordering selector | Zero selects acquire ordering. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 47:43 | 5'b00000 |
| r | 42 | variable |
| e | 41 | variable |
| Constant | 40:36 | 5'b00000 |
| SrcL | 35:31 | variable |
| Constant | 30:28 | 3'b010 |
| RegDst0 | 27:23 | variable |
| Constant | 22:16 | 7'b1111101 |
| RegDst1 | 15:11 | variable |
| Constant | 10:0 | 11'b00000001110 |
{
"reg": [
{
"bits": 11,
"name": "11'b00000001110"
},
{
"bits": 5,
"name": "RegDst1"
},
{
"bits": 7,
"name": "7'b1111101"
},
{
"bits": 5,
"name": "RegDst0"
},
{
"bits": 3,
"name": "3'b010"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "5'b00000"
},
{
"bits": 1,
"name": "e"
},
{
"bits": 1,
"name": "r"
},
{
"bits": 5,
"name": "5'b00000"
}
],
"config": {
"bits": 48,
"fontsize": 13,
"hspace": 900,
"lanes": 2,
"offset": 0
}
}hl.qpop[.{e,r,er}] SrcL, ->RegDst0, RegDst1
SrcLRegDst0RegDst1erDecode and Operation come directly from the instruction owner and remain separated by execution phase.
readonly func InstructionContractMatches_HL_QPOP(operation: CommandOperation) => booleanbegin return (operation == CommandOperation_hl_qpop_48_a2c57f5bc27b);end;readonly func InstructionContractHandler_HL_QPOP() => CommandSemanticHandlerbegin return CommandHandler_ExecuteQueuePop;end;
func ExecuteHLQPOP(destination0: Reg5Selector, destination1: Reg5Selector, address: Word, flags: bits(4))begin ExecuteQueueManagerPop( destination0, destination1, address, flags);end;
pure func InstructionContractChangesQueueManagerState_HL_QPOP() => booleanbegin return TRUE;end;
pure func InstructionContractSnapshotsSourcesBeforeWrite_HL_QPOP() => booleanbegin return TRUE;end;// PTO-INSTRUCTION: {"assembly":["hl.qpop SrcL, ->RegDst0, RegDst1","hl.qpop.e SrcL, ->RegDst0, RegDst1","hl.qpop.r SrcL, ->RegDst0, RegDst1","hl.qpop.er SrcL, ->RegDst0, RegDst1"],"block":[],"catalog_indices":[67],"catalog_records":[{"asm":"hl.qpop[.{e,r,er}] SrcL, ->RegDst0, RegDst1","constraints":[],"encoding":[{"index":0,"mask":"0xf9f0707f07ff","match":"0x0000207d000e","width_bits":48}],"encoding_kind":"HL48","fields":[{"name":"RegDst0","pieces":[{"instruction_lsb":23,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"RegDst1","pieces":[{"instruction_lsb":11,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcL","pieces":[{"instruction_lsb":31,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"e","pieces":[{"instruction_lsb":41,"value_lsb":0,"width":1}],"signedness":"encoding-defined","width":1},{"name":"r","pieces":[{"instruction_lsb":42,"value_lsb":0,"width":1}],"signedness":"encoding-defined","width":1}],"form_id":"hl_qpop_48_a2c57f5bc27b","length_bits":48,"mnemonic":"HL.QPOP","semantic_family":"CMD","semantic_group":"General","semantic_handler":"ExecuteQueuePop","semantic_summary":"Atomically pops one 64-bit head entry from a General Queue Management queue.","status":"accepted"}],"classification":["lifecycle"],"contract":{"block_composition":["none"],"canonical_assembly":["hl.qpop SrcL, ->RegDst0, RegDst1","hl.qpop.e SrcL, ->RegDst0, RegDst1","hl.qpop.r SrcL, ->RegDst0, RegDst1","hl.qpop.er SrcL, ->RegDst0, RegDst1"],"defaults":["The bare form has acquire semantics and publishes no event.","e=0 suppresses notification and r=0 selects acquire ordering.","Bits [40:36] are fixed reserved-zero bits and are never an operand."],"encoding_class":"standalone-encoded","examples":["hl.qpop a0, ->a1, a2","hl.qpop.e t#1, ->t#2, u#1","hl.qpop.r sp, ->zero, a0"],"exceptions":["Nonzero reserved bits [40:36] and selector failures raise Fault_IllegalInstruction before source reads, queue observation, events, destination writes, or TPC advance.","Empty, missing, and corrupt queues report status in RegDst1 and do not trap."],"field_contracts":{},"field_zero_meanings":{"SrcL":"Encoded zero names R0; reads produce zero and writes are discarded.","RegDst0":"Encoded zero names R0; reads produce zero and writes are discarded.","RegDst1":"Encoded zero names R0; reads produce zero and writes are discarded.","e":"Zero suppresses event notification.","r":"Zero selects acquire ordering."},"legality":["Reg5 values 0..23 select absolute R0..R23 and 24..31 select the block-relative T#1..T#4 or U#1..U#4 entries; unavailable relative sources and invalid relative destinations reject before queue state changes.","All four e/r flag combinations are assigned.","Any nonzero value in bits [40:36] is reserved and raises Fault_IllegalInstruction before source reads or effects."],"memory_effects":["No direct memory access. A non-relaxed successful pop acquires memory operations released by the observed entry's non-relaxed push."],"operands":[{"field":"SrcL","role":"Reg5 source of the queue address"},{"field":"RegDst0","role":"Reg5 destination for popped data"},{"field":"RegDst1","role":"Reg5 destination for the operation result"},{"field":"e","role":"success-event selector"},{"field":"r","role":"relaxed-ordering selector"}],"ordering":["Queue validation and data selection precede the atomic head removal. A successful removal precedes optional event notification and the ordered RegDst0 then RegDst1 writes.","r=0 establishes the acquire edge; r=1 is relaxed and records no acquire edge. Destination aliases follow ordered multi-destination write rules."],"standalone_opcode":true,"state_effects":["A successful pop removes the head entry even while the queue is suspended, writes its value to RegDst0, and reports status zero.","RegDst1[12:0] holds the post-attempt remaining entry count and [63:62] holds status; unused bits are zero. Status 1 is empty, 2 is missing or corrupt, and 3 is reserved.","Only a successful pop with e=1 broadcasts an event. The queue update and both destination writes are one instruction effect."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-BLOCK-HL-QPOP","mnemonic":"HL.QPOP","summary":"Atomically pops one 64-bit head entry from a General Queue Management queue.","surface":"block"}// NDF-BEGIN: PTO-HL-QPOP-GQM-001// ndf: kind=contract level=L1 layer=block status=accepted// HL.QPOP MUST atomically remove one head entry, optionally notify after// success, publish data before status, and provide acquire ordering unless r=1.// Empty, missing, or corrupt queues MUST report status without a queue update.// NDF-END: PTO-HL-QPOP-GQM-001// DOC-BEGIN: decodereadonly func InstructionContractMatches_HL_QPOP(operation: CommandOperation) => booleanbegin return (operation == CommandOperation_hl_qpop_48_a2c57f5bc27b);end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_HL_QPOP() => CommandSemanticHandlerbegin return CommandHandler_ExecuteQueuePop;end;
func ExecuteHLQPOP(destination0: Reg5Selector, destination1: Reg5Selector, address: Word, flags: bits(4))begin ExecuteQueueManagerPop( destination0, destination1, address, flags);end;
pure func InstructionContractChangesQueueManagerState_HL_QPOP() => booleanbegin return TRUE;end;
pure func InstructionContractSnapshotsSourcesBeforeWrite_HL_QPOP() => booleanbegin return TRUE;end;// DOC-END: operation// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}
HL.QPOP is a standalone General Queue Management command whose queue update, status result, and optional event are one ordered instruction effect.
HL.QPOP executes as a standalone 48-bit command and does not require placement inside a BSTART/BSTOP body.
The accepted carrier uses the HL48 encoding class and resolves every displayed field before the command reads bindings or changes state.
The command snapshots every required source before its first visible effect, then follows the owner-defined commit or restart boundary.
SrcL — Reg5 source of the queue address; RegDst0 — Reg5 destination for popped data; RegDst1 — Reg5 destination for the operation result; e — success-event selector; r — relaxed-ordering selector.Source validation and snapshot precede every register, queue, frame, memory, event, or control-flow effect.
The command publishes its state and result as one ordered instruction effect, then advances or transfers control as defined by the owner.
Fixed bits, reserved values, selector domains, and required Block placement are checked before architectural effects.
The current owner reports invalid schema, state, address, or continuation conditions through Fault_IllegalInstruction; no prose on this page creates an additional fault rule.
Rejection occurs before effects unless the current owner explicitly defines a restart boundary with retained progress; completion order remains the ASL order.
This example demonstrates placement and carrier flow only; exact behavior remains in the current ASL and instruction contract.
hl.qpop a0, ->a1, a2The shown accepted spelling resolves its fields from the current carrier, snapshots required sources, and then follows the owner-defined state and ordering transition.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
HL.QPOP MUST atomically remove one head entry, optionally notify after success, publish data before status, and provide acquire ordering unless r=1. Empty, missing, or corrupt queues MUST report status without a queue update.
PTO-HL-QPOP-GQM-001asl/block/lifecycle/HL.QPOP.asl8708645d6738c9284e31c82ada48747fc3b0b757d607d4a89804ebb1506b3d7788448dc70002e8b5aacd38d45538dc363deaac1d985bc37446bca91817e84a2c13 matching entries
PTO-AVS-BLOCK-HL-QPOP-ACQUIRE-001tests/asl/block/lifecycle/HL.QPOP/block-exec-hl-qpop-acquire-001.aslc7a26b65f5d3d9fb1e48258ca2b64e4b366a5d5be590e1f5d947a8fc4fe0cfa7PTO-AVS-BLOCK-HL-QPOP-DECODE-001tests/asl/block/lifecycle/HL.QPOP/block-decode-hl-qpop-canonical-001.asl5867dd1e44ccf89d6ddcdc788d58b435c5db0d0839a59a15daa5daf659d29306PTO-AVS-BLOCK-HL-QPOP-RESERVED-001tests/asl/block/lifecycle/HL.QPOP/block-fault-hl-qpop-reserved-001.asl0a64aeb20b04c950c7f9b829b26783199b9095721b7d2bdb4a97901c5e45f12bPTO-AVS-BLOCK-HL-QPOP-STATUS-001tests/asl/block/lifecycle/HL.QPOP/block-bound-hl-qpop-status-001.asl66d5701dd593ac484788e8546112aa364ca7f452d5044540bde83bb16640b085PTO-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-0032…
ADR-0032docs/status/decisions/0032-bundle-command-totality-and-profile-boundaries.mde1f91826817343c0977a565a91e495a15397b83fa2af227124f225821ffa54aeLoading ADR-0052…
ADR-0052docs/status/decisions/0052-direct-tile-and-bundle-catalog-closure.md5fdb38bf480e37affe5075f93b35a57d32803018c986bfe05160f188a19ccaf6Loading 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": [
"lifecycle"
],
"documentation": "docs/block/lifecycle/HL.QPOP.md",
"id": "PTO-BLOCK-HL-QPOP",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "HL.QPOP",
"ndf_clause": "PTO-INST-BLOCK-HL-QPOP"
},
"mnemonic": "HL.QPOP",
"readiness_subjects": [
"ADR-0032",
"ADR-0052",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-BLOCK-HL-QPOP-ACQUIRE-001",
"PTO-AVS-BLOCK-HL-QPOP-RESERVED-001",
"PTO-AVS-BLOCK-HL-QPOP-STATUS-001"
],
"source": "asl/block/lifecycle/HL.QPOP.asl",
"surface": "block",
"tests": [
"PTO-AVS-BLOCK-HL-QPOP-ACQUIRE-001",
"PTO-AVS-BLOCK-HL-QPOP-DECODE-001",
"PTO-AVS-BLOCK-HL-QPOP-RESERVED-001",
"PTO-AVS-BLOCK-HL-QPOP-STATUS-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd868128708645d6738c9284e31c82ada48747fc3b0b757d607d4a89804ebb1506b3d778596f3450fe93b5672131c0ea8a686b1f792ca393d8fe9a0bb26f4073b679bd3asl/block/lifecycle/HL.QPOP.aslasl/block/lifecycle/HL.QPOP.aslasl/block/lifecycle/HL.QPOP.asl