[Mlir-commits] [mlir] [MLIR][XeGPU] Enhancing insert_strided_slice layout setup and infer rules (PR #184742)
Jianhui Li
llvmlistbot at llvm.org
Fri Mar 6 06:55:50 PST 2026
================
@@ -864,19 +890,56 @@ DistributeLayoutAttr SliceAttr::setDimData(int64_t dim, int64_t sgData,
parent.setDimData(adjustDims[0], sgData, instData, laneData), getDims());
}
+// Derive a new layout by removing dimensions. `dimGroup` specifies a group of
+// dimensions to be removed in the derived layout.
+//
+// Example: drop the 2nd dimension from a rank-3 sliced view.
+//
+// Suppose:
+// xegpu.layout = slice<layout<[V0, V1, V2, V3, V4]>, [1, 3]>
+//
+// The slice removes parent dims [1, 3], so the sliced-space dims map to
+// parent dims [V0, V2, V4].
+//
+// If we drop sliced-space dim 1 (the 2nd dim), that corresponds to dropping
+// parent dim 2, result in parent layout [V0, V1, V3, V4] after dropping.
+// After parent dim 2 is removed, sliced dims [1, 3] must be reindexed to [1, 2].
+//
+// Result:
+// xegpu.layout = slice<layout<[0, 1, 3, 4]>, [1, 2]>
+DistributeLayoutAttr SliceAttr::dropDims(SmallVector<int64_t> dimGroup) {
+ // Map the sliced dims from parent space to collapsed space
+ SmallVector<int64_t> sliceDims = llvm::to_vector(getDims().asArrayRef());
+ SmallVector<int64_t> dimsInParentSpace =
+ mapSlicedDimsToParentSpace(dimGroup, sliceDims);
+
+ auto droppedParent = getParent().dropDims(dimsInParentSpace);
+
+ SmallVector<int64_t> newSliceDims;
+ for (int64_t d : sliceDims) {
----------------
Jianhui-Li wrote:
It is not dropping the slice dim here. It is to adjust the sliceDims value as we dropped some dimension in the parent space. You may refer to the example above.
We can't drop a slice dim. The dropping happens on the dims after being sliced.
https://github.com/llvm/llvm-project/pull/184742
More information about the Mlir-commits
mailing list