Skip to main content

PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION

PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION

ASL pseudocode

The complete ASL owner is shown directly below.

// PTO-UNIT: {"id":"PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION","surface":"block","classification":["model","operands","shared-generation"],"depends_on":["PTO-BLOCK-MODEL-OPERANDS-SHARED-BINDINGS","PTO-BLOCK-MODEL-STATE-SHARED-GENERATION"]}
// NDF-BEGIN: PTO-B-ASSEMBLE-SHARED-GENERATION-001// ndf: kind=contract level=L1 layer=block status=accepted// A Shared B.ASSEMBLE generation MUST retain the previously published Sx// object until the matching collective LAST has complete non-overlapping CELL// coverage, all declared writer data is ready, every participating PE reaches// the same generation ordinal with matching metadata, and no participant has// faulted or been squashed.  Publication MUST replace the complete Shared// descriptor and payload atomically; every rejection MUST preserve the prior// published generation.// NDF-END: PTO-B-ASSEMBLE-SHARED-GENERATION-001
// NDF-BEGIN: PTO-B-SUBVIEW-SHARED-PER-PE-001// ndf: kind=contract level=L1 layer=block status=accepted// A Shared B.SUBVIEW source MUST evaluate GPR[RegSrc]+uimm11 in each// participating PE's private GPR context. The encoded size is common, but// selected PEs may materialize distinct ranges of one published parent.// NDF-END: PTO-B-SUBVIEW-SHARED-PER-PE-001
func AbortBundleSharedGenerationsForBundle()begin    for binding = 0 to 3 do        if _BundleSharedBindings[[binding]].valid &&           _BundleSharedBindings[[binding]].destination_assemble.valid then            AbortBundleSharedGeneration(                _BundleSharedBindings[[binding]].shared_tile_id);        end;    end;end;
readonly func BundleSharedGenerationCoverageWithCurrent(    shared_tile_id: SharedTileID,    offset_cells: integer {0..2047},    writer_cells: integer {1..2048},    init: boolean) => bits(2048)begin    let index = SharedTileArrayIndex(shared_tile_id);    var covered = if init then Zeros{2048}        else _SharedGenerations[[index]].covered_cells;    for cell = 0 to 2047 do        if cell < writer_cells then            covered[offset_cells + cell] = '1';        end;    end;    return covered;end;
readonly func ValidateBundleSharedGeneration() => booleanbegin    for binding = 0 to 3 do        if _BundleSharedBindings[[binding]].valid &&           _BundleSharedBindings[[binding]].destination_assemble.valid then            let shared_tile_id =                _BundleSharedBindings[[binding]].shared_tile_id;            let index = SharedTileArrayIndex(shared_tile_id);            let assemble =                _BundleSharedBindings[[binding]].destination_assemble;            let writer_size = _BundleSharedBindings[[binding]].size_code;            let participant_mask = _BundleSharedBindings[[binding]].pe_mask;            if writer_size < 1 || writer_size > 12 then return FALSE; end;            if assemble.init && _SharedGenerations[[index]].open then                return FALSE;            end;            if !assemble.init &&               (!_SharedGenerations[[index]].open ||                _SharedGenerations[[index]].closed) then                return FALSE;            end;            if !assemble.init &&               _SharedGenerations[[index]].participant_mask !=                   participant_mask then                return FALSE;            end;            let raw_offset = UInt(assemble.offset);            if raw_offset > 2047 then return FALSE; end;            let offset_cells = raw_offset as integer {0..2047};            let writer_cells = BundleLocalGenerationCellCount(                writer_size as integer {1..12});            let parent_cells = if assemble.init then                BundleLocalGenerationCellCount(                    assemble.size_code as integer {1..12})                else _SharedGenerations[[index]].parent_cell_count;            if offset_cells + writer_cells > parent_cells then return FALSE; end;            if !assemble.init then                for cell = 0 to 2047 do                    if cell < writer_cells &&                       _SharedGenerations[[index]].covered_cells[                           offset_cells + cell] == '1' then                        return FALSE;                    end;                end;            end;            if assemble.last then                let covered = BundleSharedGenerationCoverageWithCurrent(                    shared_tile_id, offset_cells, writer_cells,                    assemble.init);                for cell = 0 to 2047 do                    if cell < parent_cells && covered[cell] == '0' then                        return FALSE;                    end;                end;            end;        end;    end;    return TRUE;end;
func CommitBundleSharedGenerationCandidate(    binding: BundleSharedBindingIndex,    candidate: SharedTileInfo) => booleanbegin    assert _BundleSharedBindings[[binding]].valid &&           _BundleSharedBindings[[binding]].destination_assemble.valid;    let shared_tile_id = _BundleSharedBindings[[binding]].shared_tile_id;    let index = SharedTileArrayIndex(shared_tile_id);    let assemble = _BundleSharedBindings[[binding]].destination_assemble;    let participant_mask = _BundleSharedBindings[[binding]].pe_mask;    let writer_size = _BundleSharedBindings[[binding]].size_code        as integer {1..12};    let offset_cells = UInt(assemble.offset) as integer {0..2047};    let writer_cells = BundleLocalGenerationCellCount(writer_size);    if !candidate.descriptor_valid ||       candidate.allocation_mask != participant_mask then        return FALSE;    end;    if assemble.init then        let parent_size = assemble.size_code as integer {1..12};        let parent_bytes = TileSizeCodeBytes(parent_size);        let parent_rows = DerivedTileRows(            parent_bytes, candidate.tile.columns, candidate.tile.data_type);        if parent_rows == 0 then return FALSE; end;        _SharedGenerations[[index]].open = TRUE;        _SharedGenerations[[index]].closed = FALSE;        _SharedGenerations[[index]].published = FALSE;        _SharedGenerations[[index]].shared_tile_id = shared_tile_id;        _SharedGenerations[[index]].participant_mask = participant_mask;        _SharedGenerations[[index]].parent_size_code = parent_size;        _SharedGenerations[[index]].parent_cell_count =            BundleLocalGenerationCellCount(parent_size);        _SharedGenerations[[index]].covered_cells = Zeros{2048};        _SharedGenerations[[index]].ready_cells = Zeros{2048};        _SharedGenerations[[index]].last_seen = FALSE;        _SharedGenerations[[index]].working_valid = TRUE;        _SharedGenerations[[index]].working_tile = candidate.tile;        _SharedGenerations[[index]].working_tile.capacity_bytes = parent_bytes;        _SharedGenerations[[index]].working_tile.rows = parent_rows;        _SharedGenerations[[index]].working_tile.contents_defined = FALSE;        _SharedGenerations[[index]].working_tile.defined_elements =            Zeros{PTO_MODEL_TILE_ELEMENTS};        _SharedGenerations[[index]].working_tile.packed_defined_elements =            ZeroPackedTileDefinedElements();        _SharedGenerations[[index]].working_tile.defined_valid_elements = 0;        _SharedGenerations[[index]].working_initialized_mask = Zeros{4};    else        if !_SharedGenerations[[index]].working_valid ||           _SharedGenerations[[index]].working_tile.columns !=               candidate.tile.columns ||           _SharedGenerations[[index]].working_tile.data_type !=               candidate.tile.data_type ||           _SharedGenerations[[index]].working_tile.layout !=               candidate.tile.layout then            return FALSE;        end;    end;    let element_bits = TileElementBits(candidate.tile.data_type);    let destination_offset =        ((offset_cells * PTO_TILE_CELL_BYTES * 8) DIVRM element_bits)        as integer {0..524287};    let source_elements =        ((candidate.tile.capacity_bytes * 8) DIVRM element_bits)        as integer {1..524288};    let parent_elements = TileLogicalElementCapacity(        _SharedGenerations[[index]].working_tile.capacity_bytes,        candidate.tile.data_type);    if destination_offset + source_elements > parent_elements then        return FALSE;    end;    if candidate.tile.valid_rows == 0 ||       candidate.tile.valid_columns == 0 then        return FALSE;    end;    var working = _SharedGenerations[[index]].working_tile;    for element = 0 to source_elements - 1 looplimit 524288 do        let source_index = element as PackedTileElementIndex;        let destination_index = (destination_offset + element)            as PackedTileElementIndex;        if TileLogicalElementDefined(candidate.tile, source_index) then            working = TileInfoWithLogicalElement(                working, destination_index,                TileReadLogicalElement(candidate.tile, source_index));        end;    end;    _SharedGenerations[[index]].working_tile = working;    let working_columns = working.columns as integer {1..65535};    let last_valid_row = (candidate.tile.valid_rows - 1)        as integer {0..65534};    let last_valid_column = (candidate.tile.valid_columns - 1)        as integer {0..65534};    let candidate_valid_extent =        (TileLogicalLinearIndex(candidate.tile, last_valid_row,             last_valid_column) + 1) as integer {1..524288};    let required_end = destination_offset + candidate_valid_extent;    if required_end > parent_elements then return FALSE; end;    let required_rows = ((required_end +        (working_columns - 1)) DIVRM working_columns)        as integer {1..65535};    if _SharedGenerations[[index]].working_tile.valid_rows < required_rows then        _SharedGenerations[[index]].working_tile.valid_rows = required_rows;    end;    if _SharedGenerations[[index]].working_tile.valid_columns <       candidate.tile.valid_columns then        _SharedGenerations[[index]].working_tile.valid_columns =            candidate.tile.valid_columns;    end;    let covered = BundleSharedGenerationCoverageWithCurrent(        shared_tile_id, offset_cells, writer_cells, assemble.init);    _SharedGenerations[[index]].covered_cells = covered;    _SharedGenerations[[index]].ready_cells = covered;    _SharedGenerations[[index]].working_initialized_mask =        _SharedGenerations[[index]].working_initialized_mask OR        candidate.initialized_mask;    if assemble.last then        _SharedGenerations[[index]].last_seen = TRUE;        _SharedGenerations[[index]].closed = TRUE;        _SharedGenerations[[index]].open = FALSE;        _SharedGenerations[[index]].published = TRUE;        _SharedGenerations[[index]].working_tile.contents_defined = TRUE;        _SharedTiles[[index]].descriptor_valid = TRUE;        _SharedTiles[[index]].allocation_mask = participant_mask;        _SharedTiles[[index]].initialized_mask = participant_mask;        _SharedTiles[[index]].whole_parent_ready = TRUE;        _SharedTiles[[index]].published = TRUE;        _SharedTiles[[index]].tile =            _SharedGenerations[[index]].working_tile;    end;    return TRUE;end;
func BeginBundleSharedGenerationProbe(shared_tile_id: SharedTileID)    => SharedTileInfobegin    let index = SharedTileArrayIndex(shared_tile_id);    let prior = _SharedTiles[[index]];    _SharedTiles[[index]].descriptor_valid = FALSE;    _SharedTiles[[index]].allocation_mask = Zeros{4};    _SharedTiles[[index]].initialized_mask = Zeros{4};    _SharedTiles[[index]].whole_parent_ready = FALSE;    _SharedTiles[[index]].published = FALSE;    return prior;end;
func RestoreBundleSharedGenerationProbe(    shared_tile_id: SharedTileID, prior: SharedTileInfo)begin    _SharedTiles[[SharedTileArrayIndex(shared_tile_id)]] = prior;end;
readonly func BundleSharedSubviewOffsetRawForPE(    binding: BundleSharedBindingIndex, pe_identity: MemoryAgentId) => Wordbegin    let modifier = _BundleSharedBindings[[binding]].source0_subview;    return ReadPEAbsoluteGPROperand(pe_identity, modifier.reg_src) +        ZeroExtend{PTO_XLEN}(modifier.uimm11);end;
readonly func BundleSharedSubviewOffsetCellsForPE(    binding: BundleSharedBindingIndex, pe_identity: MemoryAgentId)    => integer {0..2047}begin    let raw_offset = UInt(BundleSharedSubviewOffsetRawForPE(        binding, pe_identity));    assert raw_offset <= 2047;    return raw_offset as integer {0..2047};end;
readonly func BundleSharedSubviewLegal(    binding: BundleSharedBindingIndex) => booleanbegin    if !_BundleSharedBindings[[binding]].valid ||       !_BundleSharedBindings[[binding]].source0_subview.valid ||       _BundleSharedBindings[[binding]].size_code != 0 then        return FALSE;    end;    let shared_tile_id = _BundleSharedBindings[[binding]].shared_tile_id;    if !SharedTilePublished(shared_tile_id) then return FALSE; end;    let parent = SharedTileRecord(shared_tile_id).tile;    if TileLayoutIsCube(parent.layout) || parent.columns == 0 then        return FALSE;    end;    let modifier = _BundleSharedBindings[[binding]].source0_subview;    if modifier.size_code == 0 then return FALSE; end;    let selected_bytes = TileSizeCodeBytes(        modifier.size_code as integer {1..12});    let element_bits = TileElementBits(parent.data_type);    let bounded_columns = parent.columns as integer {1..65535};    for pe = 0 to PTO_MODEL_MEMORY_AGENTS - 1 do        let pe_identity = pe as MemoryAgentId;        if _BundleSharedBindings[[binding]].pe_mask[               PTOPEMaskBitOfPEIdentity(pe_identity)] == '1' then            let raw_offset = UInt(BundleSharedSubviewOffsetRawForPE(                binding, pe_identity));            if raw_offset > 2047 then return FALSE; end;            let offset_cells = raw_offset as integer {0..2047};            if offset_cells * PTO_TILE_CELL_BYTES + selected_bytes >                   parent.capacity_bytes then                return FALSE;            end;            let offset_elements =                ((offset_cells * PTO_TILE_CELL_BYTES * 8) DIVRM element_bits)                as integer {0..524287};            let selected_elements = ((selected_bytes * 8) DIVRM element_bits)                as integer {1..524288};            let origin_column = (offset_elements MOD bounded_columns)                as integer {0..65535};            if selected_elements > bounded_columns - origin_column &&               (origin_column != 0 || selected_elements MOD bounded_columns != 0) then                return FALSE;            end;            if selected_elements > bounded_columns - origin_column &&               selected_elements DIVRM bounded_columns > 65535 then                return FALSE;            end;        end;    end;    return TRUE;end;
readonly func MaterializeBundleSharedSubviewForPE(    binding: BundleSharedBindingIndex, pe_identity: MemoryAgentId) => TileInfobegin    assert BundleSharedSubviewLegal(binding);    let shared_tile_id = _BundleSharedBindings[[binding]].shared_tile_id;    let parent = SharedTileRecord(shared_tile_id).tile;    let modifier = _BundleSharedBindings[[binding]].source0_subview;    let offset_cells = BundleSharedSubviewOffsetCellsForPE(        binding, pe_identity);    let selected_bytes = TileSizeCodeBytes(        modifier.size_code as integer {1..12});    let element_bits = TileElementBits(parent.data_type);    let bounded_columns = parent.columns as integer {1..65535};    let offset_elements =        ((offset_cells * PTO_TILE_CELL_BYTES * 8) DIVRM element_bits)        as integer {0..524287};    let selected_elements = ((selected_bytes * 8) DIVRM element_bits)        as integer {1..524288};    let origin_row = (offset_elements DIVRM bounded_columns)        as integer {0..65535};    let origin_column = (offset_elements MOD bounded_columns)        as integer {0..65535};    let selected_columns = (if selected_elements <=        bounded_columns - origin_column then selected_elements        else bounded_columns) as integer {1..65535};    let selected_rows = (if selected_elements <=        bounded_columns - origin_column then 1        else selected_elements DIVRM bounded_columns)        as integer {1..65535};    var tile = parent;    tile.capacity_bytes = selected_bytes;    tile.rows = DerivedTileRows(        selected_bytes, selected_columns, parent.data_type);    tile.columns = selected_columns;    tile.valid_rows = selected_rows;    tile.valid_columns = selected_columns;    if origin_row + tile.valid_rows > parent.valid_rows then        tile.valid_rows = if origin_row < parent.valid_rows then            (parent.valid_rows - origin_row) as integer {0..65535}            else 0;    end;    if origin_column + tile.valid_columns > parent.valid_columns then        tile.valid_columns = if origin_column < parent.valid_columns then            (parent.valid_columns - origin_column) as integer {0..65535}            else 0;    end;    tile.defined_elements = Zeros{PTO_MODEL_TILE_ELEMENTS};    tile.packed_defined_elements = ZeroPackedTileDefinedElements();    tile.defined_valid_elements = 0;    tile.contents_defined = FALSE;    for element = 0 to selected_elements - 1 looplimit 524288 do        let source_index = (offset_elements + element)            as PackedTileElementIndex;        let destination_index = element as PackedTileElementIndex;        tile = TileInfoWithLogicalElement(tile, destination_index,            ReadSharedTileWord(shared_tile_id, source_index));    end;    tile.contents_defined = TRUE;    tile.defined_valid_elements =        (tile.valid_rows * tile.valid_columns) as integer {0..524288};    return tile;end;
readonly func MaterializeBundleSharedSubview(    binding: BundleSharedBindingIndex) => TileInfobegin    return MaterializeBundleSharedSubviewForPE(binding, _CurrentMemoryAgent);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.

    1. surfaceBLOCK
    2. ownerPTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    3. categoryB-ASSEMBLE-SHARED-GENERATION
    4. case001

    Normative contract

    contract · L1 · accepted

    A Shared B.ASSEMBLE generation MUST retain the previously published Sx object until the matching collective LAST has complete non-overlapping CELL coverage, all declared writer data is ready, every participating PE reaches the same generation ordinal with matching metadata, and no participant has faulted or been squashed. Publication MUST replace the complete Shared descriptor and payload atomically; every rejection MUST preserve the prior published generation.

    Sources and references
    Complete stable ID
    PTO-B-ASSEMBLE-SHARED-GENERATION-001
    Source path
    asl/block/model/operands/shared-generation.asl
    Affected units
    PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    Source SHA-256
    5bda7d3c0efbc67230a798f893799c12d969ca9d533e01f9f03f8ea00955ded6
    Clause SHA-256
    cb58db4c5082d9fdeb9d52751851c2780c8e8c21a0c9f3cf0f1c1373f10eb180
    Open exact canonical source ↗
    1. surfaceBLOCK
    2. ownerPTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    3. categoryB-SUBVIEW-SHARED-PER-PE
    4. case001

    Normative contract

    contract · L1 · accepted

    A Shared B.SUBVIEW source MUST evaluate GPR[RegSrc]+uimm11 in each participating PE's private GPR context. The encoded size is common, but selected PEs may materialize distinct ranges of one published parent.

    Sources and references
    Complete stable ID
    PTO-B-SUBVIEW-SHARED-PER-PE-001
    Source path
    asl/block/model/operands/shared-generation.asl
    Affected units
    PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    Source SHA-256
    5bda7d3c0efbc67230a798f893799c12d969ca9d533e01f9f03f8ea00955ded6
    Clause SHA-256
    dfbe2d264b58ab306aa5d023aed4b81d8107b6f7d745140ae508cc2facb14050
    Open exact canonical source ↗

