跳到主要内容

TPERMUTE

Permute raw bytes from two Local CUBE sources by a Local U8 index Tile.

PTO-TILE-TPERMUTE

汇编格式

1. 高层汇编

TPERMUTE <LB0, LB1, LB2, DataType, Layout> SrcTile0, SrcTile1, SrcTile2 -> DstTile
显示高层汇编 operand 到 owning ASL 的映射
高层汇编 operand 的 source binding
分组Operand含义ASL 来源
参数LB0dimensionB.DIM LB0 (optional)
参数LB1dimensionB.DIM LB0/LB1/LB2 (optional)
参数LB2dimensionB.DIM LB0/LB1/LB2 (optional)
参数DataTypedata typeBSTART.SFU TPERMUTE, DataType
参数LayoutlayoutB.DATR Layout (optional)
输入SrcTile0source0contract.operands[1].source0
输入SrcTile1source1contract.operands[2].source1
输入SrcTile2indicescontract.operands[3].source2
输出DstTiledestinationcontract.operands[0].destination0

2. 完整 Bundle Assembly

直接来自 owner metadata

BSTART.SFU TPERMUTE, DataType

  1. 1BSTART.SFU TPERMUTE, DataType必选
  2. 2B.DATR Layout (optional)可选
  3. 3B.DIM LB0 (optional)可选
  4. 4B.IOT source0, source1必选可重复
  5. 5B.IOT indices, ->destination必选可重复
  6. 6BSTOP必选
最短 source-declared bundle
BSTART.SFU TPERMUTE, DataTypeB.IOT source0, source1B.IOT indices, ->destinationBSTOP
展开 Bundle 规则、互斥关系与示例
  • BSTART.SFU TPERMUTE, DataType
  • B.DATR Layout (optional)
  • B.DIM LB0/LB1/LB2 (optional)
  • B.IOT source0, source1
  • B.IOT indices, ->destination
  • BSTOP
BSTART.SFU TPERMUTE, U32; B.DATR Layout; B.IOT source0, source1; B.IOT indices, ->destination; BSTOP

汇编符号

汇编字段与架构角色
字段位宽有符号性架构角色编码零
DataType5encoding-defined——
Mode2encoding-defined——
Function5encoding-defined——
destination0——destination—
source0——source0—
source1——source1—
source2——indices—

编码

Loading WaveDrom diagram… The encoding table and WaveJSON remain available below.

Encoding fields as an accessible table
Generated encoding fields for BSTART.TEPL Mode, Function, DataType
Decoded itemBit rangeValue
DataType31:27variable
Mode26:25variable
Function24:20variable
Constant19:020'b00011001000110000001
WaveJSON source
{
  "reg": [
    {
      "bits": 20,
      "name": "20'b00011001000110000001"
    },
    {
      "bits": 5,
      "name": "Function"
    },
    {
      "bits": 2,
      "name": "Mode"
    },
    {
      "bits": 5,
      "name": "DataType"
    }
  ],
  "config": {
    "bits": 32,
    "fontsize": 13,
    "hspace": 900,
    "lanes": 1,
    "offset": 0
  }
}

BSTART.TEPL Mode, Function, DataType

指令契约

操作数与参数

destination0
destination
source0
source0
source1
source1
source2
indices

约束、检查与 Fault

  • TPERMUTE accepts only Local CUBE_M16 or CUBE_M32 data Tiles with matching dtype and geometry.
  • indices is Local U8 with the same CUBE layout and supplies one byte index for every valid destination byte.
  • The destination is fresh; source0 and source1 may alias, while indices is distinct from both sources.
  • Raw bytes are rearranged without numerical conversion.
  • Illegal raw indices reject before any destination effect with Fault_TileLegality.
  • CompleteBundleAtWithAcceptedApplicabilityRules supplies restart and completion behavior.

状态读取、写入与结果

  • Perform per-row two-source raw-byte table lookup and publish only the destination valid region.
  • none
  • All index legality and source reads precede destination publication.

ASL 伪代码

下面是该指令所有者中的 Operation;页面没有重写这段行为。

Decode 源绑定

readonly func InstructionContractOperation_TPERMUTE() => TileOperationbegin    return TileOperation_TPERMUTE;end;

