Skip to main content

PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS

PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS

ASL pseudocode

The complete ASL owner is shown directly below.

// PTO-UNIT: {"id":"PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS","surface":"tile","classification":["model","legality","matrix-operands"],"depends_on":["PTO-TILE-MODEL-LEGALITY-MATRIX-CUBE-PRIMARY","PTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS"]}// PTO-REQ-CUBE-OPERANDS-001: every Local matrix source descriptor is checked// in stream order before any Local or Shared payload is snapshotted.
readonly func TileMatrixLocalOperandSchemaLegal(    source: TileIndex,    valid_rows: integer {1..65535},    valid_columns: integer {1..65535},    data_type: TileDataType) => booleanbegin    let tile = _Tiles[[source]];    return TileSourceContentsDefined(source) &&           IsNonzeroPowerOfTwo(tile.rows) &&           IsNonzeroPowerOfTwo(tile.columns) &&           tile.valid_rows == valid_rows &&           tile.valid_columns == valid_columns &&           tile.data_type == data_type &&           tile.layout == TileLayout_RowMajor &&           tile.location == TileLocation_Matrix;end;
readonly func TileMatrixLocalAScaleSchemaLegal(    source: TileIndex,    valid_rows: integer {1..65535},    valid_columns: integer {1..65535},    primary_type: TileDataType) => booleanbegin    let tile = _Tiles[[source]];    return tile.contents_defined && TileCubeDescriptorLegal(tile) &&           tile.valid_rows == valid_rows &&           tile.valid_columns == valid_columns &&           tile.data_type == TileMXScaleCarrierType(primary_type) &&           tile.layout == TileLayout_CUBE_M32 &&           tile.location == TileLocation_Matrix;end;
readonly func TileMatrixLocalBScaleSchemaLegal(    source: TileIndex,    groups: integer {1..65535},    n: integer {1..65535},    primary_type: TileDataType) => booleanbegin    let tile = _Tiles[[source]];    return tile.contents_defined && TileCubeDescriptorLegal(tile) &&           tile.valid_rows == n &&           tile.valid_columns == groups &&           tile.data_type == TileMXScaleCarrierType(primary_type) &&           tile.layout == TileLayout_CUBE_M32 &&           tile.location == TileLocation_Matrix;end;
readonly func TileMatrixLocalBiasSchemaLegal(    source: TileIndex,    n: integer {1..65535},    accumulator_type: TileDataType) => booleanbegin    let tile = _Tiles[[source]];    return TileSourceContentsDefined(source) &&           tile.valid_rows == 1 &&           tile.valid_columns == n &&           tile.data_type == accumulator_type &&           tile.layout == TileLayout_RowMajor;end;
readonly func TileMatrixLocalCScaleSchemaLegal(    source: TileIndex,    m: integer {1..65535}) => booleanbegin    let tile = _Tiles[[source]];    return tile.contents_defined && TileCubeDescriptorLegal(tile) &&           tile.valid_rows == m && tile.valid_columns == 1 &&           tile.data_type == TileDataType_U8 &&           tile.layout == TileLayout_CUBE_M32 &&           tile.location == TileLocation_Matrix;end;
readonly func TileMatrixInfoAccumulatorSchemaLegal(    accumulator: TileIndex,    m: integer {1..65535},    n: integer {1..65535},    result_type: TileDataType,    destination_capacity: integer {0..262144}) => booleanbegin    let tile = _Tiles[[accumulator]];    let output_converted =        UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0;    return TileSourceContentsDefined(accumulator) &&           TileInfoDescriptorLegal(tile) &&           tile.valid_rows == m &&           tile.valid_columns == n &&           tile.data_type == result_type &&           tile.layout == TileLayout_RowMajor &&           tile.location == TileLocation_Matrix &&           (output_converted ||            tile.capacity_bytes == destination_capacity);end;
readonly func BundleMatrixLocalMathematicalSourcesLegal(    function: integer {0..31},    left_type: TileDataType,    right_type: TileDataType,    m: integer {1..65535},    n: integer {1..65535},    k: integer {1..65535},    shared_count: integer {0..4},    accumulator_type: TileDataType,    destination_capacity: integer {0..262144}) => booleanbegin    let left_scale_present = TileMatrixFunctionUsesMX(function) &&        TileMXInputTypeNeedsScale(left_type);    let right_scale_present = TileMatrixFunctionUsesMX(function) &&        TileMXInputTypeNeedsScale(right_type);    let left_scale_groups = if left_scale_present then        TileMXScaleGroupCount(k, left_type) else 1;    let right_scale_groups = if right_scale_present then        TileMXScaleGroupCount(k, right_type) else 1;    var ordinal: integer {0..6} = 0;    let right_group = TileMatrixRightGroupSourceCount(        function, right_type);    let local_left_present = shared_count == 0 ||        shared_count == right_group;    let left_ordinal = if TileMatrixFunctionUsesAccumulator(function)        then 1 else 0;    let local_m_layout = if local_left_present then        _Tiles[[BundleMatrixSourceAt(            left_ordinal as integer {0..8})]].layout        else if TileMatrixFunctionUsesAccumulator(function) then            _Tiles[[BundleMatrixSourceAt(0)]].layout        else TileLayout_RowMajor;
    if TileMatrixFunctionUsesAccumulator(function) then        let accumulator = BundleMatrixSourceAt(            ordinal as integer {0..8});        let accumulator_legal = TileMatrixLocalCubeAccumulatorSchemaLegal(            accumulator, m, n, accumulator_type,            local_m_layout, destination_capacity);        if !accumulator_legal then            return FALSE;        end;        ordinal = (ordinal + 1) as integer {0..6};    end;
    if shared_count == 0 || shared_count == right_group then        let left = BundleMatrixSourceAt(            ordinal as integer {0..8});        let left_legal = TileMatrixLocalMOperandSchemaLegal(            left, m, k, left_type);        if !left_legal then            return FALSE;        end;        ordinal = (ordinal + 1) as integer {0..6};        if left_scale_present then            let left_scale = BundleMatrixSourceAt(                ordinal as integer {0..8});            if !TileMatrixLocalAScaleSchemaLegal(                   left_scale, m, left_scale_groups, left_type) then                return FALSE;            end;            ordinal = (ordinal + 1) as integer {0..6};        end;    end;
    if shared_count == 0 then        let right = BundleMatrixSourceAt(            ordinal as integer {0..8});        let right_legal = TileMatrixLocalNOperandSchemaLegal(            right, k, n, right_type);        if !right_legal then            return FALSE;        end;        ordinal = (ordinal + 1) as integer {0..6};        if right_scale_present then            let right_scale = BundleMatrixSourceAt(                ordinal as integer {0..8});            if !TileMatrixLocalBScaleSchemaLegal(                   right_scale, right_scale_groups, n, right_type) then                return FALSE;            end;            ordinal = (ordinal + 1) as integer {0..6};        end;    end;
    if TileMatrixFunctionUsesBias(function) then        let bias = BundleMatrixSourceAt(            ordinal as integer {0..8});        if !TileMatrixLocalBiasSchemaLegal(               bias, n, accumulator_type) then            return FALSE;        end;        ordinal = (ordinal + 1) as integer {0..6};    end;
    if _BundleFixedPointAttributes.c_scale_en then        let c_scale = BundleMatrixSourceAt(            ordinal as integer {0..8});        if !TileMatrixFunctionAllowsCScale(function) ||           accumulator_type != TileDataType_FP32 ||           !TileMatrixLocalCScaleSchemaLegal(c_scale, m) then            return FALSE;        end;    end;    return TRUE;end;

