Operands and parameters
RegDst- Reg5 loaded-value destination or discard
SrcL- Reg5 address-base source
simm12- signed address displacement
LDI snapshots its scalar sources, forms its encoded address, and loads one aligned little-endian 8-byte value.
PTO-SCALAR-LDIldi [SrcL, simm], ->{t, u, Rd}| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
RegDst | 5 | encoding-defined | Reg5 loaded-value destination or discard | Encoded zero discards this result without suppressing the instruction's other effects. |
SrcL | 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:20 | variable |
| SrcL | 19:15 | variable |
| Constant | 14:12 | 3'b011 |
| RegDst | 11:7 | variable |
| Constant | 6:0 | 7'b0011001 |
{
"reg": [
{
"bits": 7,
"name": "7'b0011001"
},
{
"bits": 5,
"name": "RegDst"
},
{
"bits": 3,
"name": "3'b011"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 12,
"name": "simm12"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}ldi [SrcL, simm], ->{t, u, Rd}
RegDstSrcLsimm12This Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_LDI() => ScalarOperationbegin return ScalarOperation_LDI;end;readonly func InstructionContractHandler_LDI() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarLoad;end;
pure func InstructionContractAGUAction_LDI() => ScalarAGUActionbegin return ScalarAGU_Load;end;
pure func InstructionContractAGUAddressKind_LDI() => ScalarAGUAddressKindbegin return ScalarAGU_Immediate;end;
pure func InstructionContractAGUSizeBytes_LDI() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractAGUOffsetScale_LDI() => integer {0..3}begin return 3;end;
pure func InstructionContractAGUUpdateMode_LDI() => AddressUpdateModebegin return AddressUpdate_None;end;
pure func InstructionContractAGUSignedLoad_LDI() => booleanbegin return FALSE;end;
pure func InstructionContractAGUPrefetchReturnsAddress_LDI() => booleanbegin return FALSE;end;// PTO-INSTRUCTION: {"assembly":["ldi [SrcL, simm], ->{t, u, Rd}"],"block":[],"catalog_indices":[324],"catalog_records":[{"agu":{"action":"Load","address_kind":"Immediate","offset_scale":3,"prefetch_returns_address":false,"signed_load":false,"size_bytes":8,"update_mode":"None"},"asm":"ldi [SrcL, simm], ->{t, u, Rd}","constraints":[],"encoding":[{"index":0,"mask":"0x0000707f","match":"0x00003019","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"RegDst","pieces":[{"instruction_lsb":7,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"SrcL","pieces":[{"instruction_lsb":15,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"simm12","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":12}],"signedness":"signed","width":12}],"form_id":"ldi_32_d82a643f7a2b","length_bits":32,"mnemonic":"LDI","semantic_family":"AGU","semantic_group":"LDA/BASE_IMM","semantic_handler":"ExecuteScalarLoad","semantic_summary":"LDI snapshots its scalar sources, forms its encoded address, and loads one aligned little-endian 8-byte value.","status":"accepted"}],"classification":["agu"],"contract":{"block_composition":["none"],"canonical_assembly":["ldi [SrcL, simm], ->{t, u, Rd}"],"defaults":["Every displayed operand field is encoded explicitly; encoded zero is a value and never denotes omission."],"encoding_class":"standalone-encoded","examples":["ldi [SrcL, simm], ->{t, u, Rd}"],"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":{"RegDst":"Encoded zero discards this result without suppressing the instruction's other effects.","SrcL":"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.","Every Reg5 destination is assigned: codes 1..23 write GPRs, code 30 pushes U, code 31 pushes T, and codes 0 and 24..29 discard only that result.","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 load and record one relaxed load event.","The load preserves memory and reservation state."],"operands":[{"field":"RegDst","role":"Reg5 loaded-value destination or discard"},{"field":"SrcL","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 SrcL base.","After a successful 8-byte load, preserve the complete 64-bit loaded bit pattern and publish it through the destination.","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-LDI","mnemonic":"LDI","summary":"LDI snapshots its scalar sources, forms its encoded address, and loads 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"]}// DOC-BEGIN: decodereadonly func InstructionContractOperation_LDI() => ScalarOperationbegin return ScalarOperation_LDI;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_LDI() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteScalarLoad;end;
pure func InstructionContractAGUAction_LDI() => ScalarAGUActionbegin return ScalarAGU_Load;end;
pure func InstructionContractAGUAddressKind_LDI() => ScalarAGUAddressKindbegin return ScalarAGU_Immediate;end;
pure func InstructionContractAGUSizeBytes_LDI() => integer {1,2,4,8}begin return 8;end;
pure func InstructionContractAGUOffsetScale_LDI() => integer {0..3}begin return 3;end;
pure func InstructionContractAGUUpdateMode_LDI() => AddressUpdateModebegin return AddressUpdate_None;end;
pure func InstructionContractAGUSignedLoad_LDI() => booleanbegin return FALSE;end;
pure func InstructionContractAGUPrefetchReturnsAddress_LDI() => booleanbegin return FALSE;end;// DOC-END: operation
LDI is a standalone 32-bit AGU instruction that forms a signed-immediate address and loads one aligned little-endian 8-byte value.
LDI sign-extends simm12 from its complete -2048..2047 domain, multiplies it by 8, and adds the displacement modulo 2^PTO_XLEN to the snapshotted SrcL base.
After complete preflight, the instruction performs one little-endian 8-byte load and preserves the complete 64-bit loaded pattern for destination publication.
This form performs no base-register writeback; its effective address is used only by the selected memory operation.
SrcL supplies the base; simm12 supplies the signed displacement. Every encoded Reg5 source among SrcL uses codes 0..23 for GPRs, 24..27 for T#1..T#4, and 28..31 for U#1..U#4 without consumption.RegDst receives the loaded result; destination codes 1..23 write GPRs, 30 pushes U, 31 pushes T, and 0 plus 24..29 discard only that result.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 load event, preserves memory and reservation state, publishes or discards the loaded value, 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 loads 8 bytes from that address.
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-LDI-ALIAS-001tests/asl/scalar/agu/LDI/scalar-exec-ldi-registers-001.aslf980b293e2341d82a48465e942a6247ca4a549afea69cdf291cea5d2ca410973PTO-AVS-AGU-LDI-BOUND-001tests/asl/scalar/agu/LDI/scalar-bound-ldi-address-001.aslc1606d7ef59c72d51d4f7867ae0c6eeac5250c4524f3e592bdf8d758b13adf64PTO-AVS-AGU-LDI-EXEC-001tests/asl/scalar/agu/LDI/scalar-exec-ldi-direct-001.aslf9fa24d18a33c5825ad41cae9e81ea6aff153ac5a9798f25a42234cf08a2921fPTO-AVS-AGU-LDI-FAULT-001tests/asl/scalar/agu/LDI/scalar-fault-ldi-precise-001.aslf3a3702cad6bcb4e9754e25515d6f505d219574d502534520920eebd94e7d07cPTO-AVS-SCALAR-LDI-DECODE-001tests/asl/scalar/agu/LDI/scalar-decode-ldi-canonical-001.asl151fbd166f0e30b191110fb4d40df16127f378545a004b09caa4ba89c6f3231bPTO-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/LDI.md",
"id": "PTO-SCALAR-LDI",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "LDI",
"ndf_clause": "PTO-INST-SCALAR-LDI"
},
"mnemonic": "LDI",
"readiness_subjects": [
"ADR-0029",
"ADR-0059"
],
"semantic_tests": [
"PTO-AVS-AGU-LDI-ALIAS-001",
"PTO-AVS-AGU-LDI-BOUND-001",
"PTO-AVS-AGU-LDI-EXEC-001",
"PTO-AVS-AGU-LDI-FAULT-001"
],
"source": "asl/scalar/agu/LDI.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-AGU-LDI-ALIAS-001",
"PTO-AVS-AGU-LDI-BOUND-001",
"PTO-AVS-AGU-LDI-EXEC-001",
"PTO-AVS-AGU-LDI-FAULT-001",
"PTO-AVS-SCALAR-LDI-DECODE-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd8681247994acdaf8fa13b6b9e67181485acabcb031217c439d7bc29df7d3a628d778545667a966ad77dbfb30da10c244a3adba45732eb6a5d2275f799a06d8a968c4aasl/scalar/agu/LDI.aslasl/scalar/agu/LDI.asl