Operands and parameters
RegDst0- ordered low-result Reg5 destination or discard
RegDst1- ordered high-result Reg5 destination or discard
SrcL- upper Reg5 source
SrcR- lower Reg5 source
shamt- unsigned seven-bit logical-right shift amount
HL.CCAT logically right-shifts {SrcL, SrcR}, writes the low 64-bit result to Dst0, then writes the high result to Dst1.
PTO-SCALAR-HL-CCAThl.ccat SrcL, SrcR, shamt, ->Dst0, Dst1| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
RegDst0 | 5 | encoding-defined | ordered low-result Reg5 destination or discard | Encoded zero discards the low result. |
RegDst1 | 5 | encoding-defined | ordered high-result Reg5 destination or discard | Encoded zero discards the high result. |
SrcL | 5 | encoding-defined | upper Reg5 source | Encoded zero reads architectural GPR zero. |
SrcR | 5 | encoding-defined | lower Reg5 source | Encoded zero reads architectural GPR zero. |
shamt | 7 | encoding-defined | unsigned seven-bit logical-right shift amount | Encoded zero performs no shift. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| shamt | 47:41 | variable |
| SrcR | 40:36 | variable |
| SrcL | 35:31 | variable |
| Constant | 30:28 | 3'b001 |
| RegDst0 | 27:23 | variable |
| Constant | 22:16 | 7'b1011101 |
| RegDst1 | 15:11 | variable |
| Constant | 10:0 | 11'b00000001110 |
{
"reg": [
{
"bits": 11,
"name": "11'b00000001110"
},
{
"bits": 5,
"name": "RegDst1"
},
{
"bits": 7,
"name": "7'b1011101"
},
{
"bits": 5,
"name": "RegDst0"
},
{
"bits": 3,
"name": "3'b001"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "SrcR"
},
{
"bits": 7,
"name": "shamt"
}
],
"config": {
"bits": 48,
"fontsize": 13,
"hspace": 900,
"lanes": 2,
"offset": 0
}
}hl.ccat SrcL, SrcR, shamt, ->Dst0, Dst1
RegDst0RegDst1SrcLSrcRshamtThis Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_HL_CCAT() => ScalarOperationbegin return ScalarOperation_HL_CCAT;end;readonly func InstructionContractHandler_HL_CCAT() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteConcatenatePair;end;
pure func InstructionContractLowResult_HL_CCAT( left: Word, right: Word, shift_amount: integer {0..127}) => Wordbegin if shift_amount == 0 then return right; elsif shift_amount < 64 then return LSR(right, shift_amount) OR LSL(left, 64 - shift_amount); else return LSR(left, shift_amount - 64); end;end;
pure func InstructionContractHighResult_HL_CCAT( left: Word, right: Word, shift_amount: integer {0..127}) => Wordbegin if shift_amount == 0 then return left; elsif shift_amount < 64 then return LSR(left, shift_amount); else return Zeros{PTO_XLEN}; end;end;// PTO-INSTRUCTION: {"assembly":["hl.ccat SrcL, SrcR, shamt, ->Dst0, Dst1"],"block":[],"catalog_indices":[127],"catalog_records":[{"asm":"hl.ccat SrcL, SrcR, shamt, ->Dst0, Dst1","constraints":[],"encoding":[{"index":0,"mask":"0x0000707f07ff","match":"0x0000105d000e","width_bits":48}],"encoding_kind":"HL48","fields":[{"name":"RegDst0","pieces":[{"instruction_lsb":23,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"RegDst1","pieces":[{"instruction_lsb":11,"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":"shamt","pieces":[{"instruction_lsb":41,"value_lsb":0,"width":7}],"signedness":"encoding-defined","width":7}],"form_id":"hl_ccat_48_a1200d8bf5ac","length_bits":48,"mnemonic":"HL.CCAT","semantic_family":"ALU","semantic_group":"ALU","semantic_handler":"ExecuteConcatenatePair","semantic_summary":"HL.CCAT logically right-shifts {SrcL, SrcR}, writes the low 64-bit result to Dst0, then writes the high result to Dst1.","status":"accepted"}],"classification":["alu"],"contract":{"block_composition":["none"],"canonical_assembly":["hl.ccat SrcL, SrcR, shamt, ->Dst0, Dst1"],"defaults":["SrcL, SrcR, shamt, RegDst0, and RegDst1 are required encoded fields; no field can be omitted.","Encoded shamt zero performs no shift."],"encoding_class":"standalone-encoded","examples":["hl.ccat a0, a1, 0, ->a2, a3","hl.ccat t#1, u#1, 64, ->zero, a0","hl.ccat a0, a1, 127, ->t, t"],"exceptions":["The concatenation shift is total for every shamt and raises no arithmetic exception.","A fixed-bit mismatch or unavailable selected T/U source raises Fault_IllegalInstruction before either destination effect and before TPC advances."],"field_contracts":{},"field_zero_meanings":{"RegDst0":"Encoded zero discards the low result.","RegDst1":"Encoded zero discards the high result.","SrcL":"Encoded zero reads architectural GPR zero.","SrcR":"Encoded zero reads architectural GPR zero.","shamt":"Encoded zero performs no shift."},"legality":["SrcL and SrcR independently use the complete Reg5 source map: GPR0..GPR23, T#1..T#4, and U#1..U#4.","RegDst0 and RegDst1 independently use the common destination map: GPR writes, discard codes, U push, or T push.","shamt 0..127 is fully assigned and zero-filling."],"memory_effects":["none"],"operands":[{"field":"RegDst0","role":"ordered low-result Reg5 destination or discard"},{"field":"RegDst1","role":"ordered high-result Reg5 destination or discard"},{"field":"SrcL","role":"upper Reg5 source"},{"field":"SrcR","role":"lower Reg5 source"},{"field":"shamt","role":"unsigned seven-bit logical-right shift amount"}],"ordering":["Snapshot both sources before either destination effect; relative source reads do not consume queue entries.","Publish Dst0 first and Dst1 second. Equal GPR destinations retain Dst1; equal queue destinations enqueue Dst0 before Dst1.","After both destination effects, advance TPC by six bytes."],"standalone_opcode":true,"state_effects":["Form {SrcL, SrcR}, logically shift the 128-bit value right by shamt, publish bits 63:0 to Dst0, then publish bits 127:64 to Dst1.","Apply the complete Reg5 destination map independently in Dst0 then Dst1 order; discard destinations have no effect.","No memory, reservation, descriptor, Tile, block, privilege, numeric-status, branch-target, or other control state changes. Successful execution advances TPC by six bytes."]},"depends_on":["PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING"],"id":"PTO-SCALAR-HL-CCAT","mnemonic":"HL.CCAT","summary":"HL.CCAT logically right-shifts {SrcL, SrcR}, writes the low 64-bit result to Dst0, then writes the high result to Dst1.","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-HL-CCAT-CONTRACT-001// ndf: kind=contract level=L1 layer=scalar status=accepted// HL.CCAT MUST snapshot SrcL and SrcR, form {SrcL, SrcR}, and// logically shift the concatenation right by the complete seven-bit shamt.// Dst0 MUST receive the low result before Dst1 receives the high result.// All shifts 0 through 127 MUST be assigned and zero-filling.// Both sources MUST use the complete non-consuming Reg5 source map and// both destinations MUST use the common ordered Reg5 destination map.// Successful execution MUST advance TPC by six bytes and preserve all// memory, Tile, block, reservation, privilege, numeric-status, and fault state.// NDF-END: PTO-HL-CCAT-CONTRACT-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_HL_CCAT() => ScalarOperationbegin return ScalarOperation_HL_CCAT;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_HL_CCAT() => ScalarSemanticHandlerbegin return ScalarHandler_ExecuteConcatenatePair;end;
pure func InstructionContractLowResult_HL_CCAT( left: Word, right: Word, shift_amount: integer {0..127}) => Wordbegin if shift_amount == 0 then return right; elsif shift_amount < 64 then return LSR(right, shift_amount) OR LSL(left, 64 - shift_amount); else return LSR(left, shift_amount - 64); end;end;
pure func InstructionContractHighResult_HL_CCAT( left: Word, right: Word, shift_amount: integer {0..127}) => Wordbegin if shift_amount == 0 then return left; elsif shift_amount < 64 then return LSR(left, shift_amount); else return Zeros{PTO_XLEN}; end;end;// DOC-END: operation
HL.CCAT is a 48-bit scalar ALU instruction. It concatenates the two source portions, applies the encoded logical right shift, and separates the result into low and high XLEN destinations; its current instruction contract defines the result publication path and any additional state effect.
Execution snapshots the encoded inputs, then concatenates the two source portions, applies the encoded logical right shift, and separates the result into low and high XLEN destinations, and only afterward performs the destination effects.
RegDst0 field selects the first, low-result Reg5 target or discards that result.RegDst1 field selects the second, high-result Reg5 target or discards that result.SrcL field selects the upper concatenation source through Reg5.SrcR field selects the lower concatenation source through Reg5.shamt field encodes the unsigned seven-bit logical-right 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.
All results are computed before publication. The destinations are then updated in encoded order (RegDst0, RegDst1), which also defines the order of duplicate-register writes or queue pushes.
This ALU operation has no memory effect. After its successful architectural effects, TPC advances by 6 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.
Every encoded concatenation shift is defined and zero-filling. A fixed-bit mismatch or unavailable selected T/U source faults before either destination effect.
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 HL.CCAT example, with shift 0, upper source 1, and lower source 2, the ordered low and high results are 2 then 1.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
HL.CCAT MUST snapshot SrcL and SrcR, form {SrcL, SrcR}, and logically shift the concatenation right by the complete seven-bit shamt. Dst0 MUST receive the low result before Dst1 receives the high result. All shifts 0 through 127 MUST be assigned and zero-filling. Both sources MUST use the complete non-consuming Reg5 source map and both destinations MUST use the common ordered Reg5 destination map. Successful execution MUST advance TPC by six bytes and preserve all memory, Tile, block, reservation, privilege, numeric-status, and fault state.
PTO-HL-CCAT-CONTRACT-001asl/scalar/alu/HL.CCAT.asl5e6214b0d513a452b83d98926f1b832006b4eadaad3fbb16e58e16d0542db0bc18dbfbdfb72ba2798180de75b6ca1696306ba304b7b5e4ac94f7a30024618c1b12 matching entries
PTO-AVS-SCALAR-HL-CCAT-DECODE-001tests/asl/scalar/alu/HL.CCAT/scalar-decode-hl-ccat-canonical-001.aslf589ea11b73ec7d1e78c53197c51f39f6fa18f24fb56e15fa16b4c463175b65fPTO-AVS-SCALAR-HL-CCAT-OVERLAP-001tests/asl/scalar/alu/HL.CCAT/scalar-bound-hl-ccat-overlap-001.asl33e920b4a961be37cb5639e29284e38f5ee0fc28c8b174b2d626a2571e4b50b4PTO-AVS-SCALAR-HL-CCAT-READINESS-001tests/asl/scalar/alu/HL.CCAT/scalar-fault-hl-ccat-readiness-001.asld6693c8f31160b4db4ee3d12385d390670e328c81de58b768a7eb5dca9774ba4PTO-AVS-SCALAR-HL-CCAT-SHIFT-001tests/asl/scalar/alu/HL.CCAT/scalar-exec-hl-ccat-shift-001.asl016ac2530672ec2dbed6636a58396f49d1a154e2a25598ae76f7de70a4c57961PTO-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/HL.CCAT.md",
"id": "PTO-SCALAR-HL-CCAT",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "HL.CCAT",
"ndf_clause": "PTO-INST-SCALAR-HL-CCAT"
},
"mnemonic": "HL.CCAT",
"readiness_subjects": [
"ADR-0026",
"ADR-0059",
"ADR-0084"
],
"semantic_tests": [
"PTO-AVS-SCALAR-HL-CCAT-OVERLAP-001",
"PTO-AVS-SCALAR-HL-CCAT-READINESS-001",
"PTO-AVS-SCALAR-HL-CCAT-SHIFT-001"
],
"source": "asl/scalar/alu/HL.CCAT.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-HL-CCAT-DECODE-001",
"PTO-AVS-SCALAR-HL-CCAT-OVERLAP-001",
"PTO-AVS-SCALAR-HL-CCAT-READINESS-001",
"PTO-AVS-SCALAR-HL-CCAT-SHIFT-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd868125e6214b0d513a452b83d98926f1b832006b4eadaad3fbb16e58e16d0542db0bc2bc740395393731ee2f0be6567e066092b872fa8018d5400a67f6b8201ad7101asl/scalar/alu/HL.CCAT.aslasl/scalar/alu/HL.CCAT.aslasl/scalar/alu/HL.CCAT.asl