[Mlir-commits] [mlir] [MLIR] Make generic skip packing init operand when not used in DataLayoutPropagation (PR #146139)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Mon Jun 30 08:09:36 PDT 2025


================
@@ -358,6 +358,19 @@ static GenericOp packGenericOp(RewriterBase &rewriter, GenericOp genericOp,
   return newGenericOp;
 }
 
+static bool isGenericOutsNotUsed(linalg::GenericOp genericOp) {
+  Block *block = genericOp.getBody();
+  int numBlockArgs = block->getNumArguments();
+  int numDpsOuts = genericOp.getNumDpsInits();
+  int initArgStartIndex = numBlockArgs - numDpsOuts;
+  for (int i = 0; i < numDpsOuts; ++i) {
+    int matchingInitArgIndex = initArgStartIndex + i;
+    if (!block->getArgument(matchingInitArgIndex).use_empty())
+      return false;
+  }
+  return true;
+}
----------------
Max191 wrote:

nit: This can be simplified with `getDpsInitsMutable` and `getMatchingBlockArgument`.
```
return llvm::all_of(genericOp.getDpsInitsMutable(),
                    [&](OpOperand &operand) {
                      return genericOp.getMatchingBlockArgument(&operand).use_empty();
                    });
```

https://github.com/llvm/llvm-project/pull/146139


More information about the Mlir-commits mailing list