Skip to content

[ndf]: Enable private CUBE vector operations and revise CELL rearrangement ISA #151

Description

@ckwllawliet

Baseline commit

564ac2d

Affected NDF clause IDs

Architecture and block contracts:

  • PTO-CUBE-CELL-STATE-001
  • PTO-ARCH-TILE-INSTRUCTION-CLASS-001
  • PTO-ARCH-TILE-EXECUTION-ENGINE-001
  • PTO-ARCH-TEPL-ALIAS-001
  • PTO-B-IOT-STREAM-001
  • PTO-B-IOR-BINDING-001

Contracts removed:

  • PTO-TPARTADD-CONTRACT-001
  • PTO-TPARTMUL-CONTRACT-001
  • PTO-TPARTMAX-CONTRACT-001
  • PTO-TPARTMIN-CONTRACT-001
  • PTO-TFILLPAD-CONTRACT-001
  • PTO-TTRANS-CONTRACT-001

Existing element-wise contracts extended to Local CUBE_M32 and
CUBE_M16:

  • PTO-TADD-CONTRACT-001, PTO-TAND-CONTRACT-001,
    PTO-TDIV-CONTRACT-001, PTO-TMAX-CONTRACT-001,
    PTO-TMIN-CONTRACT-001, PTO-TMUL-CONTRACT-001,
    PTO-TOR-CONTRACT-001, PTO-TREM-CONTRACT-001,
    PTO-TSHL-CONTRACT-001, PTO-TSHR-CONTRACT-001,
    PTO-TSUB-CONTRACT-001, PTO-TXOR-CONTRACT-001
  • PTO-TABS-CONTRACT-001, PTO-TEXP-CONTRACT-001,
    PTO-TLOG-CONTRACT-001, PTO-TNEG-CONTRACT-001,
    PTO-TNOT-CONTRACT-001, PTO-TRECIP-CONTRACT-001,
    PTO-TRELU-CONTRACT-001, PTO-TRSQRT-CONTRACT-001,
    PTO-TSQRT-CONTRACT-001
  • PTO-TADDS-CONTRACT-001, PTO-TANDS-CONTRACT-001,
    PTO-TDIVS-CONTRACT-001, PTO-TMAXS-CONTRACT-001,
    PTO-TMINS-CONTRACT-001, PTO-TMULS-CONTRACT-001,
    PTO-TORS-CONTRACT-001, PTO-TREMS-CONTRACT-001,
    PTO-TSHLS-CONTRACT-001, PTO-TSHRS-CONTRACT-001,
    PTO-TSUBS-CONTRACT-001, PTO-TXORS-CONTRACT-001
  • PTO-TFMA-CONTRACT-001

Proposed new contracts:

  • PTO-TPERMUTE-CONTRACT-001
  • PTO-TSHUF-CONTRACT-001
  • PTO-TPACK-CONTRACT-001
  • PTO-TUNPACK-CONTRACT-001

Normative delta

Remove TPARTADD, TPARTMUL, TPARTMAX, TPARTMIN, TFILLPAD, and
TTRANS completely from the accepted PTO Tile ISA. Their selectors 0x065,
0x06E, and 0x071..0x074 become reserved-illegal with no compatibility
aliases. Partial-union behavior lowers to ordinary copy/subview,
element-wise, and insertion operations; logical padded initialization lowers
to a larger valid destination plus expansion/insertion; physical storage
padding remains undefined. This issue does not add a transpose replacement.

Make the 34 listed ordinary element-wise operations deliberately accept Local
CUBE_M32 and CUBE_M16 wherever their existing dtype and numeric contracts
otherwise permit. All operands use one matching CUBE layout, logical-coordinate
value semantics are unchanged, valid results become defined, and storage
padding remains undefined. TCMP, TCMPS, TSEL, TSELS, TCVT,
CUBE_N8, Shared CUBE, mixed-layout operands, implicit M16/M32 conversion,
and row/column reduction remain outside this issue.

