Skip to main content

PTO-TILE-MODEL-DEFINEDNESS-ELEMENTS

PTO-TILE-MODEL-DEFINEDNESS-ELEMENTS

ASL pseudocode

The complete ASL owner is shown directly below.

// PTO-UNIT: {"id":"PTO-TILE-MODEL-DEFINEDNESS-ELEMENTS","surface":"tile","classification":["model","definedness","elements"],"depends_on":["PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES","PTO-TILE-MODEL-STATE-ALLOCATION","PTO-TILE-MODEL-DEFINEDNESS-PACKED-BOUNDARY"]}pure func TileFractalInnerElements(    data_type: TileDataType) => integer {4,8,16,32,64}begin    // PTO fractals contain 16 rows by 32 bytes.  Packed X2 formats therefore    // carry 64 independently addressed logical nibbles in each fractal row.    return (256 DIV TileElementBits(data_type))        as integer {4,8,16,32,64};end;readonly func TileLayoutShapeLegal(tile: TileInfo) => booleanbegin    if tile.layout == TileLayout_ImplementationDefined then return FALSE; end;    if tile.layout == TileLayout_RowMajor ||       tile.layout == TileLayout_ColumnMajor then        return TRUE;    end;    let inner_elements = TileFractalInnerElements(tile.data_type);    return tile.rows MOD 16 == 0 &&           tile.columns MOD inner_elements == 0;end;readonly func TileGenericIndexingPermitted(tile: TileInfo) => booleanbegin    return !TileLayoutIsCube(tile.layout) && TileLayoutShapeLegal(tile);end;readonly func TileLinearIndex(tile: TileInfo, row: integer {0..65535},                     column: integer {0..65535}) => ModelTileElementIndexbegin    assert row < tile.rows;    assert column < tile.columns;    assert TileGenericIndexingPermitted(tile);    var index: integer = 0;    if tile.layout == TileLayout_RowMajor then        index = row * tile.columns + column;    elsif tile.layout == TileLayout_ColumnMajor then        index = column * tile.rows + row;    else        let inner_elements = TileFractalInnerElements(tile.data_type);        let block_rows: integer {0..65535} =            (tile.rows DIVRM 16) as integer {0..65535};        let block_columns: integer {0..65535} =            (tile.columns DIVRM inner_elements) as integer {0..65535};        let block_row: integer {0..65535} =            (row DIVRM 16) as integer {0..65535};        let block_column: integer {0..65535} =            (column DIVRM inner_elements) as integer {0..65535};        let inner_row: integer {0..15} =            (row MOD 16) as integer {0..15};        let inner_column: integer {0..63} =            (column MOD inner_elements) as integer {0..63};        let block_elements: integer {64..1024} =            (16 * inner_elements) as integer {64..1024};        if tile.layout == TileLayout_ZN then            index = (block_row * block_columns + block_column) *                    block_elements + inner_column * 16 + inner_row;        else            assert tile.layout == TileLayout_NZ;            index = (block_column * block_rows + block_row) *                    block_elements + inner_row * inner_elements +                    inner_column;        end;    end;    assert index < PTO_MODEL_TILE_ELEMENTS;    return index as ModelTileElementIndex;end;readonly func TileStorageIndex(tile: TileInfo,                               row: integer {0..65535},                               column: integer {0..65535})    => ModelTileElementIndexbegin    if !TileLayoutIsCube(tile.layout) then        return TileLinearIndex(tile, row, column);    end;    assert TileCubeDescriptorShapeLegal(tile.capacity_bytes,        tile.valid_rows, tile.valid_columns, tile.data_type, tile.layout);    assert tile.rows == TileCubeStorageRows(        tile.layout, tile.valid_rows, tile.data_type);    assert tile.columns == TileCubeStorageColumns(        tile.layout, tile.valid_columns, tile.data_type);    assert tile.cube_k_repeat == TileCubeKRepeat(tile.layout,        tile.valid_rows, tile.valid_columns, tile.data_type);    assert tile.cube_n_repeat == TileCubeNRepeat(tile.layout,        tile.valid_rows, tile.valid_columns, tile.data_type);    assert tile.cube_cell_count == TileCubeCellCount(tile.layout,        tile.valid_rows, tile.valid_columns, tile.data_type);    assert tile.cube_storage_bytes == TileCubeRequiredBytes(tile.layout,        tile.valid_rows, tile.valid_columns, tile.data_type);    return TileCubePayloadIndex(tile, row, column);end;
readonly func TileLogicalLinearIndex(tile: TileInfo,                                     row: integer {0..65535},                                     column: integer {0..65535})                                     => PackedTileElementIndexbegin    if TileUsesPackedCarrierRepresentation(tile) then        return TilePackedLinearIndex(tile, row, column);    end;    return TileStorageIndex(tile, row, column) as PackedTileElementIndex;end;pure func TileElementBytes(data_type: TileDataType) => integer {1,2,4,8}begin    case data_type of        when TileDataType_S8, TileDataType_U8, TileDataType_HiF8,             TileDataType_E4M3, TileDataType_E5M2, TileDataType_E3M2,             TileDataType_E2M3, TileDataType_E2M1X2,             TileDataType_E1M2X2, TileDataType_E8M0,             TileDataType_HiF4X2, TileDataType_S4X2,             TileDataType_U4X2 => return 1;        when TileDataType_S16, TileDataType_U16,             TileDataType_FP16, TileDataType_BF16 => return 2;        when TileDataType_S32, TileDataType_U32, TileDataType_FP32,             TileDataType_TF32, TileDataType_HF32 => return 4;        when TileDataType_S64, TileDataType_U64,             TileDataType_FP64 => return 8;    end;end;pure func TileDataTypeIsSigned(data_type: TileDataType) => booleanbegin    return data_type == TileDataType_S8 || data_type == TileDataType_S16 ||           data_type == TileDataType_S32 || data_type == TileDataType_S64 ||           data_type == TileDataType_S4X2;end;pure func TileDataTypeIsUnsignedInteger(data_type: TileDataType) => booleanbegin    return data_type == TileDataType_U8 || data_type == TileDataType_U16 ||           data_type == TileDataType_U32 || data_type == TileDataType_U64 ||           data_type == TileDataType_U4X2;end;pure func TileDataTypeIsInteger(data_type: TileDataType) => booleanbegin    return TileDataTypeIsSigned(data_type) ||           TileDataTypeIsUnsignedInteger(data_type);end;pure func IndexedTLSUTransferDataTypeLegal(    data_type: TileDataType) => booleanbegin    // Indexed TLSU addresses are byte displacements. A packed four-bit    // transfer would additionally need a low/high-nibble selector, which the    // block schema does not encode. IndexTile legality is governed separately    // by IndexedTLSUIndexDataTypeLegal.    return !TileDataTypeIsFourBit(data_type);end;pure func IndexedTLSUIndexDataTypeLegal(    data_type: TileDataType) => booleanbegin    return TileDataTypeIsInteger(data_type);end;pure func TileDataTypeIsFloating(data_type: TileDataType) => booleanbegin    return data_type == TileDataType_FP64 ||           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_E8M0 ||           data_type == TileDataType_HiF4X2;end;pure func TileMatrixAccumulatorDataType(data_type: TileDataType) => TileDataTypebegin    if TileDataTypeIsSigned(data_type) then return TileDataType_S32; end;    if TileDataTypeIsUnsignedInteger(data_type) then        return TileDataType_U32;    end;    return TileDataType_FP32;end;pure func TilePadValueForDataType(pad_value: TilePadValue,                                  data_type: TileDataType) => Wordbegin    if pad_value == TilePad_Zero || pad_value == TilePad_Null then        return Zeros{PTO_XLEN};    end;    if pad_value == TilePad_Max then        case data_type of            when TileDataType_FP64 =>                return Zeros{PTO_XLEN} + 0x7fefffffffffffff;            when TileDataType_FP32 =>                return Zeros{PTO_XLEN} + 0x7f7fffff;            when TileDataType_TF32 =>                return Zeros{PTO_XLEN} + 0x7f7fe000;            when TileDataType_HF32 =>                return Zeros{PTO_XLEN} + 0x7f7ff000;            when TileDataType_FP16 =>                return Zeros{PTO_XLEN} + 0x7bff;            when TileDataType_BF16 =>                return Zeros{PTO_XLEN} + 0x7f7f;            when TileDataType_E4M3 =>                return Zeros{PTO_XLEN} + 0x7e;            when TileDataType_E5M2 =>                return Zeros{PTO_XLEN} + 0x7b;            when TileDataType_U8 => return Zeros{PTO_XLEN} + 0xff;            when TileDataType_U16 => return Zeros{PTO_XLEN} + 0xffff;            when TileDataType_U32 => return Zeros{PTO_XLEN} + 0xffffffff;            when TileDataType_U64 => return Ones{PTO_XLEN};            when TileDataType_S8 => return Zeros{PTO_XLEN} + 0x7f;            when TileDataType_S16 => return Zeros{PTO_XLEN} + 0x7fff;            when TileDataType_S32 => return Zeros{PTO_XLEN} + 0x7fffffff;            when TileDataType_S64 =>                return Zeros{PTO_XLEN} + 0x7fffffffffffffff;            otherwise => return Ones{PTO_XLEN};        end;    end;    case data_type of        when TileDataType_FP64 =>            return Zeros{PTO_XLEN} + 0xffefffffffffffff;        when TileDataType_FP32 =>            return Zeros{PTO_XLEN} + 0xff7fffff;        when TileDataType_TF32 =>            return Zeros{PTO_XLEN} + 0xff7fe000;        when TileDataType_HF32 =>            return Zeros{PTO_XLEN} + 0xff7ff000;        when TileDataType_FP16 =>            return Zeros{PTO_XLEN} + 0xfbff;        when TileDataType_BF16 =>            return Zeros{PTO_XLEN} + 0xff7f;        when TileDataType_E4M3 =>            return Zeros{PTO_XLEN} + 0xfe;        when TileDataType_E5M2 =>            return Zeros{PTO_XLEN} + 0xfb;        when TileDataType_U8, TileDataType_U16, TileDataType_U32,             TileDataType_U64, TileDataType_U4X2 => return Zeros{PTO_XLEN};        when TileDataType_S8 => return Zeros{PTO_XLEN} + 0x80;        when TileDataType_S16 => return Zeros{PTO_XLEN} + 0x8000;        when TileDataType_S32 => return Zeros{PTO_XLEN} + 0x80000000;        when TileDataType_S64 => return Zeros{PTO_XLEN} + 0x8000000000000000;        otherwise => return Zeros{PTO_XLEN} + 0x8000000000000000;    end;end;
readonly func ReadTileElement(index: TileIndex, row: integer {0..65535},                     column: integer {0..65535}) => Wordbegin    let tile = _Tiles[[index]];    let element = TileLogicalLinearIndex(tile, row, column);    assert TileLogicalElementDefined(tile, element);    return TileReadLogicalElement(tile, element);end;
readonly func TileElementDefined(index: TileIndex,                                 row: integer {0..65535},                                 column: integer {0..65535}) => booleanbegin    let tile = _Tiles[[index]];    let element = TileLogicalLinearIndex(tile, row, column);    return TileLogicalElementDefined(tile, element);end;
readonly func TilePredicateValuesLegal(index: TileIndex) => booleanbegin    return TileSourceContentsDefined(index) &&           _Tiles[[index]].storage_kind == TileStorage_Predicate;end;
readonly func TilePredicateLogicalIndex(    tile: TileInfo,    row: integer {0..65535},    column: integer {0..65535}) => integer {0..16383}begin    assert tile.storage_kind == TileStorage_Predicate;    assert row < tile.rows && column < tile.columns;    return (row * tile.columns + column) as integer {0..16383};end;
pure func TilePredicateByteIndex(    logical_index: integer {0..16383}) => integer {0..2047}begin    return (logical_index DIVRM 8) as integer {0..2047};end;
pure func TilePredicateBitIndex(    logical_index: integer {0..16383}) => integer {0..7}begin    return (logical_index MOD 8) as integer {0..7};end;
readonly func TilePredicateBitFromInfo(    tile: TileInfo,    row: integer {0..65535},    column: integer {0..65535}) => booleanbegin    let logical = TilePredicateLogicalIndex(tile, row, column);    let byte_index = TilePredicateByteIndex(logical);    let bit_index = TilePredicateBitIndex(logical);    return tile.payload[[byte_index]][bit_index] == '1';end;
func TileInfoWithPredicateBit(    tile: TileInfo,    row: integer {0..65535},    column: integer {0..65535},    value: boolean) => TileInfobegin    var result = tile;    let logical = TilePredicateLogicalIndex(result, row, column);    let byte_index = TilePredicateByteIndex(logical);    let bit_index = TilePredicateBitIndex(logical);    result.payload[[byte_index]][bit_index] = if value then '1' else '0';    if result.defined_elements[logical] == '0' then        result.defined_elements[logical] = '1';        result.defined_valid_elements =            (result.defined_valid_elements + 1) as integer {0..524288};    end;    result.contents_defined = result.defined_valid_elements ==        result.valid_rows * result.valid_columns;    return result;end;
func WriteTilePredicateBit(    index: TileIndex,    row: integer {0..65535},    column: integer {0..65535},    value: boolean)begin    assert row < _Tiles[[index]].valid_rows;    assert column < _Tiles[[index]].valid_columns;    _Tiles[[index]] = TileInfoWithPredicateBit(        _Tiles[[index]], row, column, value);end;
readonly func TilePredicateBitDefined(    index: TileIndex,    row: integer {0..65535},    column: integer {0..65535}) => booleanbegin    let logical = TilePredicateLogicalIndex(_Tiles[[index]], row, column);    return _Tiles[[index]].defined_elements[logical] == '1';end;
readonly func ReadTilePredicateBit(    index: TileIndex,    row: integer {0..65535},    column: integer {0..65535}) => booleanbegin    assert TilePredicateBitDefined(index, row, column);    return TilePredicateBitFromInfo(_Tiles[[index]], row, column);end;
readonly func ReadTilePredicateByte(    index: TileIndex,    byte_index: integer {0..2047}) => bits(8)begin    assert _Tiles[[index]].storage_kind == TileStorage_Predicate;    return _Tiles[[index]].payload[[byte_index]][7:0];end;
func PredicateTileWithPadding(    tile: TileInfo,    pad_value: TilePadValue) => TileInfobegin    var result = tile;    assert result.storage_kind == TileStorage_Predicate;    let padding_defined = pad_value != TilePad_Null;    let padding_value = pad_value == TilePad_Max;    for row = 0 to result.rows - 1 looplimit 65536 do        for column = 0 to result.columns - 1 looplimit 65536 do            if row >= result.valid_rows || column >= result.valid_columns then                let logical = TilePredicateLogicalIndex(                    result,                    row as integer {0..65535},                    column as integer {0..65535});                let byte_index = TilePredicateByteIndex(logical);                let bit_index = TilePredicateBitIndex(logical);                result.payload[[byte_index]][bit_index] =                    if padding_value then '1' else '0';                result.defined_elements[logical] =                    if padding_defined then '1' else '0';            end;        end;    end;    return result;end;
func ApplyPredicateTilePadding(index: TileIndex, pad_value: TilePadValue)begin    _Tiles[[index]] = PredicateTileWithPadding(        _Tiles[[index]], pad_value);end;
readonly func TileSourceEncodingsValid(index: TileIndex) => booleanbegin    if !TileSourceContentsDefined(index) ||       !TileGenericIndexingPermitted(_Tiles[[index]]) then        return FALSE;    end;
    let tile = _Tiles[[index]];    let payload = tile.payload;    for row = 0 to tile.valid_rows - 1 looplimit 65536 do        for column = 0 to tile.valid_columns - 1 looplimit 65536 do            let element = TileLogicalLinearIndex(                tile, row as integer {0..65535},                column as integer {0..65535});            if !TileNumericEncodingValid(                tile.data_type,                TileReadLogicalElement(tile, element)) then                return FALSE;            end;        end;    end;    return TRUE;end;
