Skip to content

Commit dcfc853

Browse files
authored
[mlir][NFC] update flang/lib create APIs (12/n) (llvm#149914)
See llvm#147168 for more info.
1 parent 3f74334 commit dcfc853

25 files changed

+716
-677
lines changed

flang/lib/Frontend/FrontendActions.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,9 @@ static void addDependentLibs(mlir::ModuleOp mlirModule, CompilerInstance &ci) {
164164
// Add linker options specified by --dependent-lib
165165
auto builder = mlir::OpBuilder(mlirModule.getRegion());
166166
for (const std::string &lib : libs) {
167-
builder.create<mlir::LLVM::LinkerOptionsOp>(
168-
mlirModule.getLoc(), builder.getStrArrayAttr({"/DEFAULTLIB:" + lib}));
167+
mlir::LLVM::LinkerOptionsOp::create(
168+
builder, mlirModule.getLoc(),
169+
builder.getStrArrayAttr({"/DEFAULTLIB:" + lib}));
169170
}
170171
}
171172

flang/lib/Optimizer/CodeGen/BoxedProcedure.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -180,8 +180,8 @@ class BoxprocTypeRewriter : public mlir::TypeConverter {
180180
mlir::ValueRange inputs,
181181
mlir::Location loc) {
182182
assert(inputs.size() == 1);
183-
return builder.create<ConvertOp>(loc, unwrapRefType(type.getEleTy()),
184-
inputs[0]);
183+
return ConvertOp::create(builder, loc, unwrapRefType(type.getEleTy()),
184+
inputs[0]);
185185
}
186186

187187
void setLocation(mlir::Location location) { loc = location; }
@@ -282,17 +282,17 @@ class BoxedProcedurePass
282282
// 32 bytes.
283283
fir::SequenceType::Extent thunkSize = triple.getTrampolineSize();
284284
mlir::Type buffTy = SequenceType::get({thunkSize}, i8Ty);
285-
auto buffer = builder.create<AllocaOp>(loc, buffTy);
285+
auto buffer = AllocaOp::create(builder, loc, buffTy);
286286
mlir::Value closure =
287287
builder.createConvert(loc, i8Ptr, embox.getHost());
288288
mlir::Value tramp = builder.createConvert(loc, i8Ptr, buffer);
289289
mlir::Value func =
290290
builder.createConvert(loc, i8Ptr, embox.getFunc());
291-
builder.create<fir::CallOp>(
292-
loc, factory::getLlvmInitTrampoline(builder),
291+
fir::CallOp::create(
292+
builder, loc, factory::getLlvmInitTrampoline(builder),
293293
llvm::ArrayRef<mlir::Value>{tramp, func, closure});
294-
auto adjustCall = builder.create<fir::CallOp>(
295-
loc, factory::getLlvmAdjustTrampoline(builder),
294+
auto adjustCall = fir::CallOp::create(
295+
builder, loc, factory::getLlvmAdjustTrampoline(builder),
296296
llvm::ArrayRef<mlir::Value>{tramp});
297297
rewriter.replaceOpWithNewOp<ConvertOp>(embox, toTy,
298298
adjustCall.getResult(0));

flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 249 additions & 228 deletions
Large diffs are not rendered by default.

flang/lib/Optimizer/CodeGen/FIROpPatterns.cpp

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@ mlir::LLVM::ConstantOp ConvertFIRToLLVMPattern::genI32Constant(
4848
int value) const {
4949
mlir::Type i32Ty = rewriter.getI32Type();
5050
mlir::IntegerAttr attr = rewriter.getI32IntegerAttr(value);
51-
return rewriter.create<mlir::LLVM::ConstantOp>(loc, i32Ty, attr);
51+
return mlir::LLVM::ConstantOp::create(rewriter, loc, i32Ty, attr);
5252
}
5353

5454
mlir::LLVM::ConstantOp ConvertFIRToLLVMPattern::genConstantOffset(
5555
mlir::Location loc, mlir::ConversionPatternRewriter &rewriter,
5656
int offset) const {
5757
mlir::Type ity = lowerTy().offsetType();
5858
mlir::IntegerAttr cattr = rewriter.getI32IntegerAttr(offset);
59-
return rewriter.create<mlir::LLVM::ConstantOp>(loc, ity, cattr);
59+
return mlir::LLVM::ConstantOp::create(rewriter, loc, ity, cattr);
6060
}
6161

6262
/// Perform an extension or truncation as needed on an integer value. Lowering
@@ -80,9 +80,9 @@ mlir::Value ConvertFIRToLLVMPattern::integerCast(
8080
return rewriter.createOrFold<mlir::LLVM::SExtOp>(loc, ty, val);
8181
} else {
8282
if (toSize < fromSize)
83-
return rewriter.create<mlir::LLVM::TruncOp>(loc, ty, val);
83+
return mlir::LLVM::TruncOp::create(rewriter, loc, ty, val);
8484
if (toSize > fromSize)
85-
return rewriter.create<mlir::LLVM::SExtOp>(loc, ty, val);
85+
return mlir::LLVM::SExtOp::create(rewriter, loc, ty, val);
8686
}
8787
return val;
8888
}
@@ -100,16 +100,16 @@ mlir::Value ConvertFIRToLLVMPattern::getValueFromBox(
100100
mlir::ConversionPatternRewriter &rewriter, int boxValue) const {
101101
if (mlir::isa<mlir::LLVM::LLVMPointerType>(box.getType())) {
102102
auto pty = getLlvmPtrType(resultTy.getContext());
103-
auto p = rewriter.create<mlir::LLVM::GEPOp>(
104-
loc, pty, boxTy.llvm, box,
103+
auto p = mlir::LLVM::GEPOp::create(
104+
rewriter, loc, pty, boxTy.llvm, box,
105105
llvm::ArrayRef<mlir::LLVM::GEPArg>{0, boxValue});
106106
auto fldTy = getBoxEleTy(boxTy.llvm, {boxValue});
107-
auto loadOp = rewriter.create<mlir::LLVM::LoadOp>(loc, fldTy, p);
107+
auto loadOp = mlir::LLVM::LoadOp::create(rewriter, loc, fldTy, p);
108108
auto castOp = integerCast(loc, rewriter, resultTy, loadOp);
109109
attachTBAATag(loadOp, boxTy.fir, nullptr, p);
110110
return castOp;
111111
}
112-
return rewriter.create<mlir::LLVM::ExtractValueOp>(loc, box, boxValue);
112+
return mlir::LLVM::ExtractValueOp::create(rewriter, loc, box, boxValue);
113113
}
114114

115115
/// Method to construct code sequence to get the triple for dimension `dim`
@@ -147,7 +147,7 @@ mlir::Value ConvertFIRToLLVMPattern::loadDimFieldFromBox(
147147
"in memory");
148148
mlir::LLVM::GEPOp p = genGEP(loc, boxTy.llvm, rewriter, box, 0,
149149
static_cast<int>(kDimsPosInBox), dim, off);
150-
auto loadOp = rewriter.create<mlir::LLVM::LoadOp>(loc, ty, p);
150+
auto loadOp = mlir::LLVM::LoadOp::create(rewriter, loc, ty, p);
151151
attachTBAATag(loadOp, boxTy.fir, nullptr, p);
152152
return loadOp;
153153
}
@@ -158,12 +158,13 @@ mlir::Value ConvertFIRToLLVMPattern::getDimFieldFromBox(
158158
if (mlir::isa<mlir::LLVM::LLVMPointerType>(box.getType())) {
159159
mlir::LLVM::GEPOp p = genGEP(loc, boxTy.llvm, rewriter, box, 0,
160160
static_cast<int>(kDimsPosInBox), dim, off);
161-
auto loadOp = rewriter.create<mlir::LLVM::LoadOp>(loc, ty, p);
161+
auto loadOp = mlir::LLVM::LoadOp::create(rewriter, loc, ty, p);
162162
attachTBAATag(loadOp, boxTy.fir, nullptr, p);
163163
return loadOp;
164164
}
165-
return rewriter.create<mlir::LLVM::ExtractValueOp>(
166-
loc, box, llvm::ArrayRef<std::int64_t>{kDimsPosInBox, dim, off});
165+
return mlir::LLVM::ExtractValueOp::create(
166+
rewriter, loc, box,
167+
llvm::ArrayRef<std::int64_t>{kDimsPosInBox, dim, off});
167168
}
168169

169170
mlir::Value ConvertFIRToLLVMPattern::getStrideFromBox(
@@ -251,10 +252,10 @@ mlir::Value ConvertFIRToLLVMPattern::genBoxAttributeCheck(
251252
getValueFromBox(loc, boxTy, box, attrTy, rewriter, kAttributePosInBox);
252253
mlir::LLVM::ConstantOp attrMask = genConstantOffset(loc, rewriter, maskValue);
253254
auto maskRes =
254-
rewriter.create<mlir::LLVM::AndOp>(loc, attrTy, attribute, attrMask);
255+
mlir::LLVM::AndOp::create(rewriter, loc, attrTy, attribute, attrMask);
255256
mlir::LLVM::ConstantOp c0 = genConstantOffset(loc, rewriter, 0);
256-
return rewriter.create<mlir::LLVM::ICmpOp>(loc, mlir::LLVM::ICmpPredicate::ne,
257-
maskRes, c0);
257+
return mlir::LLVM::ICmpOp::create(rewriter, loc,
258+
mlir::LLVM::ICmpPredicate::ne, maskRes, c0);
258259
}
259260

260261
mlir::Value ConvertFIRToLLVMPattern::computeBoxSize(
@@ -281,10 +282,10 @@ mlir::Value ConvertFIRToLLVMPattern::computeBoxSize(
281282
firBoxType.getBoxTypeWithNewShape(1)))) &&
282283
"descriptor layout requires adding padding for dim field");
283284
mlir::Value sizePerDim = genConstantOffset(loc, rewriter, sizePerDimCst);
284-
mlir::Value dimsSize = rewriter.create<mlir::LLVM::MulOp>(
285-
loc, sizePerDim.getType(), sizePerDim, rank);
286-
mlir::Value size = rewriter.create<mlir::LLVM::AddOp>(
287-
loc, scalarBoxSize.getType(), scalarBoxSize, dimsSize);
285+
mlir::Value dimsSize = mlir::LLVM::MulOp::create(
286+
rewriter, loc, sizePerDim.getType(), sizePerDim, rank);
287+
mlir::Value size = mlir::LLVM::AddOp::create(
288+
rewriter, loc, scalarBoxSize.getType(), scalarBoxSize, dimsSize);
288289
return size;
289290
}
290291

