PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPEASL pseudocode
The complete ASL owner is shown directly below.
// PTO-UNIT: {"id":"PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE","surface":"tile","classification":["model","legality","matrix-shape"],"depends_on":["PTO-TILE-MODEL-LEGALITY-MATRIX-FUNCTIONS","PTO-TILE-MODEL-LEGALITY-MATRIX-INFO-DESCRIPTOR","PTO-TILE-MODEL-LEGALITY-MEMORY-SCHEMA"]}readonly func TileMatrixShapeLegal(left: TileIndex, right: TileIndex) => booleanbegin return BundleTileOperationSelected() && TileMatrixCubeInfosMatchDimensions( _Tiles[[left]], _Tiles[[right]], _Tiles[[left]].valid_rows, _Tiles[[right]].valid_columns, _Tiles[[left]].valid_columns) && _Tiles[[left]].valid_rows * _Tiles[[right]].valid_columns <= PTO_MODEL_TILE_ELEMENTS;end;
pure func TileOrdinaryMatrixInputTypeSupported( data_type: TileDataType) => booleanbegin return data_type == TileDataType_FP32 || data_type == TileDataType_TF32 || data_type == TileDataType_HF32 || data_type == TileDataType_FP16 || data_type == TileDataType_BF16 || data_type == TileDataType_HiF8 || data_type == TileDataType_E4M3 || data_type == TileDataType_E5M2 || data_type == TileDataType_E3M2 || data_type == TileDataType_E2M3 || data_type == TileDataType_E2M1X2 || data_type == TileDataType_E1M2X2 || data_type == TileDataType_S16 || data_type == TileDataType_S8 || data_type == TileDataType_S4X2 || data_type == TileDataType_U16 || data_type == TileDataType_U8 || data_type == TileDataType_U4X2;end;
pure func TileOrdinaryMatrixInputTypesSameClass( left_type: TileDataType, right_type: TileDataType) => booleanbegin if !TileOrdinaryMatrixInputTypeSupported(left_type) || !TileOrdinaryMatrixInputTypeSupported(right_type) then return FALSE; end; return (TileDataTypeIsFloating(left_type) && TileDataTypeIsFloating(right_type)) || (TileDataTypeIsSigned(left_type) && TileDataTypeIsSigned(right_type)) || (TileDataTypeIsUnsignedInteger(left_type) && TileDataTypeIsUnsignedInteger(right_type));end;
pure func TileOrdinaryMatrixAccumulatorType( left_type: TileDataType, right_type: TileDataType) => TileDataTypebegin assert TileOrdinaryMatrixInputTypesSameClass(left_type, right_type); return TileMatrixAccumulatorDataType(left_type);end;
readonly func BundleCubeDimensionValue( dimension: BundleDimensionRegister) => integer {0..65535}begin let index = BundleDimensionIndexOfRegister(dimension); if !_BundleDimensionPresent[[index]] then return 1; end; let raw = UInt(_BundleDimensions[[index]]); if raw <= 65535 then return raw as integer {0..65535}; end; return 0;end;
readonly func BundleTMATMULDimensionsLegal( shared_count: integer {0..4}) => booleanbegin let m = BundleCubeDimensionValue(BundleDimension_LB0); let n = BundleCubeDimensionValue(BundleDimension_LB1); let k = BundleCubeDimensionValue(BundleDimension_LB2); if shared_count == 0 then return m != 0 && n != 0 && k != 0; end; return m >= 1 && m <= 128 && IsNonzeroPowerOfTwo(n) && IsNonzeroPowerOfTwo(k);end;
readonly func TileMatrixInfosMatchDimensions( left: TileInfo, right: TileInfo, m: integer {1..65535}, n: integer {1..65535}, k: integer {1..65535}) => booleanbegin return TileInfoDescriptorLegal(left) && TileInfoDescriptorLegal(right) && IsNonzeroPowerOfTwo(left.rows) && IsNonzeroPowerOfTwo(left.columns) && IsNonzeroPowerOfTwo(right.rows) && IsNonzeroPowerOfTwo(right.columns) && left.valid_rows == m && left.valid_columns == k && right.valid_rows == k && right.valid_columns == n;end;
readonly func TileMatrixInfoShapeLegal(left: TileInfo, right: TileInfo) => booleanbegin return BundleTileOperationSelected() && TileInfoDescriptorLegal(left) && TileInfoDescriptorLegal(right) && IsNonzeroPowerOfTwo(left.valid_rows) && IsNonzeroPowerOfTwo(left.valid_columns) && IsNonzeroPowerOfTwo(right.valid_rows) && IsNonzeroPowerOfTwo(right.valid_columns) && left.valid_columns == right.valid_rows && left.valid_rows * right.valid_columns <= PTO_MODEL_TILE_ELEMENTS;end;
readonly func TileOrdinaryMatrixInfosLegal(left: TileInfo, right: TileInfo) => booleanbegin if !TileMatrixInfoShapeLegal(left, right) then return FALSE; end; let left_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let right_type = if _BundleDataAttributesPresent then TileDataTypeFromEncoding( _BundleDataAttributes.data_type as TileDataTypeEncoding) else left_type; return left.data_type == left_type && right.data_type == right_type && TileOrdinaryMatrixInputTypesSameClass(left_type, right_type);end;
readonly func TileMatrixInfoDestinationLegal(destination: TileIndex, left: TileInfo, right: TileInfo) => booleanbegin if !TileDescriptorLegal(destination) || !TileMatrixInfoShapeLegal(left, right) then return FALSE; end; let left_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let right_type = if _BundleDataAttributesPresent then TileDataTypeFromEncoding( _BundleDataAttributes.data_type as TileDataTypeEncoding) else left_type; if !TileOrdinaryMatrixInputTypesSameClass(left_type, right_type) then return FALSE; end; let accumulator_type = TileOrdinaryMatrixAccumulatorType( left_type, right_type); let expected_destination_type = if _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0 then BundleFPATROutputType(_BundleFixedPointAttributes.pre_quant_mode) else accumulator_type; return _Tiles[[destination]].valid_rows == left.valid_rows && _Tiles[[destination]].valid_columns == right.valid_columns && _Tiles[[destination]].data_type == expected_destination_type;end;
readonly func TileMatrixInfoBiasLegal(left: TileInfo, right: TileInfo, bias: TileIndex, mx: boolean) => booleanbegin if !TileSourceContentsDefined(bias) || _Tiles[[bias]].valid_rows != 1 || _Tiles[[bias]].valid_columns != right.valid_columns || _Tiles[[bias]].layout != TileLayout_RowMajor then return FALSE; end; let left_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let right_type = if _BundleDataAttributesPresent then TileDataTypeFromEncoding( _BundleDataAttributes.data_type as TileDataTypeEncoding) else left_type; let result_type = if mx then TileDataType_FP32 else TileOrdinaryMatrixAccumulatorType(left_type, right_type); return _Tiles[[bias]].data_type == result_type;end;
readonly func TileMatrixInfoAccumulatorLegal(destination: TileIndex, accumulator: TileIndex, left: TileInfo, right: TileInfo) => booleanbegin let output_converted = _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0; let accumulator_type = TileOrdinaryMatrixAccumulatorType( left.data_type, right.data_type); return TileSourceContentsDefined(accumulator) && TileDescriptorLegal(accumulator) && TileMatrixInfoShapeLegal(left, right) && _Tiles[[accumulator]].valid_rows == left.valid_rows && _Tiles[[accumulator]].valid_columns == right.valid_columns && _Tiles[[accumulator]].data_type == accumulator_type && _Tiles[[accumulator]].layout == _Tiles[[destination]].layout && (output_converted || _Tiles[[accumulator]].capacity_bytes == _Tiles[[destination]].capacity_bytes);end;
readonly func TileMatrixInfoOptionalScalesLegal( left: TileInfo, left_scale: TileInfo, left_scale_present: boolean, right: TileInfo, right_scale: TileInfo, right_scale_present: boolean) => booleanbegin let primary_shape_legal = TileMatrixInfoShapeLegal(left, right) || TileMatrixCubeInfosMatchDimensions( left, right, left.valid_rows, right.valid_columns, left.valid_columns) || TileMatrixMixedInfosMatchDimensions( left, right, left.valid_rows, right.valid_columns, left.valid_columns); if !primary_shape_legal then return FALSE; end; let left_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let right_type = if _BundleDataAttributesPresent then TileDataTypeFromEncoding( _BundleDataAttributes.data_type as TileDataTypeEncoding) else left_type; if left.data_type != left_type || right.data_type != right_type || !TileMXOperandPairLegal(left_type, right_type) then return FALSE; end; let left_scale_required = TileMXInputTypeNeedsScale(left_type); let right_scale_required = TileMXInputTypeNeedsScale(right_type); if left_scale_present != left_scale_required || right_scale_present != right_scale_required then return FALSE; end; let left_groups = if left_scale_present then TileMXScaleGroupCount( left.valid_columns as integer {1..65535}, left_type) else 1; let right_groups = if right_scale_present then TileMXScaleGroupCount( left.valid_columns as integer {1..65535}, right_type) else 1; let left_scale_legal = !left_scale_present || (((left_scale.layout == TileLayout_CUBE_M32 && TileCubeDescriptorLegal(left_scale)) || (left_scale.layout == TileLayout_RowMajor && left_scale.location == TileLocation_Any && TileInfoDescriptorLegal(left_scale))) && left_scale.data_type == TileMXScaleCarrierType(left_type) && left_scale.valid_rows == left.valid_rows && left_scale.valid_columns == left_groups); let right_scale_legal = !right_scale_present || (((right_scale.layout == TileLayout_CUBE_M32 && TileCubeDescriptorLegal(right_scale) && right_scale.valid_rows == right.valid_columns && right_scale.valid_columns == right_groups) || (right_scale.layout == TileLayout_RowMajor && right_scale.location == TileLocation_Any && TileInfoDescriptorLegal(right_scale) && right_scale.valid_rows == right_groups && right_scale.valid_columns == right.valid_columns)) && right_scale.data_type == TileMXScaleCarrierType(right_type)); return left_scale_legal && right_scale_legal;end;
readonly func TileMatrixInfoScalesLegal(left: TileInfo, left_scale: TileInfo, right: TileInfo, right_scale: TileInfo) => booleanbegin return TileMatrixInfoOptionalScalesLegal( left, left_scale, TRUE, right, right_scale, TRUE);end;
readonly func TileOrdinaryMatrixOperandsLegal(left: TileIndex, right: TileIndex) => booleanbegin if !TileMatrixShapeLegal(left, right) then return FALSE; end; let left_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let right_type = if _BundleDataAttributesPresent then TileDataTypeFromEncoding( _BundleDataAttributes.data_type as TileDataTypeEncoding) else left_type; return _Tiles[[left]].data_type == left_type && _Tiles[[right]].data_type == right_type && TileOrdinaryMatrixInputTypesSameClass(left_type, right_type);end;
readonly func TileMXMatrixOperandsLegal(left: TileIndex, right: TileIndex) => booleanbegin if !TileMatrixShapeLegal(left, right) then return FALSE; end; let left_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let right_type = if _BundleDataAttributesPresent then TileDataTypeFromEncoding( _BundleDataAttributes.data_type as TileDataTypeEncoding) else left_type; return _Tiles[[left]].data_type == left_type && _Tiles[[right]].data_type == right_type && TileMXOperandPairLegal(left_type, right_type);end;
readonly func TileMatrixBiasShapeLegal(left: TileIndex, right: TileIndex, bias: TileIndex) => booleanbegin return TileSourceContentsDefined(bias) && _Tiles[[bias]].valid_rows == 1 && _Tiles[[bias]].valid_columns == _Tiles[[right]].valid_columns && _Tiles[[bias]].layout == TileLayout_RowMajor;end;
readonly func TileOrdinaryMatrixBiasLegal(left: TileIndex, right: TileIndex, bias: TileIndex) => booleanbegin let left_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let right_type = if _BundleDataAttributesPresent then TileDataTypeFromEncoding( _BundleDataAttributes.data_type as TileDataTypeEncoding) else left_type; return TileOrdinaryMatrixOperandsLegal(left, right) && TileMatrixBiasShapeLegal(left, right, bias) && _Tiles[[bias]].data_type == TileOrdinaryMatrixAccumulatorType( left_type, right_type);end;
readonly func TileMXMatrixBiasLegal(left: TileIndex, right: TileIndex, bias: TileIndex) => booleanbegin return TileMXMatrixOperandsLegal(left, right) && TileMatrixBiasShapeLegal(left, right, bias) && _Tiles[[bias]].data_type == TileDataType_FP32;end;
readonly func TileMatrixScaleLegal(left: TileIndex, right: TileIndex, left_scale: TileIndex, right_scale: TileIndex) => booleanbegin if !TileMXMatrixOperandsLegal(left, right) then return FALSE; end; let left_scale_present = TileMXInputTypeNeedsScale(_Tiles[[left]].data_type); let right_scale_present = TileMXInputTypeNeedsScale(_Tiles[[right]].data_type); return TileMatrixInfoOptionalScalesLegal( _Tiles[[left]], _Tiles[[left_scale]], left_scale_present, _Tiles[[right]], _Tiles[[right_scale]], right_scale_present);end;
readonly func TileMatrixDestinationLegal(destination: TileIndex, left: TileIndex, right: TileIndex) => booleanbegin if !TileCubeDescriptorLegal(_Tiles[[destination]]) || !TileMatrixShapeLegal(left, right) then return FALSE; end; let left_type = TileDataTypeFromEncoding( CurrentBundleTileOperationDataTypeCode() as TileDataTypeEncoding); let right_type = if _BundleDataAttributesPresent then TileDataTypeFromEncoding( _BundleDataAttributes.data_type as TileDataTypeEncoding) else left_type; if !TileOrdinaryMatrixInputTypesSameClass(left_type, right_type) then return FALSE; end; let accumulator_type = TileOrdinaryMatrixAccumulatorType( left_type, right_type); let expected_destination_type = if _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0 then BundleFPATROutputType(_BundleFixedPointAttributes.pre_quant_mode) else accumulator_type; return _Tiles[[destination]].valid_rows == _Tiles[[left]].valid_rows && _Tiles[[destination]].valid_columns == _Tiles[[right]].valid_columns && _Tiles[[destination]].data_type == expected_destination_type && _Tiles[[destination]].layout == _Tiles[[left]].layout;end;
readonly func TileMatrixAccumulatorDestinationLegal(destination: TileIndex, left: TileIndex, right: TileIndex) => booleanbegin if !TileCubeDescriptorLegal(_Tiles[[destination]]) || !TileMatrixShapeLegal(left, right) then return FALSE; end; let accumulator_type = TileOrdinaryMatrixAccumulatorType( _Tiles[[left]].data_type, _Tiles[[right]].data_type); return _Tiles[[destination]].valid_rows == _Tiles[[left]].valid_rows && _Tiles[[destination]].valid_columns == _Tiles[[right]].valid_columns && _Tiles[[destination]].data_type == accumulator_type && _Tiles[[destination]].layout == _Tiles[[left]].layout;end;
readonly func TileOperandsLegal_TMATMUL( destination: TileIndex, left: TileIndex, right: TileIndex) => booleanbegin return TileOrdinaryMatrixOperandsLegal(left, right) && TileMatrixDestinationLegal(destination, left, right);end;
readonly func TileOperandsLegal_TMATMUL_BIAS( destination: TileIndex, left: TileIndex, right: TileIndex, bias: TileIndex) => booleanbegin return TileOperandsLegal_TMATMUL(destination, left, right) && TileOrdinaryMatrixBiasLegal(left, right, bias);end;
readonly func TileOperandsLegal_TMATMUL_ACC( destination: TileIndex, accumulator: TileIndex, left: TileIndex, right: TileIndex) => booleanbegin let output_converted = _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0; return destination != accumulator && TileOperandsLegal_TMATMUL(destination, left, right) && TileCubeDescriptorLegal(_Tiles[[accumulator]]) && _Tiles[[accumulator]].contents_defined && TileMatrixAccumulatorDestinationLegal(accumulator, left, right) && _Tiles[[accumulator]].layout == _Tiles[[destination]].layout && (output_converted || _Tiles[[accumulator]].capacity_bytes == _Tiles[[destination]].capacity_bytes);end;
readonly func TileOperandsLegal_TMATMUL_MX( destination: TileIndex, left: TileIndex, left_scale: TileIndex, right: TileIndex, right_scale: TileIndex) => booleanbegin return TileMatrixScaleLegal(left, right, left_scale, right_scale) && TileMatrixDestinationLegal(destination, left, right);end;
readonly func TileOperandsLegal_TMATMUL_MX_BIAS( destination: TileIndex, left: TileIndex, left_scale: TileIndex, right: TileIndex, right_scale: TileIndex, bias: TileIndex) => booleanbegin return TileOperandsLegal_TMATMUL_MX( destination, left, left_scale, right, right_scale) && TileMXMatrixBiasLegal(left, right, bias);end;
readonly func TileOperandsLegal_TMATMUL_MX_ACC( destination: TileIndex, accumulator: TileIndex, left: TileIndex, left_scale: TileIndex, right: TileIndex, right_scale: TileIndex) => booleanbegin let output_converted = _BundleFixedPointAttributes.valid && UInt(_BundleFixedPointAttributes.pre_quant_mode) != 0; return destination != accumulator && TileOperandsLegal_TMATMUL_MX( destination, left, left_scale, right, right_scale) && TileCubeDescriptorLegal(_Tiles[[accumulator]]) && _Tiles[[accumulator]].contents_defined && TileMatrixAccumulatorDestinationLegal(accumulator, left, right) && _Tiles[[accumulator]].layout == _Tiles[[destination]].layout && (output_converted || _Tiles[[accumulator]].capacity_bytes == _Tiles[[destination]].capacity_bytes);end;
readonly func TileOperandsLegal_TGEMV( destination: TileIndex, left_vector: TileIndex, right_matrix: TileIndex) => booleanbegin return TileOperandsLegal_TMATMUL( destination, left_vector, right_matrix) && _Tiles[[left_vector]].valid_rows == 1;end;
readonly func TileOperandsLegal_TGEMV_BIAS( destination: TileIndex, left_vector: TileIndex, right_matrix: TileIndex, bias: TileIndex) => booleanbegin return TileOperandsLegal_TGEMV( destination, left_vector, right_matrix) && TileOrdinaryMatrixBiasLegal(left_vector, right_matrix, bias);end;
readonly func TileOperandsLegal_TGEMV_ACC( destination: TileIndex, accumulator: TileIndex, left_vector: TileIndex, right_matrix: TileIndex) => booleanbegin return TileOperandsLegal_TMATMUL_ACC( destination, accumulator, left_vector, right_matrix) && _Tiles[[left_vector]].valid_rows == 1;end;
readonly func TileOperandsLegal_TGEMV_MX( destination: TileIndex, left_vector: TileIndex, left_scale: TileIndex, right_matrix: TileIndex, right_scale: TileIndex) => booleanbegin return TileOperandsLegal_TMATMUL_MX( destination, left_vector, left_scale, right_matrix, right_scale) && _Tiles[[left_vector]].valid_rows == 1;end;
readonly func TileOperandsLegal_TGEMV_MX_BIAS( destination: TileIndex, left_vector: TileIndex, left_scale: TileIndex, right_matrix: TileIndex, right_scale: TileIndex, bias: TileIndex) => booleanbegin return TileOperandsLegal_TGEMV_MX( destination, left_vector, left_scale, right_matrix, right_scale) && TileMXMatrixBiasLegal(left_vector, right_matrix, bias);end;
readonly func TileOperandsLegal_TGEMV_MX_ACC( destination: TileIndex, accumulator: TileIndex, left_vector: TileIndex, left_scale: TileIndex, right_matrix: TileIndex, right_scale: TileIndex) => booleanbegin return TileOperandsLegal_TMATMUL_MX_ACC(destination, accumulator, left_vector, left_scale, right_matrix, right_scale) && _Tiles[[left_vector]].valid_rows == 1;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
12 matching entries
Executable evidence3
PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE compiles as an independent normative unit
- surfaceTILE
- ownerPTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
- categorySTATIC-INVARIANT
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-TILE-MODEL-LEGALITY-MATRIX-SHAPE-STATIC-001- Path
tests/asl/tile/model/legality/matrix-shape/tile-static-matrix-shape-contract-001.asl- Kind / role
- static-invariant
- Pass condition
- the complete model and this unit's static invariant compile
- SHA-256
8b8b0332ed905744f10b06a47279ddf399f49d4c55e6aa29cbae9dced9d3b0de
Covers Matrix Numeric Contract Legality.
- surfaceTILE
- ownerPTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
- categoryBOUNDARY
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-TILE-TESTMATRIXNUMERICCONTRACTLEGALITY-BOUNDARY-001- Path
tests/asl/tile/model/legality/matrix-shape/tile-bound-numeric-contract-legality-001.asl- Kind / role
- boundary
- Pass condition
- TestMatrixNumericContractLegality completes without assertion failure
- SHA-256
d4d9b5031c8aa7a489d4f27b32048beeb7373fac00f8e51de2eb6393e52fb4c8
Covers Matrix Physical Accumulator Classes.
- surfaceTILE
- ownerPTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
- categoryEXECUTION
- case001
Show exact test source
Sources and references
- Complete stable ID
PTO-AVS-TILE-TESTMATRIXPHYSICALACCUMULATORCLASSES-EXECUTION-001- Path
tests/asl/tile/model/legality/matrix-shape/tile-exec-physical-accumulator-classes-001.asl- Kind / role
- execution
- Pass condition
- TestMatrixPhysicalAccumulatorClasses completes without assertion failure
- SHA-256
df3babc5baee2dd58ee1d77ac539a64c852ae0e9c1c8eb885735b0a7d53f11d4
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 history4
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
CUBE Accumulator and Atomic Output Contract · accepted
- decision recordADR
- case0073
Decision record
Loading ADR-0073…
Sources and references
- Complete stable ID
ADR-0073- Path
docs/status/decisions/0073-cube-accumulator-atomic-output.md- Affected units
- PTO-BLOCK-BSTART-TGEMV-ACC, PTO-BLOCK-BSTART-TGEMVMX-ACC, PTO-BLOCK-BSTART-TMATMUL-ACC, PTO-BLOCK-BSTART-TMATMULMX-ACC, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-OPERANDS-TILE-BINDINGS, PTO-TILE-TMATMUL-ACC, PTO-TILE-TMATMUL-MX-ACC, PTO-TILE-TGEMV-ACC, PTO-TILE-TGEMV-MX-ACC, PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
- Affected NDF
- PTO-CUBE-ACCUMULATOR-OUTPUT-001, PTO-BSTART-TGEMV-ACC-CONTRACT-001, PTO-BSTART-TGEMVMX-ACC-CONTRACT-001, PTO-BSTART-TMATMUL-ACC-CONTRACT-001, PTO-BSTART-TMATMULMX-ACC-CONTRACT-001, PTO-TGEMV-ACC-CONTRACT-001, PTO-TGEMV-MX-ACC-CONTRACT-001, PTO-TMATMUL-ACC-CONTRACT-001, PTO-TMATMUL-MX-ACC-CONTRACT-001
- SHA-256
d63ba89014fe901b5055fc38bbd5578aa1b571c1038321a903f20cc6e9756fef
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-shape"
],
"documentation": "docs/tile/model/legality/matrix-shape.md",
"id": "PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE",
"mnemonic": null,
"readiness_subjects": [
"ADR-0072",
"ADR-0073",
"ADR-0100",
"ADR-0101"
],
"semantic_tests": [
"PTO-AVS-TILE-TESTMATRIXNUMERICCONTRACTLEGALITY-BOUNDARY-001",
"PTO-AVS-TILE-TESTMATRIXPHYSICALACCUMULATORCLASSES-EXECUTION-001"
],
"source": "asl/tile/model/legality/matrix-shape.asl",
"surface": "tile",
"tests": [
"PTO-AVS-TILE-MODEL-LEGALITY-MATRIX-SHAPE-STATIC-001",
"PTO-AVS-TILE-TESTMATRIXNUMERICCONTRACTLEGALITY-BOUNDARY-001",
"PTO-AVS-TILE-TESTMATRIXPHYSICALACCUMULATORCLASSES-EXECUTION-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-shape.asl
- ASL SHA-256
de080a69a6b193f3748d33f3a4b989ce2b724fe69864cbc21957b8864b1e4c2e- Generated documentation
- docs/tile/model/legality/matrix-shape.md · embedded in this page
- Documentation SHA-256
6aab9e2c122ddf23dd374d600a23878d5134d95643fbcd96099fa7ae11d96ae2
Exact owners
- ASL PTO-TILE-MODEL-LEGALITY-MATRIX-SHAPE
asl/tile/model/legality/matrix-shape.asl