[Mlir-commits] [mlir] [MLIR][XeGPU] Enhancing insert_strided_slice layout setup and infer rules (PR #184742)
Charitha Saumya
llvmlistbot at llvm.org
Thu Mar 5 09:57:58 PST 2026
================
@@ -501,6 +501,76 @@ DistributeLayoutAttr LayoutAttr::setDimData(int64_t dim, int64_t sgData,
getOrder());
}
+// Derive a new layout by removing dimensions.
+// `dimGroup` specifies a group of dimensions to be removed in the derived
+// layout.
+DistributeLayoutAttr LayoutAttr::dropDims(SmallVector<int64_t> dimGroup) {
+
+ SmallVector<int64_t> sgLayout = getEffectiveSgLayoutAsInt();
+ SmallVector<int64_t> sgData = getEffectiveSgDataAsInt();
+ SmallVector<int64_t> instData = getEffectiveInstDataAsInt();
+ SmallVector<int64_t> laneLayout = getEffectiveLaneLayoutAsInt();
+ SmallVector<int64_t> laneData = getEffectiveLaneDataAsInt();
+ SmallVector<int64_t> origOrder = getEffectiveOrderAsInt();
+
+ SmallVector<int64_t> sortedDimGroup = dimGroup;
+ llvm::sort(sortedDimGroup);
+
+ if (!sgLayout.empty()) {
+ for (auto dimIdx : llvm::reverse(sortedDimGroup)) {
+ sgLayout.erase(sgLayout.begin() + dimIdx, sgLayout.begin() + dimIdx + 1);
----------------
charithaintc wrote:
`sgLayout.erase(sgLayout.begin() + dimIdx)` will be more readable since only 1 elem is removed.
nit: 4 loops can eb fused to 1 loop with conditions inside.
For() {
// handle sg layout
// handle inst data
// etc
}
https://github.com/llvm/llvm-project/pull/184742
More information about the Mlir-commits
mailing list