Upgrade all remaining code to free create functions. NFC. (#21902)
The builder create methods are deprecated:
https://mlir.llvm.org/deprecation/. See
https://discourse.llvm.org/t/psa-opty-create-now-with-100-more-tab-complete/87339.
The main benefit of free functions is better tab completion with
LSP/IDE.
This should take care of all the remaining uses of create methods.
diff --git a/compiler/plugins/target/ROCM/Dialect/ROCM/IR/ROCMAttrs.cpp b/compiler/plugins/target/ROCM/Dialect/ROCM/IR/ROCMAttrs.cpp
index b88dde6..d92a914 100644
--- a/compiler/plugins/target/ROCM/Dialect/ROCM/IR/ROCMAttrs.cpp
+++ b/compiler/plugins/target/ROCM/Dialect/ROCM/IR/ROCMAttrs.cpp
@@ -128,10 +128,10 @@
if (!sharedMemoryBytes) {
IREE::Codegen::NullPointerType nullPointerType =
IREE::Codegen::NullPointerType::get(rewriter.getContext());
- return rewriter.create<IREE::Codegen::NullPointerOp>(loc, nullPointerType);
+ return IREE::Codegen::NullPointerOp::create(rewriter, loc, nullPointerType);
}
auto allocOp =
- rewriter.create<bufferization::AllocTensorOp>(loc, tensorType, dynSizes);
+ bufferization::AllocTensorOp::create(rewriter, loc, tensorType, dynSizes);
Attribute sharedAddrSpace = gpu::AddressSpaceAttr::get(
rewriter.getContext(), gpu::GPUDialect::getWorkgroupAddressSpace());
allocOp.setMemorySpaceAttr(sharedAddrSpace);
@@ -403,10 +403,10 @@
Location loc = op->getLoc();
Type I32Type = rewriter.getI32Type();
auto castIndexToI32 = [&](Value val) {
- return rewriter.create<arith::IndexCastOp>(loc, I32Type, val);
+ return arith::IndexCastOp::create(rewriter, loc, I32Type, val);
};
auto constI32 = [&](int val) {
- return rewriter.create<arith::ConstantIntOp>(loc, I32Type, val);
+ return arith::ConstantIntOp::create(rewriter, loc, I32Type, val);
};
MLIRContext *context = rewriter.getContext();
std::optional<int64_t> maybeSharedMemoryBytes =
@@ -415,7 +415,7 @@
(!maybeSharedMemoryBytes) ? 0 : maybeSharedMemoryBytes.value();
Value sharedMemory = createSharedMemory(rewriter, loc, sharedMemoryBytes);
Value k = castIndexToI32(
- rewriter.create<tensor::DimOp>(op.getLoc(), op.getInputs()[0], 1));
+ tensor::DimOp::create(rewriter, op.getLoc(), op.getInputs()[0], 1));
Value intrinsicsM = constI32(mma.getIntrinsicsM());
Value subgroupsM = constI32(mma.getSubgroupsM());
Value intrinsicsN = constI32(mma.getIntrinsicsN());
diff --git a/compiler/src/iree/compiler/Bindings/Native/Transforms/ConvertStreamableOps.cpp b/compiler/src/iree/compiler/Bindings/Native/Transforms/ConvertStreamableOps.cpp
index 913b3fc..f9e367f 100644
--- a/compiler/src/iree/compiler/Bindings/Native/Transforms/ConvertStreamableOps.cpp
+++ b/compiler/src/iree/compiler/Bindings/Native/Transforms/ConvertStreamableOps.cpp
@@ -235,9 +235,9 @@
anyTiedOperands
? moduleBuilder.getIndexArrayAttr(streamableFunc.tiedOperands)
: ArrayAttr{};
- streamableFunc.funcOp = moduleBuilder.create<IREE::Flow::FuncOp>(
- funcOp.getLoc(), funcOp.getName(), functionType, tiedOperandsAttr,
- funcAttrs, funcArgAttrs, funcResAttrs);
+ streamableFunc.funcOp = IREE::Flow::FuncOp::create(
+ moduleBuilder, funcOp.getLoc(), funcOp.getName(), functionType,
+ tiedOperandsAttr, funcAttrs, funcArgAttrs, funcResAttrs);
// Swap out the symbol in the symbol table.
symbolTable.erase(funcOp);
@@ -266,8 +266,8 @@
// It should return the required number of dynamic dimensions.
SmallVector<Type> resultDimTypes(streamableFunc.requiredResultDims,
builder.getIndexType());
- auto calculateCallOp = builder.create<IREE::Util::CallOp>(
- callOp.getLoc(), resultDimTypes,
+ auto calculateCallOp = IREE::Util::CallOp::create(
+ builder, callOp.getLoc(), resultDimTypes,
streamableFunc.resultDimsFunc.getLeafReference().getValue(),
callOp.getOperands(), /*tied_operands=*/ArrayAttr{},
callOp.getArgAttrsAttr(), callOp.getResAttrsAttr());
@@ -302,8 +302,8 @@
}
// Replace the original func.call with the new flow.call.
- auto streamableCallOp = builder.create<IREE::Flow::CallOp>(
- callOp.getLoc(), callOp.getCalleeAttr(), callOp.getResultTypes(),
+ auto streamableCallOp = IREE::Flow::CallOp::create(
+ builder, callOp.getLoc(), callOp.getCalleeAttr(), callOp.getResultTypes(),
resultDims, callOp.getOperands(), argDims,
streamableFunc.funcOp.getTiedOperandsAttr());
streamableCallOp->setDialectAttrs(callOp->getDialectAttrs());
diff --git a/compiler/src/iree/compiler/Bindings/Native/Transforms/WrapEntryPoints.cpp b/compiler/src/iree/compiler/Bindings/Native/Transforms/WrapEntryPoints.cpp
index 3190e8e..476ddb7 100644
--- a/compiler/src/iree/compiler/Bindings/Native/Transforms/WrapEntryPoints.cpp
+++ b/compiler/src/iree/compiler/Bindings/Native/Transforms/WrapEntryPoints.cpp
@@ -185,14 +185,16 @@
// program and the tensors consumed by the import.
if (tensorArgs.empty()) {
// No tensors passed to the import - pass in an immediate signal.
- waitFence = entryBuilder.create<IREE::Util::NullOp>(
- importOp.getLoc(), entryBuilder.getType<IREE::HAL::FenceType>());
+ waitFence = IREE::Util::NullOp::create(
+ entryBuilder, importOp.getLoc(),
+ entryBuilder.getType<IREE::HAL::FenceType>());
} else {
- waitFence = entryBuilder.create<IREE::HAL::FenceCreateOp>(
- importOp.getLoc(), entryBuilder.getType<IREE::HAL::FenceType>(),
- device, IREE::HAL::FenceFlagBitfield::None);
- auto barrierOp = entryBuilder.create<IREE::HAL::TensorBarrierOp>(
- importOp.getLoc(), tensorArgs, waitFence);
+ waitFence = IREE::HAL::FenceCreateOp::create(
+ entryBuilder, importOp.getLoc(),
+ entryBuilder.getType<IREE::HAL::FenceType>(), device,
+ IREE::HAL::FenceFlagBitfield::None);
+ auto barrierOp = IREE::HAL::TensorBarrierOp::create(
+ entryBuilder, importOp.getLoc(), tensorArgs, waitFence);
for (auto [argIndex, readyArg] :
llvm::zip_equal(tensorArgIndices, barrierOp.getResults())) {
entryArgs[argIndex] = readyArg;
@@ -207,12 +209,14 @@
llvm::any_of(oldImportType.getResults(), llvm::IsaPred<TensorType>);
if (!haveTensorResults && !hasSideEffects) {
// No tensors returned from import - pass in an immediate signal.
- signalFence = entryBuilder.create<IREE::Util::NullOp>(
- importOp.getLoc(), entryBuilder.getType<IREE::HAL::FenceType>());
+ signalFence = IREE::Util::NullOp::create(
+ entryBuilder, importOp.getLoc(),
+ entryBuilder.getType<IREE::HAL::FenceType>());
} else {
- signalFence = entryBuilder.create<IREE::HAL::FenceCreateOp>(
- importOp.getLoc(), entryBuilder.getType<IREE::HAL::FenceType>(),
- device, IREE::HAL::FenceFlagBitfield::None);
+ signalFence = IREE::HAL::FenceCreateOp::create(
+ entryBuilder, importOp.getLoc(),
+ entryBuilder.getType<IREE::HAL::FenceType>(), device,
+ IREE::HAL::FenceFlagBitfield::None);
}
break;
}
@@ -231,8 +235,8 @@
// import.
auto encodingAttr =
importOp.getArgAttrOfType<TypeAttr>(argIndex, "iree.abi.encoding");
- auto tensorExportOp = entryBuilder.create<IREE::HAL::TensorExportOp>(
- arg.getLoc(), newType, arg,
+ auto tensorExportOp = IREE::HAL::TensorExportOp::create(
+ entryBuilder, arg.getLoc(), newType, arg,
fallback(encodingAttr, TypeAttr::get(oldType)),
/*name=*/nullptr,
fallback(importOp.getArgAttr(argIndex, "iree.abi.affinity"),
@@ -250,18 +254,18 @@
}
// Make the call with the updated types.
- auto callOp = entryBuilder.create<IREE::Util::CallOp>(importOp.getLoc(),
- importOp, arguments);
+ auto callOp = IREE::Util::CallOp::create(entryBuilder, importOp.getLoc(),
+ importOp, arguments);
// If the call has side-effects then we need to wait on its signal fence on
// the host. This is because they may have launched a thread of their own to
// perform work that we can't track.
if (hasSideEffects && signalFence) {
auto timeoutMillis =
- entryBuilder.create<arith::ConstantIntOp>(importOp.getLoc(), -1, 32);
- entryBuilder.create<IREE::HAL::FenceAwaitOp>(
- importOp.getLoc(), entryBuilder.getI32Type(), timeoutMillis,
- IREE::HAL::WaitFlagBitfield::None, signalFence);
+ arith::ConstantIntOp::create(entryBuilder, importOp.getLoc(), -1, 32);
+ IREE::HAL::FenceAwaitOp::create(
+ entryBuilder, importOp.getLoc(), entryBuilder.getI32Type(),
+ timeoutMillis, IREE::HAL::WaitFlagBitfield::None, signalFence);
}
// Marshal results.
@@ -278,8 +282,8 @@
resultIndex, "iree.abi.consume");
auto affinityAttr =
importOp.getResultAttr(resultIndex, "iree.abi.affinity");
- auto tensorImportOp = entryBuilder.create<IREE::HAL::TensorImportOp>(
- importOp.getLoc(), oldType, result,
+ auto tensorImportOp = IREE::HAL::TensorImportOp::create(
+ entryBuilder, importOp.getLoc(), oldType, result,
fallback(encodingAttr, TypeAttr::get(oldType)),
consumeAttr ? true : false, signalFence,
/*name=*/nullptr, fallback(affinityAttr, defaultAffinityAttr));
@@ -289,7 +293,7 @@
}
}
- entryBuilder.create<IREE::Util::ReturnOp>(importOp.getLoc(), results);
+ IREE::Util::ReturnOp::create(entryBuilder, importOp.getLoc(), results);
stripABIAttrs(importOp);
@@ -616,8 +620,8 @@
auto affinityAttr = exportOp.getArgAttr(argIndex, "iree.abi.affinity");
auto argName = inferArgumentName(entryBuilder.getContext(), argIndex,
exportOp.getArgAttrDict(argIndex));
- auto tensorImportOp = entryBuilder.create<IREE::HAL::TensorImportOp>(
- arg.getLoc(), oldType, arg,
+ auto tensorImportOp = IREE::HAL::TensorImportOp::create(
+ entryBuilder, arg.getLoc(), oldType, arg,
fallback(encodingAttr, TypeAttr::get(oldType)),
/*consume=*/consumeAttr ? true : false, waitFence, argName,
fallback(affinityAttr, defaultAffinityAttr));
@@ -628,8 +632,8 @@
}
// Make the call with the original types.
- auto callOp = entryBuilder.create<IREE::Util::CallOp>(exportOp.getLoc(),
- exportOp, arguments);
+ auto callOp = IREE::Util::CallOp::create(entryBuilder, exportOp.getLoc(),
+ exportOp, arguments);
auto asyncResults = llvm::to_vector(callOp.getResults());
// Alias results to storage buffers if provided.
@@ -641,8 +645,8 @@
auto source = asyncResults[resultIndex];
auto sourceDims = IREE::Util::buildDynamicDimsForValue(
exportOp.getLoc(), source, entryBuilder);
- auto aliasOp = entryBuilder.create<IREE::HAL::TensorAliasOp>(
- exportOp.getLoc(), source.getType(), source, sourceDims,
+ auto aliasOp = IREE::HAL::TensorAliasOp::create(
+ entryBuilder, exportOp.getLoc(), source.getType(), source, sourceDims,
resultStorages[resultIndex], waitFence,
fallback(exportOp.getResultAttr(resultIndex, "iree.abi.affinity"),
defaultAffinityAttr));
@@ -662,11 +666,11 @@
if (asyncTensors.empty()) {
// TODO(benvanik): maybe use a global timeline? global stores may not
// have completed by now in cases where the user wants to loop back.
- entryBuilder.create<IREE::HAL::FenceSignalOp>(exportOp.getLoc(),
- signalFence);
+ IREE::HAL::FenceSignalOp::create(entryBuilder, exportOp.getLoc(),
+ signalFence);
} else {
- auto barrierOp = entryBuilder.create<IREE::HAL::TensorBarrierOp>(
- exportOp.getLoc(), asyncTensors, signalFence);
+ auto barrierOp = IREE::HAL::TensorBarrierOp::create(
+ entryBuilder, exportOp.getLoc(), asyncTensors, signalFence);
asyncResults = llvm::to_vector(barrierOp.getResults());
}
}
@@ -686,8 +690,8 @@
exportOp.getResultAttrDict(resultIndex));
auto dynamicDims = IREE::Util::buildDynamicDimsForValue(
result.getLoc(), result, entryBuilder);
- auto tensorExportOp = entryBuilder.create<IREE::HAL::TensorExportOp>(
- result.getLoc(), newType, result,
+ auto tensorExportOp = IREE::HAL::TensorExportOp::create(
+ entryBuilder, result.getLoc(), newType, result,
fallback(encodingAttr, TypeAttr::get(result.getType())), dynamicDims,
resultName, fallback(affinityAttr, defaultAffinityAttr));
results.push_back(tensorExportOp);
@@ -698,7 +702,7 @@
stripABIAttrs(exportOp);
- entryBuilder.create<IREE::Util::ReturnOp>(exportOp.getLoc(), results);
+ IREE::Util::ReturnOp::create(entryBuilder, exportOp.getLoc(), results);
return wrapperOp;
}
diff --git a/compiler/src/iree/compiler/Bindings/TFLite/Transforms/WrapEntryPoints.cpp b/compiler/src/iree/compiler/Bindings/TFLite/Transforms/WrapEntryPoints.cpp
index 07740ac..74c8ac7 100644
--- a/compiler/src/iree/compiler/Bindings/TFLite/Transforms/WrapEntryPoints.cpp
+++ b/compiler/src/iree/compiler/Bindings/TFLite/Transforms/WrapEntryPoints.cpp
@@ -123,8 +123,8 @@
dynamicDims.tensorType = tensorType;
for (unsigned i = 0; i < tensorType.getRank(); ++i) {
if (tensorType.isDynamicDim(i)) {
- auto globalOp = moduleBuilder.create<IREE::Util::GlobalOp>(
- loc, (namePrefix + "_dim" + std::to_string(i)).str(),
+ auto globalOp = IREE::Util::GlobalOp::create(
+ moduleBuilder, loc, (namePrefix + "_dim" + std::to_string(i)).str(),
/*isMutable=*/true, moduleBuilder.getIndexType());
globalOp.setPrivate();
dynamicDims.globalOps.push_back(globalOp);
@@ -206,8 +206,8 @@
dirtyGlobalOp.createLoadOp(loc, entryBuilder).getLoadedGlobalValue();
auto *recalculateBlock = calcFuncOp.addBlock();
auto *returnBlock = calcFuncOp.addBlock();
- entryBuilder.create<mlir::cf::CondBranchOp>(loc, dirtyValue,
- recalculateBlock, returnBlock);
+ mlir::cf::CondBranchOp::create(entryBuilder, loc, dirtyValue,
+ recalculateBlock, returnBlock);
auto *followBlock = entryBlock.splitBlock(entryBuilder.getInsertionPoint());
auto bufferType = entryBuilder.getType<IREE::HAL::BufferType>();
@@ -225,9 +225,10 @@
auto inputPlaceholder =
recalculateBuilder.createOrFold<IREE::Util::NullOp>(loc, bufferType);
auto dynamicDims = inputDynamicDims.loadDynamicDims(recalculateBuilder);
- auto castOp = recalculateBuilder.create<IREE::HAL::TensorImportOp>(
- loc, inputValue.getType(), inputPlaceholder, inputValue.getType(),
- dynamicDims, /*consume=*/false, /*wait_fence=*/Value{},
+ auto castOp = IREE::HAL::TensorImportOp::create(
+ recalculateBuilder, loc, inputValue.getType(), inputPlaceholder,
+ inputValue.getType(), dynamicDims, /*consume=*/false,
+ /*wait_fence=*/Value{},
/*name=*/nullptr,
/*affinity=*/nullptr);
inputValue.replaceAllUsesWith(castOp.getTarget());
@@ -235,7 +236,7 @@
while (entryBlock.getNumArguments() > 0) {
entryBlock.eraseArgument(entryBlock.getNumArguments() - 1);
}
- recalculateBuilder.create<mlir::cf::BranchOp>(loc, followBlock);
+ mlir::cf::BranchOp::create(recalculateBuilder, loc, followBlock);
recalculateBlock->moveBefore(followBlock);
// Replace each exit from the function with a storage back to the shape
@@ -263,7 +264,7 @@
auto falseValue =
exitBuilder.createOrFold<arith::ConstantIntOp>(exitLoc, 0, 1);
dirtyGlobalOp.createStoreOp(exitLoc, falseValue, exitBuilder);
- exitBuilder.create<IREE::Util::ReturnOp>(exitLoc);
+ IREE::Util::ReturnOp::create(exitBuilder, exitLoc);
returnOp.erase();
}
@@ -283,7 +284,7 @@
auto *exitBlock = builder.createBlock(entryBlock->getParent(),
++Region::iterator(entryBlock));
if (caseCount == 0) {
- builder.create<mlir::cf::BranchOp>(loc, exitBlock);
+ mlir::cf::BranchOp::create(builder, loc, exitBlock);
return exitBlock;
}
SmallVector<Block *> compareBlocks;
@@ -293,20 +294,20 @@
caseBlocks.push_back(builder.createBlock(exitBlock));
}
builder.restoreInsertionPoint(ip);
- builder.create<mlir::cf::BranchOp>(loc, compareBlocks[0]);
+ mlir::cf::BranchOp::create(builder, loc, compareBlocks[0]);
for (size_t i = 0; i < caseCount; ++i) {
auto compareBuilder = OpBuilder::atBlockBegin(compareBlocks[i]);
auto caseValue =
compareBuilder.createOrFold<arith::ConstantIndexOp>(loc, i);
auto eqValue = compareBuilder.createOrFold<arith::CmpIOp>(
loc, arith::CmpIPredicate::eq, indexValue, caseValue);
- compareBuilder.create<mlir::cf::CondBranchOp>(
- loc, eqValue, caseBlocks[i],
+ mlir::cf::CondBranchOp::create(
+ compareBuilder, loc, eqValue, caseBlocks[i],
i < caseCount - 1 ? compareBlocks[i + 1] : exitBlock);
auto caseBuilder = OpBuilder::atBlockBegin(caseBlocks[i]);
caseGenerator(i, caseBuilder);
- caseBuilder.create<mlir::cf::BranchOp>(loc, exitBlock);
+ mlir::cf::BranchOp::create(caseBuilder, loc, exitBlock);
}
builder = OpBuilder::atBlockBegin(exitBlock);
return exitBlock;
@@ -316,8 +317,8 @@
void packShape(Location loc, const DynamicDims &dynamicDims, Value listValue,
OpBuilder &builder) {
auto shapeType = dynamicDims.tensorType;
- builder.create<IREE::Util::ListResizeOp>(
- loc, listValue,
+ IREE::Util::ListResizeOp::create(
+ builder, loc, listValue,
builder.createOrFold<arith::ConstantIndexOp>(loc, shapeType.getRank()));
unsigned dynamicDimIdx = 0;
for (unsigned i = 0; i < shapeType.getRank(); ++i) {
@@ -330,9 +331,9 @@
dimValue = builder.createOrFold<arith::ConstantIndexOp>(
loc, shapeType.getDimSize(i));
}
- builder.create<IREE::Util::ListSetOp>(
- loc, listValue, builder.createOrFold<arith::ConstantIndexOp>(loc, i),
- dimValue);
+ IREE::Util::ListSetOp::create(
+ builder, loc, listValue,
+ builder.createOrFold<arith::ConstantIndexOp>(loc, i), dimValue);
}
}
@@ -362,8 +363,8 @@
void createQueryInputShapeFunc(Location loc, StringRef namePrefix,
ArrayRef<DynamicDims> inputDynamicDims,
OpBuilder &moduleBuilder) {
- auto queryFuncOp = moduleBuilder.create<IREE::Util::FuncOp>(
- loc, namePrefix.str() + "_query_input_shape",
+ auto queryFuncOp = IREE::Util::FuncOp::create(
+ moduleBuilder, loc, namePrefix.str() + "_query_input_shape",
moduleBuilder.getFunctionType(/*inputs=*/
TypeRange{
moduleBuilder.getIndexType(),
@@ -384,7 +385,7 @@
entryBuilder);
auto exitBuilder = OpBuilder::atBlockBegin(exitBlock);
- exitBuilder.create<IREE::Util::ReturnOp>(loc);
+ IREE::Util::ReturnOp::create(exitBuilder, loc);
}
// Creates a function to resize |inputGlobalOps| and sets the |dirtyGlobalOp|
@@ -395,8 +396,8 @@
ArrayRef<DynamicDims> inputDynamicDims,
IREE::Util::GlobalOp dirtyGlobalOp,
OpBuilder &moduleBuilder) {
- auto resizeFuncOp = moduleBuilder.create<IREE::Util::FuncOp>(
- loc, namePrefix.str() + "_resize_input_shape",
+ auto resizeFuncOp = IREE::Util::FuncOp::create(
+ moduleBuilder, loc, namePrefix.str() + "_resize_input_shape",
moduleBuilder.getFunctionType(/*inputs=*/
TypeRange{
moduleBuilder.getIndexType(),
@@ -420,7 +421,7 @@
auto exitBuilder = OpBuilder::atBlockBegin(exitBlock);
auto trueValue = exitBuilder.createOrFold<arith::ConstantIntOp>(loc, 1, 1);
dirtyGlobalOp.createStoreOp(loc, trueValue, exitBuilder);
- exitBuilder.create<IREE::Util::ReturnOp>(loc);
+ IREE::Util::ReturnOp::create(exitBuilder, loc);
}
// Creates a function to query the |outputGlobalOps| at runtime by the
@@ -431,8 +432,8 @@
ArrayRef<DynamicDims> outputDynamicDims,
IREE::Util::FuncOp calculateShapeFuncOp,
OpBuilder &moduleBuilder) {
- auto queryFuncOp = moduleBuilder.create<IREE::Util::FuncOp>(
- loc, namePrefix.str() + "_query_output_shape",
+ auto queryFuncOp = IREE::Util::FuncOp::create(
+ moduleBuilder, loc, namePrefix.str() + "_query_output_shape",
moduleBuilder.getFunctionType(/*inputs=*/
TypeRange{
moduleBuilder.getIndexType(),
@@ -447,8 +448,8 @@
// Always call the recalculation function - it checks for whether it needs
// to run based on the dirty flag value.
- entryBuilder.create<IREE::Util::CallOp>(loc, calculateShapeFuncOp,
- ValueRange{});
+ IREE::Util::CallOp::create(entryBuilder, loc, calculateShapeFuncOp,
+ ValueRange{});
auto *exitBlock = buildSwitch(
loc, entryBlock->getArgument(0), outputDynamicDims.size(),
@@ -458,7 +459,7 @@
entryBuilder);
auto exitBuilder = OpBuilder::atBlockBegin(exitBlock);
- exitBuilder.create<IREE::Util::ReturnOp>(loc);
+ IREE::Util::ReturnOp::create(exitBuilder, loc);
}
// Creates the corresponding wrapper function for the given entry point.
@@ -487,8 +488,8 @@
auto wrapperFuncType =
moduleBuilder.getFunctionType(inputTypes, outputTypes);
- auto wrapperFuncOp = moduleBuilder.create<IREE::Util::FuncOp>(
- entryFuncOp.getLoc(), "_tflite_main", wrapperFuncType);
+ auto wrapperFuncOp = IREE::Util::FuncOp::create(
+ moduleBuilder, entryFuncOp.getLoc(), "_tflite_main", wrapperFuncType);
wrapperFuncOp.setPublic();
wrapperFuncOp.getOperation()->setAttr("iree.abi.stub",
moduleBuilder.getUnitAttr());
@@ -524,16 +525,16 @@
dynamicDims.push_back(globalOp.createLoadOp(arg.getLoc(), entryBuilder)
.getLoadedGlobalValue());
}
- callOperands.push_back(entryBuilder.create<IREE::HAL::TensorImportOp>(
- arg.getLoc(), inputDynamicDims.tensorType, arg,
+ callOperands.push_back(IREE::HAL::TensorImportOp::create(
+ entryBuilder, arg.getLoc(), inputDynamicDims.tensorType, arg,
TypeAttr::get(inputDynamicDims.tensorType), dynamicDims,
/*consume=*/UnitAttr{},
/*wait_fence=*/Value{},
/*name=*/nullptr,
/*affinity=*/nullptr));
}
- auto callOp = entryBuilder.create<IREE::Util::CallOp>(
- entryFuncOp.getLoc(), entryFuncOp, callOperands);
+ auto callOp = IREE::Util::CallOp::create(entryBuilder, entryFuncOp.getLoc(),
+ entryFuncOp, callOperands);
SmallVector<Value> callResults;
for (auto [result, outputDynamicDims] :
llvm::zip_equal(callOp.getResults(), outputDynamicDims)) {
@@ -541,12 +542,13 @@
for (unsigned i = 0; i < outputDynamicDims.tensorType.getRank(); ++i) {
if (outputDynamicDims.tensorType.isDynamicDim(i)) {
dynamicDims.push_back(
- entryBuilder.create<tensor::DimOp>(result.getLoc(), result, i));
+ tensor::DimOp::create(entryBuilder, result.getLoc(), result, i));
}
}
- callResults.push_back(entryBuilder.create<IREE::HAL::TensorExportOp>(
- result.getLoc(), bufferType, result, outputDynamicDims.tensorType,
- dynamicDims, /*name=*/nullptr, /*affinity=*/nullptr));
+ callResults.push_back(IREE::HAL::TensorExportOp::create(
+ entryBuilder, result.getLoc(), bufferType, result,
+ outputDynamicDims.tensorType, dynamicDims, /*name=*/nullptr,
+ /*affinity=*/nullptr));
for (auto [dynamicDim, globalOp] :
llvm::zip_equal(dynamicDims, outputDynamicDims.globalOps)) {
globalOp.createStoreOp(result.getLoc(), dynamicDim, entryBuilder);
@@ -556,11 +558,11 @@
// We recomputed the shapes of the outputs and can clear the dirty flag.
dirtyGlobalOp.createStoreOp(
entryFuncOp.getLoc(),
- entryBuilder.create<arith::ConstantIntOp>(entryFuncOp.getLoc(), 0, 1),
+ arith::ConstantIntOp::create(entryBuilder, entryFuncOp.getLoc(), 0, 1),
entryBuilder);
- entryBuilder.create<IREE::Util::ReturnOp>(entryFuncOp.getLoc(),
- callResults);
+ IREE::Util::ReturnOp::create(entryBuilder, entryFuncOp.getLoc(),
+ callResults);
}
void wrapEntryPoint(IREE::Util::FuncOp funcOp) {
@@ -577,8 +579,8 @@
// Create internal shape calculation function that updates output shapes if
// needed. This is only required if there are dynamic shapes.
- auto dirtyGlobalOp = moduleBuilder.create<IREE::Util::GlobalOp>(
- loc, namePrefix + "_shapes_dirty",
+ auto dirtyGlobalOp = IREE::Util::GlobalOp::create(
+ moduleBuilder, loc, namePrefix + "_shapes_dirty",
/*isMutable=*/true, moduleBuilder.getI1Type(),
moduleBuilder.getIntegerAttr(moduleBuilder.getI1Type(), 1));
dirtyGlobalOp.setPrivate();
diff --git a/compiler/src/iree/compiler/Codegen/LLVMGPU/LLVMGPUConfigureTensorLayouts.cpp b/compiler/src/iree/compiler/Codegen/LLVMGPU/LLVMGPUConfigureTensorLayouts.cpp
index c87c495..1741992 100644
--- a/compiler/src/iree/compiler/Codegen/LLVMGPU/LLVMGPUConfigureTensorLayouts.cpp
+++ b/compiler/src/iree/compiler/Codegen/LLVMGPU/LLVMGPUConfigureTensorLayouts.cpp
@@ -231,11 +231,11 @@
// Set layouts for lhs, rhs and acc.
rewriter.setInsertionPoint(contract);
auto layoutedLhs =
- rewriter.create<ToLayoutOp>(loc, lhs, aLayout, schedule.intrinsic);
+ ToLayoutOp::create(rewriter, loc, lhs, aLayout, schedule.intrinsic);
auto layoutedRhs =
- rewriter.create<ToLayoutOp>(loc, rhs, bLayout, schedule.intrinsic);
+ ToLayoutOp::create(rewriter, loc, rhs, bLayout, schedule.intrinsic);
auto layoutedAcc =
- rewriter.create<ToLayoutOp>(loc, acc, cLayout, schedule.intrinsic);
+ ToLayoutOp::create(rewriter, loc, acc, cLayout, schedule.intrinsic);
// Promote matmul lhs and rhs.
// TODO: This is a hack until layout analysis is improved. The layout analysis
@@ -258,8 +258,8 @@
// Set layout for result.
rewriter.setInsertionPointAfter(contract);
- auto toLayout = rewriter.create<ToLayoutOp>(loc, contract->getResult(0),
- cLayout, schedule.intrinsic);
+ auto toLayout = ToLayoutOp::create(rewriter, loc, contract->getResult(0),
+ cLayout, schedule.intrinsic);
rewriter.replaceAllUsesExcept(contract->getResult(0), toLayout.getResult(),
toLayout);
@@ -308,11 +308,11 @@
// Set layouts for lhs, rhs and acc.
rewriter.setInsertionPoint(conv);
auto layoutedLhs =
- rewriter.create<ToLayoutOp>(loc, lhs, aLayout, schedule.intrinsic);
+ ToLayoutOp::create(rewriter, loc, lhs, aLayout, schedule.intrinsic);
auto layoutedRhs =
- rewriter.create<ToLayoutOp>(loc, rhs, bLayout, schedule.intrinsic);
+ ToLayoutOp::create(rewriter, loc, rhs, bLayout, schedule.intrinsic);
auto layoutedAcc =
- rewriter.create<ToLayoutOp>(loc, acc, cLayout, schedule.intrinsic);
+ ToLayoutOp::create(rewriter, loc, acc, cLayout, schedule.intrinsic);
// Promote matmul lhs and rhs.
// TODO: This is a hack until layout analysis is improved. The layout analysis
@@ -335,8 +335,8 @@
// Set layout for result.
rewriter.setInsertionPointAfter(conv);
- auto toLayout = rewriter.create<ToLayoutOp>(loc, conv->getResult(0), cLayout,
- schedule.intrinsic);
+ auto toLayout = ToLayoutOp::create(rewriter, loc, conv->getResult(0), cLayout,
+ schedule.intrinsic);
rewriter.replaceAllUsesExcept(conv->getResult(0), toLayout.getResult(),
toLayout);
@@ -553,7 +553,7 @@
for (OpResult result : linalgOp->getResults()) {
VectorLayoutInterface resultLayout =
layout.apply(linalgOp.getIndexingMapMatchingResult(result));
- auto toLayout = rewriter.create<ToLayoutOp>(loc, result, resultLayout);
+ auto toLayout = ToLayoutOp::create(rewriter, loc, result, resultLayout);
rewriter.replaceAllUsesExcept(result, toLayout, toLayout);
}
@@ -728,7 +728,7 @@
for (OpResult result : candidate->getResults()) {
VectorLayoutInterface resultLayout =
layout.apply(candidate.getIndexingMapMatchingResult(result));
- auto toLayout = rewriter.create<ToLayoutOp>(loc, result, resultLayout);
+ auto toLayout = ToLayoutOp::create(rewriter, loc, result, resultLayout);
rewriter.replaceAllUsesExcept(result, toLayout, toLayout);
}
diff --git a/compiler/src/iree/compiler/ConstEval/JitGlobals.cpp b/compiler/src/iree/compiler/ConstEval/JitGlobals.cpp
index 1467e74..0a85c44 100644
--- a/compiler/src/iree/compiler/ConstEval/JitGlobals.cpp
+++ b/compiler/src/iree/compiler/ConstEval/JitGlobals.cpp
@@ -473,8 +473,8 @@
targetSymbolTable, moduleBuilder)))
return failure();
- auto funcOp = moduleBuilder.create<IREE::Util::FuncOp>(
- initializerOp.getLoc(), "jit_eval",
+ auto funcOp = IREE::Util::FuncOp::create(
+ moduleBuilder, initializerOp.getLoc(), "jit_eval",
moduleBuilder.getFunctionType({}, {}));
targetSymbolTable.insert(funcOp);
IRMapping unusedMapping;
@@ -489,7 +489,7 @@
private:
static ModuleOp createInnerModule(ModuleOp sourceModuleOp) {
OpBuilder builder = OpBuilder::atBlockEnd(sourceModuleOp.getBody());
- auto m = builder.create<ModuleOp>(sourceModuleOp.getLoc());
+ auto m = ModuleOp::create(builder, sourceModuleOp.getLoc());
m->setAttr("iree.consteval", builder.getUnitAttr());
return m;
}
@@ -583,7 +583,7 @@
// Rewrite the terminator and the function type.
entryBlock->getTerminator()->erase();
OpBuilder termBuilder = OpBuilder::atBlockEnd(entryBlock);
- termBuilder.create<IREE::Util::ReturnOp>(funcOp.getLoc(), returns);
+ IREE::Util::ReturnOp::create(termBuilder, funcOp.getLoc(), returns);
funcOp.setType(termBuilder.getFunctionType(argumentTypes, returnTypes));
jitFunctions.push_back(std::move(desc));
diff --git a/compiler/src/iree/compiler/DispatchCreation/BitcastUnsupportedElementTypes.cpp b/compiler/src/iree/compiler/DispatchCreation/BitcastUnsupportedElementTypes.cpp
index fe60670..d6779d4 100644
--- a/compiler/src/iree/compiler/DispatchCreation/BitcastUnsupportedElementTypes.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/BitcastUnsupportedElementTypes.cpp
@@ -63,10 +63,10 @@
rewriter.setInsertionPoint(load);
// Load in the new type -> bitcast back to the original type.
- auto newLoad = rewriter.create<IREE::TensorExt::DispatchTensorLoadOp>(
- load.getLoc(), targetType, arg, load.getSourceDims(), load.getOffsets(),
- load.getSizes(), load.getStrides(), load.getStaticOffsets(), newSizes,
- load.getStaticStrides());
+ auto newLoad = IREE::TensorExt::DispatchTensorLoadOp::create(
+ rewriter, load.getLoc(), targetType, arg, load.getSourceDims(),
+ load.getOffsets(), load.getSizes(), load.getStrides(),
+ load.getStaticOffsets(), newSizes, load.getStaticStrides());
rewriter.replaceOpWithNewOp<IREE::TensorExt::BitCastOp>(
load, originalType, newLoad, load.getSizes(), load.getSizes());
return success();
@@ -81,9 +81,9 @@
OpBuilder::InsertionGuard g(rewriter);
rewriter.setInsertionPoint(store);
- auto bitcast = rewriter.create<IREE::TensorExt::BitCastOp>(
- store.getLoc(), targetType, store.getValue(), store.getSizes(),
- store.getSizes());
+ auto bitcast = IREE::TensorExt::BitCastOp::create(
+ rewriter, store.getLoc(), targetType, store.getValue(),
+ store.getSizes(), store.getSizes());
// Bitcast to the target type -> store in the new type.
rewriter.replaceOpWithNewOp<IREE::TensorExt::DispatchTensorStoreOp>(
store, TypeRange{}, bitcast, arg, store.getTargetDims(),
@@ -136,9 +136,9 @@
rewriter.setInsertionPoint(workgroupsOp);
ValueRange sourceDims =
workgroupsOp.getOperandDynamicDims(operand.getOperandNumber());
- auto inputBitcast = rewriter.create<IREE::Flow::TensorBitCastOp>(
- workgroupsOp.getLoc(), castedTensorType, operand.get(), sourceDims,
- sourceDims);
+ auto inputBitcast = IREE::Flow::TensorBitCastOp::create(
+ rewriter, workgroupsOp.getLoc(), castedTensorType, operand.get(),
+ sourceDims, sourceDims);
operand.assign(inputBitcast);
blockArg.setType(castedDispatchType);
@@ -205,8 +205,8 @@
ValueRange dynamicDims =
workgroupsOp.getOperandDynamicDims(tiedOperand->getOperandNumber());
- auto inputBitcast = rewriter.create<IREE::Flow::TensorBitCastOp>(
- workgroupsOp.getLoc(), castedTensorType, tiedOperand->get(),
+ auto inputBitcast = IREE::Flow::TensorBitCastOp::create(
+ rewriter, workgroupsOp.getLoc(), castedTensorType, tiedOperand->get(),
dynamicDims, dynamicDims);
tiedOperand->assign(inputBitcast);
}
@@ -224,9 +224,9 @@
// Clone the op with new result types and steal the body.
rewriter.setInsertionPoint(workgroupsOp);
- auto newWorkgroupsOp = rewriter.create<IREE::Flow::DispatchWorkgroupsOp>(
- workgroupsOp->getLoc(), workgroupsOp.getWorkload(), newResultTypes,
- workgroupsOp.getResultDims(), workgroupsOp.getArguments(),
+ auto newWorkgroupsOp = IREE::Flow::DispatchWorkgroupsOp::create(
+ rewriter, workgroupsOp->getLoc(), workgroupsOp.getWorkload(),
+ newResultTypes, workgroupsOp.getResultDims(), workgroupsOp.getArguments(),
workgroupsOp.getArgumentDims(),
workgroupsOp.getTiedResultOperandIndices(), workgroupsOp->getAttrs());
newWorkgroupsOp->setDialectAttrs(workgroupsOp->getDialectAttrs());
@@ -246,9 +246,9 @@
auto originalType =
cast<RankedTensorType>(workgroupsOp.getResult(resultIndex).getType());
ValueRange dynamicDims = newWorkgroupsOp.getResultDynamicDims(resultIndex);
- replacements[resultIndex] = rewriter.create<IREE::Flow::TensorBitCastOp>(
- workgroupsOp.getLoc(), originalType, replacements[resultIndex],
- dynamicDims, dynamicDims);
+ replacements[resultIndex] = IREE::Flow::TensorBitCastOp::create(
+ rewriter, workgroupsOp.getLoc(), originalType,
+ replacements[resultIndex], dynamicDims, dynamicDims);
}
rewriter.replaceOp(workgroupsOp, replacements);
diff --git a/compiler/src/iree/compiler/DispatchCreation/BubbleUpExpandShapes.cpp b/compiler/src/iree/compiler/DispatchCreation/BubbleUpExpandShapes.cpp
index 27e4dda..59d7907 100644
--- a/compiler/src/iree/compiler/DispatchCreation/BubbleUpExpandShapes.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/BubbleUpExpandShapes.cpp
@@ -149,10 +149,10 @@
if (!fillOp)
return failure();
- auto newExtractOp = rewriter.create<tensor::ExtractSliceOp>(
- extractOp.getLoc(), extractOp.getType(), fillOp.getOutputs()[0],
- extractOp.getMixedOffsets(), extractOp.getMixedSizes(),
- extractOp.getMixedStrides());
+ auto newExtractOp = tensor::ExtractSliceOp::create(
+ rewriter, extractOp.getLoc(), extractOp.getType(),
+ fillOp.getOutputs()[0], extractOp.getMixedOffsets(),
+ extractOp.getMixedSizes(), extractOp.getMixedStrides());
rewriter.replaceOpWithNewOp<linalg::FillOp>(
extractOp, fillOp.getInputs(), ValueRange{newExtractOp.getResult()});
return success();
@@ -258,8 +258,8 @@
RankedTensorType::get(newExpandShape, expandedType.getElementType());
// The builder can't fail to infer the output_shape because none of
// the dynamic dimensions are expanded.
- auto newExpand = rewriter.create<tensor::ExpandShapeOp>(
- expandOp.getLoc(), newExpandType, extractOp.getSource(),
+ auto newExpand = tensor::ExpandShapeOp::create(
+ rewriter, expandOp.getLoc(), newExpandType, extractOp.getSource(),
newReassociation);
rewriter.replaceOpWithNewOp<tensor::ExtractSliceOp>(
@@ -363,13 +363,14 @@
auto newType =
RankedTensorType::get(staticOutputShape, inputType.getElementType());
Value newExpand;
- newExpand = rewriter.create<tensor::ExpandShapeOp>(
- expandOp.getLoc(), newType, input, reassoc, mixedOutputShape);
+ newExpand =
+ tensor::ExpandShapeOp::create(rewriter, expandOp.getLoc(), newType,
+ input, reassoc, mixedOutputShape);
newInputs.push_back(newExpand);
}
// Create new concat op on expanded inputs.
- auto newConcat = rewriter.create<tensor::ConcatOp>(concatOp.getLoc(),
- newConcatDim, newInputs);
+ auto newConcat = tensor::ConcatOp::create(rewriter, concatOp.getLoc(),
+ newConcatDim, newInputs);
rewriter.replaceOp(expandOp, newConcat.getResult());
return success();
}
diff --git a/compiler/src/iree/compiler/DispatchCreation/CollapseDimensions.cpp b/compiler/src/iree/compiler/DispatchCreation/CollapseDimensions.cpp
index 19e61e7..71b01d7 100644
--- a/compiler/src/iree/compiler/DispatchCreation/CollapseDimensions.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/CollapseDimensions.cpp
@@ -92,8 +92,8 @@
}
RankedTensorType resultType = sliceOp.getResultType();
- Value collapseOp = rewriter.create<tensor::CollapseShapeOp>(
- loc, sliceOp.getSource(), reassociation);
+ Value collapseOp = tensor::CollapseShapeOp::create(
+ rewriter, loc, sliceOp.getSource(), reassociation);
Value newSliceOp = tensor::ExtractSliceOp::create(
rewriter, loc, collapseOp, collapsedOffsets, collapsedSizes,
collapsedStrides);
@@ -867,8 +867,8 @@
}
// 5. Create the new dispatch op.
- auto newDispatchOp = rewriter.create<IREE::Flow::DispatchRegionOp>(
- loc, newReturnTypes, newDynamicDims, dispatchOp.getWorkload());
+ auto newDispatchOp = IREE::Flow::DispatchRegionOp::create(
+ rewriter, loc, newReturnTypes, newDynamicDims, dispatchOp.getWorkload());
// 5a. Move the body over, but replace the `flow.return` to use the new yield
// values.
@@ -908,8 +908,8 @@
SmallVector<OpFoldResult> outputShape =
mlir::getMixedValues(shapedType.getShape(), dynamicDims, rewriter);
- auto newExpandShapeOp = rewriter.create<tensor::ExpandShapeOp>(
- loc, origResult.getType(), returnValue,
+ auto newExpandShapeOp = tensor::ExpandShapeOp::create(
+ rewriter, loc, origResult.getType(), returnValue,
allReassociationIndicesRef.front(), outputShape);
allReassociationIndicesRef = allReassociationIndicesRef.drop_front();
rewriter.replaceAllUsesWith(origResult, newExpandShapeOp.getResult());
diff --git a/compiler/src/iree/compiler/DispatchCreation/ElementwiseOpFusion.cpp b/compiler/src/iree/compiler/DispatchCreation/ElementwiseOpFusion.cpp
index e4ada6c..9ebb891 100644
--- a/compiler/src/iree/compiler/DispatchCreation/ElementwiseOpFusion.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/ElementwiseOpFusion.cpp
@@ -96,8 +96,8 @@
});
SmallVector<Value, 4> indices = extractOp.getIndices();
indices = applyProjectedPermutation(indices, perm);
- auto newExtract = rewriter.create<tensor::ExtractOp>(
- extractOp.getLoc(), operand.get(), indices);
+ auto newExtract = tensor::ExtractOp::create(rewriter, extractOp.getLoc(),
+ operand.get(), indices);
extractOps.push_back(newExtract);
}
rewriter.cloneRegionBefore(producerOp.getRegion(), consumerOp.getRegion(),
diff --git a/compiler/src/iree/compiler/DispatchCreation/FoldUnitExtentDims.cpp b/compiler/src/iree/compiler/DispatchCreation/FoldUnitExtentDims.cpp
index 5ae7d7f..3b580ee 100644
--- a/compiler/src/iree/compiler/DispatchCreation/FoldUnitExtentDims.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/FoldUnitExtentDims.cpp
@@ -185,8 +185,8 @@
Value newExpanded = expandOp.getSrc();
if (!llvm::all_of(newExpandReassoc,
llvm::hasSingleElement<ReassociationIndicesRef>)) {
- newExpanded = rewriter.create<tensor::ExpandShapeOp>(
- expandOp.getLoc(),
+ newExpanded = tensor::ExpandShapeOp::create(
+ rewriter, expandOp.getLoc(),
RankedTensorType::get(newInterShape,
expandOp.getType().getElementType()),
expandOp.getSrc(), newExpandReassoc, newInterSizes);
@@ -195,9 +195,9 @@
Value result = newExpanded;
if (!llvm::all_of(newCollapseReassoc,
llvm::hasSingleElement<ReassociationIndicesRef>)) {
- result = rewriter.create<tensor::CollapseShapeOp>(
- collapseOp.getLoc(), collapseOp.getType(), newExpanded,
- newCollapseReassoc);
+ result = tensor::CollapseShapeOp::create(rewriter, collapseOp.getLoc(),
+ collapseOp.getType(),
+ newExpanded, newCollapseReassoc);
}
rewriter.replaceOp(collapseOp, result);
return success();
@@ -299,8 +299,8 @@
}
for (auto store : storeOps) {
rewriter.setInsertionPoint(store);
- Value collapse = rewriter.create<tensor::CollapseShapeOp>(
- store.getLoc(), newGlobalType, store->getOperand(0),
+ Value collapse = tensor::CollapseShapeOp::create(
+ rewriter, store.getLoc(), newGlobalType, store->getOperand(0),
expandShapeReInds.value());
auto newStore =
clone(rewriter, store, store->getResultTypes(), store->getOperands());
diff --git a/compiler/src/iree/compiler/DispatchCreation/FormScalarDispatches.cpp b/compiler/src/iree/compiler/DispatchCreation/FormScalarDispatches.cpp
index 8f746c6..678995a 100644
--- a/compiler/src/iree/compiler/DispatchCreation/FormScalarDispatches.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/FormScalarDispatches.cpp
@@ -285,10 +285,10 @@
Block *countBody = rewriter.createBlock(&countRegion, countRegion.begin());
OpBuilder::InsertionGuard g(rewriter);
rewriter.setInsertionPointToStart(countBody);
- auto one = rewriter.create<arith::ConstantIndexOp>(
- dispatchRegionOp.value()->getLoc(), 1);
- rewriter.create<IREE::Flow::ReturnOp>(dispatchRegionOp.value()->getLoc(),
- ValueRange{one, one, one});
+ auto one = arith::ConstantIndexOp::create(
+ rewriter, dispatchRegionOp.value()->getLoc(), 1);
+ IREE::Flow::ReturnOp::create(rewriter, dispatchRegionOp.value()->getLoc(),
+ ValueRange{one, one, one});
}
}
diff --git a/compiler/src/iree/compiler/DispatchCreation/FuseHorizontalContractions.cpp b/compiler/src/iree/compiler/DispatchCreation/FuseHorizontalContractions.cpp
index 45694cd..ed03dc8 100644
--- a/compiler/src/iree/compiler/DispatchCreation/FuseHorizontalContractions.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/FuseHorizontalContractions.cpp
@@ -424,8 +424,8 @@
SmallVector<AffineMap> fusedIndexingMaps = std::move(fusedInsIndexingMaps);
fusedIndexingMaps.append(fusedOutsIndexingMaps);
- auto fusedOp = rewriter.create<linalg::GenericOp>(
- loc, fusedResultTypes, fusedIns, fusedOuts, fusedIndexingMaps,
+ auto fusedOp = linalg::GenericOp::create(
+ rewriter, loc, fusedResultTypes, fusedIns, fusedOuts, fusedIndexingMaps,
fusedIteratorTypes, [](OpBuilder &, Location, ValueRange) {});
Block *fusedBody = fusedOp.getBlock();
@@ -461,7 +461,7 @@
}
OpBuilder::InsertionGuard g(rewriter);
rewriter.setInsertionPointToEnd(fusedBody);
- rewriter.create<linalg::YieldOp>(loc, yieldVals);
+ linalg::YieldOp::create(rewriter, loc, yieldVals);
unsigned resultsIndex = 0;
for (auto linalgOp : linalgOps) {
diff --git a/compiler/src/iree/compiler/DispatchCreation/HoistEncodingOps.cpp b/compiler/src/iree/compiler/DispatchCreation/HoistEncodingOps.cpp
index bcd9a62..12490fb 100644
--- a/compiler/src/iree/compiler/DispatchCreation/HoistEncodingOps.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/HoistEncodingOps.cpp
@@ -110,16 +110,16 @@
auto operandType = cast<RankedTensorType>(operand->get().getType());
auto resType = RankedTensorType::get(
operandType.getShape(), operandType.getElementType(), newEncoding);
- Value encodedInput = rewriter.create<IREE::Encoding::SetEncodingOp>(
- loc, resType, operand->get());
+ Value encodedInput = IREE::Encoding::SetEncodingOp::create(
+ rewriter, loc, resType, operand->get());
encodedOperands.push_back(encodedInput);
}
// Create encoded generic op.
SmallVector<OpFoldResult> mixedSizes =
tensor::getMixedSizes(rewriter, loc, encodingOp.getSource());
- Value encodedInit = rewriter.create<tensor::EmptyOp>(
- loc, mixedSizes, encodedType.getElementType(), encoding);
+ Value encodedInit = tensor::EmptyOp::create(
+ rewriter, loc, mixedSizes, encodedType.getElementType(), encoding);
encodedOperands.push_back(encodedInit);
auto encodedGenericOp =
clone(rewriter, genericOp, encodingOp.getResultType(), encodedOperands);
diff --git a/compiler/src/iree/compiler/DispatchCreation/MaterializeDefaultWorkgroupCountRegion.cpp b/compiler/src/iree/compiler/DispatchCreation/MaterializeDefaultWorkgroupCountRegion.cpp
index 4937b8e..1196a7e 100644
--- a/compiler/src/iree/compiler/DispatchCreation/MaterializeDefaultWorkgroupCountRegion.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/MaterializeDefaultWorkgroupCountRegion.cpp
@@ -72,8 +72,8 @@
OpBuilder::InsertionGuard g(rewriter);
rewriter.setInsertionPointToStart(block);
Operation *defaultCountOp =
- rewriter.create<IREE::TensorExt::DispatchWorkgroupCountFromSliceOp>(
- loc, block->getArguments());
+ IREE::TensorExt::DispatchWorkgroupCountFromSliceOp::create(
+ rewriter, loc, block->getArguments());
// Check for presence of `scf.forall` operations created by partial reduction
// tiling.
@@ -98,7 +98,7 @@
IREE::TensorExt::DispatchWorkgroupCountSplitReductionModifierOp>(
loc, defaultCountOp->getResults(), block->getArguments());
}
- rewriter.create<IREE::Flow::ReturnOp>(loc, defaultCountOp->getResults());
+ IREE::Flow::ReturnOp::create(rewriter, loc, defaultCountOp->getResults());
// Update the `workgroupsOp` region.
rewriter.modifyOpInPlace(workgroupsOp, [&]() {
@@ -117,9 +117,8 @@
if (!llvm::isa<IndexType>(operand.getType()))
continue;
BlockArgument arg = workgroupsOp.getInputBlockArgument(index);
- auto ordinalOp =
- rewriter.create<IREE::TensorExt::DispatchWorkloadOrdinalOp>(
- loc, arg, rewriter.getIndexAttr(ordinalNumber++));
+ auto ordinalOp = IREE::TensorExt::DispatchWorkloadOrdinalOp::create(
+ rewriter, loc, arg, rewriter.getIndexAttr(ordinalNumber++));
rewriter.replaceAllUsesExcept(arg, ordinalOp, ordinalOp);
}
});
diff --git a/compiler/src/iree/compiler/DispatchCreation/SetEncoding.cpp b/compiler/src/iree/compiler/DispatchCreation/SetEncoding.cpp
index 8da216b..3168b43 100644
--- a/compiler/src/iree/compiler/DispatchCreation/SetEncoding.cpp
+++ b/compiler/src/iree/compiler/DispatchCreation/SetEncoding.cpp
@@ -40,7 +40,8 @@
Attribute encodingAttr) {
auto resultType =
cast<RankedTensorType>(source.getType()).cloneWithEncoding(encodingAttr);
- return builder.create<IREE::Encoding::SetEncodingOp>(loc, resultType, source);
+ return IREE::Encoding::SetEncodingOp::create(builder, loc, resultType,
+ source);
};
static Value unsetEncoding(OpBuilder &builder, Location loc, Value source,
@@ -52,8 +53,8 @@
auto sourceType = cast<RankedTensorType>(source.getType());
auto unsetEncodingReturnType =
RankedTensorType::get(sourceType.getShape(), sourceType.getElementType());
- return builder.create<IREE::Encoding::UnsetEncodingOp>(
- loc, unsetEncodingReturnType, source, dynamicSizesVec);
+ return IREE::Encoding::UnsetEncodingOp::create(
+ builder, loc, unsetEncodingReturnType, source, dynamicSizesVec);
}
/// Given a LinalgOp and one of its OpOperands, return the element type,
@@ -255,9 +256,9 @@
Location loc = fillOp.getLoc();
SmallVector<OpFoldResult> dimValues =
tensor::getMixedSizes(rewriter, loc, fillOp.getOutputs()[0]);
- auto newEmptyOp = rewriter.create<tensor::EmptyOp>(
- loc, dimValues, encodingType.getElementType(),
- encodingType.getEncoding());
+ auto newEmptyOp = tensor::EmptyOp::create(rewriter, loc, dimValues,
+ encodingType.getElementType(),
+ encodingType.getEncoding());
rewriter.replaceOpWithNewOp<linalg::FillOp>(encodingOp, fillOp.getInputs(),
ValueRange{newEmptyOp});
return success();
@@ -330,9 +331,9 @@
llvm::append_range(newResultDynamicDims, operandDynamicDims);
}
- auto newDispatchOp = rewriter.create<IREE::Flow::DispatchRegionOp>(
- producerDispatch->getLoc(), newResultTypes, newResultDynamicDims,
- producerDispatch.getWorkload());
+ auto newDispatchOp = IREE::Flow::DispatchRegionOp::create(
+ rewriter, producerDispatch->getLoc(), newResultTypes,
+ newResultDynamicDims, producerDispatch.getWorkload());
// Move over the body of the old dispatch.
Region &newBody = newDispatchOp.getBody();
@@ -362,8 +363,8 @@
}
// Find the new value to yield.
Value newYieldedVal = map.lookup(operand);
- auto encodingOp = rewriter.create<IREE::Encoding::SetEncodingOp>(
- returnOp->getLoc(), newResultType, newYieldedVal);
+ auto encodingOp = IREE::Encoding::SetEncodingOp::create(
+ rewriter, returnOp->getLoc(), newResultType, newYieldedVal);
rewriter.modifyOpInPlace(
returnOp, [&]() { returnOp.setOperand(resultNumber, encodingOp); });
@@ -395,8 +396,8 @@
OpBuilder::InsertionGuard g2(rewriter);
rewriter.setInsertionPoint(op);
Type operandType = operand.get().getType();
- auto unsetEncodignOp = rewriter.create<IREE::Encoding::UnsetEncodingOp>(
- op->getLoc(), operandType, paddedVal->paddedValue,
+ auto unsetEncodignOp = IREE::Encoding::UnsetEncodingOp::create(
+ rewriter, op->getLoc(), operandType, paddedVal->paddedValue,
paddedVal->dynamicDims);
op->setOperand(operandNum, unsetEncodignOp.getResult());
});
diff --git a/compiler/src/iree/compiler/Reducer/Strategies/ReduceFlowDispatchResultBySplat.cpp b/compiler/src/iree/compiler/Reducer/Strategies/ReduceFlowDispatchResultBySplat.cpp
index 734fcb5..db81d92 100644
--- a/compiler/src/iree/compiler/Reducer/Strategies/ReduceFlowDispatchResultBySplat.cpp
+++ b/compiler/src/iree/compiler/Reducer/Strategies/ReduceFlowDispatchResultBySplat.cpp
@@ -53,8 +53,8 @@
for (auto dispatchOp : keepOps) {
builder.setInsertionPointAfter(dispatchOp);
for (Value result : dispatchOp.getResults()) {
- builder.create<IREE::Util::OptimizationBarrierOp>(dispatchOp.getLoc(),
- result);
+ IREE::Util::OptimizationBarrierOp::create(builder, dispatchOp.getLoc(),
+ result);
}
}
@@ -69,10 +69,10 @@
auto tensorType = cast<RankedTensorType>(result.getType());
auto elType = tensorType.getElementType();
auto zeroAttr = builder.getZeroAttr(elType);
- auto zero = builder.create<arith::ConstantOp>(result.getLoc(), zeroAttr);
+ auto zero = arith::ConstantOp::create(builder, result.getLoc(), zeroAttr);
- auto splat = builder.create<IREE::Flow::TensorSplatOp>(
- result.getLoc(), tensorType, zero, dynamicDims);
+ auto splat = IREE::Flow::TensorSplatOp::create(
+ builder, result.getLoc(), tensorType, zero, dynamicDims);
result.replaceAllUsesWith(splat);
}
diff --git a/compiler/src/iree/compiler/Reducer/Strategies/ReduceLinalgOnTensorsDelta.cpp b/compiler/src/iree/compiler/Reducer/Strategies/ReduceLinalgOnTensorsDelta.cpp
index 79578d0..5669c98 100644
--- a/compiler/src/iree/compiler/Reducer/Strategies/ReduceLinalgOnTensorsDelta.cpp
+++ b/compiler/src/iree/compiler/Reducer/Strategies/ReduceLinalgOnTensorsDelta.cpp
@@ -67,8 +67,8 @@
for (auto linalgOp : keepOps) {
builder.setInsertionPointAfter(linalgOp);
for (Value result : linalgOp->getResults()) {
- builder.create<IREE::Util::OptimizationBarrierOp>(linalgOp.getLoc(),
- result);
+ IREE::Util::OptimizationBarrierOp::create(builder, linalgOp.getLoc(),
+ result);
}
}
@@ -112,7 +112,7 @@
.getResult();
// Build linalg.fill for this out.
- newOut = builder.create<linalg::FillOp>(linalgOp.getLoc(), zero, init)
+ newOut = linalg::FillOp::create(builder, linalgOp.getLoc(), zero, init)
.getResult(0);
out.replaceAllUsesWith(newOut);