Operation 源绑定

readonly func InstructionContractHandler_TPERMUTE() => TileSemanticHandlerbegin    return TileHandler_TPERMUTE;end;
pure func InstructionContractDataTypeLegal_TPERMUTE(    data_type: TileDataType) => booleanbegin    return TileCubeDataTypeSupported(data_type) &&           TileElementBits(data_type) != 64;end;
readonly func InstructionContractOperandsLegal_TPERMUTE(    destination: TileIndex, source0: TileIndex,    source1: TileIndex, indices: TileIndex) => booleanbegin    return TileOperandsLegal_TPERMUTE(destination, source0, source1, indices);end;
func InstructionContractExecute_TPERMUTE(    destination: TileIndex, source0: TileIndex,    source1: TileIndex, indices: TileIndex)begin    assert InstructionContractOperandsLegal_TPERMUTE(        destination, source0, source1, indices);    TPERMUTE(destination, source0, source1, indices);end;
查看完整 ASL 所有者
// PTO-INSTRUCTION: {"assembly":["TPERMUTE <bundle operands>"],"block":["BSTART.SFU TPERMUTE, DataType","B.DATR Layout (optional)","B.DIM LB0 (optional)","B.IOT source0, source1","B.IOT indices, ->destination","BSTOP"],"catalog_indices":[103],"catalog_records":[{"arguments":[{"operand":"destination0"},{"operand":"source0"},{"operand":"source1"},{"operand":"source2"}],"command_mnemonic":"BSTART.TEPL","contract_status":"reviewed-complete","datr_contract":{"allowed_nonzero_fields":["Layout"],"pad_union":"must-zero"},"disposition":"accepted-direct-operation","effect_contract":"TPERMUTE","family":"TEPL","fault_contract":"ExecuteTileInstruction","function":21,"legality_handler":"TileOperandsLegal_TPERMUTE","mode":3,"name":"TPERMUTE","operands":[{"field":"destination0","role":"destination"},{"field":"source0","role":"source0"},{"field":"source1","role":"source1"},{"field":"source2","role":"indices"}],"restart_contract":"CompleteBundleAtWithAcceptedApplicabilityRules","selector":"0x075","semantic_handler":"TPERMUTE","state_effects":["operand:destination0:destination","operand:source0:source0","operand:source1:source1","operand:source2:indices"]}],"classification":["layout-and-rearrangement","layout"],"contract":{"block_composition":["BSTART.SFU TPERMUTE, DataType","B.DATR Layout (optional)","B.DIM LB0/LB1/LB2 (optional)","B.IOT source0, source1","B.IOT indices, ->destination","BSTOP"],"canonical_assembly":["TPERMUTE <bundle operands>"],"defaults":["B.DATR has no effect other than selecting CUBE_M16 or CUBE_M32; padding and numeric fields remain zero.","A nonzero PE mask requires two ordered B.IOT bindings and no B.IOR."],"encoding_class":"selector-encoded-block-operation","examples":["BSTART.SFU TPERMUTE, U32; B.DATR Layout; B.IOT source0, source1; B.IOT indices, ->destination; BSTOP"],"exceptions":["Illegal raw indices reject before any destination effect with Fault_TileLegality.","CompleteBundleAtWithAcceptedApplicabilityRules supplies restart and completion behavior."],"field_contracts":{},"field_zero_meanings":{},"legality":["TPERMUTE accepts only Local CUBE_M16 or CUBE_M32 data Tiles with matching dtype and geometry.","indices is Local U8 with the same CUBE layout and supplies one byte index for every valid destination byte.","The destination is fresh; source0 and source1 may alias, while indices is distinct from both sources.","Raw bytes are rearranged without numerical conversion."],"memory_effects":["none"],"operands":[{"field":"destination0","role":"destination"},{"field":"source0","role":"source0"},{"field":"source1","role":"source1"},{"field":"source2","role":"indices"}],"ordering":["All index legality and source reads precede destination publication."],"standalone_opcode":false,"state_effects":["Perform per-row two-source raw-byte table lookup and publish only the destination valid region."]},"depends_on":["PTO-TILE-MODEL-EXECUTION-REARRANGEMENT","PTO-TILE-MODEL-LEGALITY-LAYOUT-REARRANGEMENT"],"engine":"SFU","id":"PTO-TILE-TPERMUTE","mnemonic":"TPERMUTE","summary":"Permute raw bytes from two Local CUBE sources by a Local U8 index Tile.","surface":"tile"}// PTO-REVIEW: {"review_method":"formal-definition-read","outcome":"FORMAL-COMPLETE","reviewed_fields":["assembly","encoding","defaults","operation","state","memory","ordering","faults","reserved"]}// NDF-BEGIN: PTO-TPERMUTE-CONTRACT-001// ndf: kind=contract level=L1 layer=tile status=accepted// TPERMUTE performs a two-source per-row raw-byte lookup over Local CUBE_M16// or CUBE_M32 Cells. Every valid destination byte and its index are checked// before the fresh destination is published; invalid indices reject atomically.// NDF-END: PTO-TPERMUTE-CONTRACT-001// DOC-BEGIN: decodereadonly func InstructionContractOperation_TPERMUTE() => TileOperationbegin    return TileOperation_TPERMUTE;end;// DOC-END: decode// DOC-BEGIN: operationreadonly func InstructionContractHandler_TPERMUTE() => TileSemanticHandlerbegin    return TileHandler_TPERMUTE;end;
pure func InstructionContractDataTypeLegal_TPERMUTE(    data_type: TileDataType) => booleanbegin    return TileCubeDataTypeSupported(data_type) &&           TileElementBits(data_type) != 64;end;
readonly func InstructionContractOperandsLegal_TPERMUTE(    destination: TileIndex, source0: TileIndex,    source1: TileIndex, indices: TileIndex) => booleanbegin    return TileOperandsLegal_TPERMUTE(destination, source0, source1, indices);end;
func InstructionContractExecute_TPERMUTE(    destination: TileIndex, source0: TileIndex,    source1: TileIndex, indices: TileIndex)begin    assert InstructionContractOperandsLegal_TPERMUTE(        destination, source0, source1, indices);    TPERMUTE(destination, source0, source1, indices);end;// DOC-END: operation

