[Mlir-commits] [mlir] [mlir] Use free op create functions. NFC. (PR #157374)
Jakub Kuderski
llvmlistbot at llvm.org
Sun Sep 7 17:34:47 PDT 2025
https://github.com/kuhar created https://github.com/llvm/llvm-project/pull/157374
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.
>From 633fbad36b5865eff6834f5fadfa1aff6993da9c Mon Sep 17 00:00:00 2001
From: Jakub Kuderski <jakub at nod-labs.com>
Date: Sun, 7 Sep 2025 20:32:54 -0400
Subject: [PATCH] [mlir] Use free op create functions. NFC.
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.
---
.../ComplexToROCDLLibraryCalls.cpp | 6 +--
mlir/lib/Conversion/PtrToLLVM/PtrToLLVM.cpp | 32 +++++++--------
.../Conversion/TosaToLinalg/TosaToLinalg.cpp | 4 +-
.../LLVMIR/IR/BasicPtxBuilderInterface.cpp | 2 +-
mlir/lib/Dialect/Vector/IR/VectorOps.cpp | 4 +-
.../Transforms/XeGPUSubgroupDistribute.cpp | 4 +-
.../Dialect/XeGPU/Transforms/XeGPUUnroll.cpp | 8 ++--
.../Transforms/XeGPUWgToSgDistribute.cpp | 40 +++++++++----------
mlir/lib/Target/Wasm/TranslateFromWasm.cpp | 20 +++++-----
9 files changed, 60 insertions(+), 60 deletions(-)
diff --git a/mlir/lib/Conversion/ComplexToROCDLLibraryCalls/ComplexToROCDLLibraryCalls.cpp b/mlir/lib/Conversion/ComplexToROCDLLibraryCalls/ComplexToROCDLLibraryCalls.cpp
index 7a3a7fdb73e5e..0372f32d6b6df 100644
--- a/mlir/lib/Conversion/ComplexToROCDLLibraryCalls/ComplexToROCDLLibraryCalls.cpp
+++ b/mlir/lib/Conversion/ComplexToROCDLLibraryCalls/ComplexToROCDLLibraryCalls.cpp
@@ -64,9 +64,9 @@ struct PowOpToROCDLLibraryCalls : public OpRewritePattern<complex::PowOp> {
LogicalResult matchAndRewrite(complex::PowOp op,
PatternRewriter &rewriter) const final {
Location loc = op.getLoc();
- Value logBase = rewriter.create<complex::LogOp>(loc, op.getLhs());
- Value mul = rewriter.create<complex::MulOp>(loc, op.getRhs(), logBase);
- Value exp = rewriter.create<complex::ExpOp>(loc, mul);
+ Value logBase = complex::LogOp::create(rewriter, loc, op.getLhs());
+ Value mul = complex::MulOp::create(rewriter, loc, op.getRhs(), logBase);
+ Value exp = complex::ExpOp::create(rewriter, loc, mul);
rewriter.replaceOp(op, exp);
return success();
}
diff --git a/mlir/lib/Conversion/PtrToLLVM/PtrToLLVM.cpp b/mlir/lib/Conversion/PtrToLLVM/PtrToLLVM.cpp
index a0758aa8b1369..29140e63f3af5 100644
--- a/mlir/lib/Conversion/PtrToLLVM/PtrToLLVM.cpp
+++ b/mlir/lib/Conversion/PtrToLLVM/PtrToLLVM.cpp
@@ -169,7 +169,7 @@ LogicalResult FromPtrOpConversion::matchAndRewrite(
// Set the allocated and aligned pointers.
desc.setAllocatedPtr(
rewriter, loc,
- rewriter.create<LLVM::ExtractValueOp>(loc, adaptor.getMetadata(), 0));
+ LLVM::ExtractValueOp::create(rewriter, loc, adaptor.getMetadata(), 0));
desc.setAlignedPtr(rewriter, loc, adaptor.getPtr());
// Extract metadata from the passed struct.
@@ -177,8 +177,8 @@ LogicalResult FromPtrOpConversion::matchAndRewrite(
// Set dynamic offset if needed.
if (offset == ShapedType::kDynamic) {
- Value offsetValue = rewriter.create<LLVM::ExtractValueOp>(
- loc, adaptor.getMetadata(), fieldIdx++);
+ Value offsetValue = LLVM::ExtractValueOp::create(
+ rewriter, loc, adaptor.getMetadata(), fieldIdx++);
desc.setOffset(rewriter, loc, offsetValue);
} else {
desc.setConstantOffset(rewriter, loc, offset);
@@ -187,8 +187,8 @@ LogicalResult FromPtrOpConversion::matchAndRewrite(
// Set dynamic sizes if needed.
for (auto [i, dim] : llvm::enumerate(shape)) {
if (dim == ShapedType::kDynamic) {
- Value sizeValue = rewriter.create<LLVM::ExtractValueOp>(
- loc, adaptor.getMetadata(), fieldIdx++);
+ Value sizeValue = LLVM::ExtractValueOp::create(
+ rewriter, loc, adaptor.getMetadata(), fieldIdx++);
desc.setSize(rewriter, loc, i, sizeValue);
} else {
desc.setConstantSize(rewriter, loc, i, dim);
@@ -198,8 +198,8 @@ LogicalResult FromPtrOpConversion::matchAndRewrite(
// Set dynamic strides if needed.
for (auto [i, stride] : llvm::enumerate(strides)) {
if (stride == ShapedType::kDynamic) {
- Value strideValue = rewriter.create<LLVM::ExtractValueOp>(
- loc, adaptor.getMetadata(), fieldIdx++);
+ Value strideValue = LLVM::ExtractValueOp::create(
+ rewriter, loc, adaptor.getMetadata(), fieldIdx++);
desc.setStride(rewriter, loc, i, strideValue);
} else {
desc.setConstantStride(rewriter, loc, i, stride);
@@ -243,35 +243,35 @@ LogicalResult GetMetadataOpConversion::matchAndRewrite(
// Create a new LLVM struct to hold the metadata
Location loc = op.getLoc();
- Value sV = rewriter.create<LLVM::UndefOp>(loc, *mdTy);
+ Value sV = LLVM::UndefOp::create(rewriter, loc, *mdTy);
// First element is the allocated pointer.
- sV = rewriter.create<LLVM::InsertValueOp>(
- loc, sV, descriptor.allocatedPtr(rewriter, loc), 0);
+ sV = LLVM::InsertValueOp::create(
+ rewriter, loc, sV, descriptor.allocatedPtr(rewriter, loc), int64_t{0});
// Track the current field index.
unsigned fieldIdx = 1;
// Add dynamic offset if needed.
if (offset == ShapedType::kDynamic) {
- sV = rewriter.create<LLVM::InsertValueOp>(
- loc, sV, descriptor.offset(rewriter, loc), fieldIdx++);
+ sV = LLVM::InsertValueOp::create(
+ rewriter, loc, sV, descriptor.offset(rewriter, loc), fieldIdx++);
}
// Add dynamic sizes if needed.
for (auto [i, dim] : llvm::enumerate(shape)) {
if (dim != ShapedType::kDynamic)
continue;
- sV = rewriter.create<LLVM::InsertValueOp>(
- loc, sV, descriptor.size(rewriter, loc, i), fieldIdx++);
+ sV = LLVM::InsertValueOp::create(
+ rewriter, loc, sV, descriptor.size(rewriter, loc, i), fieldIdx++);
}
// Add dynamic strides if needed
for (auto [i, stride] : llvm::enumerate(strides)) {
if (stride != ShapedType::kDynamic)
continue;
- sV = rewriter.create<LLVM::InsertValueOp>(
- loc, sV, descriptor.stride(rewriter, loc, i), fieldIdx++);
+ sV = LLVM::InsertValueOp::create(
+ rewriter, loc, sV, descriptor.stride(rewriter, loc, i), fieldIdx++);
}
rewriter.replaceOp(op, sV);
return success();
diff --git a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
index d0a431b1caa7f..e2b31f640da2f 100644
--- a/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
+++ b/mlir/lib/Conversion/TosaToLinalg/TosaToLinalg.cpp
@@ -150,8 +150,8 @@ static Value createLinalgBodyCalculationForElementwiseOp(
if (shift > 0 || !shiftIsConstant) {
Value shiftConst;
if (shiftIsConstant)
- shiftConst =
- rewriter.create<arith::ConstantIntOp>(loc, shift, /*bitwidth=*/8);
+ shiftConst = arith::ConstantIntOp::create(rewriter, loc, shift,
+ /*bitwidth=*/8);
if (!a.getType().isInteger(32))
a = arith::ExtSIOp::create(rewriter, loc, rewriter.getI32Type(), a);
diff --git a/mlir/lib/Dialect/LLVMIR/IR/BasicPtxBuilderInterface.cpp b/mlir/lib/Dialect/LLVMIR/IR/BasicPtxBuilderInterface.cpp
index 7220e10ea84d3..d85b2ad9a0542 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/BasicPtxBuilderInterface.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/BasicPtxBuilderInterface.cpp
@@ -130,7 +130,7 @@ static SmallVector<Value> extractStructElements(PatternRewriter &rewriter,
SmallVector<Value> elems;
for (unsigned i : llvm::seq<unsigned>(0, structTy.getBody().size()))
- elems.push_back(rewriter.create<LLVM::ExtractValueOp>(loc, structVal, i));
+ elems.push_back(LLVM::ExtractValueOp::create(rewriter, loc, structVal, i));
return elems;
}
diff --git a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
index 9b2a455bace47..85e485c28c74e 100644
--- a/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
+++ b/mlir/lib/Dialect/Vector/IR/VectorOps.cpp
@@ -3452,8 +3452,8 @@ class InsertChainFullyInitialized final : public OpRewritePattern<InsertOp> {
SmallVector<Type> elementToInsertTypes(insertSize,
srcVectorType.getElementType());
// Get all elements from the vector in row-major order.
- auto elementsToInsert = rewriter.create<vector::ToElementsOp>(
- op.getLoc(), elementToInsertTypes, valueToStore);
+ auto elementsToInsert = vector::ToElementsOp::create(
+ rewriter, op.getLoc(), elementToInsertTypes, valueToStore);
for (int64_t linearIdx = 0; linearIdx < insertSize; linearIdx++) {
elements[insertBeginPosition + linearIdx] =
elementsToInsert.getResult(linearIdx);
diff --git a/mlir/lib/Dialect/XeGPU/Transforms/XeGPUSubgroupDistribute.cpp b/mlir/lib/Dialect/XeGPU/Transforms/XeGPUSubgroupDistribute.cpp
index 6b8367dd8c201..b33669259249a 100644
--- a/mlir/lib/Dialect/XeGPU/Transforms/XeGPUSubgroupDistribute.cpp
+++ b/mlir/lib/Dialect/XeGPU/Transforms/XeGPUSubgroupDistribute.cpp
@@ -991,8 +991,8 @@ struct LoadDistribution final : public gpu::WarpDistributionPattern {
newRetIndices, [&](size_t idx) { return newWarpOp.getResult(idx); });
rewriter.setInsertionPointAfter(newWarpOp);
- xegpu::LoadGatherOp newOp = rewriter.create<xegpu::LoadGatherOp>(
- newWarpOp.getLoc(), loadVecTy, newLoadGatherOperands,
+ xegpu::LoadGatherOp newOp = xegpu::LoadGatherOp::create(
+ rewriter, newWarpOp.getLoc(), loadVecTy, newLoadGatherOperands,
loadGatherOp->getAttrs());
xegpu::removeLayoutAttrs(newOp);
Value distributedVal = newWarpOp.getResult(operandIdx);
diff --git a/mlir/lib/Dialect/XeGPU/Transforms/XeGPUUnroll.cpp b/mlir/lib/Dialect/XeGPU/Transforms/XeGPUUnroll.cpp
index d24d82780ebaa..29c9fcdfebcdb 100644
--- a/mlir/lib/Dialect/XeGPU/Transforms/XeGPUUnroll.cpp
+++ b/mlir/lib/Dialect/XeGPU/Transforms/XeGPUUnroll.cpp
@@ -711,8 +711,8 @@ struct UnrollLoadMatrixOp : public UnrollPattern<xegpu::LoadMatrixOp> {
SmallVector<Value> newOps;
layout = layout.dropInstData();
for (SmallVector<OpFoldResult> offsets : offsetsList) {
- auto newOp = rewriter.create<xegpu::LoadMatrixOp>(
- op.getLoc(), newValueTy, op.getMemDesc(), offsets, layout);
+ auto newOp = xegpu::LoadMatrixOp::create(
+ rewriter, op.getLoc(), newValueTy, op.getMemDesc(), offsets, layout);
newOps.push_back(newOp);
}
Value castOp = unpack(newOps, op.getType(), *targetShape, loc, rewriter);
@@ -750,8 +750,8 @@ struct UnrollStoreMatrixOp : public UnrollPattern<xegpu::StoreMatrixOp> {
}
for (auto [v, offsets] : llvm::zip_equal(convertedValues, offsetsList))
- rewriter.create<xegpu::StoreMatrixOp>(loc, v, op.getMemDesc(), offsets,
- layout.dropInstData());
+ xegpu::StoreMatrixOp::create(rewriter, loc, v, op.getMemDesc(), offsets,
+ layout.dropInstData());
rewriter.eraseOp(op);
return success();
diff --git a/mlir/lib/Dialect/XeGPU/Transforms/XeGPUWgToSgDistribute.cpp b/mlir/lib/Dialect/XeGPU/Transforms/XeGPUWgToSgDistribute.cpp
index 9f627c7e1e6d8..5d0f1d18402f2 100644
--- a/mlir/lib/Dialect/XeGPU/Transforms/XeGPUWgToSgDistribute.cpp
+++ b/mlir/lib/Dialect/XeGPU/Transforms/XeGPUWgToSgDistribute.cpp
@@ -91,7 +91,8 @@ genOffsetsList(ConversionPatternRewriter &rewriter, OpType op,
if (!layout || !layout.isForWorkgroup())
return failure();
- Value sgId = rewriter.create<gpu::SubgroupIdOp>(loc, /*upper_bound=*/nullptr);
+ Value sgId =
+ gpu::SubgroupIdOp::create(rewriter, loc, /*upper_bound=*/nullptr);
// verify and adjust the sgId if the range specifier is present
xegpu::RangeAttr sgIdRange = getRangeSpecAttr(op);
@@ -105,8 +106,8 @@ genOffsetsList(ConversionPatternRewriter &rewriter, OpType op,
// adjust the sgId if necessary
if (startOfRange > 0) {
Value startOfRangeVal =
- rewriter.create<arith::ConstantIndexOp>(loc, startOfRange);
- sgId = rewriter.create<index::SubOp>(loc, sgId, startOfRangeVal);
+ arith::ConstantIndexOp::create(rewriter, loc, startOfRange);
+ sgId = index::SubOp::create(rewriter, loc, sgId, startOfRangeVal);
}
}
@@ -339,9 +340,9 @@ struct WgToSgStoreNdOpWithOffset
for (auto [v, tdesc, offsets] :
llvm::zip(adaptor.getValue(), adaptor.getTensorDesc(), offsetsList)) {
- rewriter.create<xegpu::StoreNdOp>(op.getLoc(), v, tdesc, offsets,
- op.getL1HintAttr(), op.getL2HintAttr(),
- op.getL3HintAttr());
+ xegpu::StoreNdOp::create(rewriter, op.getLoc(), v, tdesc, offsets,
+ op.getL1HintAttr(), op.getL2HintAttr(),
+ op.getL3HintAttr());
}
rewriter.eraseOp(op);
@@ -363,9 +364,9 @@ struct WgToSgPrefetchNdOpWithOffset
for (auto [tdesc, offsets] :
llvm::zip(adaptor.getTensorDesc(), offsetsList)) {
- rewriter.create<xegpu::PrefetchNdOp>(
- op.getLoc(), tdesc, offsets, op.getL1HintAttr(), op.getL2HintAttr(),
- op.getL3HintAttr());
+ xegpu::PrefetchNdOp::create(rewriter, op.getLoc(), tdesc, offsets,
+ op.getL1HintAttr(), op.getL2HintAttr(),
+ op.getL3HintAttr());
}
rewriter.eraseOp(op);
@@ -807,8 +808,8 @@ struct WgToSgLoadGatherOpWithOffset
VectorType newTy = VectorType::get(sgShape, resultType.getElementType());
for (auto [offsets, mask] :
llvm::zip(adaptor.getOffsets(), adaptor.getMask())) {
- auto newLoadOp = rewriter.create<xegpu::LoadGatherOp>(
- loc, newTy, op.getSource(), offsets, mask, chunkSizeAttr,
+ auto newLoadOp = xegpu::LoadGatherOp::create(
+ rewriter, loc, newTy, op.getSource(), offsets, mask, chunkSizeAttr,
op.getL1HintAttr(), op.getL2HintAttr(), op.getL3HintAttr());
xegpu::setDistributeLayoutAttr(newLoadOp->getResult(0),
layout.dropSgLayoutAndData());
@@ -857,9 +858,9 @@ struct WgToSgStoreScatterOpWithOffset
auto chunkSizeAttr = rewriter.getI64IntegerAttr(chunkSize);
for (auto [val, offs, mask] : llvm::zip(
adaptor.getValue(), adaptor.getOffsets(), adaptor.getMask())) {
- rewriter.create<xegpu::StoreScatterOp>(
- loc, val, op.getDest(), offs, mask, chunkSizeAttr, op.getL1HintAttr(),
- op.getL2HintAttr(), op.getL3HintAttr());
+ xegpu::StoreScatterOp::create(rewriter, loc, val, op.getDest(), offs,
+ mask, chunkSizeAttr, op.getL1HintAttr(),
+ op.getL2HintAttr(), op.getL3HintAttr());
// Update the layout attribute to drop sg_layout and sg_data.
if (auto newLayout = layout.dropSgLayoutAndData())
op->setAttr("layout", newLayout);
@@ -888,9 +889,9 @@ struct WgToSgLoadMatrixOp : public OpConversionPattern<xegpu::LoadMatrixOp> {
VectorType newResTy = VectorType::get(sgShape, elemTy);
SmallVector<Value> newOps;
for (auto offsets : offsetsList) {
- auto newOp = rewriter.create<xegpu::LoadMatrixOp>(
- op.getLoc(), newResTy, op.getMemDesc(), offsets,
- layout.dropSgLayoutAndData());
+ auto newOp = xegpu::LoadMatrixOp::create(rewriter, op.getLoc(), newResTy,
+ op.getMemDesc(), offsets,
+ layout.dropSgLayoutAndData());
newOps.push_back(newOp);
}
rewriter.replaceOpWithMultiple(op, {newOps});
@@ -911,9 +912,8 @@ struct WgToSgStoreMatrixOp : public OpConversionPattern<xegpu::StoreMatrixOp> {
xegpu::DistributeLayoutAttr layout = op.getLayoutAttr();
for (auto [v, offsets] : llvm::zip(adaptor.getData(), offsetsList))
- rewriter.create<xegpu::StoreMatrixOp>(op.getLoc(), v, op.getMemDesc(),
- offsets,
- layout.dropSgLayoutAndData());
+ xegpu::StoreMatrixOp::create(rewriter, op.getLoc(), v, op.getMemDesc(),
+ offsets, layout.dropSgLayoutAndData());
rewriter.eraseOp(op);
return success();
}
diff --git a/mlir/lib/Target/Wasm/TranslateFromWasm.cpp b/mlir/lib/Target/Wasm/TranslateFromWasm.cpp
index 6afbe0505e649..132be4e42ea2e 100644
--- a/mlir/lib/Target/Wasm/TranslateFromWasm.cpp
+++ b/mlir/lib/Target/Wasm/TranslateFromWasm.cpp
@@ -571,7 +571,7 @@ class ParserHead {
if (failed(varT))
return failure();
for (size_t j = 0; j < *nSubVar; ++j) {
- auto local = builder.create<LocalOp>(varLoc, *varT);
+ auto local = LocalOp::create(builder, varLoc, *varT);
locals.push_back(local.getResult());
}
}
@@ -581,7 +581,7 @@ class ParserHead {
if (!cParser.end())
return emitError(cParser.getLocation(),
"unparsed garbage remaining at end of code block");
- builder.create<ReturnOp>(func->getLoc(), *res);
+ ReturnOp::create(builder, func->getLoc(), *res);
returnOp->erase();
return success();
}
@@ -802,7 +802,7 @@ inline parsed_inst_t ExpressionParser::parseSpecificInstruction<
if (*id >= locals.size())
return emitError(instLoc, "invalid local index. function has ")
<< locals.size() << " accessible locals, received index " << *id;
- return {{builder.create<LocalGetOp>(instLoc, locals[*id]).getResult()}};
+ return {{LocalGetOp::create(builder, instLoc, locals[*id]).getResult()}};
}
template <>
@@ -817,8 +817,8 @@ inline parsed_inst_t ExpressionParser::parseSpecificInstruction<
<< symbols.globalSymbols.size()
<< " accessible globals, received index " << *id;
GlobalSymbolRefContainer globalVar = symbols.globalSymbols[*id];
- auto globalOp = builder.create<GlobalGetOp>(instLoc, globalVar.globalType,
- globalVar.symbol);
+ auto globalOp = GlobalGetOp::create(builder, instLoc, globalVar.globalType,
+ globalVar.symbol);
return {{globalOp.getResult()}};
}
@@ -840,7 +840,7 @@ parsed_inst_t ExpressionParser::parseSetOrTee(OpBuilder &builder) {
if (failed(poppedOp))
return failure();
return {
- builder.create<OpToCreate>(*currentOpLoc, locals[*id], poppedOp->front())
+ OpToCreate::create(builder, *currentOpLoc, locals[*id], poppedOp->front())
->getResults()};
}
@@ -960,7 +960,7 @@ inline parsed_inst_t ExpressionParser::buildNumericOp(
auto operands = popOperands(tysToPop);
if (failed(operands))
return failure();
- auto op = builder.create<opcode>(*currentOpLoc, *operands).getResult();
+ auto op = opcode::create(builder, *currentOpLoc, *operands).getResult();
LDBG() << "Built operation: " << op;
return {{op}};
}
@@ -1475,8 +1475,8 @@ WasmBinaryParser::parseSectionItem<WasmSectionType::GLOBAL>(ParserHead &ph,
GlobalTypeRecord globalType = *globalTypeParsed;
auto symbol = builder.getStringAttr(symbols.getNewGlobalSymbolName());
- auto globalOp = builder.create<wasmssa::GlobalOp>(
- globalLocation, symbol, globalType.type, globalType.isMutable);
+ auto globalOp = wasmssa::GlobalOp::create(
+ builder, globalLocation, symbol, globalType.type, globalType.isMutable);
symbols.globalSymbols.push_back(
{{FlatSymbolRefAttr::get(globalOp)}, globalOp.getType()});
OpBuilder::InsertionGuard guard{builder};
@@ -1491,7 +1491,7 @@ WasmBinaryParser::parseSectionItem<WasmSectionType::GLOBAL>(ParserHead &ph,
return emitError(
globalLocation,
"initializer result type does not match global declaration type");
- builder.create<ReturnOp>(globalLocation, *expr);
+ ReturnOp::create(builder, globalLocation, *expr);
return success();
}
More information about the Mlir-commits
mailing list