diff --git a/mlir/test/lib/Conversion/MathToVCIX/TestMathToVCIXConversion.cpp b/mlir/test/lib/Conversion/MathToVCIX/TestMathToVCIXConversion.cpp index 8a01a0af59b22..016052cfefdb8 100644 --- a/mlir/test/lib/Conversion/MathToVCIX/TestMathToVCIXConversion.cpp +++ b/mlir/test/lib/Conversion/MathToVCIX/TestMathToVCIXConversion.cpp @@ -69,25 +69,25 @@ struct MathCosToVCIX final : OpRewritePattern { if (legalType.isScalable()) // Use arbitrary runtime vector length when vector type is scalable. // Proper conversion pass should take it from the IR. - rvl = rewriter.create(loc, - rewriter.getI64IntegerAttr(9)); + rvl = arith::ConstantOp::create(rewriter, loc, + rewriter.getI64IntegerAttr(9)); Value res; if (n == 1) { - res = rewriter.create(loc, legalType, opcodeAttr, vec, - immAttr, rvl); + res = vcix::BinaryImmOp::create(rewriter, loc, legalType, opcodeAttr, vec, + immAttr, rvl); } else { const unsigned eltCount = legalType.getShape()[0]; Type eltTy = legalType.getElementType(); - Value zero = rewriter.create( - loc, eltTy, rewriter.getZeroAttr(eltTy)); - res = rewriter.create(loc, opType, zero /*dummy*/); + Value zero = arith::ConstantOp::create(rewriter, loc, eltTy, + rewriter.getZeroAttr(eltTy)); + res = vector::BroadcastOp::create(rewriter, loc, opType, zero /*dummy*/); for (unsigned i = 0; i < n; ++i) { - Value extracted = rewriter.create( - loc, legalType, vec, i * eltCount); - Value v = rewriter.create(loc, legalType, opcodeAttr, - extracted, immAttr, rvl); - res = rewriter.create(loc, v, res, - i * eltCount); + Value extracted = vector::ScalableExtractOp::create( + rewriter, loc, legalType, vec, i * eltCount); + Value v = vcix::BinaryImmOp::create( + rewriter, loc, legalType, opcodeAttr, extracted, immAttr, rvl); + res = vector::ScalableInsertOp::create(rewriter, loc, v, res, + i * eltCount); } } rewriter.replaceOp(op, res); @@ -112,25 +112,25 @@ struct MathSinToVCIX final : OpRewritePattern { if (legalType.isScalable()) // Use arbitrary runtime vector length when vector type is scalable. // Proper conversion pass should take it from the IR. - rvl = rewriter.create(loc, - rewriter.getI64IntegerAttr(9)); + rvl = arith::ConstantOp::create(rewriter, loc, + rewriter.getI64IntegerAttr(9)); Value res; if (n == 1) { - res = rewriter.create(loc, legalType, opcodeAttr, vec, - vec, rvl); + res = vcix::BinaryOp::create(rewriter, loc, legalType, opcodeAttr, vec, + vec, rvl); } else { const unsigned eltCount = legalType.getShape()[0]; Type eltTy = legalType.getElementType(); - Value zero = rewriter.create( - loc, eltTy, rewriter.getZeroAttr(eltTy)); - res = rewriter.create(loc, opType, zero /*dummy*/); + Value zero = arith::ConstantOp::create(rewriter, loc, eltTy, + rewriter.getZeroAttr(eltTy)); + res = vector::BroadcastOp::create(rewriter, loc, opType, zero /*dummy*/); for (unsigned i = 0; i < n; ++i) { - Value extracted = rewriter.create( - loc, legalType, vec, i * eltCount); - Value v = rewriter.create(loc, legalType, opcodeAttr, - extracted, extracted, rvl); - res = rewriter.create(loc, v, res, - i * eltCount); + Value extracted = vector::ScalableExtractOp::create( + rewriter, loc, legalType, vec, i * eltCount); + Value v = vcix::BinaryOp::create(rewriter, loc, legalType, opcodeAttr, + extracted, extracted, rvl); + res = vector::ScalableInsertOp::create(rewriter, loc, v, res, + i * eltCount); } } rewriter.replaceOp(op, res); @@ -152,28 +152,28 @@ struct MathTanToVCIX final : OpRewritePattern { Location loc = op.getLoc(); Value vec = op.getOperand(); Attribute opcodeAttr = rewriter.getI64IntegerAttr(0); - Value zero = rewriter.create( - loc, eltTy, rewriter.getZeroAttr(eltTy)); + Value zero = arith::ConstantOp::create(rewriter, loc, eltTy, + rewriter.getZeroAttr(eltTy)); Value rvl = nullptr; if (legalType.isScalable()) // Use arbitrary runtime vector length when vector type is scalable. // Proper conversion pass should take it from the IR. - rvl = rewriter.create(loc, - rewriter.getI64IntegerAttr(9)); + rvl = arith::ConstantOp::create(rewriter, loc, + rewriter.getI64IntegerAttr(9)); Value res; if (n == 1) { - res = rewriter.create(loc, legalType, opcodeAttr, vec, - zero, rvl); + res = vcix::BinaryOp::create(rewriter, loc, legalType, opcodeAttr, vec, + zero, rvl); } else { const unsigned eltCount = legalType.getShape()[0]; - res = rewriter.create(loc, opType, zero /*dummy*/); + res = vector::BroadcastOp::create(rewriter, loc, opType, zero /*dummy*/); for (unsigned i = 0; i < n; ++i) { - Value extracted = rewriter.create( - loc, legalType, vec, i * eltCount); - Value v = rewriter.create(loc, legalType, opcodeAttr, - extracted, zero, rvl); - res = rewriter.create(loc, v, res, - i * eltCount); + Value extracted = vector::ScalableExtractOp::create( + rewriter, loc, legalType, vec, i * eltCount); + Value v = vcix::BinaryOp::create(rewriter, loc, legalType, opcodeAttr, + extracted, zero, rvl); + res = vector::ScalableInsertOp::create(rewriter, loc, v, res, + i * eltCount); } } rewriter.replaceOp(op, res); @@ -195,30 +195,30 @@ struct MathLogToVCIX final : OpRewritePattern { Value vec = op.getOperand(); Attribute opcodeAttr = rewriter.getI64IntegerAttr(0); Value rvl = nullptr; - Value zeroInt = rewriter.create( - loc, rewriter.getI32Type(), rewriter.getI32IntegerAttr(0)); + Value zeroInt = arith::ConstantOp::create( + rewriter, loc, rewriter.getI32Type(), rewriter.getI32IntegerAttr(0)); if (legalType.isScalable()) // Use arbitrary runtime vector length when vector type is scalable. // Proper conversion pass should take it from the IR. - rvl = rewriter.create(loc, - rewriter.getI64IntegerAttr(9)); + rvl = arith::ConstantOp::create(rewriter, loc, + rewriter.getI64IntegerAttr(9)); Value res; if (n == 1) { - res = rewriter.create(loc, legalType, opcodeAttr, vec, - zeroInt, rvl); + res = vcix::BinaryOp::create(rewriter, loc, legalType, opcodeAttr, vec, + zeroInt, rvl); } else { const unsigned eltCount = legalType.getShape()[0]; Type eltTy = legalType.getElementType(); - Value zero = rewriter.create( - loc, eltTy, rewriter.getZeroAttr(eltTy)); - res = rewriter.create(loc, opType, zero /*dummy*/); + Value zero = arith::ConstantOp::create(rewriter, loc, eltTy, + rewriter.getZeroAttr(eltTy)); + res = vector::BroadcastOp::create(rewriter, loc, opType, zero /*dummy*/); for (unsigned i = 0; i < n; ++i) { - Value extracted = rewriter.create( - loc, legalType, vec, i * eltCount); - Value v = rewriter.create(loc, legalType, opcodeAttr, - extracted, zeroInt, rvl); - res = rewriter.create(loc, v, res, - i * eltCount); + Value extracted = vector::ScalableExtractOp::create( + rewriter, loc, legalType, vec, i * eltCount); + Value v = vcix::BinaryOp::create(rewriter, loc, legalType, opcodeAttr, + extracted, zeroInt, rvl); + res = vector::ScalableInsertOp::create(rewriter, loc, v, res, + i * eltCount); } } rewriter.replaceOp(op, res); diff --git a/mlir/test/lib/Dialect/Affine/TestReifyValueBounds.cpp b/mlir/test/lib/Dialect/Affine/TestReifyValueBounds.cpp index ed5d06d925e31..3569a7399ad0a 100644 --- a/mlir/test/lib/Dialect/Affine/TestReifyValueBounds.cpp +++ b/mlir/test/lib/Dialect/Affine/TestReifyValueBounds.cpp @@ -145,7 +145,7 @@ static LogicalResult testReifyValueBounds(FunctionOpInterface funcOp, if (reifiedScalable->map.getNumInputs() == 1) { // The only possible input to the bound is vscale. vscaleOperand.push_back(std::make_pair( - rewriter.create(loc), std::nullopt)); + vector::VectorScaleOp::create(rewriter, loc), std::nullopt)); } reified = affine::materializeComputedBound( rewriter, loc, reifiedScalable->map, vscaleOperand); @@ -169,8 +169,9 @@ static LogicalResult testReifyValueBounds(FunctionOpInterface funcOp, rewriter.replaceOp(op, val); return WalkResult::skip(); } - Value constOp = rewriter.create( - op->getLoc(), cast(cast(*reified)).getInt()); + Value constOp = arith::ConstantIndexOp::create( + rewriter, op->getLoc(), + cast(cast(*reified)).getInt()); rewriter.replaceOp(op, constOp); return WalkResult::skip(); }); diff --git a/mlir/test/lib/Dialect/Arith/TestEmulateWideInt.cpp b/mlir/test/lib/Dialect/Arith/TestEmulateWideInt.cpp index 738d4ee59cbde..a792d08f2df49 100644 --- a/mlir/test/lib/Dialect/Arith/TestEmulateWideInt.cpp +++ b/mlir/test/lib/Dialect/Arith/TestEmulateWideInt.cpp @@ -60,7 +60,7 @@ struct TestEmulateWideIntPass // casts (and vice versa) and using it insted of `llvm.bitcast`. auto addBitcast = [](OpBuilder &builder, Type type, ValueRange inputs, Location loc) -> Value { - auto cast = builder.create(loc, type, inputs); + auto cast = LLVM::BitcastOp::create(builder, loc, type, inputs); return cast->getResult(0); }; typeConverter.addSourceMaterialization(addBitcast); diff --git a/mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp b/mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp index d0b62e71ab0cf..c67bcd94ea0bd 100644 --- a/mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp +++ b/mlir/test/lib/Dialect/Func/TestDecomposeCallGraphTypes.cpp @@ -48,8 +48,8 @@ static SmallVector buildDecomposeTuple(OpBuilder &builder, } for (unsigned i = 0, e = tupleType.size(); i < e; ++i) { Type elementType = tupleType.getType(i); - Value element = builder.create( - loc, elementType, tuple, builder.getI32IntegerAttr(i)); + Value element = test::GetTupleElementOp::create( + builder, loc, elementType, tuple, builder.getI32IntegerAttr(i)); decompose(element); } }; @@ -94,7 +94,7 @@ static Value buildMakeTupleOp(OpBuilder &builder, TupleType resultType, } // Assemble the tuple from the elements. - return builder.create(loc, resultType, elements); + return test::MakeTupleOp::create(builder, loc, resultType, elements); } /// A pass for testing call graph type decomposition. diff --git a/mlir/test/lib/Dialect/SCF/TestSCFUtils.cpp b/mlir/test/lib/Dialect/SCF/TestSCFUtils.cpp index 9eade75ac3163..9a394d2875b67 100644 --- a/mlir/test/lib/Dialect/SCF/TestSCFUtils.cpp +++ b/mlir/test/lib/Dialect/SCF/TestSCFUtils.cpp @@ -56,7 +56,7 @@ struct TestSCFForUtilsPass SmallVector newYieldValues; for (auto yieldVal : oldYieldValues) { newYieldValues.push_back( - b.create(loc, yieldVal, yieldVal)); + arith::AddFOp::create(b, loc, yieldVal, yieldVal)); } return newYieldValues; }; @@ -160,13 +160,13 @@ struct TestSCFPipeliningPass Value pred) { Location loc = op->getLoc(); auto ifOp = - rewriter.create(loc, op->getResultTypes(), pred, true); + scf::IfOp::create(rewriter, loc, op->getResultTypes(), pred, true); // True branch. rewriter.moveOpBefore(op, &ifOp.getThenRegion().front(), ifOp.getThenRegion().front().begin()); rewriter.setInsertionPointAfter(op); if (op->getNumResults() > 0) - rewriter.create(loc, op->getResults()); + scf::YieldOp::create(rewriter, loc, op->getResults()); // False branch. rewriter.setInsertionPointToStart(&ifOp.getElseRegion().front()); SmallVector elseYieldOperands; @@ -181,12 +181,12 @@ struct TestSCFPipeliningPass } else { // Default to assuming constant numeric values. for (Type type : op->getResultTypes()) { - elseYieldOperands.push_back(rewriter.create( - loc, rewriter.getZeroAttr(type))); + elseYieldOperands.push_back(arith::ConstantOp::create( + rewriter, loc, rewriter.getZeroAttr(type))); } } if (op->getNumResults() > 0) - rewriter.create(loc, elseYieldOperands); + scf::YieldOp::create(rewriter, loc, elseYieldOperands); return ifOp.getOperation(); } diff --git a/mlir/test/lib/Dialect/SCF/TestWhileOpBuilder.cpp b/mlir/test/lib/Dialect/SCF/TestWhileOpBuilder.cpp index d3113c0b0ae7d..d3f7f0e6e33a3 100644 --- a/mlir/test/lib/Dialect/SCF/TestWhileOpBuilder.cpp +++ b/mlir/test/lib/Dialect/SCF/TestWhileOpBuilder.cpp @@ -50,23 +50,23 @@ struct TestSCFWhileOpBuilderPass // Create a WhileOp with the same operands and result types. TypeRange resultTypes = whileOp->getResultTypes(); ValueRange operands = whileOp->getOperands(); - builder.create( - loc, resultTypes, operands, /*beforeBuilder=*/ + WhileOp::create( + builder, loc, resultTypes, operands, /*beforeBuilder=*/ [&](OpBuilder &b, Location loc, ValueRange args) { // Just cast the before args into the right types for condition. ImplicitLocOpBuilder builder(loc, b); auto castOp = - builder.create(resultTypes, args); - auto cmp = builder.create(/*value=*/1, /*width=*/1); - builder.create(cmp, castOp->getResults()); + UnrealizedConversionCastOp::create(builder, resultTypes, args); + auto cmp = ConstantIntOp::create(builder, /*value=*/1, /*width=*/1); + ConditionOp::create(builder, cmp, castOp->getResults()); }, /*afterBuilder=*/ [&](OpBuilder &b, Location loc, ValueRange args) { // Just cast the after args into the right types for yield. ImplicitLocOpBuilder builder(loc, b); - auto castOp = builder.create( - operands.getTypes(), args); - builder.create(castOp->getResults()); + auto castOp = UnrealizedConversionCastOp::create( + builder, operands.getTypes(), args); + YieldOp::create(builder, castOp->getResults()); }); }); } diff --git a/mlir/test/lib/Dialect/Tensor/TestTensorTransforms.cpp b/mlir/test/lib/Dialect/Tensor/TestTensorTransforms.cpp index 0e191c32f009e..687473ebe6d60 100644 --- a/mlir/test/lib/Dialect/Tensor/TestTensorTransforms.cpp +++ b/mlir/test/lib/Dialect/Tensor/TestTensorTransforms.cpp @@ -192,8 +192,8 @@ struct RewriteExtractSliceFromCollapseShapeBase // Create the destination tensor using the above values. Type elementType = op.getSourceType().getElementType(); SmallVector outputShape = reifiedShapes[0]; - Value dest = rewriter.create(op->getLoc(), outputShape, - elementType); + Value dest = tensor::EmptyOp::create(rewriter, op->getLoc(), outputShape, + elementType); // Calculate the parameters for the tile loop nest. FailureOr params = @@ -215,8 +215,8 @@ struct RewriteExtractSliceFromCollapseShapeUsingScfFor PatternRewriter &rewriter) const override { Location loc = op.getLoc(); const unsigned numTiledDims = helper.getIterationSpaceSizes().size(); - auto zero = rewriter.create(loc, 0); - auto one = rewriter.create(loc, 1); + auto zero = arith::ConstantIndexOp::create(rewriter, loc, 0); + auto one = arith::ConstantIndexOp::create(rewriter, loc, 1); SmallVector lbs(numTiledDims, zero); SmallVector steps(numTiledDims, one); @@ -228,8 +228,8 @@ struct RewriteExtractSliceFromCollapseShapeUsingScfFor helper.emitLoopNestBody(nestedBuilder, loc, outputIvs); // Insert the slice into the destination. - return {nestedBuilder.create( - loc, tile, iterArgs[0], insertParams)}; + return {tensor::InsertSliceOp::create(nestedBuilder, loc, tile, + iterArgs[0], insertParams)}; }); rewriter.replaceOp(op, nest.results); @@ -245,8 +245,9 @@ struct RewriteExtractSliceFromCollapseShapeUsingScfForeach tensor::ExtractSliceFromCollapseHelper &helper, PatternRewriter &rewriter) const override { Location loc = op.getLoc(); - auto forallOp = rewriter.create( - loc, /*numThreads=*/getAsOpFoldResult(helper.getIterationSpaceSizes()), + auto forallOp = scf::ForallOp::create( + rewriter, loc, + /*numThreads=*/getAsOpFoldResult(helper.getIterationSpaceSizes()), /*outputs=*/dest, /*mapping=*/std::nullopt, [&](OpBuilder &nestedBuilder, Location loc, ValueRange regionArgs) { @@ -261,10 +262,10 @@ struct RewriteExtractSliceFromCollapseShapeUsingScfForeach auto [tile, insertParams] = helper.emitLoopNestBody(nestedBuilder, loc, outputIvs); // Insert the slice into the destination. - auto term = nestedBuilder.create(loc); + auto term = scf::InParallelOp::create(nestedBuilder, loc); nestedBuilder.setInsertionPointToStart(term.getBody()); - nestedBuilder.create( - loc, tile, outputArgs[0], insertParams); + tensor::ParallelInsertSliceOp::create(nestedBuilder, loc, tile, + outputArgs[0], insertParams); }); rewriter.replaceOp(op, forallOp->getResult(0)); return success(); @@ -355,8 +356,8 @@ static LogicalResult testTrackingListenerReplacements(Operation *rootOp) { MLIRContext *context = rootOp->getContext(); OpBuilder builder(context); OwningOpRef transformOp = - builder.create( - rootOp->getLoc(), + transform::NamedSequenceOp::create( + builder, rootOp->getLoc(), /*sym_name=*/"test_sequence", /*function_type=*/ TypeAttr::get(FunctionType::get(context, TypeRange{}, TypeRange{})), diff --git a/mlir/test/lib/Dialect/Test/TestDialect.cpp b/mlir/test/lib/Dialect/Test/TestDialect.cpp index 1bbf2cc7481d9..a4c615b9c5939 100644 --- a/mlir/test/lib/Dialect/Test/TestDialect.cpp +++ b/mlir/test/lib/Dialect/Test/TestDialect.cpp @@ -346,7 +346,7 @@ TestDialect::~TestDialect() { Operation *TestDialect::materializeConstant(OpBuilder &builder, Attribute value, Type type, Location loc) { - return builder.create(loc, type, value); + return TestOpConstant::create(builder, loc, type, value); } void *TestDialect::getRegisteredInterfaceForOp(TypeID typeID, diff --git a/mlir/test/lib/Dialect/Test/TestDialectInterfaces.cpp b/mlir/test/lib/Dialect/Test/TestDialectInterfaces.cpp index 01ae245e06e5a..1235a5f6bfbe5 100644 --- a/mlir/test/lib/Dialect/Test/TestDialectInterfaces.cpp +++ b/mlir/test/lib/Dialect/Test/TestDialectInterfaces.cpp @@ -354,7 +354,7 @@ struct TestInlinerInterface : public DialectInlinerInterface { !(input.getType().isSignlessInteger(16) || input.getType().isSignlessInteger(32))) return nullptr; - return builder.create(conversionLoc, resultType, input); + return TestCastOp::create(builder, conversionLoc, resultType, input); } Value handleArgument(OpBuilder &builder, Operation *call, Operation *callable, @@ -362,16 +362,16 @@ struct TestInlinerInterface : public DialectInlinerInterface { DictionaryAttr argumentAttrs) const final { if (!argumentAttrs.contains("test.handle_argument")) return argument; - return builder.create(call->getLoc(), argument.getType(), - argument); + return TestTypeChangerOp::create(builder, call->getLoc(), + argument.getType(), argument); } Value handleResult(OpBuilder &builder, Operation *call, Operation *callable, Value result, DictionaryAttr resultAttrs) const final { if (!resultAttrs.contains("test.handle_result")) return result; - return builder.create(call->getLoc(), result.getType(), - result); + return TestTypeChangerOp::create(builder, call->getLoc(), result.getType(), + result); } void processInlinedCallBlocks( diff --git a/mlir/test/lib/Dialect/Test/TestFromLLVMIRTranslation.cpp b/mlir/test/lib/Dialect/Test/TestFromLLVMIRTranslation.cpp index dc6413b25707e..b98f6ce32cdce 100644 --- a/mlir/test/lib/Dialect/Test/TestFromLLVMIRTranslation.cpp +++ b/mlir/test/lib/Dialect/Test/TestFromLLVMIRTranslation.cpp @@ -43,11 +43,11 @@ static LogicalResult convertLoad(OpBuilder &builder, llvm::Instruction *inst, if (failed(addr)) return failure(); // Create the LoadOp - Value loadOp = builder.create( - moduleImport.translateLoc(inst->getDebugLoc()), + Value loadOp = LLVM::LoadOp::create( + builder, moduleImport.translateLoc(inst->getDebugLoc()), moduleImport.convertType(inst->getType()), *addr); - moduleImport.mapValue(inst) = builder.create( - loadOp.getLoc(), loadOp.getType(), loadOp, loadOp); + moduleImport.mapValue(inst) = SameOperandElementTypeOp::create( + builder, loadOp.getLoc(), loadOp.getType(), loadOp, loadOp); return success(); } diff --git a/mlir/test/lib/Dialect/Test/TestOpDefs.cpp b/mlir/test/lib/Dialect/Test/TestOpDefs.cpp index 3ab4ef2680978..f79e2cfbcb259 100644 --- a/mlir/test/lib/Dialect/Test/TestOpDefs.cpp +++ b/mlir/test/lib/Dialect/Test/TestOpDefs.cpp @@ -286,9 +286,9 @@ LogicalResult OpWithResultShapeInterfaceOp::reifyReturnTypeShapes( llvm::map_range(llvm::seq(0, rank), [&](int64_t dim) -> Value { return builder.createOrFold(loc, operand, dim); })); - shapes.push_back(builder.create( - getLoc(), RankedTensorType::get({rank}, builder.getIndexType()), - currShape)); + shapes.push_back(tensor::FromElementsOp::create( + builder, getLoc(), + RankedTensorType::get({rank}, builder.getIndexType()), currShape)); } return success(); } @@ -1302,8 +1302,8 @@ llvm::SmallVector TestMultiSlotAlloca::getPromotableSlots() { Value TestMultiSlotAlloca::getDefaultValue(const MemorySlot &slot, OpBuilder &builder) { - return builder.create(getLoc(), slot.elemType, - builder.getI32IntegerAttr(42)); + return TestOpConstant::create(builder, getLoc(), slot.elemType, + builder.getI32IntegerAttr(42)); } void TestMultiSlotAlloca::handleBlockArgument(const MemorySlot &slot, @@ -1335,7 +1335,7 @@ createNewMultiAllocaWithoutSlot(const MemorySlot &slot, OpBuilder &builder, OpBuilder::InsertionGuard guard(builder); builder.setInsertionPoint(oldOp); auto replacement = - builder.create(oldOp->getLoc(), newTypes); + TestMultiSlotAlloca::create(builder, oldOp->getLoc(), newTypes); for (auto [oldResult, newResult] : llvm::zip_equal(remainingValues, replacement.getResults())) oldResult.replaceAllUsesWith(newResult); @@ -1384,7 +1384,7 @@ DenseMap TestMultiSlotAlloca::destructure( for (Attribute usedIndex : usedIndices) { Type elemType = slot.subelementTypes.lookup(usedIndex); MemRefType elemPtr = MemRefType::get({}, elemType); - auto subAlloca = builder.create(getLoc(), elemPtr); + auto subAlloca = TestMultiSlotAlloca::create(builder, getLoc(), elemPtr); newAllocators.push_back(subAlloca); slotMap.try_emplace(usedIndex, {subAlloca.getResult(0), elemType}); @@ -1412,8 +1412,8 @@ ::mlir::LogicalResult test::TestDummyTensorOp::bufferize( const auto bufferizedOutType = test::TestMemrefType::get( getContext(), outType.getShape(), outType.getElementType(), nullptr); // replace op with memref analogy - auto dummyMemrefOp = rewriter.create( - getLoc(), bufferizedOutType, *buffer); + auto dummyMemrefOp = test::TestDummyMemrefOp::create( + rewriter, getLoc(), bufferizedOutType, *buffer); mlir::bufferization::replaceOpWithBufferizedValues(rewriter, getOperation(), dummyMemrefOp.getResult()); @@ -1434,7 +1434,7 @@ ::mlir::LogicalResult test::TestCreateTensorOp::bufferize( // replace op with memref analogy auto createMemrefOp = - rewriter.create(getLoc(), *bufferizedOutType); + test::TestCreateMemrefOp::create(rewriter, getLoc(), *bufferizedOutType); mlir::bufferization::replaceOpWithBufferizedValues( rewriter, getOperation(), createMemrefOp.getResult()); diff --git a/mlir/test/lib/Dialect/Test/TestOps.td b/mlir/test/lib/Dialect/Test/TestOps.td index ab3f847ca2acf..a7c6cd60a0ee4 100644 --- a/mlir/test/lib/Dialect/Test/TestOps.td +++ b/mlir/test/lib/Dialect/Test/TestOps.td @@ -2035,7 +2035,7 @@ def IllegalOpWithRegion : TEST_Op<"illegal_op_with_region"> { OpBuilder::InsertionGuard g($_builder); Block *body = $_builder.createBlock(bodyRegion); $_builder.setInsertionPointToEnd(body); - $_builder.create($_state.location); + IllegalOpTerminator::create($_builder,$_state.location); }]>]; } def IllegalOpWithRegionAnchor : TEST_Op<"illegal_op_with_region_anchor">; @@ -2738,7 +2738,7 @@ def TestLinalgConvOp : static void regionBuilder(mlir::ImplicitLocOpBuilder &b, mlir::Block &block, mlir::ArrayRef attrs, llvm::function_ref emitError) { - b.create(block.getArguments().back()); + mlir::linalg::YieldOp::create(b,block.getArguments().back()); } static std::function attrs, llvm::function_ref emitError) { - b.create(block.getArguments().back()); + mlir::linalg::YieldOp::create(b,block.getArguments().back()); } static std::function returnOperands(wrappedOp->getResults()); OpBuilder builder(parser.getContext()); builder.setInsertionPointToEnd(&block); - builder.create(wrappedOp->getLoc(), returnOperands); + TestReturnOp::create(builder, wrappedOp->getLoc(), returnOperands); // Get the results type for the wrapping op from the terminator operands. Operation &returnOp = body.back().back(); @@ -397,7 +397,7 @@ ParseResult PrettyPrintedRegionOp::parse(OpAsmParser &parser, builder.create(opLoc, innerOpName, /*operands=*/{lhs, rhs}, innerOpType); // Insert a return statement in the block returning the inner-op's result. - builder.create(innerOp->getLoc(), innerOp->getResults()); + TestReturnOp::create(builder, innerOp->getLoc(), innerOp->getResults()); // Populate the op operation-state with result-type and location. result.addTypes(opFntype.getResults()); diff --git a/mlir/test/lib/Dialect/Test/TestPatterns.cpp b/mlir/test/lib/Dialect/Test/TestPatterns.cpp index 1fff57e0ece0b..0605bc59fef91 100644 --- a/mlir/test/lib/Dialect/Test/TestPatterns.cpp +++ b/mlir/test/lib/Dialect/Test/TestPatterns.cpp @@ -33,14 +33,14 @@ static Value chooseOperand(Value input1, Value input2, BoolAttr choice) { } static void createOpI(PatternRewriter &rewriter, Location loc, Value input) { - rewriter.create(loc, input); + OpI::create(rewriter, loc, input); } static void handleNoResultOp(PatternRewriter &rewriter, OpSymbolBindingNoResult op) { // Turn the no result op to a one-result op. - rewriter.create(op.getLoc(), op.getOperand().getType(), - op.getOperand()); + OpSymbolBindingB::create(rewriter, op.getLoc(), op.getOperand().getType(), + op.getOperand()); } static bool getFirstI32Result(Operation *op, Value &value) { @@ -120,8 +120,8 @@ struct FolderInsertBeforePreviouslyFoldedConstantPattern return failure(); rewriter.setInsertionPointToStart(op->getBlock()); - auto constOp = rewriter.create( - op.getLoc(), rewriter.getBoolAttr(true)); + auto constOp = arith::ConstantOp::create(rewriter, op.getLoc(), + rewriter.getBoolAttr(true)); rewriter.replaceOpWithNewOp(op, rewriter.getI32Type(), Value(constOp)); return success(); @@ -844,8 +844,8 @@ struct TestRegionRewriteUndo : public RewritePattern { rewriter.getUnknownLoc()); // Add an explicitly illegal operation to ensure the conversion fails. - rewriter.create(op->getLoc(), rewriter.getIntegerType(32)); - rewriter.create(op->getLoc(), ArrayRef()); + ILLegalOpF::create(rewriter, op->getLoc(), rewriter.getIntegerType(32)); + TestValidOp::create(rewriter, op->getLoc(), ArrayRef()); // Drop this operation. rewriter.eraseOp(op); @@ -864,7 +864,7 @@ struct TestCreateBlock : public RewritePattern { Type i32Type = rewriter.getIntegerType(32); Location loc = op->getLoc(); rewriter.createBlock(®ion, region.end(), {i32Type, i32Type}, {loc, loc}); - rewriter.create(loc); + TerminatorOp::create(rewriter, loc); rewriter.eraseOp(op); return success(); } @@ -883,8 +883,8 @@ struct TestCreateIllegalBlock : public RewritePattern { Location loc = op->getLoc(); rewriter.createBlock(®ion, region.end(), {i32Type, i32Type}, {loc, loc}); // Create an illegal op to ensure the conversion fails. - rewriter.create(loc, i32Type); - rewriter.create(loc); + ILLegalOpF::create(rewriter, loc, i32Type); + TerminatorOp::create(rewriter, loc); rewriter.eraseOp(op); return success(); } @@ -939,7 +939,7 @@ struct TestUndoBlockErase : public ConversionPattern { ConversionPatternRewriter &rewriter) const final { Block *secondBlock = &*std::next(op->getRegion(0).begin()); rewriter.setInsertionPointToStart(secondBlock); - rewriter.create(op->getLoc(), rewriter.getF32Type()); + ILLegalOpF::create(rewriter, op->getLoc(), rewriter.getF32Type()); rewriter.eraseBlock(secondBlock); rewriter.modifyOpInPlace(op, [] {}); return success(); @@ -1114,8 +1114,8 @@ struct TestNonRootReplacement : public RewritePattern { LogicalResult matchAndRewrite(Operation *op, PatternRewriter &rewriter) const final { auto resultType = *op->result_type_begin(); - auto illegalOp = rewriter.create(op->getLoc(), resultType); - auto legalOp = rewriter.create(op->getLoc(), resultType); + auto illegalOp = ILLegalOpF::create(rewriter, op->getLoc(), resultType); + auto legalOp = LegalOpB::create(rewriter, op->getLoc(), resultType); rewriter.replaceOp(illegalOp, legalOp); rewriter.replaceOp(op, illegalOp); @@ -1181,7 +1181,7 @@ struct TestCreateUnregisteredOp : public OpRewritePattern { LogicalResult matchAndRewrite(ILLegalOpG op, PatternRewriter &rewriter) const final { IntegerAttr attr = rewriter.getI32IntegerAttr(0); - Value val = rewriter.create(op->getLoc(), attr); + Value val = arith::ConstantOp::create(rewriter, op->getLoc(), attr); rewriter.replaceOpWithNewOp(op, val); return success(); }; @@ -1354,7 +1354,7 @@ struct TestTypeConverter : public TypeConverter { /// 1->N type mappings. static Value materializeCast(OpBuilder &builder, Type resultType, ValueRange inputs, Location loc) { - return builder.create(loc, resultType, inputs).getResult(); + return TestCastOp::create(builder, loc, resultType, inputs).getResult(); } }; @@ -1916,15 +1916,15 @@ struct TestTypeConversionDriver // Allow casting from F64 back to F32. if (!resultType.isF16() && inputs.size() == 1 && inputs[0].getType().isF64()) - return builder.create(loc, resultType, inputs).getResult(); + return TestCastOp::create(builder, loc, resultType, inputs).getResult(); // Allow producing an i32 or i64 from nothing. if ((resultType.isInteger(32) || resultType.isInteger(64)) && inputs.empty()) - return builder.create(loc, resultType); + return TestTypeProducerOp::create(builder, loc, resultType); // Allow producing an i64 from an integer. if (isa(resultType) && inputs.size() == 1 && isa(inputs[0].getType())) - return builder.create(loc, resultType, inputs).getResult(); + return TestCastOp::create(builder, loc, resultType, inputs).getResult(); // Otherwise, fail. return nullptr; }); @@ -2007,7 +2007,7 @@ struct TestTargetMaterializationWithNoUses }); converter.addTargetMaterialization( [](OpBuilder &builder, Type type, ValueRange inputs, Location loc) { - return builder.create(loc, type, inputs).getResult(); + return TestCastOp::create(builder, loc, type, inputs).getResult(); }); ConversionTarget target(getContext()); @@ -2058,7 +2058,7 @@ struct TestUndoBlocksMerge : public ConversionPattern { Operation *branchOp = firstBlock.getTerminator(); Block *secondBlock = &*(std::next(op->getRegion(0).begin())); rewriter.setInsertionPointToStart(secondBlock); - rewriter.create(op->getLoc(), rewriter.getF32Type()); + ILLegalOpF::create(rewriter, op->getLoc(), rewriter.getF32Type()); auto succOperands = branchOp->getOperands(); SmallVector replacements(succOperands); rewriter.eraseOp(branchOp); diff --git a/mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp b/mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp index 103817df41d34..7831b27e94d71 100644 --- a/mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp +++ b/mlir/test/lib/Dialect/Test/TestToLLVMIRTranslation.cpp @@ -68,8 +68,8 @@ LogicalResult TestDialectLLVMIRTranslationInterface::amendOperation( if (createSymbol) { OpBuilder builder(op->getRegion(0)); - builder.create( - op->getLoc(), + test::SymbolOp::create( + builder, op->getLoc(), StringAttr::get(op->getContext(), "sym_from_attr"), /*sym_visibility=*/nullptr); } diff --git a/mlir/test/lib/Dialect/TestIRDLToCpp/TestIRDLToCppDialect.cpp b/mlir/test/lib/Dialect/TestIRDLToCpp/TestIRDLToCppDialect.cpp index bda614a97ab42..9550e4c96e547 100644 --- a/mlir/test/lib/Dialect/TestIRDLToCpp/TestIRDLToCppDialect.cpp +++ b/mlir/test/lib/Dialect/TestIRDLToCpp/TestIRDLToCppDialect.cpp @@ -47,9 +47,9 @@ struct TestOpConversion : public OpConversionPattern { op, op->getResultTypes().front()); rewriter.setInsertionPointAfter(bar); - rewriter.create( - bar.getLoc(), rewriter.getIntegerType(32), adaptor.getLhs(), - adaptor.getRhs()); + test_irdl_to_cpp::HashOp::create(rewriter, bar.getLoc(), + rewriter.getIntegerType(32), + adaptor.getLhs(), adaptor.getRhs()); return success(); } }; diff --git a/mlir/test/lib/Dialect/Tosa/TosaTestPasses.cpp b/mlir/test/lib/Dialect/Tosa/TosaTestPasses.cpp index 3389a1ccfe98f..64574873c653e 100644 --- a/mlir/test/lib/Dialect/Tosa/TosaTestPasses.cpp +++ b/mlir/test/lib/Dialect/Tosa/TosaTestPasses.cpp @@ -87,9 +87,9 @@ ConvertTosaNegateOp::matchAndRewrite(Operation *op, return failure(); auto newConstOp = - rewriter.create(op->getLoc(), dstQConstType, inputElems); - auto newNegateOp = rewriter.create( - op->getLoc(), dstQConstType, newConstOp.getResult()); + tosa::ConstOp::create(rewriter, op->getLoc(), dstQConstType, inputElems); + auto newNegateOp = tosa::NegateOp::create( + rewriter, op->getLoc(), dstQConstType, newConstOp.getResult()); rewriter.replaceOp(op, {newNegateOp.getResult()}); return success(); @@ -145,8 +145,8 @@ ConvertTosaConv2DOp::matchAndRewrite(Operation *op, auto newTosaConv2DOpType = RankedTensorType::get(outputType.getShape(), rewriter.getIntegerType(32)); - auto newTosaConv2DOp = rewriter.create( - op->getLoc(), newTosaConv2DOpType, tosaConv2DOp.getInput(), + auto newTosaConv2DOp = tosa::Conv2DOp::create( + rewriter, op->getLoc(), newTosaConv2DOpType, tosaConv2DOp.getInput(), tosaConv2DOp.getWeight(), tosaConv2DOp.getBias(), tosaConv2DOp.getPadAttr(), tosaConv2DOp.getStrideAttr(), tosaConv2DOp.getDilationAttr(), tosaConv2DOp.getAccTypeAttr()); @@ -178,8 +178,8 @@ ConvertTosaConv2DOp::matchAndRewrite(Operation *op, newTosaConv2DOp.getResult().getType().isUnsignedInteger(); bool outputUnsigned = outputType.isUnsignedInteger(); - auto newTosaRescaleOp = rewriter.create( - op->getLoc(), outputType, newTosaConv2DOp.getResult(), + auto newTosaRescaleOp = tosa::RescaleOp::create( + rewriter, op->getLoc(), outputType, newTosaConv2DOp.getResult(), getConstTensorInt(rewriter, op->getLoc(), {multiplier}), getConstTensorInt(rewriter, op->getLoc(), {static_cast(shift)}), diff --git a/mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.cpp b/mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.cpp index cdf44c2959d50..97fc699636566 100644 --- a/mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.cpp +++ b/mlir/test/lib/Dialect/Transform/TestTransformDialectExtension.cpp @@ -796,8 +796,8 @@ DiagnosedSilenceableFailure mlir::test::TestProduceInvalidIR::applyToOne( transform::TransformState &state) { // Provide some IR that does not verify. rewriter.setInsertionPointToStart(&target->getRegion(0).front()); - rewriter.create(target->getLoc(), TypeRange(), - ValueRange(), /*failToVerify=*/true); + TestDummyPayloadOp::create(rewriter, target->getLoc(), TypeRange(), + ValueRange(), /*failToVerify=*/true); return DiagnosedSilenceableFailure::success(); } @@ -877,7 +877,8 @@ class TestTypeConverter : public TypeConverter { Location loc) -> Value { if (inputs.size() != 1) return Value(); - return builder.create(loc, resultType, inputs) + return UnrealizedConversionCastOp::create(builder, loc, resultType, + inputs) .getResult(0); }; addSourceMaterialization(unrealizedCastConverter); diff --git a/mlir/test/lib/Dialect/Vector/TestVectorTransforms.cpp b/mlir/test/lib/Dialect/Vector/TestVectorTransforms.cpp index a7285ab8cb15a..cf8353a4089ea 100644 --- a/mlir/test/lib/Dialect/Vector/TestVectorTransforms.cpp +++ b/mlir/test/lib/Dialect/Vector/TestVectorTransforms.cpp @@ -546,8 +546,8 @@ static Value allocateGlobalSharedMemory(Location loc, OpBuilder &builder, auto ip = builder.saveInsertionPoint(); builder.setInsertionPoint(moduleOp); - auto global = builder.create( - loc, + auto global = memref::GlobalOp::create( + builder, loc, /*sym_name=*/symbolName, /*sym_visibility=*/builder.getStringAttr("private"), /*type=*/memrefType, @@ -560,13 +560,13 @@ static Value allocateGlobalSharedMemory(Location loc, OpBuilder &builder, global->moveBefore(&moduleOp.front()); builder.restoreInsertionPoint(ip); - return builder.create(loc, memrefType, symbolName); + return memref::GetGlobalOp::create(builder, loc, memrefType, symbolName); } static Value warpReduction(Location loc, OpBuilder &builder, Value input, CombiningKind kind, uint32_t size) { // First reduce on a single thread to get per lane reduction value. - Value laneVal = builder.create(loc, kind, input); + Value laneVal = vector::ReductionOp::create(builder, loc, kind, input); // Parallel reduction using butterfly shuffles. for (uint64_t i = 1; i < size; i <<= 1) { Value shuffled = builder @@ -647,9 +647,9 @@ struct TestVectorDistribution "unsupported shuffle type"); Type i32Type = builder.getIntegerType(32); Value srcIdxI32 = - builder.create(loc, i32Type, srcIdx); - Value warpSzI32 = builder.create( - loc, builder.getIntegerAttr(i32Type, warpSz)); + arith::IndexCastOp::create(builder, loc, i32Type, srcIdx); + Value warpSzI32 = arith::ConstantOp::create( + builder, loc, builder.getIntegerAttr(i32Type, warpSz)); Value result = builder .create(loc, val, srcIdxI32, warpSzI32, gpu::ShuffleMode::IDX) @@ -680,7 +680,7 @@ struct TestVectorDistribution options.warpAllocationFn = allocateGlobalSharedMemory; options.warpSyncronizationFn = [](Location loc, OpBuilder &builder, gpu::WarpExecuteOnLane0Op warpOp) { - builder.create(loc); + gpu::BarrierOp::create(builder, loc); }; // Test on one pattern in isolation. if (warpOpToSCF) { diff --git a/mlir/test/lib/IR/TestPrintInvalid.cpp b/mlir/test/lib/IR/TestPrintInvalid.cpp index 8697918510a58..25d1b19a5f14f 100644 --- a/mlir/test/lib/IR/TestPrintInvalid.cpp +++ b/mlir/test/lib/IR/TestPrintInvalid.cpp @@ -34,13 +34,14 @@ struct TestPrintInvalidPass void runOnOperation() override { Location loc = getOperation().getLoc(); OpBuilder builder(getOperation().getBodyRegion()); - auto funcOp = builder.create( - loc, "test", FunctionType::get(getOperation().getContext(), {}, {})); + auto funcOp = func::FuncOp::create( + builder, loc, "test", + FunctionType::get(getOperation().getContext(), {}, {})); funcOp.addEntryBlock(); // The created function is invalid because there is no return op. llvm::outs() << "Invalid operation:\n" << funcOp << "\n"; builder.setInsertionPointToEnd(&funcOp.getBody().front()); - builder.create(loc); + func::ReturnOp::create(builder, loc); // Now this function is valid. llvm::outs() << "Valid operation:\n" << funcOp << "\n"; funcOp.erase(); diff --git a/mlir/test/lib/IR/TestSlicing.cpp b/mlir/test/lib/IR/TestSlicing.cpp index 92fd6de88ce88..5a5ac450f91fb 100644 --- a/mlir/test/lib/IR/TestSlicing.cpp +++ b/mlir/test/lib/IR/TestSlicing.cpp @@ -30,8 +30,8 @@ static LogicalResult createBackwardSliceFunction(Operation *op, OpBuilder builder(parentFuncOp); Location loc = op->getLoc(); std::string clonedFuncOpName = parentFuncOp.getName().str() + suffix.str(); - func::FuncOp clonedFuncOp = builder.create( - loc, clonedFuncOpName, parentFuncOp.getFunctionType()); + func::FuncOp clonedFuncOp = func::FuncOp::create( + builder, loc, clonedFuncOpName, parentFuncOp.getFunctionType()); IRMapping mapper; builder.setInsertionPointToEnd(clonedFuncOp.addEntryBlock()); for (const auto &arg : enumerate(parentFuncOp.getArguments())) @@ -46,7 +46,7 @@ static LogicalResult createBackwardSliceFunction(Operation *op, (void)result; for (Operation *slicedOp : slice) builder.clone(*slicedOp, mapper); - builder.create(loc); + func::ReturnOp::create(builder, loc); return success(); } diff --git a/mlir/test/lib/Pass/TestPassManager.cpp b/mlir/test/lib/Pass/TestPassManager.cpp index 7afe2109f04db..25c8e53179803 100644 --- a/mlir/test/lib/Pass/TestPassManager.cpp +++ b/mlir/test/lib/Pass/TestPassManager.cpp @@ -217,8 +217,8 @@ struct TestInvalidParentPass void runOnOperation() final { FunctionOpInterface op = getOperation(); OpBuilder b(op.getFunctionBody()); - b.create(op.getLoc(), TypeRange(), "some_unknown_func", - ValueRange()); + test::TestCallOp::create(b, op.getLoc(), TypeRange(), "some_unknown_func", + ValueRange()); } }; diff --git a/mlir/test/lib/Transforms/TestDialectConversion.cpp b/mlir/test/lib/Transforms/TestDialectConversion.cpp index 8278937a1014c..dc0538eddda28 100644 --- a/mlir/test/lib/Transforms/TestDialectConversion.cpp +++ b/mlir/test/lib/Transforms/TestDialectConversion.cpp @@ -45,7 +45,7 @@ struct PDLLTypeConverter : public TypeConverter { /// Hook for materializing a conversion. static Value materializeCast(OpBuilder &builder, Type resultType, ValueRange inputs, Location loc) { - return builder.create(loc, resultType, inputs) + return UnrealizedConversionCastOp::create(builder, loc, resultType, inputs) .getResult(0); } }; diff --git a/mlir/test/lib/Transforms/TestInliningCallback.cpp b/mlir/test/lib/Transforms/TestInliningCallback.cpp index c518f3f4ac85f..2888c3cf3dda8 100644 --- a/mlir/test/lib/Transforms/TestInliningCallback.cpp +++ b/mlir/test/lib/Transforms/TestInliningCallback.cpp @@ -53,8 +53,8 @@ struct InlinerCallback mlir::Operation &call = inlineBlock->back(); builder.setInsertionPointAfter(&call); - auto executeRegionOp = builder.create( - call.getLoc(), call.getResultTypes()); + auto executeRegionOp = mlir::scf::ExecuteRegionOp::create( + builder, call.getLoc(), call.getResultTypes()); mlir::Region ®ion = executeRegionOp.getRegion(); // Move the inlined blocks into the region @@ -70,8 +70,8 @@ struct InlinerCallback if (test::TestReturnOp returnOp = llvm::dyn_cast(&op)) { mlir::OpBuilder returnBuilder(returnOp); - returnBuilder.create(returnOp.getLoc(), - returnOp.getOperands()); + mlir::scf::YieldOp::create(returnBuilder, returnOp.getLoc(), + returnOp.getOperands()); returnOp.erase(); } } @@ -79,8 +79,8 @@ struct InlinerCallback // Add test.return after scf.execute_region builder.setInsertionPointAfter(executeRegionOp); - builder.create(executeRegionOp.getLoc(), - executeRegionOp.getResults()); + test::TestReturnOp::create(builder, executeRegionOp.getLoc(), + executeRegionOp.getResults()); } void runOnOperation() override { diff --git a/mlir/test/lib/Transforms/TestMakeIsolatedFromAbove.cpp b/mlir/test/lib/Transforms/TestMakeIsolatedFromAbove.cpp index 4e0213c0e4cfd..c1fb70605ab46 100644 --- a/mlir/test/lib/Transforms/TestMakeIsolatedFromAbove.cpp +++ b/mlir/test/lib/Transforms/TestMakeIsolatedFromAbove.cpp @@ -28,7 +28,7 @@ makeIsolatedFromAboveImpl(RewriterBase &rewriter, SmallVector operands = regionOp.getOperands(); operands.append(capturedValues); auto isolatedRegionOp = - rewriter.create(regionOp.getLoc(), operands); + test::IsolatedOneRegionOp::create(rewriter, regionOp.getLoc(), operands); rewriter.inlineRegionBefore(region, isolatedRegionOp.getRegion(), isolatedRegionOp.getRegion().begin()); rewriter.eraseOp(regionOp); diff --git a/mlir/test/lib/Transforms/TestTransformsOps.cpp b/mlir/test/lib/Transforms/TestTransformsOps.cpp index 9a5632bb99c06..ff5838dece464 100644 --- a/mlir/test/lib/Transforms/TestTransformsOps.cpp +++ b/mlir/test/lib/Transforms/TestTransformsOps.cpp @@ -74,8 +74,8 @@ transform::TestMakeComposedFoldedAffineApply::applyToOne( if (auto v = dyn_cast(ofr)) { result = v; } else { - result = rewriter.create( - loc, getConstantIntValue(ofr).value()); + result = arith::ConstantIndexOp::create(rewriter, loc, + getConstantIntValue(ofr).value()); } results.push_back(result.getDefiningOp()); rewriter.replaceOp(affineApplyOp, result); diff --git a/mlir/test/mlir-tblgen/rewriter-attributes-properties.td b/mlir/test/mlir-tblgen/rewriter-attributes-properties.td index 40af548b140ff..23ab24e776161 100644 --- a/mlir/test/mlir-tblgen/rewriter-attributes-properties.td +++ b/mlir/test/mlir-tblgen/rewriter-attributes-properties.td @@ -44,7 +44,7 @@ def test1 : Pat<(AOp (BOp:$x $y), $_), (AOp $x, $y)>; // CHECK: test::AOp::Properties tblgen_props; // CHECK: tblgen_values.push_back((*x.getODSResults(0).begin())); // CHECK: tblgen_props.y = ::llvm::dyn_cast_if_present(y); -// CHECK: tblgen_AOp_0 = rewriter.create(odsLoc, tblgen_types, tblgen_values, tblgen_props); +// CHECK: tblgen_AOp_0 = test::AOp::create(rewriter, odsLoc, tblgen_types, tblgen_values, tblgen_props); // Note: These use strings to pick up a non-trivial storage/interface type // difference. diff --git a/mlir/test/mlir-tblgen/rewriter-indexing.td b/mlir/test/mlir-tblgen/rewriter-indexing.td index 0a94746742b4e..9bb6103584f23 100644 --- a/mlir/test/mlir-tblgen/rewriter-indexing.td +++ b/mlir/test/mlir-tblgen/rewriter-indexing.td @@ -55,7 +55,7 @@ def test2 : Pat<(COp $attr1, $op1, $attr2, (AOp $op2)), // We expect ODSOperand 0 here, the attribute before the operand in BOp // definition shouldn't shift the counter. // CHECK: op1 = (*castedOp0.getODSOperands(0).begin()).getDefiningOp(); -// CHECK: rewriter.create((*a.getODSResults(0).begin()).getLoc() +// CHECK: test::BOp::create(rewriter, (*a.getODSResults(0).begin()).getLoc() def test3 : Pat<(BOp $attr, (AOp:$a $input)), (BOp $attr, (AOp $input), (location $a))>; diff --git a/mlir/tools/mlir-tblgen/RewriterGen.cpp b/mlir/tools/mlir-tblgen/RewriterGen.cpp index 975a524a53285..605033daa719f 100644 --- a/mlir/tools/mlir-tblgen/RewriterGen.cpp +++ b/mlir/tools/mlir-tblgen/RewriterGen.cpp @@ -632,7 +632,8 @@ void PatternEmitter::emitOpMatch(DagNode tree, StringRef opName, int depth) { ++opArgIdx; continue; } - if (auto *operand = llvm::dyn_cast_if_present(opArg)) { + if (auto *operand = + llvm::dyn_cast_if_present(opArg)) { if (argTree.isVariadic()) { if (!operand->isVariadic()) { auto error = formatv("variadic DAG construct can't match op {0}'s " @@ -1695,7 +1696,7 @@ std::string PatternEmitter::handleOpCreation(DagNode tree, int resultIndex, // Then create the op. os.scope("", "\n}\n").os - << formatv("{0} = rewriter.create<{1}>({2}, tblgen_values, {3});", + << formatv("{0} = {1}::create(rewriter, {2}, tblgen_values, {3});", valuePackName, resultOp.getQualCppClassName(), locToUse, useProperties ? "tblgen_props" : "tblgen_attrs"); return resultValue; @@ -1714,7 +1715,7 @@ std::string PatternEmitter::handleOpCreation(DagNode tree, int resultIndex, // aggregate-parameter builders. createSeparateLocalVarsForOpArgs(tree, childNodeNames); - os.scope().os << formatv("{0} = rewriter.create<{1}>({2}", valuePackName, + os.scope().os << formatv("{0} = {1}::create(rewriter, {2}", valuePackName, resultOp.getQualCppClassName(), locToUse); supplyValuesForOpArgs(tree, childNodeNames, depth); os << "\n );\n}\n"; @@ -1753,7 +1754,7 @@ std::string PatternEmitter::handleOpCreation(DagNode tree, int resultIndex, resultIndex + i); } } - os << formatv("{0} = rewriter.create<{1}>({2}, tblgen_types, " + os << formatv("{0} = {1}::create(rewriter, {2}, tblgen_types, " "tblgen_values, {3});\n", valuePackName, resultOp.getQualCppClassName(), locToUse, useProperties ? "tblgen_props" : "tblgen_attrs"); @@ -1772,8 +1773,8 @@ void PatternEmitter::createSeparateLocalVarsForOpArgs( int valueIndex = 0; // An index for uniquing local variable names. for (int argIndex = 0, e = resultOp.getNumArgs(); argIndex < e; ++argIndex) { - const auto *operand = - llvm::dyn_cast_if_present(resultOp.getArg(argIndex)); + const auto *operand = llvm::dyn_cast_if_present( + resultOp.getArg(argIndex)); // We do not need special handling for attributes or properties. if (!operand) continue; @@ -1828,7 +1829,8 @@ void PatternEmitter::supplyValuesForOpArgs( Argument opArg = resultOp.getArg(argIndex); // Handle the case of operand first. - if (auto *operand = llvm::dyn_cast_if_present(opArg)) { + if (auto *operand = + llvm::dyn_cast_if_present(opArg)) { if (!operand->name.empty()) os << "/*" << operand->name << "=*/"; os << childNodeNames.lookup(argIndex);