Architecture behavior

This internal model unit is documented through its normative ASL/NDF owners and validation evidence; it has no reader-guide migration target.

NDF clauses

Bodies come from owning ASL. Dragging or buttons change only this page-session view order.

No NDF clause is attached to this unit.

Evidence index

11 matching entries

Executable evidence3
  • Matrix bias is one accumulator-typed row broadcast across N
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
    3. categoryBOUNDARY
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-MATRIX-BIAS-DESC-001
    Path
    tests/asl/tile/model/legality/matrix-operands/tile-bound-matrix-bias-001.asl
    Kind / role
    boundary
    Pass condition
    a 1 by N FP32 bias passes while an N by 1 descriptor rejects
    SHA-256
    33baf0fffcaf31580daf0bb30667125d8aeaeed27574f8ae4335b7cae8219569
    Open exact source ↗ for PTO-AVS-TILE-MATRIX-BIAS-DESC-001
  • a mathematical Matrix source has exact logical extents type layout and placement
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
    3. categoryBOUNDARY
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-MATRIX-SOURCE-DESC-001
    Path
    tests/asl/tile/model/legality/matrix-operands/tile-bound-matrix-source-001.asl
    Kind / role
    boundary
    Pass condition
    the exact Matrix descriptor passes while Any placement rejects
    SHA-256
    6902b1e3d7c34dd54cf619d4fa28b0925162fdd5f37433eda1b81b95fd030de2
    Open exact source ↗ for PTO-AVS-TILE-MATRIX-SOURCE-DESC-001
  • PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS compiles as an independent normative unit
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-MODEL-LEGALITY-MATRIX-OPERANDS-STATIC-001
    Path
    tests/asl/tile/model/legality/matrix-operands/tile-static-matrix-operands-contract-001.asl
    Kind / role
    static-invariant
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    81b41a816cc965b10b9d4cea59137f01d3f1177d93b6ac53e73deae432a56ea9
    Open exact source ↗ for PTO-AVS-TILE-MODEL-LEGALITY-MATRIX-OPERANDS-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 history3
  • Cooperative Shared CUBE Inputs and Transpose · accepted
    1. decision recordADR
    2. case0072

    Decision record

    Loading ADR-0072…

    Sources and references
    Complete stable ID
    ADR-0072
    Path
    docs/status/decisions/0072-cooperative-shared-cube-transpose.md
    Affected units
    PTO-ARCH-PROFILE-RESET, PTO-BLOCK-B-FPATR, PTO-BLOCK-BSTART-TGEMV-ACC, PTO-BLOCK-BSTART-TGEMV-BIAS, PTO-BLOCK-BSTART-TGEMV, PTO-BLOCK-BSTART-TGEMVMX-ACC, PTO-BLOCK-BSTART-TGEMVMX-BIAS, PTO-BLOCK-BSTART-TGEMVMX, PTO-BLOCK-BSTART-TMATMUL-ACC, PTO-BLOCK-BSTART-TMATMUL-BIAS, PTO-BLOCK-BSTART-TMATMUL, PTO-BLOCK-BSTART-TMATMULMX-ACC, PTO-BLOCK-BSTART-TMATMULMX-BIAS, PTO-BLOCK-BSTART-TMATMULMX, PTO-BLOCK-MODEL-DISPATCH-COMMANDS, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-LIFECYCLE-RESET, PTO-BLOCK-MODEL-SCHEMA-ATTRIBUTES, PTO-BLOCK-MODEL-STATE-DESCRIPTOR-STATE, PTO-BLOCK-MODEL-STATE-TYPES, 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-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-MODEL-LEGALITY-MATRIX-INFO-DESCRIPTOR, PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS, PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE, PTO-TILE-MODEL-STATE-SHARED-REGISTERS
    Affected NDF
    PTO-B-FPATR-MATRIX-POSTPROCESS-001, PTO-CUBE-SHARED-TRANSPOSE-001, PTO-BSTART-TGEMV-ACC-CONTRACT-001, PTO-BSTART-TGEMV-BIAS-CONTRACT-001, PTO-BSTART-TGEMV-CONTRACT-001, PTO-BSTART-TGEMVMX-ACC-CONTRACT-001, PTO-BSTART-TGEMVMX-BIAS-CONTRACT-001, PTO-BSTART-TGEMVMX-CONTRACT-001, PTO-BSTART-TMATMUL-ACC-CONTRACT-001, PTO-BSTART-TMATMUL-BIAS-CONTRACT-001, PTO-BSTART-TMATMUL-CONTRACT-001, PTO-BSTART-TMATMULMX-ACC-CONTRACT-001, PTO-BSTART-TMATMULMX-BIAS-CONTRACT-001, PTO-BSTART-TMATMULMX-CONTRACT-001, PTO-TGEMV-CONTRACT-001, PTO-TGEMV-ACC-CONTRACT-001, PTO-TGEMV-BIAS-CONTRACT-001, PTO-TGEMV-MX-CONTRACT-001, PTO-TGEMV-MX-ACC-CONTRACT-001, PTO-TGEMV-MX-BIAS-CONTRACT-001, PTO-TMATMUL-CONTRACT-001, PTO-TMATMUL-ACC-CONTRACT-001, PTO-TMATMUL-BIAS-CONTRACT-001, PTO-TMATMUL-MX-CONTRACT-001, PTO-TMATMUL-MX-ACC-CONTRACT-001, PTO-TMATMUL-MX-BIAS-CONTRACT-001
    SHA-256
    9bc7340fea777ee543d4b9393f8f6002b55106833e55ff6d388f8beac504dd09
    Open exact decision source ↗ for ADR-0072
  • Cooperative Group-M Distribution and Inactive PE Semantics · accepted
    1. decision recordADR
    2. case0100

    Decision record

    Loading ADR-0100…

    Sources and references
    Complete stable ID
    ADR-0100
    Path
    docs/status/decisions/0100-cooperative-group-m-distribution.md
    Affected units
    PTO-BLOCK-MODEL-DISPATCH-CUBE-DESTINATION, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-DISPATCH-TILE-EXECUTION, PTO-BLOCK-MODEL-OPERANDS-LOCAL-GENERATION, PTO-BLOCK-MODEL-OPERANDS-PORTABLE-CARRIERS, PTO-BLOCK-MODEL-OPERANDS-SUBVIEW-DESCRIPTOR, PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS, PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
    Affected NDF
    PTO-CUBE-GROUP-M-DISTRIBUTION-001, PTO-B-ASSEMBLE-CONSUMER-READINESS-001
    SHA-256
    adcfcca401a69fb4e7635fbe4d65d33b36fb2744b3fbedf6d7862cadbc8e7232
    Open exact decision source ↗ for ADR-0100
  • Matrix Scale Cell Layouts, HiF4 Scale Words, and CScale · accepted
    1. decision recordADR
    2. case0101

    Decision record

    Loading ADR-0101…

    Sources and references
    Complete stable ID
    ADR-0101
    Path
    docs/status/decisions/0101-matrix-scale-and-cscale.md
    Affected units
    PTO-ARCH-DATA-TYPES-FORMAT-HIF4-SCALE, PTO-ARCH-PROFILE-MATRIX-POSTPROCESS, PTO-BLOCK-B-FPATR, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-MATRIX-SCALE, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-SCHEMA-ATTRIBUTES, PTO-BLOCK-MODEL-STATE-TYPES, PTO-TILE-MODEL-EXECUTION-CUBE, PTO-TILE-MODEL-EXECUTION-MATRIX-SCALE, PTO-TILE-MODEL-LEGALITY-MATRIX-FUNCTIONS, PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS, PTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS, PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE, PTO-TILE-MODEL-SHAPE-CUBE-CELL
    Affected NDF
    PTO-B-FPATR-MATRIX-POSTPROCESS-001, PTO-CUBE-CSCALE-001, PTO-CUBE-HIF4-SCALE-001, PTO-CUBE-MATRIX-SCALE-001, PTO-CUBE-MATRIX-SCALE-CELL-001, PTO-CUBE-SHARED-TRANSPOSE-001
    SHA-256
    a5c962437636c0d3f4f3585d3b529fcc9821d4b00c540243c2351978196e9be0
    Open exact decision source ↗ for ADR-0101