行为

用途

使用场景。 TPERMUTE 在每个 CUBE CELL 内提供一个双源字节表,使每个有效目标字节都能独立选择,而无需对载荷作数值解释。

执行过程

工作方式。 查找在每个 CUBE CELL 处重新开始:对于 CUBE_M32,每个源的表宽为 4 字节;对于 CUBE_M16,表宽为 8 字节。小于该宽度的索引选择 source0 中同一 CELL 的字节,随后相同大小的索引范围选择 source1 中同一 CELL 的字节。

输入与输出

输入与结果。 两个 Local 数据源采用相同的受支持非 64 位 dtype、CUBE 布局和几何形状;匹配的 Local U8 索引 Tile 为每个有效目标字节提供一个索引,目标则是新 Tile。

架构效果

效果。 所有索引及其选中的源字节均在完整目标有效区域发布前完成校验和读取;源 Tile 与索引 Tile 保持不变,目标填充为 Null,且该操作不产生内存效果。

约束与非法情形

拒绝条件。 每个索引必须小于每个 CELL 的合并边界:CUBE_M32 为 8,CUBE_M16 为 16。索引越界、选中的字节未定义、布局、dtype 或几何形状不匹配、索引 Tile 与任一源重叠,或目标与任一输入重叠,都会在目标产生任何效果前被拒绝。

示例演示

具体示例。 对于一个 CUBE_M32 行,源字分别为 0x04030201 和 0x08070605 时,字节索引 [0, 4, 1, 5] 生成目标字 0x06020501。

NDF 条款

正文来自 owning ASL。拖拽或按钮只临时改变当前页面显示顺序。

    1. surfaceTILE
    2. ownerTPERMUTE
    3. categoryCONTRACT
    4. case001

    规范契约

    contract · L1 · accepted

    TPERMUTE performs a two-source per-row raw-byte lookup over Local CUBE_M16 or CUBE_M32 Cells. Every valid destination byte and its index are checked before the fresh destination is published; invalid indices reject atomically.

    来源与引用
    完整稳定 ID
    PTO-TPERMUTE-CONTRACT-001
    来源路径
    asl/tile/layout-and-rearrangement/layout/TPERMUTE.asl
    适用单元
    PTO-TILE-TPERMUTE
    源 SHA-256
    455ba580be500adcba1b4597a270d7bb5f583eb7da95462288c5e2e60d18b19b
    条款 SHA-256
    b75b5e2eac189981637fcedc448a7ebf3a111de1e8a50a902eaf1af5ea181e9e
    打开精确 canonical source ↗

