PackedKernels
Arithmetic over explicitly padded packed panels and one fixed platform tile shape. Callers own validation: dimensions must be non-negative, offsets and physical panel windows must be valid, and input panels must not overlap destinations. Short logical edges occupy the same physical shape and use positive-zero padding.
Properties
gemmTileCols
Positive physical column count of a packed output tile. It is fixed for the life of an implementation.
gemmTileRows
Positive physical row count of a packed output tile. It is fixed for the life of an implementation because callers use it when allocating and packing panels.
Functions
gemmTile
Adds one packed product into a full gemmTileRows by gemmTileCols output tile. packedA contains depth groups of gemmTileRows contiguous values beginning at aOff, and packedB contains depth groups of gemmTileCols contiguous values beginning at bOff. Output columns begin at cOff and are ldc elements apart. Every group is physically full; short edges must be zero padded by the caller. A zero depth leaves the output unchanged without reading either packed panel.
gemmTrsmTile
Subtracts one packed product from the logical validRows by order edge of x, then solves that edge through packedTriangle using the trsmTile layout and triangle rules. packedA and packedB use the gemmTile depth-group layouts. Entries of x outside the logical edge are preserved. A zero logical dimension performs no reads; a zero depth performs only the triangular solve. Kotlin selects this local update and solve block and owns the global triangular dependencies and traversal. The fused kernel may reuse registers within the selected block.
trsmTile
Solves X * T = B in place for one logical tile edge. packedTriangle stores T with physical row stride gemmTileCols, while x stores columns with physical stride gemmTileRows. validRows must be in 0..gemmTileRows and order in 0..gemmTileCols. Only those logical rows and columns of x are overwritten; its padding is preserved. A zero logical dimension performs no reads. When unitDiag is true, diagonal entries of packedTriangle are not read. lower selects the stored triangle of T.