Operands and parameters
SrcL- Reg5 store-data source
SrcR- Reg5 address-base source
simm12- signed address displacement
SDI snapshots its scalar sources, forms its encoded address, and stores one aligned little-endian 8-byte value.
PTO-SCALAR-SDIsdi SrcL, [SrcR, simm]| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
SrcL | 5 | encoding-defined | Reg5 store-data source | Encoded zero reads the architectural zero GPR. |
SrcR | 5 | encoding-defined | Reg5 address-base source | Encoded zero reads the architectural zero GPR. |
simm12 | 12 | signed | signed address displacement | Encoded zero supplies a zero displacement; it does not denote omission. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| simm12 | 31:25 | variable |
| SrcR | 24:20 | variable |
| SrcL | 19:15 | variable |
| Constant | 14:12 | 3'b011 |
| simm12 | 11:7 | variable |
| Constant | 6:0 | 7'b1011001 |
{
"reg": [
{
"bits": 7,
"name": "7'b1011001"
},
{
"bits": 5,
"name": "simm12"
},
{
"bits": 3,
"name": "3'b011"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "SrcR"
},
{
"bits": 7,
"name": "simm12"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}sdi SrcL, [SrcR, simm]
SrcLSrcRsimm12This Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_SDI() => ScalarOperationbegin return ScalarOperation_SDI;end;readonly func InstructionContractHandler_SDI() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarStore;end;
pure func InstructionContractAGUAction_SDI() => ScalarAGUActionbegin return ScalarAGU_Store;end;
pure func InstructionContractAGUAddressKind_SDI() => ScalarAGUAddressKindbegin return ScalarAGU_Immediate;end;
pure func InstructionContractAGUSizeBytes_SDI() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractAGUOffsetScale_SDI() => integer {0..3}begin return 3;end;
pure func InstructionContractAGUUpdateMode_SDI() => AddressUpdateModebegin return AddressUpdate_None;end;
pure func InstructionContractAGUSignedLoad_SDI() => booleanbegin return FALSE;end;
pure func InstructionContractAGUPrefetchReturnsAddress_SDI() => booleanbegin return FALSE;end;// PTO-INSTRUCTION: {"assembly":["sdi SrcL, [SrcR, simm]"],"block":[],"catalog_indices":[396],"catalog_records":[{"agu":{"action":"Store","address_kind":"Immediate","offset_scale":3,"prefetch_returns_address":false,"signed_load":false,"size_bytes":8,"update_mode":"None"},"asm":"sdi SrcL, [SrcR, simm]","constraints":[],"encoding":[{"index":0,"mask":"0x0000707f","match":"0x00003059","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"SrcL","pieces":[{"instruction_lsb":15,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcR","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"simm12","pieces":[{"instruction_lsb":25,"value_lsb":0,"width":7},{"instruction_lsb":7,"value_lsb":7,"width":5}],"signedness":"signed","width":12}],"form_id":"sdi_32_fab563230a66","length_bits":32,"mnemonic":"SDI","semantic_family":"AGU","semantic_group":"STA/BASE_IMM","semantic_handler":"ExecuteScalarStore","semantic_summary":"SDI snapshots its scalar sources, forms its encoded address, and stores one aligned little-endian 8-byte value.","status":"accepted"}],"classification":["agu"],"contract":{"block_composition":["none"],"canonical_assembly":["sdi SrcL, [SrcR, simm]"],"defaults":["Every displayed operand field is encoded explicitly; encoded zero is a value and never denotes omission."],"encoding_class":"standalone-encoded","examples":["sdi SrcL, [SrcR, simm]"],"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":{"SrcL":"Encoded zero reads the architectural zero GPR.","SrcR":"Encoded zero reads the architectural zero GPR.","simm12":"Encoded zero supplies a zero displacement; it does not denote omission."},"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.","simm12 assigns every signed 12-bit value -2048..2047; the encoded byte displacement is that value multiplied by 8.","Each memory address must be aligned to the 8-byte access size; a 8-byte access is the complete transfer unit."],"memory_effects":["After complete preflight, perform one little-endian 8-byte store and record one relaxed store event.","A successful overlapping store invalidates the overlapping reservation; a nonoverlapping reservation remains valid."],"operands":[{"field":"SrcL","role":"Reg5 store-data source"},{"field":"SrcR","role":"Reg5 address-base source"},{"field":"simm12","role":"signed address displacement"}],"ordering":["Snapshot all explicit and implicit scalar sources before destination or memory effects; duplicate and source/destination aliases observe pre-instruction values.","Complete the relaxed 8-byte memory operation, publish any result or writeback, and then advance TPC."],"standalone_opcode":true,"state_effects":["Sign-extend simm12, multiply it by 8, and add it modulo 2^PTO_XLEN to the SrcR base.","Snapshot every store-data source before any memory effect or destination publication.","Successful execution advances TPC by 4 bytes; a rejected or faulting attempt does not retire."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-SDI","mnemonic":"SDI","summary":"SDI snapshots its scalar sources, forms its encoded address, and stores one aligned little-endian 8-byte value.","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-SDI-ADR-CONTRACT-001// ndf: kind=contract level=L1 layer=scalar status=accepted// Decisions: ADR-0024, ADR-0029.// SDI MUST snapshot scalar address/data sources, apply its mnemonic// width and address-update mode, preflight access before effects, then commit// the store event and any base update at the defined restart boundary.// NDF-END: PTO-SDI-ADR-CONTRACT-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_SDI() => ScalarOperationbegin return ScalarOperation_SDI;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_SDI() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarStore;end;
pure func InstructionContractAGUAction_SDI() => ScalarAGUActionbegin return ScalarAGU_Store;end;
pure func InstructionContractAGUAddressKind_SDI() => ScalarAGUAddressKindbegin return ScalarAGU_Immediate;end;
pure func InstructionContractAGUSizeBytes_SDI() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractAGUOffsetScale_SDI() => integer {0..3}begin return 3;end;
pure func InstructionContractAGUUpdateMode_SDI() => AddressUpdateModebegin return AddressUpdate_None;end;
pure func InstructionContractAGUSignedLoad_SDI() => booleanbegin return FALSE;end;
pure func InstructionContractAGUPrefetchReturnsAddress_SDI() => booleanbegin return FALSE;end;// DOC-END: operation
SDI is a standalone 32-bit AGU instruction that forms a signed-immediate address and stores one aligned little-endian 8-byte value.
SDI sign-extends simm12 from its complete -2048..2047 domain, multiplies it by 8, and adds the displacement modulo 2^PTO_XLEN to the snapshotted SrcR base.
After complete preflight, the instruction performs one little-endian 8-byte store from its snapshotted store-data source.
This form performs no base-register writeback; its effective address is used only by the selected memory operation.
SrcR supplies the base; simm12 supplies the signed displacement. Every encoded Reg5 source among 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.SrcL supplies store data.simm12 assigns every signed value from -2048 through 2047; encoded zero is a zero displacement, not omission.All explicit and implicit scalar sources are snapshotted before memory or destination effects, so aliases observe pre-instruction values.
A successful attempt records one relaxed store event, invalidates an overlapping reservation but preserves a nonoverlapping one, and advances TPC by 4 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 the base set to 0x100 and the signed immediate set to 2, the displacement is 16 and base plus displacement is 0x110. The memory access uses 0x110. If aligned and permitted, the instruction stores 8 bytes at that address.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
Decisions: ADR-0024, ADR-0029. SDI MUST snapshot scalar address/data sources, apply its mnemonic width and address-update mode, preflight access before effects, then commit the store event and any base update at the defined restart boundary.
PTO-SDI-ADR-CONTRACT-001asl/scalar/agu/SDI.asl3a87a1ca60c9b36c72d9d4f7c6a5742baae4a8ff10af1df7b9dfdf3103417e783641b38b697c03eb01026cbff32c0e33b8dfeffc94d38d8d17cdc36e439f22ab13 matching entries
PTO-AVS-AGU-SDI-ALIAS-001tests/asl/scalar/agu/SDI/scalar-exec-sdi-registers-001.asl3da8871ca106b12803fddd20073ae5a3a234971e851bda6f477dc5cd6a7abcc2PTO-AVS-AGU-SDI-BOUND-001tests/asl/scalar/agu/SDI/scalar-bound-sdi-address-001.asl13dfb544dda26b4ea2e00ba2931817b4b30a2821ebd9926abbef850fec4a2bb6PTO-AVS-AGU-SDI-EXEC-001tests/asl/scalar/agu/SDI/scalar-exec-sdi-direct-001.asld3e2ee355b6223265e740cb9e371c5964bfe48d622ec9cd5b754814d2361781ePTO-AVS-AGU-SDI-FAULT-001tests/asl/scalar/agu/SDI/scalar-fault-sdi-precise-001.asl68fef01edf88b681268e169c9688279021750d2208ad5c5ecf2852858fc3913cPTO-AVS-SCALAR-SDI-DECODE-001tests/asl/scalar/agu/SDI/scalar-decode-sdi-canonical-001.asl5f2aac2e59e9d70305464f1147f00460a788b63a6719e7c77588b5d91ad173c8PTO-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.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196Loading ADR-0084…
ADR-0084docs/status/decisions/0084-scalar-system-and-queue-operations.mde068992fa81e2c4ac46e492391a2f784141d68e041bf0b9e0586c37217d1e08c{
"classification": [
"agu"
],
"documentation": "docs/scalar/agu/SDI.md",
"id": "PTO-SCALAR-SDI",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "SDI",
"ndf_clause": "PTO-INST-SCALAR-SDI"
},
"mnemonic": "SDI",
"readiness_subjects": [
"ADR-0029",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-AGU-SDI-ALIAS-001",
"PTO-AVS-AGU-SDI-BOUND-001",
"PTO-AVS-AGU-SDI-EXEC-001",
"PTO-AVS-AGU-SDI-FAULT-001"
],
"source": "asl/scalar/agu/SDI.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-AGU-SDI-ALIAS-001",
"PTO-AVS-AGU-SDI-BOUND-001",
"PTO-AVS-AGU-SDI-EXEC-001",
"PTO-AVS-AGU-SDI-FAULT-001",
"PTO-AVS-SCALAR-SDI-DECODE-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd868123a87a1ca60c9b36c72d9d4f7c6a5742baae4a8ff10af1df7b9dfdf3103417e780ca30c73e09916421e51d3bab6f2c19c45a5a3a80ee74a330a73a70da07cf912asl/scalar/agu/SDI.aslasl/scalar/agu/SDI.aslasl/scalar/agu/SDI.asl