Evidence index

10 matching entries

Executable evidence3
  • Decoded cell-rearrangement bundles exercise normal control, mandatory and surplus B.IOR, raw control faults, zero-mask no-op, and removed selectors.
    1. surfaceBLOCK
    2. ownerPTO-BLOCK-MODEL-DISPATCH-CELL-REARRANGEMENT-SCHEMA
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-BLOCK-CELL-REARRANGE-DECODED-001
    Path
    tests/asl/block/model/dispatch/cell-rearrangement-schema/block-exec-cell-rearrangement-decoded-001.asl
    Kind / role
    execution
    Requirements
    PTO-INST-TILE-TPERMUTE, PTO-INST-TILE-TSHUF
    Pass condition
    The selected bundle either publishes the decoded result or reports the specified architectural fault before effects.
    SHA-256
    4991c63e3d0381992b52d28493920d050c24584b2ab3c3dd1c4cfced9032ff1f
    Open exact source ↗ for PTO-AVS-BLOCK-CELL-REARRANGE-DECODED-001
  • TPERMUTE selects valid M32 output bytes from two source rows.
    1. surfaceTILE
    2. ownerTPERMUTE
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-TPERMUTE-BYTE-TABLE-001
    Path
    tests/asl/tile/layout-and-rearrangement/layout/TPERMUTE/tile-exec-tpermute-byte-table-001.asl
    Kind / role
    execution
    Requirements
    PTO-TPERMUTE-CONTRACT-001, PTO-INST-TILE-TPERMUTE
    Pass condition
    Each valid destination byte follows its independent U8 table index.
    SHA-256
    310c6441f9c7354a8a040e9577437ff333506e4ca555591e970d78d628a75d9a
    Open exact source ↗ for PTO-AVS-TILE-TPERMUTE-BYTE-TABLE-001
  • canonical TPERMUTE catalog and ASL contract remain aligned
    1. surfaceTILE
    2. ownerTPERMUTE
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-TPERMUTE-STATIC-001
    Path
    tests/asl/tile/layout-and-rearrangement/layout/TPERMUTE/tile-static-tpermute-contract-001.asl
    Kind / role
    static-invariant
    Requirements
    PTO-INST-TILE-TPERMUTE
    Pass condition
    all canonical decode and contract assertions hold
    SHA-256
    99c2f9d9e8381fb57c475452dde327338bd73ba82d1e71e12fa627e5d1daf0c4
    Open exact source ↗ for PTO-AVS-TILE-TPERMUTE-STATIC-001
Commit-scoped evidence5
  • spec/evidence/release-traceability-readiness.json · closedPTO-EVIDENCE-RELEASE-TRACEABILITY
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-TRACEABILITY
    Path
    spec/evidence/release-traceability-readiness.json
    Kind / role
    ASL/NDF/documentation/AVS traceability
    SHA-256
    c7327021d39dc67ac5564bc55073b3870a397d79ac8d9648284d56e33bc14a3e
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-TRACEABILITY
  • spec/evidence/instruction-contract-closure.json · closedPTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
    Path
    spec/evidence/instruction-contract-closure.json
    Kind / role
    mnemonic and encoding contract closure
    SHA-256
    3ef2bb62421c79dff8fa77a1c7983923b523244b8090812883ef81286ca8106a
    Open exact source ↗ for PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURE
  • spec/evidence/architecture-readiness.json · openPTO-EVIDENCE-ARCHITECTURE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-ARCHITECTURE-READINESS
    Path
    spec/evidence/architecture-readiness.json
    Kind / role
    architecture maturity and blockers
    SHA-256
    4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
    Open exact source ↗ for PTO-EVIDENCE-ARCHITECTURE-READINESS
  • spec/evidence/release-gate-readiness.json · ready-for-exact-head-verificationPTO-EVIDENCE-RELEASE-GATE-READINESS
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-GATE-READINESS
    Path
    spec/evidence/release-gate-readiness.json
    Kind / role
    exact-head gate readiness
    SHA-256
    a0f4d2b6920c08981ea55fd8ef820708a40d4feb5402c5150e8e9ab532d84ce0
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-GATE-READINESS
  • spec/release-manifest.json · draftPTO-EVIDENCE-RELEASE-MANIFEST
    Sources and references
    Complete stable ID
    PTO-EVIDENCE-RELEASE-MANIFEST
    Path
    spec/release-manifest.json
    Kind / role
    release content and encoding fingerprints
    SHA-256
    1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
    Open exact source ↗ for PTO-EVIDENCE-RELEASE-MANIFEST
