操作数与参数
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| 字段 | 位宽 | 有符号性 | 架构角色 | 编码零 |
|---|---|---|---|---|
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 与 Operation 均直接来自指令所有者,并按执行阶段分开显示。
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 是一条 32 位 Block header 命令,用来把一个汇编范围修饰符附加到已打开的 Local 或 Shared 绑定组。它修改待处理 Block 元数据,不会立即执行 Tile body 操作。
该修饰符必须与打开其 carrier 的 B.IOT 或 B.IOS 绑定组保持连续。若中间插入其他命令、顺序反转或重复使用,会在 carrier 状态变化前被拒绝。
该命令把原始选择与范围字段以及派生的 XLEN 偏移记录到已打开的 binder carrier。若 binder 解码后的 PE mask 为零,则只保留一个随后丢弃的语法组,不读取源,也不产生角色影响。
INIT 标记第一个 assembler carrier;其确切分配域仍以下方生成契约为准。LAST 标记最后一个 assembler carrier;其确切分配域仍以下方生成契约为准。RegSrc 选择具名的绝对 GPR 角色;其确切分配域仍以下方生成契约为准。uimm11 提供编码偏移或加数;其确切分配域仍以下方生成契约为准。ParentSizeCode 提供父范围大小编码;其确切分配域仍以下方生成契约为准。被接受的 header 命令只改变自己的待处理记录或 carrier。除非本所有者明确指出即时 header 状态更新,否则架构 Tile、Shared、GPR、内存和完成影响都推迟到完整 Block。
保留编码会在读取或待处理状态变化前被拒绝。位置、重复、角色或完成后 schema 不匹配,会在 body 影响前失败。
以下为示例性示例,仅用于说明当前所有者,不替代其定义。
B.IOT mask=PE_MASK, <last>, ->DstTile<SizeCode>
B.ASSEMBLE INIT, LAST, RegSrc, uimm11, ParentSizeCode目的形式的 B.IOT 打开确切的目的 carrier 组。紧随其后的 B.ASSEMBLE 把 assembler range 应用于该目的 carrier;中间插入任何命令都会破坏连续性,使修饰符组无效。
正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。
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 · 候选发布7dc8b7e5b121d2b2499a2273bebff29e2cd8681278b3638e1d09e55d9ac1c45f0589c4c86cb5d355d4ae8b6e79c510a42b1a60e47c8bb89de4fd8ac849c567ff113f1f4f51dc9aa2c00d70e9651d9733eecdc0aeasl/block/operands/B.ASSEMBLE.aslasl/block/operands/B.ASSEMBLE.aslasl/block/operands/B.ASSEMBLE.asl