Unit metadata

Open 4 generated metadata fields
id
PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
surface
tile
classification
[
  "model",
  "legality",
  "matrix-operands"
]
depends_on
[
  "PTO-TILE-MODEL-LEGALITY-MATRIX-CUBE-PRIMARY",
  "PTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS"
]
Open generated traceability record
{
  "classification": [
    "model",
    "legality",
    "matrix-operands"
  ],
  "documentation": "docs/tile/model/legality/matrix-operands.md",
  "id": "PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS",
  "mnemonic": null,
  "readiness_subjects": [
    "ADR-0072",
    "ADR-0100",
    "ADR-0101"
  ],
  "semantic_tests": [
    "PTO-AVS-TILE-MATRIX-BIAS-DESC-001",
    "PTO-AVS-TILE-MATRIX-SOURCE-DESC-001"
  ],
  "source": "asl/tile/model/legality/matrix-operands.asl",
  "surface": "tile",
  "tests": [
    "PTO-AVS-TILE-MATRIX-BIAS-DESC-001",
    "PTO-AVS-TILE-MATRIX-SOURCE-DESC-001",
    "PTO-AVS-TILE-MODEL-LEGALITY-MATRIX-OPERANDS-STATIC-001"
  ]
}

Sources and release identity

Show commit, paths, hashes, version, and canonical owners
Release
0.58.5 · Release candidate
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
146adbf68a1a5d08588cb7534720641ea89007896f1e5122e7b716c952c65abe
Generated documentation
docs/tile/model/legality/matrix-operands.md · embedded in this page
Documentation SHA-256
38b38d66e61fe83acb06eebc7039ad3f850b06ca6942afa48b44c8b12a1345f6

Exact owners