{
"block_composition": [
"none"
],
"canonical_assembly": [
"hl.ccatw 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.ccatw a0, a1, 0, ->a2, a3",
"hl.ccatw t#1, u#1, 64, ->zero, a0",
"hl.ccatw 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; values 64..127 produce two zeros."
],
"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 low-word Reg5 source"
},
{
"field": "SrcR",
"role": "lower low-word 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": [
"Pack SrcL[31:0] above SrcR[31:0]. For shamt 0..63, logically shift the 64-bit value right, sign-extend result bits 31:0 to Dst0 and bits 63:32 to Dst1; for shamt 64..127 both results are zero.",
"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."
]
}