diff options
Diffstat (limited to 'mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp')
| -rw-r--r-- | mlir/lib/Conversion/ControlFlowToSCF/ControlFlowToSCF.cpp | 38 |
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 *> |