func WriteTileElement(index: TileIndex, row: integer {0..65535},                      column: integer {0..65535}, value: Word)begin    let tile = _Tiles[[index]];    let element = TileLogicalLinearIndex(tile, row, column);    let was_defined = TileLogicalElementDefined(tile, element);    _Tiles[[index]] = TileInfoWithLogicalElement(tile, element, value);    if !was_defined then        if row < _Tiles[[index]].valid_rows &&           column < _Tiles[[index]].valid_columns then            assert _Tiles[[index]].defined_valid_elements < 524288;            _Tiles[[index]].defined_valid_elements =                (_Tiles[[index]].defined_valid_elements + 1)                    as integer {0..524288};        end;    end;    _Tiles[[index]].contents_defined =        _Tiles[[index]].defined_valid_elements ==            _Tiles[[index]].valid_rows * _Tiles[[index]].valid_columns;end;
func TileWithValidRegionDefined(tile: TileInfo) => TileInfobegin    var result = tile;    for row = 0 to result.valid_rows - 1 looplimit 524288 do        for column = 0 to result.valid_columns - 1 looplimit 65536 do            let element = TileLogicalLinearIndex(                result, row as integer {0..65535},                column as integer {0..65535});            result = TileInfoWithLogicalElement(result, element,                TileReadLogicalElement(result, element));        end;    end;    result.defined_valid_elements =        (result.valid_rows * result.valid_columns)            as integer {0..524288};    result.contents_defined = TRUE;    return result;end;
func MarkTileValidRegionDefined(index: TileIndex)begin    _Tiles[[index]] = TileWithValidRegionDefined(_Tiles[[index]]);end;
func TileWithPadding(tile: TileInfo, pad_value: TilePadValue) => TileInfobegin    var result = tile;    let padding_defined = pad_value != TilePad_Null;    let padding = TilePadValueForDataType(pad_value, result.data_type);    for row = 0 to result.rows - 1 looplimit 65536 do        for column = 0 to result.columns - 1 looplimit 65536 do            if row >= result.valid_rows || column >= result.valid_columns then                let element = TileLogicalLinearIndex(                    result, row as integer {0..65535},                    column as integer {0..65535});                result = TileInfoWithLogicalElementAndDefined(                    result, element, padding, padding_defined);            end;        end;    end;    return result;end;
func ApplyTilePadding(index: TileIndex, pad_value: TilePadValue)begin    _Tiles[[index]] = TileWithPadding(_Tiles[[index]], pad_value);end;
func MarkTilePhysicalRegionDefined(index: TileIndex)begin    let tile = _Tiles[[index]];    for row = 0 to tile.rows - 1 looplimit 65536 do        for column = 0 to tile.columns - 1 looplimit 65536 do            let element = TileLogicalLinearIndex(                tile, row as integer {0..65535},                column as integer {0..65535});            _Tiles[[index]] = TileInfoWithLogicalElement(                _Tiles[[index]], element,                TileReadLogicalElement(tile, element));        end;    end;    _Tiles[[index]].defined_valid_elements =        (tile.valid_rows * tile.valid_columns)                as integer {0..524288};    _Tiles[[index]].contents_defined = TRUE;end;readonly func TileShapesMatch(left: TileInfo, right: TileInfo) => booleanbegin    return left.rows == right.rows &&           left.columns == right.columns &&           left.valid_rows == right.valid_rows &&           left.valid_columns == right.valid_columns &&           left.storage_kind == right.storage_kind &&           left.data_type == right.data_type;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