Decision history2
  • Private CUBE vector execution and CELL rearrangement · accepted
    1. decision recordADR
    2. case0103

    Decision record

    Loading ADR-0103…

    Sources and references
    Complete stable ID
    ADR-0103
    Path
    docs/status/decisions/0103-private-cube-vector-and-cell-rearrangement.md
    Affected units
    PTO-TILE-TPACK, PTO-TILE-TPERMUTE, PTO-TILE-TSHUF, PTO-TILE-TUNPACK
    Affected NDF
    PTO-TPACK-CONTRACT-001, PTO-TPERMUTE-CONTRACT-001, PTO-TSHUF-CONTRACT-001, PTO-TUNPACK-CONTRACT-001
    SHA-256
    3b3d67683fb0987dc85ba20c2d2effef9e7e1b170d3950cb505cc1f3ab6109d7
    Open exact decision source ↗ for ADR-0103
  • PTO ISA 0.58.4.1 to 0.58.5 compatibility boundary · accepted
    1. decision recordADR
    2. case0108

    Decision record

    Loading ADR-0108…

    Sources and references
    Complete stable ID
    ADR-0108
    Path
    docs/status/decisions/0108-0584-1-to-0585-compatibility.md
    Affected units
    PTO-ARCH-FEATURES-TILE-ALLOCATION, PTO-ARCH-MEMORY-MODEL-GLOBAL-MEMORY-ACCESS, PTO-ARCH-OVERVIEW-ENCODING-OWNERSHIP, PTO-BLOCK-B-IOS, PTO-BLOCK-B-IOT, PTO-BLOCK-BSTART-TLOAD, PTO-BLOCK-BSTART-TMATMUL, PTO-BLOCK-BSTART-TMATMUL-ACC, PTO-BLOCK-BSTART-TMATMUL-BIAS, PTO-BLOCK-BSTART-TMATMULMX, PTO-BLOCK-BSTART-TMATMULMX-ACC, PTO-BLOCK-BSTART-TMATMULMX-BIAS, PTO-BLOCK-BSTART-TMOV, PTO-BLOCK-BSTART-TSTORE, PTO-BLOCK-MODEL-DISPATCH-CELL-REARRANGEMENT-SCHEMA, PTO-BLOCK-MODEL-DISPATCH-COMMANDS, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-DESCRIPTOR-LEGALITY, PTO-BLOCK-MODEL-DISPATCH-DESTINATION-SHAPE, PTO-BLOCK-MODEL-DISPATCH-PARTIAL-SCHEMA, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-DISPATCH-SHARED-TLSU, PTO-BLOCK-MODEL-DISPATCH-TILE-EXECUTION, PTO-BLOCK-MODEL-DISPATCH-TILE-SCALAR-SCHEMA, PTO-BLOCK-MODEL-DISPATCH-TILE-SCHEMA, PTO-BLOCK-MODEL-DISPATCH-TLSU-LAYOUT-CONVERSION, PTO-BLOCK-MODEL-OPERANDS-PORTABLE-CARRIERS, PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION, PTO-TILE-GMOV, PTO-TILE-MGATHER, PTO-TILE-MGATHER-CAS, PTO-TILE-MGATHER-MASK, PTO-TILE-MSCATTER, PTO-TILE-MSCATTER-MASK, PTO-TILE-TCI, PTO-TILE-TCONCAT, PTO-TILE-TDEQUANT, PTO-TILE-TEXTRACT, PTO-TILE-TFILLPAD, PTO-TILE-TGATHER, PTO-TILE-TGEMV, PTO-TILE-TGEMV-ACC, PTO-TILE-TGEMV-BIAS, PTO-TILE-TGEMV-MX, PTO-TILE-TGEMV-MX-ACC, PTO-TILE-TGEMV-MX-BIAS, PTO-TILE-THISTOGRAM, PTO-TILE-TINSERT, PTO-TILE-TLOAD, PTO-TILE-TMATMUL, PTO-TILE-TMATMUL-ACC, PTO-TILE-TMATMUL-BIAS, PTO-TILE-TMATMUL-MX, PTO-TILE-TMATMUL-MX-ACC, PTO-TILE-TMATMUL-MX-BIAS, PTO-TILE-TMOV, PTO-TILE-TMRGSORT, PTO-TILE-TPACK, PTO-TILE-TPARTADD, PTO-TILE-TPARTMAX, PTO-TILE-TPARTMIN, PTO-TILE-TPARTMUL, PTO-TILE-TPERMUTE, PTO-TILE-TPREFETCH, PTO-TILE-TQUANT, PTO-TILE-TSCATTER, PTO-TILE-TSHUF, PTO-TILE-TSORT, PTO-TILE-TSTORE, PTO-TILE-TTRANS, PTO-TILE-TTRI, PTO-TILE-TUNPACK, PTO-TILE-MODEL-DISPATCH-IRREGULAR-AND-COMPLEX, PTO-TILE-MODEL-DISPATCH-LAYOUT-AND-REARRANGEMENT, PTO-TILE-MODEL-EXECUTION-COMPLEX, PTO-TILE-MODEL-EXECUTION-GENERATION, PTO-TILE-MODEL-EXECUTION-REARRANGEMENT, PTO-TILE-MODEL-LEGALITY-ALLOCATION-CAPACITY, PTO-TILE-MODEL-LEGALITY-DTYPE-LAYOUT, PTO-TILE-MODEL-LEGALITY-INDEXED-LAYOUT, PTO-TILE-MODEL-LEGALITY-LAYOUT-REARRANGEMENT, PTO-TILE-MODEL-LEGALITY-OPERAND-SCHEMA, PTO-TILE-MODEL-MEMORY-SHARED-MOVEMENT, PTO-TILE-MODEL-STATE-DESCRIPTORS, PTO-TILE-MODEL-STATE-SHARED-REGISTERS, PTO-TILE-MODEL-STATE-TYPES
    Affected NDF
    PTO-ARCH-GM-ACCESS-001, PTO-B-IOS-SHARED-STATE-001, PTO-B-IOT-STREAM-001, PTO-B-SHARED-WHOLE-PARENT-READY-001, PTO-B-SUBVIEW-SHARED-PER-PE-001, PTO-BSTART-TLOAD-MEMORY-001, PTO-BSTART-TMOV-SHARED-001, PTO-BSTART-TSTORE-MEMORY-001, PTO-INST-BLOCK-B-IOS, PTO-INST-BLOCK-B-IOT, PTO-INST-BLOCK-BSTART-TLOAD, PTO-INST-BLOCK-BSTART-TMATMUL, PTO-INST-BLOCK-BSTART-TMATMUL-ACC, PTO-INST-BLOCK-BSTART-TMATMUL-BIAS, PTO-INST-BLOCK-BSTART-TMATMULMX, PTO-INST-BLOCK-BSTART-TMATMULMX-ACC, PTO-INST-BLOCK-BSTART-TMATMULMX-BIAS, PTO-INST-BLOCK-BSTART-TMOV, PTO-INST-BLOCK-BSTART-TSTORE, PTO-INST-TILE-GMOV, PTO-INST-TILE-MGATHER, PTO-INST-TILE-MGATHER-CAS, PTO-INST-TILE-MGATHER-MASK, PTO-INST-TILE-MSCATTER, PTO-INST-TILE-MSCATTER-MASK, PTO-INST-TILE-TCI, PTO-INST-TILE-TCONCAT, PTO-INST-TILE-TDEQUANT, PTO-INST-TILE-TEXTRACT, PTO-INST-TILE-TFILLPAD, PTO-INST-TILE-TGATHER, PTO-INST-TILE-TGEMV, PTO-INST-TILE-TGEMV-ACC, PTO-INST-TILE-TGEMV-BIAS, PTO-INST-TILE-TGEMV-MX, PTO-INST-TILE-TGEMV-MX-ACC, PTO-INST-TILE-TGEMV-MX-BIAS, PTO-INST-TILE-THISTOGRAM, PTO-INST-TILE-TINSERT, PTO-INST-TILE-TLOAD, PTO-INST-TILE-TMATMUL, PTO-INST-TILE-TMATMUL-ACC, PTO-INST-TILE-TMATMUL-BIAS, PTO-INST-TILE-TMATMUL-MX, PTO-INST-TILE-TMATMUL-MX-ACC, PTO-INST-TILE-TMATMUL-MX-BIAS, PTO-INST-TILE-TMOV, PTO-INST-TILE-TMRGSORT, PTO-INST-TILE-TPACK, PTO-INST-TILE-TPARTADD, PTO-INST-TILE-TPARTMAX, PTO-INST-TILE-TPARTMIN, PTO-INST-TILE-TPARTMUL, PTO-INST-TILE-TPERMUTE, PTO-INST-TILE-TPREFETCH, PTO-INST-TILE-TQUANT, PTO-INST-TILE-TSCATTER, PTO-INST-TILE-TSHUF, PTO-INST-TILE-TSORT, PTO-INST-TILE-TSTORE, PTO-INST-TILE-TTRANS, PTO-INST-TILE-TTRI, PTO-INST-TILE-TUNPACK, PTO-ISA-LEGACY-SHARED-MOVEMENT-001, PTO-TFILLPAD-CONTRACT-001, PTO-TLOAD-MEMORY-001, PTO-TMATMUL-ACC-CONTRACT-001, PTO-TMATMUL-BIAS-CONTRACT-001, PTO-TMATMUL-CONTRACT-001, PTO-TMATMUL-MX-ACC-CONTRACT-001, PTO-TMATMUL-MX-BIAS-CONTRACT-001, PTO-TMATMUL-MX-CONTRACT-001, PTO-TPACK-CONTRACT-001, PTO-TPARTADD-CONTRACT-001, PTO-TPARTMAX-CONTRACT-001, PTO-TPARTMIN-CONTRACT-001, PTO-TPARTMUL-CONTRACT-001, PTO-TPERMUTE-CONTRACT-001, PTO-TSHUF-CONTRACT-001, PTO-TSTORE-MEMORY-001, PTO-TTRANS-CONTRACT-001, PTO-TUNPACK-CONTRACT-001
    SHA-256
    5689fa78a7291b6ae88d55197205e4cf79e9719ee5ba18ebf186f5c6871c350d
    Open exact decision source ↗ for ADR-0108

