Remove unnecessary vector materialization of operand_range

Now that our builders all accept ValueRange, we can pass through an operand_range without intermediate materialization.

PiperOrigin-RevId: 285217422
diff --git a/iree/compiler/Dialect/Flow/Transforms/FoldCompatibleDispatchRegions.cpp b/iree/compiler/Dialect/Flow/Transforms/FoldCompatibleDispatchRegions.cpp
index 1ba59db..20a7862 100644
--- a/iree/compiler/Dialect/Flow/Transforms/FoldCompatibleDispatchRegions.cpp
+++ b/iree/compiler/Dialect/Flow/Transforms/FoldCompatibleDispatchRegions.cpp
@@ -129,8 +129,8 @@
 
   // Clone with new results.
   auto newRegionOp = builder.create<DispatchRegionOp>(
-      regionOp.getLoc(), newReturnTypes, regionOp.workload(),
-      llvm::to_vector<8>(regionOp.args()), regionOp.getAttrs());
+      regionOp.getLoc(), newReturnTypes, regionOp.workload(), regionOp.args(),
+      regionOp.getAttrs());
   newRegionOp.body().takeBody(regionOp.body());
 
   // Replace uses of original values with the new values.
diff --git a/iree/compiler/Dialect/Flow/Transforms/IdentifyReductionRegions.cpp b/iree/compiler/Dialect/Flow/Transforms/IdentifyReductionRegions.cpp
index a1ac50e..1c56f09 100644
--- a/iree/compiler/Dialect/Flow/Transforms/IdentifyReductionRegions.cpp
+++ b/iree/compiler/Dialect/Flow/Transforms/IdentifyReductionRegions.cpp
@@ -76,8 +76,7 @@
   OpBuilder regionBuilder(reductionRegionOp.body());
   reductionRegionOp.walk([&](xla_hlo::ReturnOp returnOp) {
     regionBuilder.setInsertionPoint(returnOp);
-    SmallVector<Value *, 4> returnValues(returnOp.getOperands());
-    regionBuilder.create<ReturnOp>(returnOp.getLoc(), returnValues);
+    regionBuilder.create<ReturnOp>(returnOp.getLoc(), returnOp.getOperands());
     returnOp.erase();
   });
 
diff --git a/iree/compiler/Dialect/Flow/Transforms/OutlineDispatchRegions.cpp b/iree/compiler/Dialect/Flow/Transforms/OutlineDispatchRegions.cpp
index 1faab2f..62b0130 100644
--- a/iree/compiler/Dialect/Flow/Transforms/OutlineDispatchRegions.cpp
+++ b/iree/compiler/Dialect/Flow/Transforms/OutlineDispatchRegions.cpp
@@ -39,7 +39,7 @@
   auto dispatchOp = builder.create<DispatchOp>(
       regionOp.getLoc(), executableOp.getName(), entryPointOp.getName(),
       regionOp.workload(), outlinedFuncOp.getType().getResults(),
-      llvm::to_vector<8>(regionOp.args()));
+      regionOp.args());
 
   // Replace uses of the existing results with the new results.
   for (int i = 0; i < regionOp.getNumResults(); ++i) {
diff --git a/iree/compiler/Dialect/Flow/Transforms/OutlineReductionRegions.cpp b/iree/compiler/Dialect/Flow/Transforms/OutlineReductionRegions.cpp
index 2357513..5592a62 100644
--- a/iree/compiler/Dialect/Flow/Transforms/OutlineReductionRegions.cpp
+++ b/iree/compiler/Dialect/Flow/Transforms/OutlineReductionRegions.cpp
@@ -150,7 +150,6 @@
   // Insert at the same place as the original region.
   OpBuilder dispatcherBuilder(regionOp);
 
-  SmallVector<Value *, 4> initialValues{regionOp.initial_values()};
   SmallVector<Value *, 4> temps{regionOp.operands()};
 
   // Create one dispatch per dimension being reduced.
@@ -169,11 +168,11 @@
     ReductionEntryOp entryPointOp;
     std::tie(executableOp, entryPointOp) = createReductionExecutable(
         regionOp, outlinedRegionOrdinal, dimension.index(), dimension.value(),
-        initialValues, temps, dispatchableFuncOps);
+        regionOp.initial_values(), temps, dispatchableFuncOps);
 
     // Finally convert the dispatch region into a dispatch to the outlined func.
     temps = convertToDispatchOp(regionOp, executableOp, entryPointOp.getName(),
-                                dimension.value(), initialValues,
+                                dimension.value(), regionOp.initial_values(),
                                 std::move(temps), dispatcherBuilder);
     if (temps.empty()) {
       return regionOp.emitOpError()
diff --git a/iree/compiler/Dialect/HAL/IR/HALOpFolders.cpp b/iree/compiler/Dialect/HAL/IR/HALOpFolders.cpp
index c9f36e5..2396b68 100644
--- a/iree/compiler/Dialect/HAL/IR/HALOpFolders.cpp
+++ b/iree/compiler/Dialect/HAL/IR/HALOpFolders.cpp
@@ -144,8 +144,7 @@
           op.buffer_usage() == computeSizeOp.buffer_usage()) {
         rewriter.replaceOpWithNewOp<AllocatorAllocateShapedOp>(
             op, op.allocator(), op.memory_types(), op.buffer_usage(),
-            llvm::to_vector<4>(computeSizeOp.shape()),
-            computeSizeOp.element_size().getZExtValue());
+            computeSizeOp.shape(), computeSizeOp.element_size().getZExtValue());
         return matchSuccess();
       }
     }
diff --git a/iree/compiler/Dialect/VM/IR/VMDialect.cpp b/iree/compiler/Dialect/VM/IR/VMDialect.cpp
index 01c6121..cb0054d 100644
--- a/iree/compiler/Dialect/VM/IR/VMDialect.cpp
+++ b/iree/compiler/Dialect/VM/IR/VMDialect.cpp
@@ -134,8 +134,7 @@
 
     // Replace the return with a branch to the dest.
     OpBuilder builder(op);
-    builder.create<VM::BranchOp>(op->getLoc(), newDest,
-                                 llvm::to_vector<4>(returnOp.getOperands()));
+    builder.create<VM::BranchOp>(op->getLoc(), newDest, returnOp.getOperands());
     op->erase();
   }
 
diff --git a/iree/compiler/Dialect/VM/IR/VMOpFolders.cpp b/iree/compiler/Dialect/VM/IR/VMOpFolders.cpp
index 8734372..0fa4140 100644
--- a/iree/compiler/Dialect/VM/IR/VMOpFolders.cpp
+++ b/iree/compiler/Dialect/VM/IR/VMOpFolders.cpp
@@ -684,13 +684,13 @@
                                      PatternRewriter &rewriter) const override {
     if (matchPattern(op.condition(), m_NonZero())) {
       // True branch taken.
-      rewriter.replaceOpWithNewOp<BranchOp>(
-          op, op.getTrueDest(), llvm::to_vector<4>(op.getTrueOperands()));
+      rewriter.replaceOpWithNewOp<BranchOp>(op, op.getTrueDest(),
+                                            op.getTrueOperands());
       return matchSuccess();
     } else if (matchPattern(op.condition(), m_Zero())) {
       // False branch taken.
-      rewriter.replaceOpWithNewOp<BranchOp>(
-          op, op.getFalseDest(), llvm::to_vector<4>(op.getFalseOperands()));
+      rewriter.replaceOpWithNewOp<BranchOp>(op, op.getFalseDest(),
+                                            op.getFalseOperands());
       return matchSuccess();
     }
     return matchFailure();
@@ -731,9 +731,8 @@
     }
     if (auto notOp = dyn_cast<NotI32Op>(op.getCondition()->getDefiningOp())) {
       rewriter.replaceOpWithNewOp<CondBranchOp>(
-          op, notOp.getOperand(), op.getFalseDest(),
-          llvm::to_vector<4>(op.getFalseOperands()), op.getTrueDest(),
-          llvm::to_vector<4>(op.getTrueOperands()));
+          op, notOp.getOperand(), op.getFalseDest(), op.getFalseOperands(),
+          op.getTrueDest(), op.getTrueOperands());
       return matchSuccess();
     }
     return matchFailure();
@@ -809,7 +808,7 @@
     }
     rewriter.replaceOpWithNewOp<CallOp>(op, op.callee(),
                                         llvm::to_vector<4>(op.getResultTypes()),
-                                        llvm::to_vector<4>(op.getOperands()));
+                                        op.getOperands());
     return matchSuccess();
   }
 };
@@ -863,13 +862,12 @@
       return matchFailure();
     }
 
-    SmallVector<Value *, 4> operands(op.getODSOperands(1));
     if (condValue.getValue() != 0) {
       // True - always break (to the same destination).
-      rewriter.replaceOpWithNewOp<BreakOp>(op, op.getDest(), operands);
+      rewriter.replaceOpWithNewOp<BreakOp>(op, op.getDest(), op.operands());
     } else {
       // False - skip the break.
-      rewriter.replaceOpWithNewOp<BranchOp>(op, op.getDest(), operands);
+      rewriter.replaceOpWithNewOp<BranchOp>(op, op.getDest(), op.operands());
     }
     return matchSuccess();
   }
diff --git a/iree/compiler/IR/Sequencer/LLOps.cpp b/iree/compiler/IR/Sequencer/LLOps.cpp
index 48673c9..9a65251 100644
--- a/iree/compiler/IR/Sequencer/LLOps.cpp
+++ b/iree/compiler/IR/Sequencer/LLOps.cpp
@@ -350,10 +350,10 @@
     }
 
     SmallVector<Type, 8> resultTypes{dynamicDispatchOp.getResultTypes()};
-    SmallVector<Value *, 8> operands{dynamicDispatchOp.getArgOperands()};
     rewriter.replaceOpWithNewOp<IREESeq::LL::StaticDispatchOp>(
         dynamicDispatchOp, dynamicDispatchOp.getExecutable(),
-        dynamicDispatchOp.getEntryPoint(), workloadAttr, resultTypes, operands);
+        dynamicDispatchOp.getEntryPoint(), workloadAttr, resultTypes,
+        dynamicDispatchOp.getArgOperands());
     return matchSuccess();
   }
 };