9 matching entries

Executable evidence3
  • CUBE physical positions outside the valid region receive PadValue without becoming valid elements
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-DEFINEDNESS-ELEMENTS
    3. categorySTATE-TRANSITION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-CUBE-PADDING-001
    Path
    tests/asl/tile/model/definedness/elements/tile-state-cube-padding-001.asl
    Kind / role
    state-transition
    Requirements
    PTO-CUBE-CELL-STATE-001
    Pass condition
    K-tail N-tail and final physical positions contain FP16 Max and are physically defined while valid elements remain undefined
    SHA-256
    711adcf263934fb9acae9141b472b637c6c8a64e219ff0463e66f1ae04b3d8d6
    Open exact source ↗ for PTO-AVS-TILE-CUBE-PADDING-001
  • PTO-TILE-MODEL-DEFINEDNESS-ELEMENTS compiles as an independent normative unit
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-DEFINEDNESS-ELEMENTS
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-MODEL-DEFINEDNESS-ELEMENTS-STATIC-001
    Path
    tests/asl/tile/model/definedness/elements/tile-static-elements-contract-001.asl
    Kind / role
    static-invariant
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    177fec07698dadcbfac822e7c25a29a2c63427e0e972c8a32ba3a22ca3f20d6f
    Open exact source ↗ for PTO-AVS-TILE-MODEL-DEFINEDNESS-ELEMENTS-STATIC-001
  • Covers Tile Element Definedness.
    1. surfaceTILE
    2. ownerPTO-TILE-MODEL-DEFINEDNESS-ELEMENTS
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-TILE-TESTTILEELEMENTDEFINEDNESS-EXECUTION-001
    Path
    tests/asl/tile/model/definedness/elements/tile-exec-element-definedness-001.asl
    Kind / role
    execution
    Pass condition
    TestTileElementDefinedness completes without assertion failure
    SHA-256
    10ba62d77e2ad13dc604cae88667c34f53a75e71203c6e3008dd0efb48e84e73
    Open exact source ↗ for PTO-AVS-TILE-TESTTILEELEMENTDEFINEDNESS-EXECUTION-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 history1
  • Re-encode B.IOT and B.IOS size and PE mode fields · accepted
    1. decision recordADR
    2. case0096

    Decision record

    Loading ADR-0096…

    Sources and references
    Complete stable ID
    ADR-0096
    Path
    docs/status/decisions/0096-b-iot-b-ios-sizecode-pemode.md
    Affected units
    PTO-ARCH-DATA-TYPES-INTEGER, PTO-ARCH-FEATURES-TILE-ALLOCATION, PTO-ARCH-MEMORY-MODEL-GLOBAL-MEMORY-ACCESS, PTO-ARCH-PROFILE-RESET, PTO-ARCH-PROGRAMMING-MODEL-CORE-PE-TOPOLOGY, PTO-BLOCK-B-IOS, PTO-BLOCK-B-IOT, PTO-BLOCK-MODEL-DISPATCH-COMMANDS, PTO-BLOCK-MODEL-DISPATCH-CUBE-TMATMUL, PTO-BLOCK-MODEL-DISPATCH-DESTINATION-SHAPE, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-BLOCK-MODEL-DISPATCH-SHARED-TLSU, PTO-BLOCK-MODEL-OPERANDS-SHARED-BINDINGS, PTO-BLOCK-MODEL-OPERANDS-TILE-BINDINGS, PTO-BLOCK-MODEL-SCHEMA-PROFILE-ENCODING, PTO-BLOCK-MODEL-STATE-TYPES, PTO-TILE-MODEL-DEFINEDNESS-ELEMENTS, PTO-TILE-MODEL-DEFINEDNESS-PACKED-BOUNDARY, PTO-TILE-MODEL-EXECUTION-COMPARISON, PTO-TILE-MODEL-EXECUTION-COMPLEX, PTO-TILE-MODEL-EXECUTION-CUBE, PTO-TILE-MODEL-EXECUTION-ELEMENTWISE, PTO-TILE-MODEL-EXECUTION-EXPANSION, PTO-TILE-MODEL-EXECUTION-FUSED-MULTIPLY-ADD, PTO-TILE-MODEL-EXECUTION-GENERATION, PTO-TILE-MODEL-EXECUTION-IMAGE-TO-COLUMN, PTO-TILE-MODEL-EXECUTION-INDEXED-REARRANGEMENT, PTO-TILE-MODEL-EXECUTION-REARRANGEMENT, PTO-TILE-MODEL-EXECUTION-REDUCTION, PTO-TILE-MODEL-EXECUTION-SORTING, PTO-TILE-MODEL-EXECUTION-UNARY, PTO-TILE-MODEL-LEGALITY-ALLOCATION-CAPACITY, PTO-TILE-MODEL-LEGALITY-DESCRIPTOR-SHAPE, PTO-TILE-MODEL-LEGALITY-IMAGE-TO-COLUMN, PTO-TILE-MODEL-LEGALITY-INDEXED-REARRANGEMENT, PTO-TILE-MODEL-LEGALITY-MATRIX-INFO-DESCRIPTOR, PTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS, PTO-TILE-MODEL-LEGALITY-PE-MASK, PTO-TILE-MODEL-MEMORY-LOAD-STORE, PTO-TILE-MODEL-MEMORY-SHARED-MOVEMENT, PTO-TILE-MODEL-NUMERIC-FORMATS, PTO-TILE-MODEL-ORDERING-SORTING, PTO-TILE-MODEL-SHAPE-VALID-REGION, PTO-TILE-MODEL-STATE-ALLOCATION, PTO-TILE-MODEL-STATE-DESCRIPTORS, PTO-TILE-MODEL-STATE-FEATURE-MAP-DESCRIPTORS, PTO-TILE-MODEL-STATE-SHARED-REGISTERS, PTO-TILE-MODEL-STATE-TYPES, PTO-TILE-TLOAD
    Affected NDF
    PTO-ARCH-GM-ACCESS-001, PTO-B-IOS-SHARED-STATE-001, PTO-B-IOT-STREAM-001, PTO-CUBE-ACCUMULATOR-OUTPUT-001, PTO-TLOAD-CUBE-001, PTO-TLOAD-MEMORY-001
    SHA-256
    c4b4fb7bc17878f710015207dc19ddaf22a0cf6989d185b16844714c71e23f62
    Open exact decision source ↗ for ADR-0096

