[Mlir-commits] [mlir] [MLIR][XeGPU]Enhance Pack/Unpack for	XeGPUUnroll (PR #163459)
    Artem Kroviakov 
    llvmlistbot at llvm.org
       
    Wed Oct 22 08:10:06 PDT 2025
    
    
  
================
@@ -145,8 +145,21 @@ XeGPUBlockingPass::getTileShape(const T &operandOrResult) const {
   xegpu::DistributeLayoutAttr layout =
       xegpu::getDistributeLayoutAttr(operandOrResult);
   if (layout && layout.isForSubgroup()) {
-    if (!layout.getEffectiveInstDataAsInt().empty())
-      return layout.getEffectiveInstDataAsInt();
+    if (!layout.getEffectiveInstDataAsInt().empty()) {
+      SmallVector<int64_t> instData = layout.getEffectiveInstDataAsInt();
+      // Remove leading unit dimensions from inst_data
+      // Skip it for xegpu nd ops since it will be 2D
+      Operation *definingOp = value.getDefiningOp();
+      bool skipLeadingUnitDimRemoval =
+          definingOp &&
+          (isa<xegpu::CreateNdDescOp, xegpu::LoadNdOp, xegpu::DpasOp,
+               xegpu::StoreNdOp, xegpu::PrefetchNdOp>(definingOp));
+      if (!skipLeadingUnitDimRemoval) {
+        while (!instData.empty() && instData.front() == 1)
----------------
akroviakov wrote:
Not sure that mutating the vector in a loop is a good way. What about count + erase(begin, begin+count)? 
https://github.com/llvm/llvm-project/pull/163459
    
    
More information about the Mlir-commits
mailing list