ADR 0081: Tile scalar and immediate operations
Context
ADR 0062 recorded a single repository-wide mnemonic audit. This record preserves the accepted decisions for this family as one decision-scoped owner. The former identifiers remain only in legacy_ids and the generated ADR index; current normative meaning is owned by the affected ASL/NDF clauses.
Decisions
Decision 082: TADDS consumes one typed scalar from the selected PE's private GPR
TADDS is selected by TEPL carrier Mode=1, Function=0 and executes on the
VEC engine. It reads one Local source Tile, adds one scalar to every element
in the valid rectangle, and writes one explicit renamed Local destination.
The scalar is supplied by B.IOR.RegSrc0. For each PE selected by the common
B.IOT.PE_MASK, that selector is resolved in that PE's private GPR file.
The low DataType element width of the selected 64-bit GPR is the raw encoding
of one scalar element; GPR bits above that width do not participate. Floating
types therefore consume their ordinary bit encoding, signed integers consume
the low-width two's-complement encoding, and unsigned integers consume the
same bits as an unsigned value. Omitting B.IOR selects the zero register as
the operation-defined default. An explicitly present all-zero B.IOR is a
distinct encoded descriptor but supplies the same zero scalar. RegSrc1,
RegSrc2, and RegDst are unused and MUST be zero when a B.IOR is present.
TADDS supports exactly FP64, FP32, TF32, HF32, FP16, BF16, E4M3,
E5M2, S64, S32, S16, S8, U64, U32, U16, and U8. Every other
DataType rejects before effects. The source and destination MUST match
physical and valid shape, row-major layout, and DataType. The selected numeric
profile defines addition, exceptional values, overflow, and fixed/default
rounding for that type; no scalar conversion or extension beyond the raw
low-width interpretation occurs.
The closed Local scalar-VEC schema requires nonzero LB0=ValidCol; omitted
LB1 gives ValidRow=1; omitted LB2 gives Col=ValidCol; and physical rows
derive from destination capacity, Col, and DataType. PadValueOrByteId is
the only applicable B.DATR field. Omission selects Null; explicit 00,
01, 10, and 11 select Zero, Max, Min, and Null. Explicit
nondefault CMode, Sat, Canonicalize, secondary DataType, RMode, or
Layout is illegal.
B.IOS is illegal. The source and destination B.IOT bindings use the same
PE_MASK; mask zero is a strict no-op before GPR reads, source reads,
allocation, or faults. The source persists and MAY alias the destination.
Complete descriptor, schema, field, type, dimension, capacity, GPR-binding,
mask, allocation, and source-definedness preflight precedes the source and
scalar snapshots. Valid results, numeric status, padding definedness, and the
destination descriptor publish atomically; rejection has no architectural
effect.
Decision 083: TSUBS performs ordered Tile-minus-scalar subtraction
TSUBS is selected by TEPL carrier Mode=1, Function=1 and executes on the
VEC engine. For each element in the valid rectangle it computes
source - scalar; the scalar is never the left operand. It reads one Local
source Tile and writes one explicit renamed Local destination.
The scalar is supplied by B.IOR.RegSrc0, resolved independently in each
selected PE's private GPR file. The low selected-DataType element width is the
raw encoding of one scalar element and higher GPR bits do not participate.
Floating encodings, low-width two's-complement signed integers, and unsigned
integers are interpreted according to the selected DataType. Omitting
B.IOR selects the zero register as the operation-defined default; an
explicit all-zero B.IOR remains a distinct encoded descriptor but supplies
the same zero scalar. RegSrc1, RegSrc2, and RegDst are unused and MUST be
zero when a descriptor is present.
TSUBS supports exactly FP64, FP32, TF32, HF32, FP16, BF16, E4M3,
E5M2, S64, S32, S16, S8, U64, U32, U16, and U8. Every other
DataType rejects before effects. Source and destination MUST match physical
and valid shape, row-major layout, and DataType. The selected numeric profile
defines subtraction, exceptional values, overflow, and fixed/default rounding
for that type; no scalar conversion or extension beyond the raw low-width
interpretation occurs.
The closed Local scalar-VEC schema and dimension defaults are identical to
Decision 082 in ADR-0081. PadValueOrByteId is the only applicable B.DATR field: omission is
Null, and explicit 00, 01, 10, and 11 are Zero, Max, Min, and
Null. Every other explicit nondefault data attribute is illegal.
B.IOS is illegal. Source and destination bindings use the same PE_MASK,
and mask zero is a strict no-op before the private GPR read. The source
persists and MAY alias the destination. Complete preflight precedes source and
scalar snapshots; valid results, numeric status, padding definedness, and the
destination descriptor publish atomically. Rejection has no architectural
effect.
Decision 084: TMULS performs typed elementwise Tile-times-scalar multiplication
TMULS is selected by TEPL carrier Mode=1, Function=2 and executes on the
VEC engine. It reads one Local source Tile, multiplies each valid element by
one scalar, and writes one explicit renamed Local destination. Signed and
unsigned integer results are modulo the element width. Floating results and
status follow the selected numeric profile and its fixed/default rounding.
The scalar-binding, low-width raw DataType encoding, per-selected-PE private
GPR lookup, omitted versus explicit-zero B.IOR, unused B.IOR fields,
16-type set, dimension defaults, Local-only bindings, equal and zero mask
rules, source persistence and aliasing, PadValue behavior, prohibited data
attributes, complete preflight, and atomic publication are exactly those in
Decision 082 in ADR-0081. No additional scalar conversion, saturation, or encoded rounding
control is defined.
Decision 085: TDIVS is ordered SFU Tile-divided-by-scalar division
TDIVS retains TEPL carrier Mode=1, Function=3, selector 0x023, but its
semantic engine is SFU because division requires complex execution hardware.
Canonical block assembly uses BSTART.SFU TDIVS, DataType; the raw carrier
encoding is unchanged. For every valid element it computes source / scalar,
never scalar / source.
The scalar binding and raw low-width DataType interpretation follow Decision 082 in ADR-0081. An integer scalar encoding of zero causes Illegal Block Exception before source snapshot, destination allocation publication, or any architectural effect. A floating positive or negative zero scalar is not a block-legality failure; quotient and numeric status follow the selected floating profile. The profile also owns signed minimum divided by negative one and all floating NaN, infinity, overflow, underflow, inexact, and rounding behavior.
TDIVS supports the same exact 16 DataTypes, dimensions/defaults, Local Tile
schema, PadValue, prohibited fields, masks, persistence, aliasing, preflight,
and atomic publication as Decision 082 in ADR-0081. Omitting B.IOR supplies zero: therefore an
omitted scalar is illegal for every integer TDIVS type and is floating
division by positive zero for every floating type. This is an architectural
default, not permission to read an absent or uninitialized register.
Decision 086: TREMS is SFU divisor-signed Tile-modulo-scalar
TREMS retains TEPL carrier Mode=1, Function=4, selector 0x024, but its
semantic engine is SFU. Canonical assembly uses
BSTART.SFU TREMS, DataType without changing the raw encoding. It computes
modulo with ordered operands source mod scalar, not a truncation-toward-zero
language remainder. For signed integers, q=floor(source/scalar) and
result=source-q*scalar, so every nonzero result has the scalar divisor's
sign. Unsigned types use ordinary unsigned modulo; floating types use the
profile's divisor-signed modulo definition.
The scalar binding, raw low-width DataType interpretation, per-PE private GPR
lookup, exact 16-type set, dimensions/defaults, padding, Local-only bindings,
masks, persistence, aliases, and transaction rules follow Decision 082 in ADR-0081. Integer
scalar zero raises Illegal Block Exception before effects. Floating positive
or negative zero is not a block-legality failure; result and numeric status
are profile-defined. Consequently an omitted B.IOR supplies an illegal zero
divisor for integer TREMS and a legal positive-zero divisor for floating
TREMS. The profile also owns signed overflow boundaries and floating special
values; no encoded rounding or saturation control is consumed.
Decision 087: TANDS is integer-only raw element-width AND with a scalar
TANDS is selected by TEPL carrier Mode=1, Function=6 and executes on the
VEC engine. For each valid element it computes the raw bitwise AND of the
source element and scalar. Signedness does not change the bit operation. The
exact supported DataTypes are S64, S32, S16, S8, U64, U32, U16,
and U8; every floating, compact, exponent-only, and packed encoding rejects
before effects.
B.IOR.RegSrc0 supplies the scalar from each selected PE's private GPR. Only
the selected integer element width participates; upper GPR bits are ignored.
Omitting B.IOR supplies zero and therefore makes every valid destination
element zero. An explicit all-zero descriptor is distinct but numerically
identical; its unused fields MUST be zero.
Dimensions/defaults, row-major matching geometry, source definedness,
Local-only bindings, equal and zero masks, persistence, aliasing, complete
preflight, and atomic publication follow Decision 082 in ADR-0081. PadValueOrByteId is the
only applicable B.DATR field, with omission Null and explicit
Zero/Max/Min/Null; Max and Min use the selected integer type.
TANDS has no rounding, saturation, or numeric-status effect.
Decision 088: TORS is integer-only raw element-width OR with a scalar
TORS is selected by TEPL carrier Mode=1, Function=7 and executes on the
VEC engine. For each valid element it computes the raw bitwise OR of the
source element and scalar. Signedness does not change the bit operation. The
exact supported DataTypes are S64, S32, S16, S8, U64, U32, U16,
and U8; every floating, compact, exponent-only, and packed encoding rejects
before effects.
B.IOR.RegSrc0 supplies the scalar from each selected PE's private GPR. Only
the selected integer element width participates; upper GPR bits are ignored.
Omitting B.IOR supplies zero and therefore leaves every valid source element
unchanged. An explicit all-zero descriptor is distinct but numerically
identical; its unused fields MUST be zero.
Dimensions/defaults, row-major matching geometry, source definedness,
Local-only bindings, equal and zero mask rules, persistence, aliasing,
complete preflight, and atomic publication follow Decision 082 in ADR-0081.
PadValueOrByteId is the only applicable B.DATR field, with omission Null
and explicit Zero/Max/Min/Null; Max and Min use the selected integer
type. TORS has no rounding, saturation, or numeric-status effect.
Decision 089: TXORS is integer-only raw element-width XOR with a scalar
TXORS is selected by TEPL carrier Mode=1, Function=8 and executes on the
VEC engine. For each valid element it computes the raw bitwise XOR of the
source element and scalar. Signedness does not change the bit operation. The
exact supported DataTypes are S64, S32, S16, S8, U64, U32, U16,
and U8; every floating, compact, exponent-only, and packed encoding rejects
before effects.
B.IOR.RegSrc0 supplies the scalar from each selected PE's private GPR. Only
the selected integer element width participates; upper GPR bits are ignored.
Omitting B.IOR supplies zero and therefore leaves every valid source element
unchanged. An explicit all-zero descriptor is distinct but numerically
identical; its unused fields MUST be zero.
Dimensions/defaults, row-major matching geometry, source definedness,
Local-only bindings, equal and zero mask rules, persistence, aliasing,
complete preflight, and atomic publication follow Decision 082 in ADR-0081.
PadValueOrByteId is the only applicable B.DATR field, with omission Null
and explicit Zero/Max/Min/Null; Max and Min use the selected integer
type. TXORS has no rounding, saturation, or numeric-status effect.
Decision 090: TSHLS uses an element-width-masked scalar shift count
TSHLS is selected by TEPL carrier Mode=1, Function=9 and executes on the
VEC engine. It reads one Local integer source Tile and one scalar from
B.IOR.RegSrc0, then writes one explicit renamed Local destination. For an
element width W of 8, 16, 32, or 64 bits, the shift count is the unsigned
value of the scalar's low log2(W) bits. Each destination element is the low
W bits of source << count; verification-carrier bits above W are zero.
Signedness does not change the raw shift.
The exact supported DataTypes are S64, S32, S16, S8, U64, U32,
U16, and U8; every other DataType rejects before effects. The scalar is
read from each selected PE's private GPR. Omitting B.IOR supplies zero and
therefore makes TSHLS an identity operation over the valid region. An explicit
all-zero descriptor is distinct but numerically identical; unused B.IOR
fields MUST be zero.
Dimensions/defaults, row-major matching geometry, source definedness,
Local-only bindings, equal and zero mask rules, persistence, aliasing,
PadValueOrByteId, complete preflight, and atomic publication follow Decision 082 in ADR-0081.
TSHLS has no rounding, saturation, or numeric-status effect.
Decision 091: TSHRS follows integer signedness with a masked scalar count
TSHRS is selected by TEPL carrier Mode=1, Function=10 and executes on the
VEC engine. It reads one Local integer source Tile and one scalar from
B.IOR.RegSrc0, then writes one explicit renamed Local destination. For an
element width W of 8, 16, 32, or 64 bits, the shift count is the unsigned
value of the scalar's low log2(W) bits. Signed DataTypes use arithmetic right
shift with sign fill; unsigned DataTypes use logical right shift with zero
fill. The low W result bits are stored and verification-carrier bits above
W are zero.
The exact supported DataTypes are S64, S32, S16, S8, U64, U32,
U16, and U8; every other DataType rejects before effects. The scalar is
read from each selected PE's private GPR. Omitting B.IOR supplies zero and
therefore makes TSHRS an identity operation over the valid region. An explicit
all-zero descriptor is distinct but numerically identical; unused B.IOR
fields MUST be zero.
Dimensions/defaults, row-major matching geometry, source definedness,
Local-only bindings, equal and zero mask rules, persistence, aliasing,
PadValueOrByteId, complete preflight, and atomic publication follow Decision 082 in ADR-0081.
TSHRS has no rounding, saturation, or numeric-status effect.
Decision 092: TMAXS is typed maximum between each element and a scalar
TMAXS is selected by TEPL carrier Mode=1, Function=11 and executes on the
VEC engine. It reads one Local source Tile and one scalar from
B.IOR.RegSrc0, then writes one explicit renamed Local destination. Signed
integer DataTypes use signed numeric ordering, unsigned integer DataTypes use
unsigned numeric ordering, and floating DataTypes use the selected numeric
profile's maximum operation.
The exact supported DataTypes are FP64, FP32, TF32, HF32, FP16,
BF16, E4M3, E5M2, S64, S32, S16, S8, U64, U32, U16, and
U8; all others reject before effects. The scalar is the raw low element-width
encoding from each selected PE's private GPR; upper bits are ignored. Omitting
B.IOR supplies the selected type's all-zero encoding, including positive
zero for floating types. Explicit all-zero is distinct but numerically
identical; unused B.IOR fields MUST be zero.
For floating types, one NaN selects the non-NaN operand without changing its encoding; two NaNs produce the destination canonical NaN; signaling NaN reports the profile's invalid condition; equal-sign zero preserves that sign; and a mixed-sign zero tie produces positive zero. Source encodings invalid for the selected profile reject before effects.
Dimensions/defaults, row-major matching geometry, source definedness,
Local-only bindings, equal and zero mask rules, persistence, aliasing,
PadValueOrByteId, complete preflight, numeric-status transaction, and atomic
publication follow Decision 082 in ADR-0081 and Decision 067 in ADR-0080.
Decision 093: TMINS is typed minimum between each element and a scalar
TMINS is selected by TEPL carrier Mode=1, Function=12 and executes on the
VEC engine. It reads one Local source Tile and one scalar from
B.IOR.RegSrc0, then writes one explicit renamed Local destination. Signed
integer DataTypes use signed numeric ordering, unsigned integer DataTypes use
unsigned numeric ordering, and floating DataTypes use the selected numeric
profile's minimum operation.
The exact supported DataTypes are FP64, FP32, TF32, HF32, FP16,
BF16, E4M3, E5M2, S64, S32, S16, S8, U64, U32, U16, and
U8; all others reject before effects. The scalar is the raw low element-width
encoding from each selected PE's private GPR; upper bits are ignored. Omitting
B.IOR supplies the selected type's all-zero encoding, including positive
zero for floating types. Explicit all-zero is distinct but numerically
identical; unused B.IOR fields MUST be zero.
For floating types, one NaN selects the non-NaN operand without changing its encoding; two NaNs produce the destination canonical NaN; signaling NaN reports the profile's invalid condition; equal-sign zero preserves that sign; and a mixed-sign zero tie produces negative zero. Source encodings invalid for the selected profile reject before effects.
Dimensions/defaults, row-major matching geometry, source definedness,
Local-only bindings, equal and zero mask rules, persistence, aliasing,
PadValueOrByteId, complete preflight, numeric-status transaction, and atomic
publication follow Decision 082 in ADR-0081 and Decision 068 in ADR-0080.
Decision 094: TCMPS produces a packed predicate Tile from a scalar comparison
TCMPS is selected by TEPL carrier Mode=1, Function=13 and executes on the
VEC engine. It reads one Local numeric source Tile and one scalar from
B.IOR.RegSrc0, then writes one explicit renamed Local predicate destination.
B.DATR.CMode maps 0=EQ, 1=NE, 2=LT, 3=GT, 4=LE, and 5=GE;
encodings 6 and 7 are reserved. Omission retains encoded zero and selects EQ.
Each logical comparison produces exactly one predicate bit. Logical element
index i occupies bit i mod 8 of byte floor(i/8), with lower logical
indices in lower bit positions. The destination is predicate-kind Tile
storage, not a numeric DataType. It retains the source logical Row, Col,
ValidRow, and ValidCol, and its capacity MUST hold at least
ceil(Row*Col/8) bytes.
The exact supported source DataTypes are FP64, FP32, TF32, HF32,
FP16, BF16, E4M3, E5M2, S64, S32, S16, S8, U64, U32,
U16, and U8; all others reject before effects. Signed and unsigned ordered
comparisons use their respective numeric ordering. Floating comparison rules,
including unordered NaN results, signaling-NaN invalid status, and signed-zero
equality, follow Decision 069 in ADR-0080. The scalar is the raw low source-element-width
encoding from each selected PE's private GPR; upper bits are ignored. Omitted
B.IOR supplies the selected source type's all-zero encoding.
Source dimensions/defaults and row-major layout follow Decision 082 in ADR-0081. CMode and
PadValueOrByteId are the only applicable B.DATR fields. Pad omission is
Null; Zero and Min write zero predicate bits outside the valid rectangle,
Max writes one bits, and Null leaves those bits undefined. TCMPS rejects
B.IOS, uses Local-only bindings with equal masks, and treats mask zero as a
strict no-op before private GPR reads. Complete preflight precedes the source
snapshot; packed payload, padding definedness, numeric status, and destination
descriptor publish atomically.
Decision 095: TSELS selects a Tile element or scalar using packed predicates
TSELS is selected by TEPL carrier Mode=1, Function=26 and executes on the
VEC engine. It reads one Local packed-predicate mask Tile, one Local numeric
true-source Tile, and one scalar false alternative from B.IOR.RegSrc0, then
writes one explicit renamed Local numeric destination. For logical element
index i, bit i mod 8 of mask byte floor(i/8) selects the true-source
element when one and the scalar when zero. Lower logical indices occupy lower
bit positions. An ordinary numeric Tile is not a legal mask.
The true source and destination MUST have identical physical shape, logical
shape, valid shape, row-major layout, and DataType. The mask has the same
logical and valid geometry, predicate-kind storage, capacity of at least
ceil(Row*Col/8) bytes, and every valid predicate bit defined. Every valid
true-source element MUST be defined. Selection copies either the source
element encoding or the raw low element-width scalar encoding exactly; upper
GPR bits are ignored and no conversion, rounding, saturation, NaN
canonicalization, or numeric-status update occurs.
The exact supported numeric DataTypes are FP64, FP32, TF32, HF32,
FP16, BF16, E4M3, E5M2, S64, S32, S16, S8, U64, U32,
U16, and U8; every other numeric type rejects before effects. Omitting
B.IOR supplies the selected type's all-zero encoding. Explicit all-zero is
distinct but numerically identical; unused B.IOR fields MUST be zero.
Dimensions/defaults, Local-only bindings, equal and zero mask rules,
source persistence, allowed true-source/destination aliasing,
PadValueOrByteId, complete predicate/data/scalar preflight, padding
definedness, and atomic destination publication follow Decision 079 in ADR-0080 and Decision 082 in ADR-0081.
The predicate mask cannot alias the numeric destination because their storage
kinds differ.
Decision 096: TEXPANDS broadcasts one typed scalar into a new Local Tile
TEXPANDS is selected by TEPL carrier Mode=1, Function=27 and executes on
the VEC engine. It has no Tile source. It reads one scalar from
B.IOR.RegSrc0 and writes one explicit newly allocated Local destination. For
every element inside ValidRow x ValidCol, the destination receives the raw
low element-width encoding from the selected PE's private GPR. GPR bits above
the selected DataType width are ignored; no numeric conversion, rounding,
saturation, canonicalization, or numeric-status update occurs.
The exact supported DataTypes are FP64, FP32, TF32, HF32, FP16,
BF16, E4M3, E5M2, S64, S32, S16, S8, U64, U32, U16, and
U8; all other DataTypes reject before effects. Omitting B.IOR supplies the
selected type's all-zero encoding, including positive zero for floating
types. An explicitly present all-zero B.IOR is a distinct encoded descriptor
but supplies the same value. RegSrc1, RegSrc2, and RegDst are unused and
MUST be zero when B.IOR is present.
The closed Local schema requires nonzero LB0=ValidCol; omitted LB1 gives
ValidRow=1; omitted LB2 gives Col=ValidCol; and physical rows derive from
destination capacity, Col, and DataType. The destination is row-major and
MUST satisfy ValidRow <= Row and ValidCol <= Col.
PadValueOrByteId is the only applicable B.DATR field. Omission selects
Null; explicit Zero, Max, and Min define every physical destination
element outside the valid rectangle with the selected DataType's corresponding
value, while Null leaves those elements undefined. Explicit nondefault
CMode, Sat, Canonicalize, secondary DataType, RMode, or Layout is
illegal.
B.IOS is illegal. The destination B.IOT.PE_MASK may select any subset of
the four PEs; mask zero is a strict no-op before GPR reads, allocation, or
faults. Complete descriptor, field, type, dimension, capacity, GPR-binding,
mask, and allocation preflight precedes scalar reads. Padding definedness and
the destination descriptor publish atomically; rejection has no architectural
effect.