Evidence index

14 matching entries

Executable evidence5
  • PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION compiles as an independent normative unit
    1. surfaceBLOCK
    2. ownerPTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    3. categorySTATIC-INVARIANT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-BLOCK-MODEL-OPERANDS-SHARED-GENERATION-STATIC-001
    Path
    tests/asl/block/model/operands/shared-generation/block-static-shared-generation-contract-001.asl
    Kind / role
    static-invariant
    Requirements
    PTO-B-ASSEMBLE-SHARED-GENERATION-001, PTO-B-SUBVIEW-SHARED-PER-PE-001
    Pass condition
    the complete model and this unit's static invariant compile
    SHA-256
    b457275cfeddf43ebc3384276cac9416ff99439d3fc1a2ec6d80402f3c72a3ee
    Open exact source ↗ for PTO-AVS-BLOCK-MODEL-OPERANDS-SHARED-GENERATION-STATIC-001
  • Two decoded Shared writers construct and atomically publish one parent generation.
    1. surfaceBLOCK
    2. ownerPTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-BLOCK-SHARED-RANGE-CONSTRUCTION-001
    Path
    tests/asl/block/model/operands/shared-generation/block-exec-shared-generation-001.asl
    Kind / role
    execution
    Requirements
    PTO-B-ASSEMBLE-SHARED-GENERATION-001
    Pass condition
    INIT retains the old Sx mapping while recording the first CELL, LAST supplies the second CELL and publishes the complete 256 B parent with both values.
    SHA-256
    99c53bf8730ec23afdb37183fbb1e243395b5419bf32d09fbd80d66efada22d1
    Open exact source ↗ for PTO-AVS-BLOCK-SHARED-RANGE-CONSTRUCTION-001
  • Shared generation overlap and incomplete LAST reject before publication.
    1. surfaceBLOCK
    2. ownerPTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    3. categoryFAULT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-BLOCK-SHARED-RANGE-FAULTS-001
    Path
    tests/asl/block/model/operands/shared-generation/block-fault-shared-generation-001.asl
    Kind / role
    fault
    Requirements
    PTO-B-ASSEMBLE-SHARED-GENERATION-001
    Pass condition
    A second writer overlapping INIT and a LAST missing required coverage each raise TileLegality, clear the pending generation, and preserve the prior published Sx value.
    SHA-256
    084b6ee097e3004bec99e4de953c25f462879d6e9feea0a1f81d390d3d04af3b
    Open exact source ↗ for PTO-AVS-BLOCK-SHARED-RANGE-FAULTS-001
  • Multi-PE Shared destinations require B.ASSEMBLE while single-PE standalone B.IOS remains legal.
    1. surfaceBLOCK
    2. ownerPTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    3. categoryFAULT
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-BLOCK-SHARED-STANDALONE-COMPAT-001
    Path
    tests/asl/block/model/operands/shared-generation/block-fault-shared-standalone-001.asl
    Kind / role
    fault
    Requirements
    PTO-B-ASSEMBLE-SHARED-STANDALONE-001, PTO-B-ASSEMBLE-SHARED-GENERATION-001
    Pass condition
    A decoded all-PE standalone TLOAD faults before memory or Shared effects, a single-PE standalone form succeeds, and an all-PE INIT_LAST form publishes atomically.
    SHA-256
    86c2349b23fcc3093e7404699b5f1daeafec5e6b0da0241ad8467ffaecd40ba2
    Open exact source ↗ for PTO-AVS-BLOCK-SHARED-STANDALONE-COMPAT-001
  • Decoded Shared B.SUBVIEW selects an exact CELL range for TSTORE.
    1. surfaceBLOCK
    2. ownerPTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
    3. categoryEXECUTION
    4. case001
    Show exact test source
    Sources and references
    Complete stable ID
    PTO-AVS-BLOCK-SUBVIEW-SHARED-001
    Path
    tests/asl/block/model/operands/shared-generation/block-exec-shared-subview-001.asl
    Kind / role
    execution
    Requirements
    PTO-B-SUBVIEW-RANGE-001, PTO-B-ASSEMBLE-SHARED-GENERATION-001
    Pass condition
    A one-CELL view at offset one stores the second 128 B row's value while preserving the complete published Shared descriptor and payload.
    SHA-256
    568b4adfb2653daad0aa2c8e57c445b7519857d9ae887040b3b3b2d74f3f68ca
    Open exact source ↗ for PTO-AVS-BLOCK-SUBVIEW-SHARED-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 history4
  • B.SUBVIEW and B.ASSEMBLE range-modifier association · accepted
    1. decision recordADR
    2. case0098

    Decision record

    Loading ADR-0098…

    Sources and references
    Complete stable ID
    ADR-0098
    Path
    docs/status/decisions/0098-b-range-modifiers.md
    Affected units
    PTO-ARCH-PROFILE-RESET, PTO-BLOCK-B-IOT, PTO-BLOCK-B-IOS, PTO-BLOCK-B-SUBVIEW, PTO-BLOCK-B-ASSEMBLE, PTO-BLOCK-MODEL-DISPATCH-COMMANDS, PTO-BLOCK-MODEL-OPERANDS-RANGE-MODIFIERS, PTO-BLOCK-MODEL-OPERANDS-SHARED-BINDINGS, PTO-BLOCK-MODEL-OPERANDS-TILE-BINDINGS, PTO-BLOCK-MODEL-STATE-CONTROL-STATE, PTO-BLOCK-MODEL-STATE-DESCRIPTOR-STATE, PTO-BLOCK-MODEL-STATE-TYPES, PTO-ARCH-DATA-TYPES-TRAP-CONTEXT, PTO-ARCH-PROFILE-REFERENCE-PROFILE, PTO-ARCH-PROFILE-TRAP-CONTEXT-RECOVERY, PTO-ARCH-STATE-TRAP-CONTEXT, PTO-BLOCK-MODEL-DISPATCH-TILE-EXECUTION, PTO-BLOCK-MODEL-DISPATCH-TILE-SCHEMA, PTO-BLOCK-MODEL-FAULTS-ROLLBACK, PTO-BLOCK-MODEL-LIFECYCLE-RESET, PTO-BLOCK-MODEL-OPERANDS-LOCAL-GENERATION, PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION, PTO-BLOCK-MODEL-OPERANDS-PORTABLE-CARRIERS, PTO-BLOCK-MODEL-OPERANDS-SUBVIEW-DESCRIPTOR, PTO-BLOCK-MODEL-STATE-SHARED-GENERATION, PTO-TILE-MODEL-LEGALITY-MATRIX-POSTPROCESS
    Affected NDF
    PTO-B-IOT-STREAM-001, PTO-B-IOS-SHARED-STATE-001, PTO-B-SUBVIEW-RANGE-001, PTO-B-ASSEMBLE-RANGE-001, PTO-B-SUBVIEW-DESCRIPTOR-001, PTO-BLOCK-TILE-OPERATION-APPLICABILITY-001, PTO-B-ASSEMBLE-LOCAL-GENERATION-001, PTO-B-ASSEMBLE-SHARED-GENERATION-001, PTO-B-ASSEMBLE-SHARED-STANDALONE-001, PTO-B-ASSEMBLE-CONSUMER-READINESS-001, PTO-B-ASSEMBLE-SPECULATION-001, PTO-B-ASSEMBLE-PRODUCER-EFFECT-ELIGIBILITY-001
    SHA-256
    e194ccc6b6922fd4b65066b533f5e4b0eba094e099970059bca8e25b4e466fba
    Open exact decision source ↗ for ADR-0098
  • Shared whole-parent readiness and single-issuer publication · accepted
    1. decision recordADR
    2. case0105

    Decision record

    Loading ADR-0105…

    Sources and references
    Complete stable ID
    ADR-0105
    Path
    docs/status/decisions/0105-shared-whole-parent-readiness.md
    Affected units
    PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION, PTO-BLOCK-MODEL-DISPATCH-SHARED-TLSU, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX, PTO-TILE-MODEL-STATE-SHARED-REGISTERS, PTO-TILE-MODEL-STATE-TYPES, PTO-TILE-MODEL-MEMORY-SHARED-MOVEMENT
    Affected NDF
    PTO-B-SHARED-WHOLE-PARENT-READY-001, PTO-B-ASSEMBLE-SHARED-GENERATION-001
    SHA-256
    65894a4523494b68bdac25b972b183ba0435d9c36806805311f236c6b6923d8d
    Open exact decision source ↗ for ADR-0105
  • Shared source B.SUBVIEW uses per-PE offsets · accepted
    1. decision recordADR
    2. case0106

    Decision record

    Loading ADR-0106…

    Sources and references
    Complete stable ID
    ADR-0106
    Path
    docs/status/decisions/0106-shared-source-subview-per-pe.md
    Affected units
    PTO-BLOCK-B-SUBVIEW, PTO-BLOCK-MODEL-OPERANDS-SUBVIEW-DESCRIPTOR, PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION, PTO-BLOCK-MODEL-DISPATCH-SHARED-TLSU, PTO-BLOCK-MODEL-DISPATCH-SHARED-CUBE-MATRIX
    Affected NDF
    PTO-B-SUBVIEW-RANGE-001, PTO-B-SUBVIEW-SHARED-PER-PE-001
    SHA-256
    ccbc429a05b5dc0cf1e810b2062672f3858edba86176fe2408f4a99a3d1137ee
    Open exact decision source ↗ for ADR-0106
  • 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 4 generated metadata fields
