[llvm-branch-commits] [mlir] [mlir][Transforms] Dialect Conversion: Add `replaceOpWithMultiple` (PR #115816)

Markus Böck via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Tue Nov 12 02:46:11 PST 2024


================
@@ -618,21 +618,27 @@ class SparseCallConverter : public OpConversionPattern<func::CallOp> {
       assert(!sparseFlat.empty());
       if (sparseFlat.size() > 1) {
         auto flatSize = sparseFlat.size();
-        ValueRange fields(iterator_range<ResultRange::iterator>(
-            newCall.result_begin() + retOffset,
-            newCall.result_begin() + retOffset + flatSize));
-        castedRet.push_back(genTuple(rewriter, loc, retType, fields));
+        packedResultVals.push_back(SmallVector<Value>());
+        llvm::append_range(packedResultVals.back(),
+                           iterator_range<ResultRange::iterator>(
+                               newCall.result_begin() + retOffset,
+                               newCall.result_begin() + retOffset + flatSize));
         retOffset += flatSize;
       } else {
         // If this is an 1:1 conversion, no need for casting.
-        castedRet.push_back(newCall.getResult(retOffset));
+        packedResultVals.push_back(SmallVector<Value>());
+        packedResultVals.back().push_back(newCall.getResult(retOffset));
         retOffset++;
       }
       sparseFlat.clear();
     }
 
-    assert(castedRet.size() == op.getNumResults());
-    rewriter.replaceOp(op, castedRet);
+    assert(packedResultVals.size() == op.getNumResults());
+    SmallVector<ValueRange> ranges;
+    ranges.reserve(packedResultVals.size());
+    for (const SmallVector<Value> &vec : packedResultVals)
+      ranges.push_back(ValueRange(vec));
+    rewriter.replaceOpWithMultiple(op, ranges);
----------------
zero9178 wrote:

```suggestion
    rewriter.replaceOpWithMultiple(op, llvm::to_vector_of<ValueRange>(packedResultVals));
```
IIRC this should work, otherwise I'd use `emplace_back` instead of `push_back` at the very least

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


More information about the llvm-branch-commits mailing list