[llvm-branch-commits] [mlir] [mlir][linalg] Restrict linalg.pack to not have artificial padding. (PR #149624)
Adam Siemieniuk via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Thu Jul 24 06:10:43 PDT 2025
================
@@ -150,9 +150,15 @@ def Linalg_PackOp : Linalg_RelayoutOp<"pack", [
`padding_value` specifies a padding value at the boundary on non-perfectly
divisible dimensions. Padding is optional:
- - If absent, it is UB if the tile does not perfectly divide the dimension.
+ - If absent, it is assumed that for all inner tiles,
+ `shape(source)[inner_dims_pos[i]] % inner_tiles[i] == 0`, i.e. all inner
+ tiles divide perfectly the corresponding outer dimension in the result
+ tensor.
- If present, it will pad along high dimensions (high-padding) to make the
- tile complete.
+ tile complete. Note that it is not allowed to have artificial padding that
+ is not strictly required by linalg.pack (i.e., padding past what is needed
+ to complete the last tile along each packed dimension). It is UB if extra
+ padding is requested.
----------------
adam-smnk wrote:
> Shouldn't that be verification error?
It's not possible to enforce that with dynamic source.
`UB` is more of "catch all" here and allows `linalg::lowerPack` to remain as is.
> restore UB for the previous point
It could remain there to reinforce the message. But no strong preference here.
https://github.com/llvm/llvm-project/pull/149624
More information about the llvm-branch-commits
mailing list