Unit metadata

Open 4 generated metadata fields
id
PTO-TILE-MODEL-DEFINEDNESS-ELEMENTS
surface
tile
classification
[
  "model",
  "definedness",
  "elements"
]
depends_on
[
  "PTO-ARCH-DATA-TYPES-TILE-DATA-TYPES",
  "PTO-TILE-MODEL-STATE-ALLOCATION",
  "PTO-TILE-MODEL-DEFINEDNESS-PACKED-BOUNDARY"
]
Open generated traceability record
{
  "classification": [
    "model",
    "definedness",
    "elements"
  ],
  "documentation": "docs/tile/model/definedness/elements.md",
  "id": "PTO-TILE-MODEL-DEFINEDNESS-ELEMENTS",
  "mnemonic": null,
  "readiness_subjects": [
    "ADR-0096"
  ],
  "semantic_tests": [
    "PTO-AVS-TILE-CUBE-PADDING-001",
    "PTO-AVS-TILE-TESTTILEELEMENTDEFINEDNESS-EXECUTION-001"
  ],
  "source": "asl/tile/model/definedness/elements.asl",
  "surface": "tile",
  "tests": [
    "PTO-AVS-TILE-CUBE-PADDING-001",
    "PTO-AVS-TILE-MODEL-DEFINEDNESS-ELEMENTS-STATIC-001",
    "PTO-AVS-TILE-TESTTILEELEMENTDEFINEDNESS-EXECUTION-001"
  ]
}

Sources and release identity

Show commit, paths, hashes, version, and canonical owners
Release
0.58.5 · Release candidate
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
c01757fba2b8b32ccf3a4df8e2a2a111d83950d4af08488c3a8cfb5bc51447e6
Generated documentation
docs/tile/model/definedness/elements.md · embedded in this page
Documentation SHA-256
20de2b500f31882e1f48f068a036c0f8afa801a6889927c1eb20126a4d0ba490

Exact owners