Unit metadata

Open 12 generated metadata fields
assembly
[
  "TPERMUTE <bundle operands>"
]
block
[
  "BSTART.SFU TPERMUTE, DataType",
  "B.DATR Layout (optional)",
  "B.DIM LB0 (optional)",
  "B.IOT source0, source1",
  "B.IOT indices, ->destination",
  "BSTOP"
]
catalog_indices
[
  103
]
catalog_records
[
  {
    "arguments": [
      {
        "operand": "destination0"
      },
      {
        "operand": "source0"
      },
      {
        "operand": "source1"
      },
      {
        "operand": "source2"
      }
    ],
    "command_mnemonic": "BSTART.TEPL",
    "contract_status": "reviewed-complete",
    "datr_contract": {
      "allowed_nonzero_fields": [
        "Layout"
      ],
      "pad_union": "must-zero"
    },
    "disposition": "accepted-direct-operation",
    "effect_contract": "TPERMUTE",
    "family": "TEPL",
    "fault_contract": "ExecuteTileInstruction",
    "function": 21,
    "legality_handler": "TileOperandsLegal_TPERMUTE",
    "mode": 3,
    "name": "TPERMUTE",
    "operands": [
      {
        "field": "destination0",
        "role": "destination"
      },
      {
        "field": "source0",
        "role": "source0"
      },
      {
        "field": "source1",
        "role": "source1"
      },
      {
        "field": "source2",
        "role": "indices"
      }
    ],
    "restart_contract": "CompleteBundleAtWithAcceptedApplicabilityRules",
    "selector": "0x075",
    "semantic_handler": "TPERMUTE",
    "state_effects": [
      "operand:destination0:destination",
      "operand:source0:source0",
      "operand:source1:source1",
      "operand:source2:indices"
    ]
  }
]
classification
[
  "layout-and-rearrangement",
  "layout"
]
contract
{
  "block_composition": [
    "BSTART.SFU TPERMUTE, DataType",
    "B.DATR Layout (optional)",
    "B.DIM LB0/LB1/LB2 (optional)",
    "B.IOT source0, source1",
    "B.IOT indices, ->destination",
    "BSTOP"
  ],
  "canonical_assembly": [
    "TPERMUTE <bundle operands>"
  ],
  "defaults": [
    "B.DATR has no effect other than selecting CUBE_M16 or CUBE_M32; padding and numeric fields remain zero.",
    "A nonzero PE mask requires two ordered B.IOT bindings and no B.IOR."
  ],
  "encoding_class": "selector-encoded-block-operation",
  "examples": [
    "BSTART.SFU TPERMUTE, U32; B.DATR Layout; B.IOT source0, source1; B.IOT indices, ->destination; BSTOP"
  ],
  "exceptions": [
    "Illegal raw indices reject before any destination effect with Fault_TileLegality.",
    "CompleteBundleAtWithAcceptedApplicabilityRules supplies restart and completion behavior."
  ],
  "field_contracts": {},
  "field_zero_meanings": {},
  "legality": [
    "TPERMUTE accepts only Local CUBE_M16 or CUBE_M32 data Tiles with matching dtype and geometry.",
    "indices is Local U8 with the same CUBE layout and supplies one byte index for every valid destination byte.",
    "The destination is fresh; source0 and source1 may alias, while indices is distinct from both sources.",
    "Raw bytes are rearranged without numerical conversion."
  ],
  "memory_effects": [
    "none"
  ],
  "operands": [
    {
      "field": "destination0",
      "role": "destination"
    },
    {
      "field": "source0",
      "role": "source0"
    },
    {
      "field": "source1",
      "role": "source1"
    },
    {
      "field": "source2",
      "role": "indices"
    }
  ],
  "ordering": [
    "All index legality and source reads precede destination publication."
  ],
  "standalone_opcode": false,
  "state_effects": [
    "Perform per-row two-source raw-byte table lookup and publish only the destination valid region."
  ]
}
depends_on
[
  "PTO-TILE-MODEL-EXECUTION-REARRANGEMENT",
  "PTO-TILE-MODEL-LEGALITY-LAYOUT-REARRANGEMENT"
]
engine
SFU
id
PTO-TILE-TPERMUTE
mnemonic
TPERMUTE
summary
Permute raw bytes from two Local CUBE sources by a Local U8 index Tile.
surface
tile
Open generated traceability record
{
  "classification": [
    "layout-and-rearrangement",
    "layout"
  ],
  "documentation": "docs/tile/layout-and-rearrangement/layout/TPERMUTE.md",
  "id": "PTO-TILE-TPERMUTE",
  "instruction_contract": {
    "artifact": "spec/evidence/instruction-contract-closure.json",
    "mnemonic": "TPERMUTE",
    "ndf_clause": "PTO-INST-TILE-TPERMUTE"
  },
  "mnemonic": "TPERMUTE",
  "readiness_subjects": [
    "ADR-0103",
    "ADR-0108"
  ],
  "semantic_tests": [
    "PTO-AVS-TILE-TPERMUTE-BYTE-TABLE-001"
  ],
  "source": "asl/tile/layout-and-rearrangement/layout/TPERMUTE.asl",
  "surface": "tile",
  "tests": [
    "PTO-AVS-TILE-TPERMUTE-BYTE-TABLE-001",
    "PTO-AVS-TILE-TPERMUTE-STATIC-001"
  ]
}

来源与发布信息

展开 commit、路径、hash、版本和规范所有者
发布
0.58.5 · 候选发布
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
455ba580be500adcba1b4597a270d7bb5f583eb7da95462288c5e2e60d18b19b
文档 SHA-256
cc8e93840c3e279879b877e54c76d8984d3bd849ff49a580a6fb200b2e53e6b6

精确所有者