@@ -324,18 +325,19 @@ mlir::Value ConvertFIRToLLVMPattern::genAllocaAndAddrCastWithType(
324325
unsigned allocaAs = getAllocaAddressSpace(rewriter);
325326
unsigned programAs = getProgramAddressSpace(rewriter);
326327

327-
mlir::Value al = rewriter.create<mlir::LLVM::AllocaOp>(
328-
loc, ::getLlvmPtrType(llvmObjectTy.getContext(), allocaAs), llvmObjectTy,
329-
size, alignment);
328+
mlir::Value al = mlir::LLVM::AllocaOp::create(
329+
rewriter, loc, ::getLlvmPtrType(llvmObjectTy.getContext(), allocaAs),
330+
llvmObjectTy, size, alignment);
330331

331332
// if our allocation address space, is not the same as the program address
332333
// space, then we must emit a cast to the program address space before use.
333334
// An example case would be on AMDGPU, where the allocation address space is
334335
// the numeric value 5 (private), and the program address space is 0
335336
// (generic).
336337
if (allocaAs != programAs) {
337-
al = rewriter.create<mlir::LLVM::AddrSpaceCastOp>(
338-
loc, ::getLlvmPtrType(llvmObjectTy.getContext(), programAs), al);
338+
al = mlir::LLVM::AddrSpaceCastOp::create(
339+
rewriter, loc, ::getLlvmPtrType(llvmObjectTy.getContext(), programAs),
340+
al);
339341
}
340342

341343
rewriter.restoreInsertionPoint(thisPt);

flang/lib/Optimizer/CodeGen/LowerRepackArrays.cpp

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -152,20 +152,20 @@ PackArrayConversion::matchAndRewrite(fir::PackArrayOp op,
152152

153153
// For now we have to always check if the box is present.
154154
auto isPresent =
155-
builder.create<fir::IsPresentOp>(loc, builder.getI1Type(), box);
155+
fir::IsPresentOp::create(builder, loc, builder.getI1Type(), box);
156156

157-
fir::IfOp ifOp = builder.create<fir::IfOp>(loc, boxType, isPresent,
158-
/*withElseRegion=*/true);
157+
fir::IfOp ifOp = fir::IfOp::create(builder, loc, boxType, isPresent,
158+
/*withElseRegion=*/true);
159159
builder.setInsertionPointToStart(&ifOp.getThenRegion().front());
160160
// The box is present.
161161
auto newBox = genRepackedBox(builder, loc, op);
162162
if (mlir::failed(newBox))
163163
return newBox;
164-
builder.create<fir::ResultOp>(loc, *newBox);
164+
fir::ResultOp::create(builder, loc, *newBox);
165165

166166
// The box is not present. Return original box.
167167
builder.setInsertionPointToStart(&ifOp.getElseRegion().front());
168-
builder.create<fir::ResultOp>(loc, box);
168+
fir::ResultOp::create(builder, loc, box);
169169

170170
rewriter.replaceOp(op, ifOp.getResult(0));
171171
return mlir::success();
@@ -199,8 +199,8 @@ mlir::Value PackArrayConversion::allocateTempBuffer(
199199
// We need to reset the CFI_attribute_allocatable before
200200
// returning the temporary box to avoid any mishandling
201201
// of the temporary box in Fortran runtime.
202-
base = builder.create<fir::BoxAddrOp>(loc, fir::boxMemRefType(tempBoxType),
203-
base);
202+
base = fir::BoxAddrOp::create(builder, loc, fir::boxMemRefType(tempBoxType),
203+
base);
204204
ptrType = base.getType();
205205
}
206206

@@ -262,23 +262,24 @@ PackArrayConversion::genRepackedBox(fir::FirOpBuilder &builder,
262262
}
263263

264264
// Create a temporay iff the original is not contigous and is not empty.
265-
auto isNotContiguous = builder.genNot(
266-
loc, builder.create<fir::IsContiguousBoxOp>(loc, box, op.getInnermost()));
265+
auto isNotContiguous =
266+
builder.genNot(loc, fir::IsContiguousBoxOp::create(builder, loc, box,
267+
op.getInnermost()));
267268
auto dataAddr =
268-
builder.create<fir::BoxAddrOp>(loc, fir::boxMemRefType(boxType), box);
269+
fir::BoxAddrOp::create(builder, loc, fir::boxMemRefType(boxType), box);
269270
auto isNotEmpty =
270-
builder.create<fir::IsPresentOp>(loc, builder.getI1Type(), dataAddr);
271+
fir::IsPresentOp::create(builder, loc, builder.getI1Type(), dataAddr);
271272
auto doPack =
272-
builder.create<mlir::arith::AndIOp>(loc, isNotContiguous, isNotEmpty);
273+
mlir::arith::AndIOp::create(builder, loc, isNotContiguous, isNotEmpty);
273274

274275
fir::IfOp ifOp =
275-
builder.create<fir::IfOp>(loc, boxType, doPack, /*withElseRegion=*/true);
276+
fir::IfOp::create(builder, loc, boxType, doPack, /*withElseRegion=*/true);
276277
// Assume that the repacking is unlikely.
277278
ifOp.setUnlikelyIfWeights();
278279

279280
// Return original box.
280281
builder.setInsertionPointToStart(&ifOp.getElseRegion().front());
281-
builder.create<fir::ResultOp>(loc, box);
282+
fir::ResultOp::create(builder, loc, box);
282283

283284
// Create a new box.
284285
builder.setInsertionPointToStart(&ifOp.getThenRegion().front());
@@ -308,7 +309,7 @@ PackArrayConversion::genRepackedBox(fir::FirOpBuilder &builder,
308309
if (!op.getNoCopy())
309310
fir::runtime::genShallowCopy(builder, loc, tempBox, box,
310311
/*resultIsAllocated=*/true);
311-
builder.create<fir::ResultOp>(loc, tempBox);
312+
fir::ResultOp::create(builder, loc, tempBox);
312313

313314
return ifOp.getResult(0);
314315
}
@@ -330,15 +331,15 @@ UnpackArrayConversion::matchAndRewrite(fir::UnpackArrayOp op,
330331

331332
// For now we have to always check if the box is present.
332333
auto isPresent =
333-
builder.create<fir::IsPresentOp>(loc, predicateType, originalBox);
334+
fir::IsPresentOp::create(builder, loc, predicateType, originalBox);
334335

335336
builder.genIfThen(loc, isPresent).genThen([&]() {
336337
mlir::Type addrType =
337338
fir::HeapType::get(fir::extractSequenceType(tempBox.getType()));
338339
mlir::Value tempAddr =
339-
builder.create<fir::BoxAddrOp>(loc, addrType, tempBox);
340+
fir::BoxAddrOp::create(builder, loc, addrType, tempBox);
340341
mlir::Value originalAddr =
341-
builder.create<fir::BoxAddrOp>(loc, addrType, originalBox);
342+
fir::BoxAddrOp::create(builder, loc, addrType, originalBox);
342343

343344
auto isNotSame = builder.genPtrCompare(loc, mlir::arith::CmpIPredicate::ne,
344345
tempAddr, originalAddr);
@@ -356,7 +357,7 @@ UnpackArrayConversion::matchAndRewrite(fir::UnpackArrayOp op,
356357
// to the runtime that uses heap memory, even when the stack
357358
// attribute is set on fir.pack_array.
358359
if (!op.getStack() || !canAllocateTempOnStack(originalBox))
359-
builder.create<fir::FreeMemOp>(loc, tempAddr);
360+
fir::FreeMemOp::create(builder, loc, tempAddr);
360361
})
361362
.getIfOp()
362363
.setUnlikelyIfWeights();

flang/lib/Optimizer/CodeGen/PreCGRewrite.cpp

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -103,13 +103,14 @@ class EmboxConversion : public mlir::OpRewritePattern<fir::EmboxOp> {
103103
auto idxTy = rewriter.getIndexType();
104104
for (auto ext : seqTy.getShape()) {
105105
auto iAttr = rewriter.getIndexAttr(ext);
106-
auto extVal = rewriter.create<mlir::arith::ConstantOp>(loc, idxTy, iAttr);
106+
auto extVal =
107+
mlir::arith::ConstantOp::create(rewriter, loc, idxTy, iAttr);
107108
shapeOpers.push_back(extVal);
108109
}
109-
auto xbox = rewriter.create<fir::cg::XEmboxOp>(
110-
loc, embox.getType(), embox.getMemref(), shapeOpers, mlir::ValueRange{},
110+
auto xbox = fir::cg::XEmboxOp::create(
111+
rewriter, loc, embox.getType(), embox.getMemref(), shapeOpers,
111112
mlir::ValueRange{}, mlir::ValueRange{}, mlir::ValueRange{},
112-
embox.getTypeparams(), embox.getSourceBox(),
113+
mlir::ValueRange{}, embox.getTypeparams(), embox.getSourceBox(),
113114
embox.getAllocatorIdxAttr());
114115
LLVM_DEBUG(llvm::dbgs() << "rewriting " << embox << " to " << xbox << '\n');
115116
rewriter.replaceOp(embox, xbox.getOperation()->getResults());
@@ -143,10 +144,11 @@ class EmboxConversion : public mlir::OpRewritePattern<fir::EmboxOp> {
143144
substrOpers.assign(sliceOp.getSubstr().begin(),
144145
sliceOp.getSubstr().end());
145146
}
146-
auto xbox = rewriter.create<fir::cg::XEmboxOp>(
147-
loc, embox.getType(), embox.getMemref(), shapeOpers, shiftOpers,
148-
sliceOpers, subcompOpers, substrOpers, embox.getTypeparams(),
149-
embox.getSourceBox(), embox.getAllocatorIdxAttr());
147+
auto xbox = fir::cg::XEmboxOp::create(
148+
rewriter, loc, embox.getType(), embox.getMemref(), shapeOpers,
149+
shiftOpers, sliceOpers, subcompOpers, substrOpers,
150+
embox.getTypeparams(), embox.getSourceBox(),
151+
embox.getAllocatorIdxAttr());
150152
LLVM_DEBUG(llvm::dbgs() << "rewriting " << embox << " to " << xbox << '\n');
151153
rewriter.replaceOp(embox, xbox.getOperation()->getResults());
152154
return mlir::success();
@@ -201,8 +203,8 @@ class ReboxConversion : public mlir::OpRewritePattern<fir::ReboxOp> {
201203
sliceOp.getSubstr().end());
202204
}
203205

204-
auto xRebox = rewriter.create<fir::cg::XReboxOp>(
205-
loc, rebox.getType(), rebox.getBox(), shapeOpers, shiftOpers,
206+
auto xRebox = fir::cg::XReboxOp::create(
207+
rewriter, loc, rebox.getType(), rebox.getBox(), shapeOpers, shiftOpers,
206208
sliceOpers, subcompOpers, substrOpers);
207209
LLVM_DEBUG(llvm::dbgs()
208210
<< "rewriting " << rebox << " to " << xRebox << '\n');
@@ -259,9 +261,9 @@ class ArrayCoorConversion : public mlir::OpRewritePattern<fir::ArrayCoorOp> {
259261
"Don't allow substring operations on array_coor. This "
260262
"restriction may be lifted in the future.");
261263
}
262-
auto xArrCoor = rewriter.create<fir::cg::XArrayCoorOp>(
263-
loc, arrCoor.getType(), arrCoor.getMemref(), shapeOpers, shiftOpers,
264-
sliceOpers, subcompOpers, arrCoor.getIndices(),
264+
auto xArrCoor = fir::cg::XArrayCoorOp::create(
265+
rewriter, loc, arrCoor.getType(), arrCoor.getMemref(), shapeOpers,
266+
shiftOpers, sliceOpers, subcompOpers, arrCoor.getIndices(),
265267
arrCoor.getTypeparams());
266268
LLVM_DEBUG(llvm::dbgs()
267269
<< "rewriting " << arrCoor << " to " << xArrCoor << '\n');
@@ -301,9 +303,9 @@ class DeclareOpConversion : public mlir::OpRewritePattern<fir::DeclareOp> {
301303
return mlir::failure();
302304
}
303305
// FIXME: Add FortranAttrs and CudaAttrs
304-
auto xDeclOp = rewriter.create<fir::cg::XDeclareOp>(
305-
loc, declareOp.getType(), declareOp.getMemref(), shapeOpers, shiftOpers,
306-
declareOp.getTypeparams(), declareOp.getDummyScope(),
306+
auto xDeclOp = fir::cg::XDeclareOp::create(
307+
rewriter, loc, declareOp.getType(), declareOp.getMemref(), shapeOpers,
308+
shiftOpers, declareOp.getTypeparams(), declareOp.getDummyScope(),
307309
declareOp.getUniqName());
308310
LLVM_DEBUG(llvm::dbgs()
309311
<< "rewriting " << declareOp << " to " << xDeclOp << '\n');

flang/lib/Optimizer/Dialect/FIRDialect.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ struct FIRInlinerInterface : public mlir::DialectInlinerInterface {
5656
mlir::Value input,
5757
mlir::Type resultType,
5858
mlir::Location loc) const final {
59-
return builder.create<fir::ConvertOp>(loc, resultType, input);
59+
return fir::ConvertOp::create(builder, loc, resultType, input);
6060
}
6161
};
6262
} // namespace

0 commit comments

Comments
 (0)