Operands and parameters
SrcD- Reg5 first store-data source
SrcD1- Reg5 second store-data source
SrcL- Reg5 address-base source
SrcR- Reg5 register-offset source
SrcRType- register-offset transformation selector
HL.SDP snapshots its scalar sources, forms its encoded address, and stores two adjacent aligned little-endian 8-byte values.
PTO-SCALAR-HL-SDPhl.sdp SrcD, SrcD1, [SrcL, SrcR<{.sw,.uw,.neg}><<3]| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
SrcD | 5 | encoding-defined | Reg5 first store-data source | Encoded zero reads the architectural zero GPR. |
SrcD1 | 5 | encoding-defined | Reg5 second store-data source | Encoded zero reads the architectural zero GPR. |
SrcL | 5 | encoding-defined | Reg5 address-base source | Encoded zero reads the architectural zero GPR. |
SrcR | 5 | encoding-defined | Reg5 register-offset source | Encoded zero reads the architectural zero GPR. |
SrcRType | 2 | encoding-defined | register-offset transformation selector | Encoded zero leaves the complete PTO_XLEN register-offset value unchanged. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| SrcD | 47:43 | variable |
| SrcRType | 42:41 | variable |
| SrcR | 40:36 | variable |
| SrcL | 35:31 | variable |
| Constant | 30:11 | 20'b01100000100100100000 |
| SrcD1 | 10:6 | variable |
| Constant | 5:0 | 6'b011110 |
{
"reg": [
{
"bits": 6,
"name": "6'b011110"
},
{
"bits": 5,
"name": "SrcD1"
},
{
"bits": 20,
"name": "20'b01100000100100100000"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "SrcR"
},
{
"bits": 2,
"name": "SrcRType"
},
{
"bits": 5,
"name": "SrcD"
}
],
"config": {
"bits": 48,
"fontsize": 13,
"hspace": 900,
"lanes": 2,
"offset": 0
}
}hl.sdp SrcD, SrcD1, [SrcL, SrcR<{.sw,.uw,.neg}><<3]
SrcDSrcD1SrcLSrcRSrcRTypeThis Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_HL_SDP() => ScalarOperationbegin return ScalarOperation_HL_SDP;end;readonly func InstructionContractHandler_HL_SDP() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarStorePair;end;
pure func InstructionContractAGUAction_HL_SDP() => ScalarAGUActionbegin return ScalarAGU_StorePair;end;
pure func InstructionContractAGUAddressKind_HL_SDP() => ScalarAGUAddressKindbegin return ScalarAGU_Register;end;
pure func InstructionContractAGUSizeBytes_HL_SDP() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractAGUOffsetScale_HL_SDP() => integer {0..3}begin return 3;end;
pure func InstructionContractAGUUpdateMode_HL_SDP() => AddressUpdateModebegin return AddressUpdate_None;end;
pure func InstructionContractAGUSignedLoad_HL_SDP() => booleanbegin return FALSE;end;
pure func InstructionContractAGUPrefetchReturnsAddress_HL_SDP() => booleanbegin return FALSE;end;// PTO-INSTRUCTION: {"assembly":["hl.sdp SrcD, SrcD1, [SrcL, SrcR<{.sw,.uw,.neg}><<3]"],"block":[],"catalog_indices":[257],"catalog_records":[{"agu":{"action":"StorePair","address_kind":"Register","offset_scale":3,"prefetch_returns_address":false,"signed_load":false,"size_bytes":8,"update_mode":"None"},"asm":"hl.sdp SrcD, SrcD1, [SrcL, SrcR<{.sw,.uw,.neg}><<3]","constraints":[],"encoding":[{"index":0,"mask":"0x00007ffff83f","match":"0x00003049001e","width_bits":48}],"encoding_kind":"HL48","fields":[{"name":"SrcD","pieces":[{"instruction_lsb":43,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcD1","pieces":[{"instruction_lsb":6,"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":"SrcR","pieces":[{"instruction_lsb":36,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcRType","pieces":[{"instruction_lsb":41,"value_lsb":0,"width":2}],"signedness":"encoding-defined","width":2}],"form_id":"hl_sdp_48_5884c49a7e55","length_bits":48,"mnemonic":"HL.SDP","semantic_family":"AGU","semantic_group":"STA/PAIR","semantic_handler":"ExecuteScalarStorePair","semantic_summary":"HL.SDP snapshots its scalar sources, forms its encoded address, and stores two adjacent aligned little-endian 8-byte values.","status":"accepted"}],"classification":["agu"],"contract":{"block_composition":["none"],"canonical_assembly":["hl.sdp SrcD, SrcD1, [SrcL, SrcR<{.sw,.uw,.neg}><<3]"],"defaults":["Every displayed operand field is encoded explicitly; encoded zero is a value and never denotes omission.","SrcRType=0 leaves SrcR unchanged, SrcRType=1 sign-extends SrcR[31:0], SrcRType=2 zero-extends SrcR[31:0], and SrcRType=3 negates the full PTO_XLEN value. Encoded shamt zero performs no shift."],"encoding_class":"standalone-encoded","examples":["hl.sdp SrcD, SrcD1, [SrcL, SrcR<{.sw,.uw,.neg}><<3]"],"exceptions":["A fixed-bit mismatch, reserved field value, or unavailable selected T/U source raises Fault_IllegalInstruction before instruction effects.","A misaligned 8-byte address raises Fault_DataAlignment before translation or permission. A later permission or bounded-memory failure raises Fault_DataPage at the original address.","A fault emits no successful memory event, performs no partial memory or destination effect, preserves pending writeback, and leaves TPC at the faulting instruction.","Recovery performs a full reissue: every address, source snapshot, preflight, memory operation, and destination is recomputed with no retained progress."],"field_contracts":{},"field_zero_meanings":{"SrcD":"Encoded zero reads the architectural zero GPR.","SrcD1":"Encoded zero reads the architectural zero GPR.","SrcL":"Encoded zero reads the architectural zero GPR.","SrcR":"Encoded zero reads the architectural zero GPR.","SrcRType":"Encoded zero leaves the complete PTO_XLEN register-offset value unchanged."},"legality":["Every encoded Reg5 source uses the complete domain: codes 0..23 select absolute GPRs, codes 24..27 select T#1..T#4, and codes 28..31 select U#1..U#4 without consumption.","All four SrcRType values and all shamt values 0..31 are assigned; apply the modifier before the shift.","Each memory address must be aligned to the 8-byte access size; a 8-byte access is the complete transfer unit."],"memory_effects":["Preflight both adjacent 8-byte addresses before either store; on success record two relaxed store events in address order.","Successful overlapping stores invalidate an overlapping reservation only after complete pair preflight."],"operands":[{"field":"SrcD","role":"Reg5 first store-data source"},{"field":"SrcD1","role":"Reg5 second store-data source"},{"field":"SrcL","role":"Reg5 address-base source"},{"field":"SrcR","role":"Reg5 register-offset source"},{"field":"SrcRType","role":"register-offset transformation selector"}],"ordering":["Snapshot all explicit and implicit scalar sources before destination or memory effects; duplicate and source/destination aliases observe pre-instruction values.","Preflight both addresses, commit the two relaxed 8-byte operations in address order, publish ordered results if any, then advance TPC."],"standalone_opcode":true,"state_effects":["Form offset = LSL(Modify(SrcR, SrcRType), 3) and add it modulo 2^PTO_XLEN to the SrcL base.","The pair addresses are address and address plus 8; the instruction performs no base writeback.","Snapshot every store-data source before any memory effect or destination publication.","Successful execution advances TPC by 6 bytes; a rejected or faulting attempt does not retire."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-HL-SDP","mnemonic":"HL.SDP","summary":"HL.SDP snapshots its scalar sources, forms its encoded address, and stores two adjacent aligned little-endian 8-byte values.","surface":"scalar"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// DOC-BEGIN: decodereadonly func InstructionContractOperation_HL_SDP() => ScalarOperationbegin return ScalarOperation_HL_SDP;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_HL_SDP() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarStorePair;end;
pure func InstructionContractAGUAction_HL_SDP() => ScalarAGUActionbegin return ScalarAGU_StorePair;end;
pure func InstructionContractAGUAddressKind_HL_SDP() => ScalarAGUAddressKindbegin return ScalarAGU_Register;end;
pure func InstructionContractAGUSizeBytes_HL_SDP() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractAGUOffsetScale_HL_SDP() => integer {0..3}begin return 3;end;
pure func InstructionContractAGUUpdateMode_HL_SDP() => AddressUpdateModebegin return AddressUpdate_None;end;
pure func InstructionContractAGUSignedLoad_HL_SDP() => booleanbegin return FALSE;end;
pure func InstructionContractAGUPrefetchReturnsAddress_HL_SDP() => booleanbegin return FALSE;end;// DOC-END: operation
HL.SDP is a standalone 48-bit AGU instruction that forms a register-offset address and stores two adjacent aligned little-endian 8-byte values.
HL.SDP transforms SrcR according to SrcRType, multiplies the result by 8, and adds it modulo 2^PTO_XLEN to the snapshotted SrcL base.
The instruction preflights two adjacent 8-byte addresses, then stores the two snapshotted data values in increasing-address order.
This form performs no base-register writeback; its effective address is used only by the selected memory operation.
SrcL supplies the base; SrcR supplies the offset; SrcRType supplies the offset transformation. Every encoded Reg5 source among SrcD, SrcD1, SrcL, SrcR uses codes 0..23 for GPRs, 24..27 for T#1..T#4, and 28..31 for U#1..U#4 without consumption.SrcD supplies first store value; SrcD1 supplies second store value.SrcRType values 0..3 are assigned; the selected transformation is applied before the form's fixed scaling.All explicit and implicit scalar sources are snapshotted before memory or destination effects, so aliases observe pre-instruction values.
After both addresses pass preflight, success records two relaxed store events in address order, updates overlapping reservation state only after complete preflight, and advances TPC by 6 bytes.
Each effective address must satisfy 8-byte alignment. Misalignment raises Fault_DataAlignment before translation; a later permission or bounded-memory failure raises Fault_DataPage at the original address.
A fault records no successful memory event, performs no partial memory, destination, or writeback effect, preserves pending writeback, and leaves the faulting TPC available for full reissue.
A fixed-bit mismatch, reserved field value, or unavailable selected T/U source raises Fault_IllegalInstruction before instruction effects.
This example demonstrates the address calculation only; exact behavior remains in the current ASL and instruction contract.
With base 0x100, unchanged offset source 2, and the fixed shift 3, the offset is 16 and base plus offset is 0x110. The memory access uses 0x110. The second 8-byte store uses 0x118 after both addresses pass preflight.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
No NDF clause is attached to this unit.
12 matching entries
PTO-AVS-AGU-HL-SDP-ALIAS-001tests/asl/scalar/agu/HL.SDP/scalar-exec-hl-sdp-registers-001.asl8bcc3a9dae41ee2e3aae1d1991602e9471558a7f141e69fee6b83b013733aa21PTO-AVS-AGU-HL-SDP-BOUND-001tests/asl/scalar/agu/HL.SDP/scalar-bound-hl-sdp-address-001.asldb321fcf4686b0748e6caa61c2a23414720ad09871d5fc5aa31b6875023f8865PTO-AVS-AGU-HL-SDP-EXEC-001tests/asl/scalar/agu/HL.SDP/scalar-exec-hl-sdp-direct-001.asl91242500e4820f48ed8d60e0dc91fa948f0a85c6f7a9e1973aa196bdcb274c08PTO-AVS-AGU-HL-SDP-FAULT-001tests/asl/scalar/agu/HL.SDP/scalar-fault-hl-sdp-precise-001.aslcebfc8aa9ce42dc5e15f3f5f5666e1e32cfcd89ffd59b0b9ee4a2fd1b350da95PTO-AVS-SCALAR-HL-SDP-DECODE-001tests/asl/scalar/agu/HL.SDP/scalar-decode-hl-sdp-canonical-001.aslf83031fd2ec7b31e5ad3e7d7445efa9c84e3c6ceb895b97086b985edd2252d0ePTO-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-0029…
ADR-0029docs/status/decisions/0029-scalar-agu-totality-and-restart.md778e7bc53a5ae6487c051d66d0f84b6d697d6302628716bf5c745166ce982eefLoading ADR-0059…
ADR-0059docs/status/decisions/0059-mnemonic-field-encoding-closure.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196{
"classification": [
"agu"
],
"documentation": "docs/scalar/agu/HL.SDP.md",
"id": "PTO-SCALAR-HL-SDP",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "HL.SDP",
"ndf_clause": "PTO-INST-SCALAR-HL-SDP"
},
"mnemonic": "HL.SDP",
"readiness_subjects": [
"ADR-0029",
"ADR-0059"
],
"semantic_tests": [
"PTO-AVS-AGU-HL-SDP-ALIAS-001",
"PTO-AVS-AGU-HL-SDP-BOUND-001",
"PTO-AVS-AGU-HL-SDP-EXEC-001",
"PTO-AVS-AGU-HL-SDP-FAULT-001"
],
"source": "asl/scalar/agu/HL.SDP.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-AGU-HL-SDP-ALIAS-001",
"PTO-AVS-AGU-HL-SDP-BOUND-001",
"PTO-AVS-AGU-HL-SDP-EXEC-001",
"PTO-AVS-AGU-HL-SDP-FAULT-001",
"PTO-AVS-SCALAR-HL-SDP-DECODE-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd868122122f523786e4d69ada3501b300e987229bcafe33b22fa9ba4f37b8a3d76a9b44a06b1303bb76699ede258c5805850892175bf74f22bb17ef5611b8b200c399dasl/scalar/agu/HL.SDP.aslasl/scalar/agu/HL.SDP.asl