Add four SFU operations in the existing TEPL Mode-3 carrier:

  • TPERMUTE: Function 21, selector 0x075; per output byte, select from the
    concatenated same-row bytes of two data Tiles under a U8 index Tile. M32
    accepts indices 0..7; M16 accepts 0..15. Invalid inspected indices raise
    Fault_TileLegality before effects.
  • TSHUF: Function 22, selector 0x076; shuffle raw 32-bit words with a
    per-word U32 control Tile. Modes are UP, DOWN, BFLY, and IDX;
    segment widths are 2/4/8/16 and additionally 32 for M32; out-of-segment or
    inactive candidates select SELF or ZERO. M32 is one 32-lane group; M16
    is two independent 16-lane word groups.
  • TPACK: Function 23, selector 0x077; on U32 CUBE Tiles, concatenate
    src0_bytes low bytes of source0 below src1_bytes low bytes of source1,
    zeroing unused upper bits. Each count is 1..3 and their sum is at most 4.
  • TUNPACK: Function 24, selector 0x078; on U32 CUBE Tiles, extract one
    byte-granular field at byte_offset with byte_count, zero-extend it, and
    write one destination. Offset is 0..3, count is 1..4, and their sum is at
    most 4.

TSHUF, TPACK, and TUNPACK each consume exactly one explicit B.IOR
source GPR for a nonzero participating PE mode. The zero-extended low 32-bit
configuration uses one parameter per byte:

  • TSHUF: [7:0] mode, [15:8] segment_code, [23:16] boundary,
    [31:24] zero.
  • TPACK: [7:0] src0_bytes, [15:8] src1_bytes, [31:16] zero.
  • TUNPACK: [7:0] byte_offset, [15:8] byte_count, [31:16] zero.

High XLEN bits and reserved bytes must be zero. Invalid configuration content
raises Fault_TileLegality; missing or surplus required scalar structure for a
participating bundle raises the existing bundle-control fault. B.DATR keeps
its current meanings and is not repurposed.

Destinations are newly allocated through B.IOT destination hands, so decoded
destination/source aliasing is not expressible. Same-binding read-only sources
may repeat. For TPERMUTE, the second-binding index source must differ from
both data sources. Only index/control/word units contributing to the valid
destination region are inspected; padding-only units remain unobserved.

Defaults and intentionally unspecified behavior

  • PEMode=000 retains the current strict no-op behavior before placement,
    schema, allocation, operand, or configuration checks. Command-stream errors
    detected while commands are issued remain faults.
  • A participating TSHUF, TPACK, or TUNPACK has no omitted-control
    default; one B.IOR input is required. Explicit zero-register binding is
    distinct from omission.
  • TSHUF control-word bits above bit 4 are ignored. Padding-only index and
    control units are not inspected.
  • Latency, issue width, port mapping, physical shuffle topology, and backend
    performance subsets remain implementation-defined without narrowing the
    portable results.
  • No GM transpose, ND2DN/DN2ND conversion, row/column reduction change,
    predicate result, numerical conversion, sign extension, or cross-word M16
    exchange is introduced.

Compatibility and toolchain impact

This is an assembly and intrinsic compatibility break for the six removed
mnemonics. Assemblers, disassemblers, decoders, catalogs, documentation,
traceability, and tests must remove them and reject their former selectors.

The four additions require assembler/disassembler spellings, compiler
intrinsics and control-word construction, emulator support, and RTL adoption.
Those dependent implementations are separate follow-ups and do not block this
PTO-ASL issue from closing. No ABI or memory-format change is introduced.

The PTO-ASL PR must update authoritative mnemonic/model owners, generated
Markdown, canonical catalogs, decoder witnesses, independent AVS points,
traceability, and registered release inputs together.

Open questions

None. Architecture-visible behavior, encodings, operands, defaults, faults,
protected behavior, and issue closure are fixed before implementation.

Verification evidence

  • Decoded rejection of all six removed mnemonics/selectors with no stale
    catalog, page, AVS, or traceability surface.
  • Representative decoded M32 and M16 success for every changed element-wise
    family, plus representative CUBE_N8 and mixed-layout rejection.
  • TPERMUTE: M32 4-of-8 and M16 8-of-16 selection, both data sources,
    same-binding repeated sources, partial tails, ignored padding indices, and
    invalid-index precise no-effect fault.
  • TSHUF: every mode, M32 and independent M16 groups, each segment boundary,
    SELF/ZERO, valid-row tails, ignored padding controls, config reserved
    values, and required-B.IOR structure.
  • TPACK: 16+16, 8+24, 24+8, 8+8, both M16 words, same-source input, reserved
    bytes, and invalid/oversized counts.
  • TUNPACK: low/middle/high/whole-word extraction, zero extension, both M16
    words, reserved bytes, and invalid offset/count.
  • Zero PEMode strict no-op coverage for each new operation.
  • Final exact candidate passes make pr-check, make repo-check, and
    git diff --check under the repository V1 lane.

Release impact

Required - normative or release-evidence change

Metadata

Metadata

Assignees

No one assigned

    Labels

    formal-modelNormative formal architecture model change

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions