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.