Operands and parameters
RegDst- Reg5 destination or discard
SrcL- Reg5 source; low 32 bits used
shamt- five-bit shift amount
SRLIW performs a word logical right shift and sign-extends the result.
PTO-SCALAR-SRLIWsrliw SrcL, shamt, ->{t, u, Rd}| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
RegDst | 5 | encoding-defined | Reg5 destination or discard | Encoded zero discards the result. |
SrcL | 5 | encoding-defined | Reg5 source; low 32 bits used | Encoded zero reads the architectural zero GPR. |
shamt | 5 | encoding-defined | five-bit shift amount | Encoded zero performs no shift. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 31:25 | 7'b0000000 |
| shamt | 24:20 | variable |
| SrcL | 19:15 | variable |
| Constant | 14:12 | 3'b101 |
| RegDst | 11:7 | variable |
| Constant | 6:0 | 7'b0110101 |
{
"reg": [
{
"bits": 7,
"name": "7'b0110101"
},
{
"bits": 5,
"name": "RegDst"
},
{
"bits": 3,
"name": "3'b101"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "shamt"
},
{
"bits": 7,
"name": "7'b0000000"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}srliw SrcL, shamt, ->{t, u, Rd}
RegDstSrcLshamtThis Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_SRLIW() => ScalarOperationbegin return ScalarOperation_SRLIW;end;readonly func InstructionContractHandler_SRLIW() => ScalarSemanticHandlerbegin return ScalarHandler_ScalarBinaryW;end;
pure func InstructionContractShiftWidth_SRLIW() => integer {1..64}begin return 5;end;
pure func InstructionContractIsWordOperation_SRLIW() => booleanbegin return TRUE;end;// PTO-INSTRUCTION: {"assembly":["srliw SrcL, shamt, ->{t, u, Rd}"],"block":[],"catalog_indices":[431],"catalog_records":[{"asm":"srliw SrcL, shamt, ->{t, u, Rd}","constraints":[],"encoding":[{"index":0,"mask":"0xfe00707f","match":"0x00005035","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":"shamt","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5}],"form_id":"srliw_32_ef4aa650f46e","length_bits":32,"mnemonic":"SRLIW","semantic_family":"ALU","semantic_group":"ALU","semantic_handler":"ScalarBinaryW","semantic_summary":"SRLIW logically shifts SrcL[31:0] right by the encoded five-bit amount, sign-extends the word result to XLEN, and publishes it.","status":"accepted"}],"classification":["alu"],"contract":{"block_composition":["none"],"canonical_assembly":["srliw SrcL, shamt, ->{t, u, Rd}"],"defaults":["SrcL, shamt, and RegDst are required fields; no field can be omitted.","shamt is a 5-bit shift amount from 0 through 31. Encoded zero performs an identity word shift."],"encoding_class":"standalone-encoded","examples":["srliw a0, 1, ->a0","srliw u#1, 31, ->t","srliw zero, 0, ->zero"],"exceptions":["SRLIW raises no arithmetic exception; zero bits enter from the left and the final word is sign-extended to XLEN.","Bits 31:25 are fixed zero. A mismatch or unavailable T/U source raises Fault_IllegalInstruction before the destination effect and TPC advance."],"field_contracts":{},"field_zero_meanings":{"RegDst":"Encoded zero discards the result.","SrcL":"Encoded zero reads the architectural zero GPR.","shamt":"Encoded zero performs no shift."},"legality":["SrcL codes 0..23 select absolute GPRs, 24..27 select T#1..T#4, and 28..31 select U#1..U#4 without consumption.","RegDst codes 0 and 24..29 discard, code 30 pushes U, code 31 pushes T, and codes 1..23 write GPRs.","Every 5-bit shift amount from 0 through 31 is legal; source bits above bit 31 do not participate."],"memory_effects":["none"],"operands":[{"field":"RegDst","role":"Reg5 destination or discard"},{"field":"SrcL","role":"Reg5 source; low 32 bits used"},{"field":"shamt","role":"five-bit shift amount"}],"ordering":["Snapshot SrcL before the destination effect so aliases read the pre-instruction value.","Publish the sign-extended word result, then advance TPC by four bytes."],"standalone_opcode":true,"state_effects":["Compute the 32-bit logical right shift LSR(SrcL[31:0], shamt), then publish the 32-bit result sign-extended to XLEN.","Destination codes 0 and 24..29 discard, code 30 pushes U, code 31 pushes T, and codes 1..23 write GPRs; source queues are non-consuming.","No memory, reservation, descriptor, flag, block, privilege, or control-flow state changes except the successful TPC advance."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-SRLIW","mnemonic":"SRLIW","summary":"SRLIW performs a word logical right shift and sign-extends the result.","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-SRLIW-ADR-CONTRACT-001// ndf: kind=contract level=L1 layer=scalar status=accepted// Decisions: ADR-0026.// SRLIW MUST snapshot its scalar sources, apply its mnemonic-owned// width, immediate, modifier, and wrapping rule, then publish through the// assigned destination or commit effect in alias-safe order.// NDF-END: PTO-SRLIW-ADR-CONTRACT-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_SRLIW() => ScalarOperationbegin return ScalarOperation_SRLIW;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_SRLIW() => ScalarSemanticHandlerbegin return ScalarHandler_ScalarBinaryW;end;
pure func InstructionContractShiftWidth_SRLIW() => integer {1..64}begin return 5;end;
pure func InstructionContractIsWordOperation_SRLIW() => booleanbegin return TRUE;end;// DOC-END: operation
SRLIW is a 32-bit scalar ALU instruction. It logically shifts the source right under the low 32-bit word, followed by sign-extension to XLEN shift rules; its current instruction contract defines the result publication path and any additional state effect.
Execution snapshots the encoded inputs, then logically shifts the source right under the low 32-bit word, followed by sign-extension to XLEN shift rules, and only afterward performs the destination effects.
RegDst field selects the Reg5 result target or discards the result.SrcL field selects a Reg5 scalar input whose low 32 bits are used.shamt field encodes the five-bit shift amount.These roles come from the current instruction contract. T/U sources are read and snapshotted without being removed from their queues; exact encoded-zero meanings appear in the generated defaults below.
Every scalar source is snapshotted before the destination effect. The completed value is then routed through RegDst using the current scalar destination map.
This ALU operation has no memory effect. After its successful architectural effects, TPC advances by 4 bytes.
The operation does not introduce a hidden scalar publication target or an implicit memory access. Architectural changes remain limited to the state effects enumerated by the current contract.
All 5 encoded shift bits are assigned, giving amounts 0..31; fixed-width shifting is total and raises no arithmetic exception.
The generated legality table is authoritative for assigned field values, reserved encodings, and destination discard codes. Decode and source availability are checked before architectural effects.
This example illustrates the current ASL owner and does not replace the normative operation.
For a small SRLIW example, source 16 shifted logically right by 2 produces 4.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
Decisions: ADR-0026. SRLIW MUST snapshot its scalar sources, apply its mnemonic-owned width, immediate, modifier, and wrapping rule, then publish through the assigned destination or commit effect in alias-safe order.
PTO-SRLIW-ADR-CONTRACT-001asl/scalar/alu/SRLIW.asl6a1b94639dabdce8c23bad50a87ec2810492726b951658f92279a7be9114e72a67920acc372278391271e730e05b3d8626c2601f91de9ba1f5740c7337d729bb11 matching entries
PTO-AVS-SCALAR-SRLIW-DECODE-001tests/asl/scalar/alu/SRLIW/scalar-decode-srliw-canonical-001.aslb80f05caace1b0ca201f5e48c578364f1f35a0d013cd893ada2fe2549ade5147PTO-AVS-SCALAR-SRLIW-MAXIMUM-001tests/asl/scalar/alu/SRLIW/scalar-exec-srliw-maximum-001.asl032e1fddb913e9d142cd525410f2a12c186d2418366361e78ae1dfd084b32703PTO-AVS-SCALAR-SRLIW-ZERO-001tests/asl/scalar/alu/SRLIW/scalar-bound-srliw-zero-001.asledd0dc53d5f76ac6c5757be609eee02f816fd55c83d10c3f1d9a91a21093b3d8PTO-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-0026…
ADR-0026docs/status/decisions/0026-scalar-alu-totality-and-alias-order.md41d126f224dddc371832120f1b02eab64e426872fdcbea452bad77c90bdec349Loading 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": [
"alu"
],
"documentation": "docs/scalar/alu/SRLIW.md",
"id": "PTO-SCALAR-SRLIW",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "SRLIW",
"ndf_clause": "PTO-INST-SCALAR-SRLIW"
},
"mnemonic": "SRLIW",
"readiness_subjects": [
"ADR-0026",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-SCALAR-SRLIW-MAXIMUM-001",
"PTO-AVS-SCALAR-SRLIW-ZERO-001"
],
"source": "asl/scalar/alu/SRLIW.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-SRLIW-DECODE-001",
"PTO-AVS-SCALAR-SRLIW-MAXIMUM-001",
"PTO-AVS-SCALAR-SRLIW-ZERO-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd868126a1b94639dabdce8c23bad50a87ec2810492726b951658f92279a7be9114e72ae6a98c13bee7e07dd9017d9bb93340abb480c90fef37fb01743f4afb0e2e0ffeasl/scalar/alu/SRLIW.aslasl/scalar/alu/SRLIW.aslasl/scalar/alu/SRLIW.asl