diff --git a/iree/compiler/Transforms/Interpreter/LowerInterpreterDialect.cpp b/iree/compiler/Transforms/Interpreter/LowerInterpreterDialect.cpp
index 57c6958..ea3b518 100644
--- a/iree/compiler/Transforms/Interpreter/LowerInterpreterDialect.cpp
+++ b/iree/compiler/Transforms/Interpreter/LowerInterpreterDialect.cpp
@@ -47,10 +47,8 @@
 
   PatternMatchResult matchAndRewrite(IREEInterp::HL::BranchOp op,
                                      PatternRewriter &rewriter) const {
-    SmallVector<Value *, 8> operands{op.getOperation()->getOperands()};
-
-    rewriter.replaceOpWithNewOp<IREEInterp::LL::BranchOp>(op, op.getDest(),
-                                                          operands);
+    rewriter.replaceOpWithNewOp<IREEInterp::LL::BranchOp>(
+        op, op.getDest(), op.getOperation()->getOperands());
     return matchSuccess();
   }
 };
@@ -61,12 +59,9 @@
 
   PatternMatchResult matchAndRewrite(IREEInterp::HL::CondBranchOp op,
                                      PatternRewriter &rewriter) const {
-    SmallVector<Value *, 8> trueOperands{op.getTrueOperands()};
-    SmallVector<Value *, 8> falseOperands{op.getFalseOperands()};
-
     rewriter.replaceOpWithNewOp<IREEInterp::LL::CondBranchOp>(
-        op, op.getCondition(), op.getTrueDest(), trueOperands,
-        op.getFalseDest(), falseOperands);
+        op, op.getCondition(), op.getTrueDest(), op.getTrueOperands(),
+        op.getFalseDest(), op.getFalseOperands());
     return matchSuccess();
   }
 };
diff --git a/iree/compiler/Transforms/Sequencer/IdentifyReductionRegions.cpp b/iree/compiler/Transforms/Sequencer/IdentifyReductionRegions.cpp
index 40d4ac2..a540346 100644
--- a/iree/compiler/Transforms/Sequencer/IdentifyReductionRegions.cpp
+++ b/iree/compiler/Transforms/Sequencer/IdentifyReductionRegions.cpp
@@ -73,8 +73,8 @@
   OpBuilder regionBuilder(reductionRegionOp.getBody());
   reductionRegionOp.walk([&](xla_hlo::ReturnOp returnOp) {
     regionBuilder.setInsertionPoint(returnOp);
-    SmallVector<Value *, 4> returnValues(returnOp.getOperands());
-    regionBuilder.create<IREE::ReturnOp>(returnOp.getLoc(), returnValues);
+    regionBuilder.create<IREE::ReturnOp>(returnOp.getLoc(),
+                                         returnOp.getOperands());
     returnOp.erase();
   });
 
diff --git a/iree/compiler/Transforms/Sequencer/OutlineDispatchRegions.cpp b/iree/compiler/Transforms/Sequencer/OutlineDispatchRegions.cpp
index 14e5f94..7f686a8 100644
--- a/iree/compiler/Transforms/Sequencer/OutlineDispatchRegions.cpp
+++ b/iree/compiler/Transforms/Sequencer/OutlineDispatchRegions.cpp
@@ -151,10 +151,9 @@
       wrapAsMemRef(regionOp.getWorkload(), regionOp, dispatcherBuilder);
 
   // Create the dispatch op to the executable function.
-  SmallVector<Value *, 8> operandValues(regionOp.getArgOperands());
   auto dispatchOp = dispatcherBuilder.create<IREESeq::HL::DispatchOp>(
       regionOp.getLoc(), executable.getName(), entryPoint.getName(), workload,
-      entryPoint.getType().getResults(), operandValues);
+      entryPoint.getType().getResults(), regionOp.getArgOperands());
 
   // Replace uses of the existing results with the new results.
   for (int i = 0; i < regionOp.getNumResults(); ++i) {
diff --git a/iree/compiler/Utils/DispatchUtils.cpp b/iree/compiler/Utils/DispatchUtils.cpp
index 9cf84df..89533d5 100644
--- a/iree/compiler/Utils/DispatchUtils.cpp
+++ b/iree/compiler/Utils/DispatchUtils.cpp
@@ -298,10 +298,9 @@
   OpBuilder builder(regionOp);
 
   // Clone with new results.
-  SmallVector<Value *, 8> operands(regionOp.getArgOperands());
   auto newRegionOp = builder.create<IREE::DispatchRegionOp>(
-      regionOp.getLoc(), newReturnTypes, regionOp.getWorkload(), operands,
-      regionOp.getAttrs());
+      regionOp.getLoc(), newReturnTypes, regionOp.getWorkload(),
+      regionOp.getArgOperands(), regionOp.getAttrs());
   newRegionOp.getBody().takeBody(regionOp.getBody());
 
   // Replace uses of original values with the new values.