Operands and parameters
uimm5- unsigned five-bit logical left-shift amount
C.SLLI snapshots the pre-instruction T#1 value, logically shifts it left by uimm5, and pushes the XLEN result to T.
PTO-SCALAR-C-SLLIc.slli t#1, uimm, ->t| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
uimm5 | 5 | unsigned | unsigned five-bit logical left-shift amount | Encoded zero republishes the unchanged pre-instruction T#1 value. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| Constant | 15:11 | 5'b00010 |
| uimm5 | 10:6 | variable |
| Constant | 5:0 | 6'b101100 |
{
"reg": [
{
"bits": 6,
"name": "6'b101100"
},
{
"bits": 5,
"name": "uimm5"
},
{
"bits": 5,
"name": "5'b00010"
}
],
"config": {
"bits": 16,
"fontsize": 13,
"hspace": 640,
"lanes": 1,
"offset": 0
}
}c.slli t#1, uimm, ->t
uimm5This Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_C_SLLI() => ScalarOperationbegin return ScalarOperation_C_SLLI;end;readonly func InstructionContractHandler_C_SLLI() => ScalarSemanticHandlerbegin return ScalarHandler_ScalarBinary;end;
pure func InstructionContractResult_C_SLLI( old_t1: Word, encoded_amount: bits(5)) => Wordbegin return ScalarBinary( ScalarBinary_SLL, old_t1, ZeroExtend{PTO_XLEN}(encoded_amount));end;// PTO-INSTRUCTION: {"assembly":["c.slli t#1, uimm, ->t"],"block":[],"catalog_indices":[42],"catalog_records":[{"asm":"c.slli t#1, uimm, ->t","constraints":[],"encoding":[{"index":0,"mask":"0xf83f","match":"0x102c","width_bits":16}],"encoding_kind":"C16","fields":[{"name":"uimm5","pieces":[{"instruction_lsb":6,"value_lsb":0,"width":5}],"signedness":"unsigned","width":5}],"form_id":"c_slli_16_958a14dc4058","length_bits":16,"mnemonic":"C.SLLI","semantic_family":"ALU","semantic_group":"ALU","semantic_handler":"ScalarBinary","semantic_summary":"C.SLLI snapshots the pre-instruction T#1 value, logically shifts it left by uimm5, and pushes the XLEN result to T.","status":"accepted"}],"classification":["alu"],"contract":{"block_composition":["none"],"canonical_assembly":["c.slli t#1, uimm, ->t"],"defaults":["T#1 is the fixed source and T is the fixed destination; neither is encoded or omittable in canonical assembly.","uimm5 is required and directly encodes a shift amount from 0 through 31."],"encoding_class":"standalone-encoded","examples":["c.slli t#1, 31, ->t"],"exceptions":["The logical shift is total and raises no arithmetic exception.","If T#1 is unavailable, Fault_IllegalInstruction is raised before the T push, before TPC advances, and before any other effect."],"field_contracts":{},"field_zero_meanings":{"uimm5":"Encoded zero republishes the unchanged pre-instruction T#1 value."},"legality":["Every uimm5 value 0..31 is assigned. Fixed encoding bits must match the canonical form.","The fixed T#1 source must be initialized before execution."],"memory_effects":["none"],"operands":[{"field":"uimm5","role":"unsigned five-bit logical left-shift amount"}],"ordering":["Snapshot old T#1 before the destination push, so the instruction cannot read its own result.","Push the shifted result as the newest T entry, then advance TPC by two bytes."],"standalone_opcode":true,"state_effects":["Logically shift the complete XLEN old T#1 value left by UInt(uimm5); shifted-out bits are discarded and vacated bits are zero-filled.","Push exactly one XLEN result to T. Existing T entries shift toward older indices and the former T#4 is discarded.","No GPR, U queue, memory, reservation, descriptor, numeric-status, block, privilege, predicate, or other control state changes. Successful execution advances TPC by two bytes."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-C-SLLI","mnemonic":"C.SLLI","summary":"C.SLLI snapshots the pre-instruction T#1 value, logically shifts it left by uimm5, and pushes the XLEN result to T.","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_C_SLLI() => ScalarOperationbegin return ScalarOperation_C_SLLI;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_C_SLLI() => ScalarSemanticHandlerbegin return ScalarHandler_ScalarBinary;end;
pure func InstructionContractResult_C_SLLI( old_t1: Word, encoded_amount: bits(5)) => Wordbegin return ScalarBinary( ScalarBinary_SLL, old_t1, ZeroExtend{PTO_XLEN}(encoded_amount));end;// DOC-END: operation
C.SLLI is a 16-bit scalar ALU instruction. It logically shifts the source left under the complete XLEN value 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 left under the complete XLEN value shift rules, and only afterward performs the destination effects.
uimm5 field carries the unsigned five-bit logical-left 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.
Any scalar source is snapshotted before publication, and the completed instruction pushes exactly one result to T.
This ALU operation has no memory effect. After its successful architectural effects, TPC advances by 2 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 6 encoded shift bits are assigned, giving amounts 0..63; 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 C.SLLI example, source 1 shifted left by 3 produces 8.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
No NDF clause is attached to this unit.
10 matching entries
PTO-AVS-SCALAR-C-SLLI-DECODE-001tests/asl/scalar/alu/C.SLLI/scalar-decode-c-slli-canonical-001.asl59c33f9daa776108e7b04576ed5edf7a0edd647f57d6d45818309c7fa6a640fcPTO-AVS-SCALAR-C-SLLI-QUEUE-001tests/asl/scalar/alu/C.SLLI/scalar-exec-c-slli-queue-001.asl4bde785b19ffb22edc07c4097e4c73e309066ba784bcf8e884f828590c1e2527PTO-AVS-SCALAR-C-SLLI-READINESS-001tests/asl/scalar/alu/C.SLLI/scalar-fault-c-slli-readiness-001.asld327a0639e716178607f1570fd07530eab795615c34051956809e785156e6810PTO-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.mdf18d13f735cfaf9f2803c754c5818f4af33d1cc42c489f0d9ce060b07bb3a196{
"classification": [
"alu"
],
"documentation": "docs/scalar/alu/C.SLLI.md",
"id": "PTO-SCALAR-C-SLLI",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "C.SLLI",
"ndf_clause": "PTO-INST-SCALAR-C-SLLI"
},
"mnemonic": "C.SLLI",
"readiness_subjects": [
"ADR-0026",
"ADR-0059"
],
"semantic_tests": [
"PTO-AVS-SCALAR-C-SLLI-QUEUE-001",
"PTO-AVS-SCALAR-C-SLLI-READINESS-001"
],
"source": "asl/scalar/alu/C.SLLI.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-C-SLLI-DECODE-001",
"PTO-AVS-SCALAR-C-SLLI-QUEUE-001",
"PTO-AVS-SCALAR-C-SLLI-READINESS-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd868124d4071f272eae7210a5fa4b97fdb2597c2990f523a7340856b5c0c550a1a2f71af52f75a7f78f9b16a3ea2079f10dd19dff9de92ffcc5ba487b94a70488883d6asl/scalar/alu/C.SLLI.aslasl/scalar/alu/C.SLLI.asl