PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDSASL 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
- surfaceTILE
- ownerPTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
- categoryBOUNDARY
- 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
a mathematical Matrix source has exact logical extents type layout and placement
- surfaceTILE
- ownerPTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
- categoryBOUNDARY
- 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
PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS compiles as an independent normative unit
- surfaceTILE
- ownerPTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
- categorySTATIC-INVARIANT
- 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
Commit-scoped evidence5
spec/evidence/release-traceability-readiness.json · closed
PTO-EVIDENCE-RELEASE-TRACEABILITYSources 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
spec/evidence/instruction-contract-closure.json · closed
PTO-EVIDENCE-INSTRUCTION-CONTRACT-CLOSURESources 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
spec/evidence/architecture-readiness.json · open
PTO-EVIDENCE-ARCHITECTURE-READINESSSources and references
- Complete stable ID
PTO-EVIDENCE-ARCHITECTURE-READINESS- Path
spec/evidence/architecture-readiness.json- Kind / role
- architecture maturity and blockers
- SHA-256
4b0b85199101251bea744e0f3591cc31906909dc80d5ab651c417a936036a004
spec/evidence/release-gate-readiness.json · ready-for-exact-head-verification
PTO-EVIDENCE-RELEASE-GATE-READINESSSources 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
spec/release-manifest.json · draft
PTO-EVIDENCE-RELEASE-MANIFESTSources and references
- Complete stable ID
PTO-EVIDENCE-RELEASE-MANIFEST- Path
spec/release-manifest.json- Kind / role
- release content and encoding fingerprints
- SHA-256
1a64c109ed7a90351c41e2a418b3c0ebaf8ad975838986d2101385186b85c0d8
Decision history3
Cooperative Shared CUBE Inputs and Transpose · accepted
- decision recordADR
- 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
Cooperative Group-M Distribution and Inactive PE Semantics · accepted
- decision recordADR
- 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
Matrix Scale Cell Layouts, HiF4 Scale Words, and CScale · accepted
- decision recordADR
- 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
Unit metadata
Open 4 generated metadata fields
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- Original ASL
- asl/tile/model/legality/matrix-operands.asl
- ASL SHA-256
146adbf68a1a5d08588cb7534720641ea89007896f1e5122e7b716c952c65abe- Generated documentation
- docs/tile/model/legality/matrix-operands.md · embedded in this page
- Documentation SHA-256
38b38d66e61fe83acb06eebc7039ad3f850b06ca6942afa48b44c8b12a1345f6
Exact owners
- ASL PTO-TILE-MODEL-LEGALITY-MATRIX-OPERANDS
asl/tile/model/legality/matrix-operands.asl