Operands and parameters
RegDst- Reg5 destination or discard
SrcL- left multiplicand or additive Reg5 source
SrcR- right multiplicand Reg5 source
uimm19- unsigned 19-bit multiplier
HL.MISUB multiplies SrcR by the unsigned 19-bit immediate, subtracts the product from SrcL modulo 2^PTO_XLEN, and publishes the result.
PTO-SCALAR-HL-MISUBhl.misub SrcL, SrcR, uimm, ->{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 | left multiplicand or additive Reg5 source | Encoded zero reads the architectural zero GPR. |
SrcR | 5 | encoding-defined | right multiplicand Reg5 source | Encoded zero reads the architectural zero GPR. |
uimm19 | 19 | unsigned | unsigned 19-bit multiplier | Encoded zero selects multiplier zero. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| uimm19 | 47:41 | variable |
| SrcR | 40:36 | variable |
| SrcL | 35:31 | variable |
| Constant | 30:28 | 3'b001 |
| RegDst | 27:23 | variable |
| Constant | 22:16 | 7'b1001101 |
| uimm19 | 15:4 | variable |
| Constant | 3:0 | 4'b1110 |
{
"reg": [
{
"bits": 4,
"name": "4'b1110"
},
{
"bits": 12,
"name": "uimm19"
},
{
"bits": 7,
"name": "7'b1001101"
},
{
"bits": 5,
"name": "RegDst"
},
{
"bits": 3,
"name": "3'b001"
},
{
"bits": 5,
"name": "SrcL"
},
{
"bits": 5,
"name": "SrcR"
},
{
"bits": 7,
"name": "uimm19"
}
],
"config": {
"bits": 48,
"fontsize": 13,
"hspace": 900,
"lanes": 2,
"offset": 0
}
}hl.misub SrcL, SrcR, uimm, ->{t, u, Rd}
RegDstSrcLSrcRuimm19This Operation comes directly from the instruction owner; the page does not rewrite its behavior.
readonly func InstructionContractOperation_HL_MISUB() => ScalarOperationbegin return ScalarOperation_HL_MISUB;end;readonly func InstructionContractHandler_HL_MISUB() => ScalarSemanticHandlerbegin return ScalarHandler_ScalarMultiplyImmediateAdd;end;pure func InstructionContractResult_HL_MISUB( left: Word, right: Word, immediate: bits(19)) => Wordbegin return ScalarMultiplyImmediateAdd(left, right, immediate, TRUE);end;// PTO-INSTRUCTION: {"assembly":["hl.misub SrcL, SrcR, uimm, ->{t, u, Rd}"],"block":[],"catalog_indices":[223],"catalog_records":[{"asm":"hl.misub SrcL, SrcR, uimm, ->{t, u, Rd}","constraints":[],"encoding":[{"index":0,"mask":"0x0000707f000f","match":"0x0000104d000e","width_bits":48}],"encoding_kind":"HL48","fields":[{"name":"RegDst","pieces":[{"instruction_lsb":23,"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":"uimm19","pieces":[{"instruction_lsb":41,"value_lsb":0,"width":7},{"instruction_lsb":4,"value_lsb":7,"width":12}],"signedness":"unsigned","width":19}],"form_id":"hl_misub_48_e9e4c7b23479","length_bits":48,"mnemonic":"HL.MISUB","semantic_family":"ALU","semantic_group":"ALU","semantic_handler":"ScalarMultiplyImmediateAdd","semantic_summary":"HL.MISUB multiplies SrcR by the unsigned 19-bit immediate, subtracts the product from SrcL modulo 2^PTO_XLEN, and publishes the result.","status":"accepted"}],"classification":["alu"],"contract":{"block_composition":["none"],"canonical_assembly":["hl.misub SrcL, SrcR, uimm, ->{t, u, Rd}"],"defaults":["Every encoded operand and destination field is required; no field can be omitted.","The mnemonic fixes signedness, effective operand width, single-versus-pair result shape, and add-versus-subtract behavior; there is no encoded arithmetic mode.","uimm19 is an unsigned value from 0 through 524287; encoded zero contributes a zero product."],"encoding_class":"standalone-encoded","examples":["hl.misub srcl, srcr, uimm, ->{t, u, rd}"],"exceptions":["Multiplication and accumulation are fixed-width and raise no arithmetic exception; discarded overflow wraps modulo the defined result width.","An unavailable selected T/U source raises Fault_IllegalInstruction before any destination effect and before TPC advances."],"field_contracts":{},"field_zero_meanings":{"SrcL":"Encoded zero reads the architectural zero GPR.","SrcR":"Encoded zero reads the architectural zero GPR.","RegDst":"Encoded zero discards the result.","uimm19":"Encoded zero selects multiplier zero."},"legality":["Every source Reg5 code is assigned: 0..23 select absolute GPRs, 24..27 select T#1..T#4, and 28..31 select U#1..U#4 without consumption.","Each destination independently uses the common map: codes 0 and 24..29 discard, codes 1..23 write GPRs, code 30 pushes U, and code 31 pushes T.","Fixed encoding bits must match the canonical form; every encoded source, destination, and immediate value otherwise has assigned behavior."],"memory_effects":["none"],"operands":[{"field":"RegDst","role":"Reg5 destination or discard"},{"field":"SrcL","role":"left multiplicand or additive Reg5 source"},{"field":"SrcR","role":"right multiplicand Reg5 source"},{"field":"uimm19","role":"unsigned 19-bit multiplier"}],"ordering":["Snapshot every source before any destination effect so duplicate selectors and destination aliases observe pre-instruction values.","Publish the result, then advance TPC by six bytes."],"standalone_opcode":true,"state_effects":["Zero-extend uimm19 to XLEN, multiply it by SrcR, then subtract the product from SrcL modulo 2^PTO_XLEN.","Snapshot every source before the destination effect, publish the XLEN result through the common Reg5 destination map, and do not consume relative sources.","No memory, reservation, descriptor, numeric-status, block, privilege, 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-MISUB","mnemonic":"HL.MISUB","summary":"HL.MISUB multiplies SrcR by the unsigned 19-bit immediate, subtracts the product from SrcL modulo 2^PTO_XLEN, and publishes 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"]}// DOC-BEGIN: decodereadonly func InstructionContractOperation_HL_MISUB() => ScalarOperationbegin return ScalarOperation_HL_MISUB;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_HL_MISUB() => ScalarSemanticHandlerbegin return ScalarHandler_ScalarMultiplyImmediateAdd;end;pure func InstructionContractResult_HL_MISUB( left: Word, right: Word, immediate: bits(19)) => Wordbegin return ScalarMultiplyImmediateAdd(left, right, immediate, TRUE);end;// DOC-END: operation
HL.MISUB is a 48-bit scalar ALU instruction. It multiplies the right source by the unsigned immediate and subtracts the product relative to the left source modulo 2^PTO_XLEN; its current instruction contract defines the result publication path and any additional state effect.
Execution snapshots the encoded inputs, then multiplies the right source by the unsigned immediate and subtracts the product relative to the left source modulo 2^PTO_XLEN, and only afterward performs the destination effects.
RegDst field selects the Reg5 result target or discards the result.SrcL field selects the left multiplicand or additive operand through Reg5.SrcR field selects the right multiplicand through Reg5.uimm19 field carries the unsigned 19-bit multiplier.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 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.
Fixed-width arithmetic follows the operation’s wraparound rule without an arithmetic exception. A fixed-bit mismatch or unavailable selected T/U source raises Fault_IllegalInstruction before publication and before TPC advances.
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.MISUB example, left source 20, right source 3, and uimm19=4 produce 8.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
No NDF clause is attached to this unit.
9 matching entries
PTO-AVS-SCALAR-HL-MISUB-DECODE-001tests/asl/scalar/alu/HL.MISUB/scalar-decode-hl-misub-canonical-001.asl453e79cb5c4cc9ce27acd3a6a877917dcafe522507a83aa6751c42dc4d3eb6eePTO-AVS-SCALAR-HL-MISUB-IMMEDIATE-001tests/asl/scalar/alu/HL.MISUB/scalar-exec-hl-misub-immediate-001.asl491ae986aa1ceea991081e168b2af004bcfe6bf67cf546c4dd76977d20f54854PTO-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/HL.MISUB.md",
"id": "PTO-SCALAR-HL-MISUB",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "HL.MISUB",
"ndf_clause": "PTO-INST-SCALAR-HL-MISUB"
},
"mnemonic": "HL.MISUB",
"readiness_subjects": [
"ADR-0026",
"ADR-0059"
],
"semantic_tests": [
"PTO-AVS-SCALAR-HL-MISUB-IMMEDIATE-001"
],
"source": "asl/scalar/alu/HL.MISUB.asl",
"surface": "scalar",
"tests": [
"PTO-AVS-SCALAR-HL-MISUB-DECODE-001",
"PTO-AVS-SCALAR-HL-MISUB-IMMEDIATE-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd86812b016cea9acb56c5828fe215d15442b767bdef2a7197c275ce91c2ec359313fe3301cbe0e9127193cc7ad24b1fa7b144d06dc224fcd2d7c0f6d5afb9ef7e3d4cdasl/scalar/alu/HL.MISUB.aslasl/scalar/alu/HL.MISUB.asl