summaryrefslogtreecommitdiff
path: root/mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp')
-rw-r--r--mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp38
1 files changed, 20 insertions, 18 deletions
diff --git a/mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp b/mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp
index 9831dcaaaccc..c8311eb5a643 100644
--- a/mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp
+++ b/mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp
@@ -33,8 +33,8 @@ ControlFlowToSCFTransformation::createStructuredBranchRegionOp(
MutableArrayRef<Region> regions) {
if (auto condBrOp = dyn_cast<cf::CondBranchOp>(controlFlowCondOp)) {
assert(regions.size() == 2);
- auto ifOp = builder.create<scf::IfOp>(controlFlowCondOp->getLoc(),
- resultTypes, condBrOp.getCondition());
+ auto ifOp = scf::IfOp::create(builder, controlFlowCondOp->getLoc(),
+ resultTypes, condBrOp.getCondition());
ifOp.getThenRegion().takeBody(regions[0]);
ifOp.getElseRegion().takeBody(regions[1]);
return ifOp.getOperation();
@@ -43,8 +43,8 @@ ControlFlowToSCFTransformation::createStructuredBranchRegionOp(
if (auto switchOp = dyn_cast<cf::SwitchOp>(controlFlowCondOp)) {
// `getCFGSwitchValue` returns an i32 that we need to convert to index
// fist.
- auto cast = builder.create<arith::IndexCastUIOp>(
- controlFlowCondOp->getLoc(), builder.getIndexType(),
+ auto cast = arith::IndexCastUIOp::create(
+ builder, controlFlowCondOp->getLoc(), builder.getIndexType(),
switchOp.getFlag());
SmallVector<int64_t> cases;
if (auto caseValues = switchOp.getCaseValues())
@@ -55,8 +55,9 @@ ControlFlowToSCFTransformation::createStructuredBranchRegionOp(
assert(regions.size() == cases.size() + 1);
- auto indexSwitchOp = builder.create<scf::IndexSwitchOp>(
- controlFlowCondOp->getLoc(), resultTypes, cast, cases, cases.size());
+ auto indexSwitchOp =
+ scf::IndexSwitchOp::create(builder, controlFlowCondOp->getLoc(),
+ resultTypes, cast, cases, cases.size());
indexSwitchOp.getDefaultRegion().takeBody(regions[0]);
for (auto &&[targetRegion, sourceRegion] :
@@ -75,7 +76,7 @@ LogicalResult
ControlFlowToSCFTransformation::createStructuredBranchRegionTerminatorOp(
Location loc, OpBuilder &builder, Operation *branchRegionOp,
Operation *replacedControlFlowOp, ValueRange results) {
- builder.create<scf::YieldOp>(loc, results);
+ scf::YieldOp::create(builder, loc, results);
return success();
}
@@ -84,23 +85,24 @@ ControlFlowToSCFTransformation::createStructuredDoWhileLoopOp(
OpBuilder &builder, Operation *replacedOp, ValueRange loopVariablesInit,
Value condition, ValueRange loopVariablesNextIter, Region &&loopBody) {
Location loc = replacedOp->getLoc();
- auto whileOp = builder.create<scf::WhileOp>(loc, loopVariablesInit.getTypes(),
- loopVariablesInit);
+ auto whileOp = scf::WhileOp::create(
+ builder, loc, loopVariablesInit.getTypes(), loopVariablesInit);
whileOp.getBefore().takeBody(loopBody);
builder.setInsertionPointToEnd(&whileOp.getBefore().back());
// `getCFGSwitchValue` returns a i32. We therefore need to truncate the
// condition to i1 first. It is guaranteed to be either 0 or 1 already.
- builder.create<scf::ConditionOp>(
- loc, builder.create<arith::TruncIOp>(loc, builder.getI1Type(), condition),
+ scf::ConditionOp::create(
+ builder, loc,
+ arith::TruncIOp::create(builder, loc, builder.getI1Type(), condition),
loopVariablesNextIter);
Block *afterBlock = builder.createBlock(&whileOp.getAfter());
afterBlock->addArguments(
loopVariablesInit.getTypes(),
SmallVector<Location>(loopVariablesInit.size(), loc));
- builder.create<scf::YieldOp>(loc, afterBlock->getArguments());
+ scf::YieldOp::create(builder, loc, afterBlock->getArguments());
return whileOp.getOperation();
}
@@ -108,8 +110,8 @@ ControlFlowToSCFTransformation::createStructuredDoWhileLoopOp(
Value ControlFlowToSCFTransformation::getCFGSwitchValue(Location loc,
OpBuilder &builder,
unsigned int value) {
- return builder.create<arith::ConstantOp>(loc,
- builder.getI32IntegerAttr(value));
+ return arith::ConstantOp::create(builder, loc,
+ builder.getI32IntegerAttr(value));
}
void ControlFlowToSCFTransformation::createCFGSwitchOp(
@@ -117,15 +119,15 @@ void ControlFlowToSCFTransformation::createCFGSwitchOp(
ArrayRef<unsigned int> caseValues, BlockRange caseDestinations,
ArrayRef<ValueRange> caseArguments, Block *defaultDest,
ValueRange defaultArgs) {
- builder.create<cf::SwitchOp>(loc, flag, defaultDest, defaultArgs,
- llvm::to_vector_of<int32_t>(caseValues),
- caseDestinations, caseArguments);
+ cf::SwitchOp::create(builder, loc, flag, defaultDest, defaultArgs,
+ llvm::to_vector_of<int32_t>(caseValues),
+ caseDestinations, caseArguments);
}
Value ControlFlowToSCFTransformation::getUndefValue(Location loc,
OpBuilder &builder,
Type type) {
- return builder.create<ub::PoisonOp>(loc, type, nullptr);
+ return ub::PoisonOp::create(builder, loc, type, nullptr);
}
FailureOr<Operation *>