Operands and parameters
INIT- selects INIT versus MIDDLE/LAST form
LAST- marks the final assembler carrier
RegSrc- absolute GPR selector
uimm11- unsigned XLEN addend
ParentSizeCode- raw parent size code
Decodes one destination-range assemble modifier and retains its XLEN-wrapped derived offset in the immediately preceding binder group.
PTO-BLOCK-B-ASSEMBLEB.ASSEMBLE INIT, LAST, RegSrc, uimm11, ParentSizeCode| Field | Bits | Signedness | Architectural role | Encoded zero |
|---|---|---|---|---|
INIT | 1 | encoding-defined | selects INIT versus MIDDLE/LAST form | Zero selects MIDDLE/LAST rather than INIT/INIT_LAST. |
uimm11 | 11 | unsigned | unsigned XLEN addend | Zero is a real zero displacement. |
RegSrc | 5 | encoding-defined | absolute GPR selector | Zero names the architectural zero GPR. |
LAST | 1 | encoding-defined | marks the final assembler carrier | One closes the modifier sequence at the semantic assembler. |
ParentSizeCode | 4 | encoding-defined | raw parent size code | Zero is the MIDDLE/LAST-only no-parent-size encoding. |
Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.
| Decoded item | Bit range | Value |
|---|---|---|
| INIT | 31 | variable |
| uimm11 | 30:20 | variable |
| RegSrc | 19:15 | variable |
| Constant | 14:12 | 3'b001 |
| LAST | 11 | variable |
| ParentSizeCode | 10:7 | variable |
| Constant | 6:0 | 7'b1010011 |
{
"reg": [
{
"bits": 7,
"name": "7'b1010011"
},
{
"bits": 4,
"name": "ParentSizeCode"
},
{
"bits": 1,
"name": "LAST"
},
{
"bits": 3,
"name": "3'b001"
},
{
"bits": 5,
"name": "RegSrc"
},
{
"bits": 11,
"name": "uimm11"
},
{
"bits": 1,
"name": "INIT"
}
],
"config": {
"bits": 32,
"fontsize": 13,
"hspace": 900,
"lanes": 1,
"offset": 0
}
}B.ASSEMBLE INIT, LAST, RegSrc, uimm11, ParentSizeCode
INITLASTRegSrcuimm11ParentSizeCodeDecode and Operation come directly from the instruction owner and remain separated by execution phase.
readonly func InstructionContractMatches_B_ASSEMBLE(operation: CommandOperation) => booleanbegin return operation == CommandOperation_b_assemble_32_122000000002;end;pure func InstructionContractParentSizeCodeIsRawLegal_B_ASSEMBLE(code: integer {0..15}) => booleanbegin return code <= 12;end;
readonly func InstructionContractHandler_B_ASSEMBLE() => CommandSemanticHandlerbegin return CommandHandler_ApplyBundleAssemble;end;// PTO-INSTRUCTION: {"assembly":["B.ASSEMBLE INIT, LAST, RegSrc, uimm11, ParentSizeCode"],"block":[],"catalog_indices":[75],"catalog_records":[{"asm":"B.ASSEMBLE INIT, LAST, RegSrc, uimm11, ParentSizeCode","constraints":[{"field":"INIT","operator":"one-of","values":[0,1]},{"field":"RegSrc","operator":"one-of","values":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23]},{"field":"ParentSizeCode","operator":"one-of","values":[0,1,2,3,4,5,6,7,8,9,10,11,12]}],"encoding":[{"index":0,"mask":"0x0000707f","match":"0x00001053","width_bits":32}],"encoding_kind":"L32","fields":[{"name":"INIT","pieces":[{"instruction_lsb":31,"value_lsb":0,"width":1}],"signedness":"encoding-defined","width":1},{"name":"uimm11","pieces":[{"instruction_lsb":20,"value_lsb":0,"width":11}],"signedness":"unsigned","width":11},{"name":"RegSrc","pieces":[{"instruction_lsb":15,"value_lsb":0,"width":5}],"signedness":"encoding-defined","width":5},{"name":"LAST","pieces":[{"instruction_lsb":11,"value_lsb":0,"width":1}],"signedness":"encoding-defined","width":1},{"name":"ParentSizeCode","pieces":[{"instruction_lsb":7,"value_lsb":0,"width":4}],"signedness":"encoding-defined","width":4}],"form_id":"b_assemble_32_122000000002","length_bits":32,"mnemonic":"B.ASSEMBLE","semantic_family":"CMD","semantic_group":"Bundle Range Modifier","semantic_handler":"ApplyBundleAssemble","semantic_summary":"Decodes one destination-range assemble modifier and retains its XLEN-wrapped derived offset in the immediately preceding binder group.","status":"accepted"}],"classification":["operands"],"contract":{"block_composition":["Immediately follows B.IOT or B.IOS and is contiguous with the associated modifier group."],"canonical_assembly":["B.ASSEMBLE INIT, LAST, RegSrc, uimm11, ParentSizeCode"],"defaults":["uimm11 is unsigned and zero-extended. RegSrc zero names the architectural zero GPR. INIT=0 encodes MIDDLE/LAST; INIT=1 encodes INIT/INIT_LAST."],"encoding_class":"standalone-encoded","examples":["B.IOT T0, mask=1111, ->T1<1>; B.ASSEMBLE 1, 1, a0, 0, 10"],"exceptions":["Reserved funct3/opcode, RegSrc24..31, and ParentSizeCode13..15 raise Fault_IllegalInstruction before GPR reads, carrier updates, or TPC advance.","INIT=1 with ParentSizeCode=0 or INIT=0 with a nonzero ParentSizeCode raises Fault_BundleControl.","Missing, reversed, duplicate, intervening, or role-incompatible groups raise Fault_BundleControl."],"field_contracts":{},"field_zero_meanings":{"INIT":"Zero selects MIDDLE/LAST rather than INIT/INIT_LAST.","LAST":"One closes the modifier sequence at the semantic assembler.","uimm11":"Zero is a real zero displacement.","RegSrc":"Zero names the architectural zero GPR.","ParentSizeCode":"Zero is the MIDDLE/LAST-only no-parent-size encoding."},"legality":["RegSrc accepts only absolute GPR selectors 0..23.","ParentSizeCode raw values 0..12 are decoded; INIT/size combinations select INIT, MIDDLE, LAST, or INIT_LAST and contradictory combinations are BundleControl.","Local and Shared parent sizes 1..12 are accepted.","The modifier is legal only in the contiguous immediately preceding binder group and follows source roles."],"memory_effects":["none"],"operands":[{"field":"INIT","role":"selects INIT versus MIDDLE/LAST form"},{"field":"LAST","role":"marks the final assembler carrier"},{"field":"RegSrc","role":"absolute GPR selector"},{"field":"uimm11","role":"unsigned XLEN addend"},{"field":"ParentSizeCode","role":"raw parent size code"}],"ordering":["Decode fixed/reserved fields and raw ranges before any GPR read; compute GPR[RegSrc]+ZeroExtend(uimm11) modulo 2^XLEN after group legality."],"state_effects":["Store raw INIT/LAST/RegSrc/uimm11/ParentSizeCode and the derived XLEN offset in the destination carrier of the open binder group.","PEMode=000 on the binder opens a discarded syntactic group; every raw-legal contiguous modifier advances TPC without reads, state, role, or fault effects."],"standalone_opcode":true},"depends_on":["PTO-BLOCK-B-IOT","PTO-BLOCK-B-IOS","PTO-BLOCK-MODEL-OPERANDS-RANGE-MODIFIERS"],"id":"PTO-BLOCK-B-ASSEMBLE","mnemonic":"B.ASSEMBLE","summary":"Decodes one destination-range assemble modifier and retains its XLEN-wrapped derived offset in the immediately preceding binder group.","surface":"block"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// NDF-BEGIN: PTO-B-ASSEMBLE-RANGE-001// ndf: kind=contract level=L1 layer=block status=accepted// B.ASSEMBLE MUST decode the exact 0x53 form, preserve raw controls and the// XLEN-wrapped GPR-plus-uimm11 offset, and apply only to its preceding// contiguous B.IOT/B.IOS group.// NDF-END: PTO-B-ASSEMBLE-RANGE-001// DOC-BEGIN: decodereadonly func InstructionContractMatches_B_ASSEMBLE(operation: CommandOperation) => booleanbegin return operation == CommandOperation_b_assemble_32_122000000002;end;// DOC-END: decode// DOC-BEGIN: operationpure func InstructionContractParentSizeCodeIsRawLegal_B_ASSEMBLE(code: integer {0..15}) => booleanbegin return code <= 12;end;
readonly func InstructionContractHandler_B_ASSEMBLE() => CommandSemanticHandlerbegin return CommandHandler_ApplyBundleAssemble;end;// DOC-END: operation
B.ASSEMBLE is a 32-bit block header command that attaches one assembler-range modifier to an open Local or Shared binder group. It changes pending block metadata rather than executing a tile body operation immediately.
The modifier is valid only while it remains contiguous with the B.IOT or B.IOS binder group that opened its carrier. Intervening, reversed, or duplicate modifiers are rejected before carrier state changes.
The command records its raw selector and range fields in the open binder carrier together with the derived XLEN offset. A binder whose decoded PE mask is zero keeps only a discarded syntactic group and performs no source read or role effect.
INIT marks the first assembler carrier; its exact assigned domain remains in the generated contract below.LAST marks the final assembler carrier; its exact assigned domain remains in the generated contract below.RegSrc selects the named absolute GPR role; its exact assigned domain remains in the generated contract below.uimm11 supplies the encoded offset or addend; its exact assigned domain remains in the generated contract below.ParentSizeCode supplies the parent range size code; its exact assigned domain remains in the generated contract below.An accepted header command changes only its pending record or carrier. Architectural tile, Shared, GPR, memory, and completion effects remain deferred to the completed block unless this owner's contract explicitly identifies an immediate header-state update.
Reserved encodings are rejected before reads or pending-state changes. Placement, duplicate, role, or completed-schema mismatches fail before body effects.
This worked example is illustrative; it illustrates the current owner without replacing it.
B.IOT mask=PE_MASK, <last>, ->DstTile<SizeCode>
B.ASSEMBLE INIT, LAST, RegSrc, uimm11, ParentSizeCodeThe destination form of B.IOT opens the exact destination carrier group. The immediately following B.ASSEMBLE applies its assembler range to that destination carrier; any intervening command breaks contiguity and makes the modifier group invalid.
Bodies come from owning ASL. Dragging or buttons change only this page-session view order.
B.ASSEMBLE MUST decode the exact 0x53 form, preserve raw controls and the XLEN-wrapped GPR-plus-uimm11 offset, and apply only to its preceding contiguous B.IOT/B.IOS group.
PTO-B-ASSEMBLE-RANGE-001asl/block/operands/B.ASSEMBLE.asl78b3638e1d09e55d9ac1c45f0589c4c86cb5d355d4ae8b6e79c510a42b1a60e4756954057e8d2cafdc5b02551faa1a1ce5142a9f7f22ec2662c87bfdb1ebf8eb21 matching entries
PTO-AVS-BLOCK-ASSEMBLE-LOCAL-FAULTS-001tests/asl/block/model/operands/local-generation/block-fault-assemble-local-faults-001.asl22cb556792488b42e40ec17571d961519e0cd66911c03434306e6920f170a61ePTO-AVS-BLOCK-ASSEMBLE-LOCAL-LIFECYCLE-001tests/asl/block/model/operands/local-generation/block-exec-assemble-local-lifecycle-001.asl6127226a74cc6b1982898a62a35bd3e2145b9485bbe1cc858bd939d67132f511PTO-AVS-BLOCK-ASSEMBLE-MULTIOUTPUT-001tests/asl/block/model/operands/local-generation/block-atomic-assemble-multioutput-001.asl0a936b30a2b754ac42dd93cd893a8377bb847f8d4c43cf26c785754e9f357b2aPTO-AVS-BLOCK-ASSEMBLE-PORTABLE-CARRIERS-001tests/asl/block/model/operands/portable-carriers/block-exec-assemble-portable-carriers-001.asl11e59453724fa2271ae8b7528829da24f05d34eabc7fe8d3d2a71ecb2b3ef63fPTO-AVS-BLOCK-ASSEMBLE-RESTART-001tests/asl/block/model/operands/local-generation/block-fault-assemble-restart-001.asl2811b86d9c533058a60ad7fb19f135755ca0e622e3951560429a9fa9d6bfbb54PTO-AVS-BLOCK-B-ASSEMBLE-DECODE-001tests/asl/block/operands/B.ASSEMBLE/block-decode-b-assemble-canonical-001.asl1eb9e010027c0a8a3b5fa4de6813279314f02db8f0883777dba44dc99ae4b281PTO-AVS-BLOCK-B-ASSEMBLE-ENCODING-001tests/asl/block/operands/B.ASSEMBLE/block-exec-b-assemble-001.asl6ebdcb83b1ea48f8f5191133e52a0ce3d323866c4518102fd3caeb2a656616f3PTO-AVS-BLOCK-RANGE-GROUP-ORDER-001tests/asl/block/model/operands/range-modifiers/block-fault-range-group-order-001.asl8d6507c8048a569186bcca2ddca9e49e38f43538f3705a3544aa690fdd878284PTO-AVS-BLOCK-RANGE-PEMODE-ZERO-001tests/asl/block/model/operands/range-modifiers/block-exec-range-pemode-zero-001.asl97391c16c8e7f937b1a1bb2e06dab80f8c66a2a4aed84f8ccda354b917cb7abfPTO-AVS-BLOCK-SUBVIEW-CUBE-DESCRIPTOR-001tests/asl/block/model/operands/subview-descriptor/block-exec-subview-cube-descriptor-001.asl1c39e0e37eee9c1d48681b747be931b5a2b4a19f8ef52a33bb77da3bbb536671PTO-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-0098…
ADR-0098docs/status/decisions/0098-b-range-modifiers.mde194ccc6b6922fd4b65066b533f5e4b0eba094e099970059bca8e25b4e466fbaLoading ADR-0099…
ADR-0099docs/status/decisions/0099-0583-to-0584-compatibility.mdf130ce243d978a85dc641580d71505a950a34ce1a561402e74946ed6903ad2a0{
"classification": [
"operands"
],
"documentation": "docs/block/operands/B.ASSEMBLE.md",
"id": "PTO-BLOCK-B-ASSEMBLE",
"instruction_contract": {
"artifact": "spec/evidence/instruction-contract-closure.json",
"mnemonic": "B.ASSEMBLE",
"ndf_clause": "PTO-INST-BLOCK-B-ASSEMBLE"
},
"mnemonic": "B.ASSEMBLE",
"readiness_subjects": [
"ADR-0098",
"ADR-0099"
],
"semantic_tests": [
"PTO-AVS-BLOCK-B-ASSEMBLE-ENCODING-001"
],
"source": "asl/block/operands/B.ASSEMBLE.asl",
"surface": "block",
"tests": [
"PTO-AVS-BLOCK-B-ASSEMBLE-DECODE-001",
"PTO-AVS-BLOCK-B-ASSEMBLE-ENCODING-001"
]
}0.58.5 · Release candidate7dc8b7e5b121d2b2499a2273bebff29e2cd8681278b3638e1d09e55d9ac1c45f0589c4c86cb5d355d4ae8b6e79c510a42b1a60e48b5e3e09ca6e2da2061b4d699b72bc5504b7b15d606c01dc9bed43c461e26a47asl/block/operands/B.ASSEMBLE.aslasl/block/operands/B.ASSEMBLE.aslasl/block/operands/B.ASSEMBLE.asl