id
PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION
surface
block
classification
[
  "model",
  "operands",
  "shared-generation"
]
depends_on
[
  "PTO-BLOCK-MODEL-OPERANDS-SHARED-BINDINGS",
  "PTO-BLOCK-MODEL-STATE-SHARED-GENERATION"
]
Open generated traceability record
{
  "classification": [
    "model",
    "operands",
    "shared-generation"
  ],
  "documentation": "docs/block/model/operands/shared-generation.md",
  "id": "PTO-BLOCK-MODEL-OPERANDS-SHARED-GENERATION",
  "mnemonic": null,
  "readiness_subjects": [
    "ADR-0098",
    "ADR-0105",
    "ADR-0106",
    "ADR-0108"
  ],
  "semantic_tests": [
    "PTO-AVS-BLOCK-SHARED-RANGE-CONSTRUCTION-001",
    "PTO-AVS-BLOCK-SHARED-RANGE-FAULTS-001",
    "PTO-AVS-BLOCK-SHARED-STANDALONE-COMPAT-001",
    "PTO-AVS-BLOCK-SUBVIEW-SHARED-001"
  ],
  "source": "asl/block/model/operands/shared-generation.asl",
  "surface": "block",
  "tests": [
    "PTO-AVS-BLOCK-MODEL-OPERANDS-SHARED-GENERATION-STATIC-001",
    "PTO-AVS-BLOCK-SHARED-RANGE-CONSTRUCTION-001",
    "PTO-AVS-BLOCK-SHARED-RANGE-FAULTS-001",
    "PTO-AVS-BLOCK-SHARED-STANDALONE-COMPAT-001",
    "PTO-AVS-BLOCK-SUBVIEW-SHARED-001"
  ]
}

Sources and release identity

Show commit, paths, hashes, version, and canonical owners
Release
0.58.5 · Release candidate
Commit
7dc8b7e5b121d2b2499a2273bebff29e2cd86812
ASL SHA-256
5bda7d3c0efbc67230a798f893799c12d969ca9d533e01f9f03f8ea00955ded6
Generated documentation
docs/block/model/operands/shared-generation.md · embedded in this page
Documentation SHA-256
cf4a5f8e6d13e922c94c7fd2ab75ef3d53f50e3ee73d3819978b0b9150b859c8

Exact owners