ADR 0098: B.SUBVIEW and B.ASSEMBLE range-modifier association
Context
The architecture needs range modifiers that bind source subviews and
destination writer ranges without creating a second Tile-register namespace.
The accepted forms use opcode 0x53, expose the complete Local and Shared
SizeCode reach, and require decoded carriers, Local lifecycle, and Shared
collective behavior to close together before the candidate can be released.
Decision
B.SUBVIEW uses match=0x00000053, mask=0x0000787f; B.ASSEMBLE uses
match=0x00001053, mask=0x0000707f. Their Local and Shared range and parent
SizeCodes are 1 through 12, encoding 128 B through 256 KiB; code zero retains
its mnemonic-specific source/MIDDLE/LAST meaning and codes 13 through 15 are
reserved. The derived offset is GPR[RegSrc] + ZeroExtend(uimm11) modulo XLEN,
with the unsigned immediate preserved in its carrier.
Each modifier belongs only to the immediately preceding contiguous B.IOT or
B.IOS syntactic group. Source zero, source one, and destination roles are
consumed in that order, with omissions and duplicates diagnosed at group
closure; an intervening command closes the group and cannot acquire a
retroactive modifier. B.IOT.L=1 keeps the group open for modifiers. A
B.IOS source-one selector is not a destination substitute.
Raw legality and reserved-field checks precede operand reads and carrier
updates. A binder with PEMode=000 still opens a syntactic group, but each
raw-legal modifier is discarded without reads, binding, allocation, range,
lifecycle, memory, or downstream effects. Reserved encodings remain
IllegalInstruction even on that zero-mode path.
A Shared destination with more than one participating PE is legal only when
its B.IOS group carries B.ASSEMBLE. A multi-PE standalone Shared destination
raises Fault_TileLegality before effects. A single-PE standalone Shared
destination preserves the ordinary B.IOS behavior.
Stage 1 therefore owns the exact decoder forms, strict association/order, raw-legality and zero-mode evidence, and derived operand carriers. It does not assign release identity or expand release selection. Stage 2 also owns the Local descriptor derivation, all-operation applicability, generation identity/replay, readiness/coverage, transactional publication, and Local fault/restart state carried by the model units listed in this record. Shared descriptor, generation, fault, and publication semantics are part of the same formal closure and cannot be represented by carrier-only evidence.
The minimal portable abstract carrier records a Local consumer's bound
committed or post-LAST generation,
opaque execution-domain identity, range or whole-parent mode, required CELL
set, and waiting/eligible/retired/cancelled state. Waiting is non-faulting and
has no effect; publication remains one atomic transition after complete
coverage/readiness, no fault or squash, and precise irrevocable LAST
retirement. Dynamic writers carry the instruction-instance plus opaque
execution-domain identity; same-instance same-domain replay is idempotent, and
an architecture squash cancels every unretired contribution in that domain
while preserving the older committed mapping. Every accepted Tile handler
group has exactly one generated rollback-safe, atomic-auxiliary, or
nonrollback-auxiliary effect class. The first two participate in the same
transaction; a nonrollback class raises Fault_TileLegality before body or
auxiliary effects. These carriers are portable abstract state only: backend
BlockROB, physical queues, ready tables, hidden replay queues, and token
allocation/width remain implementation-defined.
Consequences
The ASL instruction units, common dispatch/group model, generated catalog and traceability projections, and executable AVS points cite this decision. The existing B.IOT/B.IOS encoding, PE-mode, source-order, and rollback owners stay in force except for the explicitly added immediately preceding modifier group. The range NDF clauses and their direct state, dispatch, descriptor, rollback, trap-context, and executable consumers are linked in this record for review and closure. This extension targets the separately selected 0.58.4 candidate but does not publish it.
Binary envelope consequence
The accepted B.SUBVIEW and B.ASSEMBLE forms increase the common
encoded-form envelope from 540 to 542 forms. The reviewed encoded-form
fingerprint for the resulting scalar-plus-command projection is
a8a02000e08326e696f7f9ee16940b79ba74ebd9a504285626dc360b031a8369.
This records the exact catalog change; it does not assign a release identity
or alter the already-published release manifest.
Rejected Alternatives
- The stale
0x43RFC encoding is not retained because Issue #122 explicitly supersedes it. - A standalone modifier group or retroactive association is rejected because it would make source order and fault priority ambiguous.
- Treating
PEMode=000as an early decoder rejection is rejected; it is a discarded syntactic group while reserved raw encodings remain illegal.