Skip to content

Commit c610b24

Browse files
authored
[mlir][NFC] update mlir/Dialect create APIs (27/n) (#150638)
See #147168 for more info.
1 parent b58ad36 commit c610b24

File tree

6 files changed

+68
-65
lines changed

6 files changed

+68
-65
lines changed

mlir/lib/Conversion/AMDGPUToROCDL/AMDGPUToROCDL.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -481,16 +481,16 @@ struct MemoryCounterWaitOpLowering
481481
if (chipset.majorVersion >= 12) {
482482
Location loc = op.getLoc();
483483
if (std::optional<int> ds = adaptor.getDs())
484-
rewriter.create<ROCDL::WaitDscntOp>(loc, *ds);
484+
ROCDL::WaitDscntOp::create(rewriter, loc, *ds);
485485

486486
if (std::optional<int> load = adaptor.getLoad())
487-
rewriter.create<ROCDL::WaitLoadcntOp>(loc, *load);
487+
ROCDL::WaitLoadcntOp::create(rewriter, loc, *load);
488488

489489
if (std::optional<int> store = adaptor.getStore())
490-
rewriter.create<ROCDL::WaitStorecntOp>(loc, *store);
490+
ROCDL::WaitStorecntOp::create(rewriter, loc, *store);
491491

492492
if (std::optional<int> exp = adaptor.getExp())
493-
rewriter.create<ROCDL::WaitExpcntOp>(loc, *exp);
493+
ROCDL::WaitExpcntOp::create(rewriter, loc, *exp);
494494

495495
rewriter.eraseOp(op);
496496
return success();

mlir/lib/Dialect/ArmNeon/Transforms/LowerContractToNeonPatterns.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,8 @@ class VectorContractRewriter {
145145
return rewriter.createOrFold<arm_neon::UsmmlaOp>(loc, acc.getType(), acc,
146146
lhs, rhs);
147147
case MMLA::Bfloat:
148-
return rewriter.create<arm_neon::BfmmlaOp>(loc, acc.getType(), acc, lhs,
149-
rhs);
148+
return arm_neon::BfmmlaOp::create(rewriter, loc, acc.getType(), acc, lhs,
149+
rhs);
150150
case MMLA::Nop:
151151
llvm_unreachable("Uninitialized operation type");
152152
}
@@ -226,8 +226,9 @@ class VectorContractRewriter {
226226

227227
// Initial accumulator for the final result. This is the un-tiled result if
228228
// tiling is done.
229-
Value result = rewriter.create<arith::ConstantOp>(
230-
loc, op.getResultType(), rewriter.getZeroAttr(op.getResultType()));
229+
Value result =
230+
arith::ConstantOp::create(rewriter, loc, op.getResultType(),
231+
rewriter.getZeroAttr(op.getResultType()));
231232

232233
SmallVector<int64_t, 3> loopOrder = {0, 1};
233234
if (iterationBounds.size() == 3)
@@ -263,8 +264,9 @@ class VectorContractRewriter {
263264
if (dimM == 1) {
264265
auto expandRowVector = [&](Value tiledOperand,
265266
VectorType expandedTypeType) {
266-
auto emptyOperand = rewriter.create<arith::ConstantOp>(
267-
loc, expandedTypeType, rewriter.getZeroAttr(expandedTypeType));
267+
auto emptyOperand =
268+
arith::ConstantOp::create(rewriter, loc, expandedTypeType,
269+
rewriter.getZeroAttr(expandedTypeType));
268270
SmallVector<int64_t> offsets(
269271
cast<ShapedType>(emptyOperand.getType()).getRank(), 0);
270272
SmallVector<int64_t> strides(
@@ -280,8 +282,8 @@ class VectorContractRewriter {
280282
// using the instruction for unsigned by signed multiplication with
281283
// reversed operands.
282284
if (swapOperands)
283-
tiledAcc = rewriter.create<vector::TransposeOp>(
284-
loc, tiledAcc, ArrayRef<int64_t>({1, 0}));
285+
tiledAcc = vector::TransposeOp::create(rewriter, loc, tiledAcc,
286+
ArrayRef<int64_t>({1, 0}));
285287

286288
// Collapse tiled operands to 1D vectors required by the ArmNeon ops
287289
auto collapsedLhs = rewriter.createOrFold<vector::ShapeCastOp>(
@@ -309,8 +311,8 @@ class VectorContractRewriter {
309311
// Because of the reversed operands the result is obtained transposed.
310312
// Transpose it back,
311313
if (swapOperands)
312-
tiledRes = rewriter.create<vector::TransposeOp>(
313-
loc, tiledRes, ArrayRef<int64_t>({1, 0}));
314+
tiledRes = vector::TransposeOp::create(rewriter, loc, tiledRes,
315+
ArrayRef<int64_t>({1, 0}));
314316

315317
// With vecmat, only one row of tiled ACC can be inserted into the final
316318
// result

mlir/lib/Dialect/ArmSVE/Transforms/LowerContractToSVEPatterns.cpp

Lines changed: 39 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -214,13 +214,13 @@ Value VectorContractRewriter::createMMLA(PatternRewriter &rewriter,
214214

215215
switch (mmlaOp) {
216216
case MMLA::SignedInt:
217-
return rewriter.create<arm_sve::SmmlaOp>(loc, resTy, acc, lhs, rhs);
217+
return arm_sve::SmmlaOp::create(rewriter, loc, resTy, acc, lhs, rhs);
218218
case MMLA::UnsignedInt:
219-
return rewriter.create<arm_sve::UmmlaOp>(loc, resTy, acc, lhs, rhs);
219+
return arm_sve::UmmlaOp::create(rewriter, loc, resTy, acc, lhs, rhs);
220220
case MMLA::MixedInt:
221-
return rewriter.create<arm_sve::UsmmlaOp>(loc, resTy, acc, lhs, rhs);
221+
return arm_sve::UsmmlaOp::create(rewriter, loc, resTy, acc, lhs, rhs);
222222
case MMLA::Bfloat:
223-
return rewriter.create<arm_sve::BfmmlaOp>(loc, resTy, acc, lhs, rhs);
223+
return arm_sve::BfmmlaOp::create(rewriter, loc, resTy, acc, lhs, rhs);
224224
default:
225225
llvm_unreachable("Uninitialized operation kind");
226226
}
@@ -316,62 +316,63 @@ Value VectorContractRewriter::lower(vector::ContractionOp op,
316316
for (int64_t i = 0; i < M; i += 2) {
317317
// Extract two consecutive rows of the LHS tile.
318318
auto r0 =
319-
rewriter.create<vector::ExtractOp>(loc, lhs, ArrayRef<int64_t>{i});
319+
vector::ExtractOp::create(rewriter, loc, lhs, ArrayRef<int64_t>{i});
320320
auto r1 =
321-
rewriter.create<vector::ExtractOp>(loc, lhs, ArrayRef<int64_t>{i + 1});
321+
vector::ExtractOp::create(rewriter, loc, lhs, ArrayRef<int64_t>{i + 1});
322322
// Concatenate to obtain a 2 x K x <input-type> flattened sub-tile.
323323
SmallVector<int64_t> shuffleIdx(2 * K);
324324
std::iota(shuffleIdx.begin(), shuffleIdx.end(), 0);
325-
auto t = rewriter.create<vector::ShuffleOp>(loc, r0, r1, shuffleIdx);
325+
auto t = vector::ShuffleOp::create(rewriter, loc, r0, r1, shuffleIdx);
326326
// Turn it into a scalable vector.
327-
auto s = rewriter.create<vector::ScalableInsertOp>(
328-
loc, t, rewriter.create<ub::PoisonOp>(loc, flatLhsType), 0);
327+
auto s = vector::ScalableInsertOp::create(
328+
rewriter, loc, t, ub::PoisonOp::create(rewriter, loc, flatLhsType), 0);
329329
// Replicate the sub-tile VSCALE times to fill the entire vector.
330-
auto r = rewriter.create<arm_sve::DupQLaneOp>(loc, s, 0);
330+
auto r = arm_sve::DupQLaneOp::create(rewriter, loc, s, 0);
331331
lhsTile.push_back(r);
332332
}
333333

334334
// "Flatten" the RHS tile from <[N]xK> to <[N*K]>.
335-
auto rhs = rewriter.create<vector::ShapeCastOp>(this->rhs.getLoc(),
336-
flatRhsTileType, this->rhs);
335+
auto rhs = vector::ShapeCastOp::create(rewriter, this->rhs.getLoc(),
336+
flatRhsTileType, this->rhs);
337337

338338
// Extract the RHS sub-tiles with logical shape <Kx[2]>.
339339
SmallVector<Value> rhsTile;
340340
for (int64_t j = 0; j < N; j += 2)
341-
rhsTile.push_back(rewriter.create<vector::ScalableExtractOp>(
342-
loc, flatRhsType, rhs, j * K));
341+
rhsTile.push_back(vector::ScalableExtractOp::create(
342+
rewriter, loc, flatRhsType, rhs, j * K));
343343

344344
// Extract and pack the ACC sub-tiles.
345345
SmallVector<Value> accTile;
346346
for (int64_t i = 0; i < M; i += 2) {
347347
// Extract two consecutive rows of the accumulator tile.
348-
auto r0 = rewriter.create<vector::ExtractOp>(loc, op.getAcc(),
349-
ArrayRef<int64_t>{i});
350-
auto r1 = rewriter.create<vector::ExtractOp>(loc, op.getAcc(),
351-
ArrayRef<int64_t>{i + 1});
348+
auto r0 = vector::ExtractOp::create(rewriter, loc, op.getAcc(),
349+
ArrayRef<int64_t>{i});
350+
auto r1 = vector::ExtractOp::create(rewriter, loc, op.getAcc(),
351+
ArrayRef<int64_t>{i + 1});
352352
Value accTileVec;
353353
if (swapOperands) {
354354
// We are performing the operation with swapped LHS and RHS we need to
355355
// transpose each individual 2x2 tile of the accumulator and (later) the
356356
// final result.
357-
accTileVec = rewriter.create<vector::InterleaveOp>(loc, r0, r1);
357+
accTileVec = vector::InterleaveOp::create(rewriter, loc, r0, r1);
358358
} else {
359359
// Bitcast accumulator rows to double-width integer elements, so
360360
// subsequent interleave/deinterleave work on pairs of elements.
361-
auto r0I64 = rewriter.create<vector::BitCastOp>(loc, accRow64Ty, r0);
362-
auto r1I64 = rewriter.create<vector::BitCastOp>(loc, accRow64Ty, r1);
361+
auto r0I64 = vector::BitCastOp::create(rewriter, loc, accRow64Ty, r0);
362+
auto r1I64 = vector::BitCastOp::create(rewriter, loc, accRow64Ty, r1);
363363

364364
// Interleave the rows, effectively flattening each 2x2 tile into 4
365365
// consecutive elements.
366-
auto intrI64 = rewriter.create<vector::InterleaveOp>(loc, r0I64, r1I64);
366+
auto intrI64 = vector::InterleaveOp::create(rewriter, loc, r0I64, r1I64);
367367

368368
// Bitcast back to original element type.
369-
accTileVec = rewriter.create<vector::BitCastOp>(loc, accRowX2Ty, intrI64);
369+
accTileVec =
370+
vector::BitCastOp::create(rewriter, loc, accRowX2Ty, intrI64);
370371
}
371372
// Extract ACC sub-tiles.
372373
for (int64_t j = 0; j < N; j += 2)
373-
accTile.push_back(rewriter.create<vector::ScalableExtractOp>(
374-
loc, flatAccType, accTileVec, j * 2));
374+
accTile.push_back(vector::ScalableExtractOp::create(
375+
rewriter, loc, flatAccType, accTileVec, j * 2));
375376
}
376377

377378
// Emit sub-tile matrix multiplications.
@@ -384,36 +385,36 @@ Value VectorContractRewriter::lower(vector::ContractionOp op,
384385
}
385386

386387
// Unpack the OUT sub-tiles and insert into the result.
387-
Value result = rewriter.create<ub::PoisonOp>(loc, op.getResultType());
388+
Value result = ub::PoisonOp::create(rewriter, loc, op.getResultType());
388389
for (int64_t i = 0; i < M / 2; ++i) {
389390
// Collect a number of sub-tiles in a row.
390-
Value row = rewriter.create<ub::PoisonOp>(loc, accRowX2Ty);
391+
Value row = ub::PoisonOp::create(rewriter, loc, accRowX2Ty);
391392
for (int64_t j = 0; j < N / 2; ++j)
392-
row = rewriter.create<vector::ScalableInsertOp>(
393-
loc, outTile[i * N / 2 + j], row, j * 4);
393+
row = vector::ScalableInsertOp::create(
394+
rewriter, loc, outTile[i * N / 2 + j], row, j * 4);
394395

395396
// Unpack the row to obtain two rows of the output. If we have the out
396397
// sub-tiles transposed we obtain two consecutive output rows by
397398
// separating even and odd elements, i.e. a simple deinterleave.
398399
// Otherwise, the interleave is by pairs.
399400
Value out0, out1;
400401
if (swapOperands) {
401-
auto tmp = rewriter.create<vector::DeinterleaveOp>(loc, row);
402+
auto tmp = vector::DeinterleaveOp::create(rewriter, loc, row);
402403
out0 = tmp.getRes1();
403404
out1 = tmp.getRes2();
404405
} else {
405406
// Deinterleave by pairs.
406-
auto row64 = rewriter.create<vector::BitCastOp>(loc, accRowX264Ty, row);
407-
auto deintr64 = rewriter.create<vector::DeinterleaveOp>(loc, row64);
407+
auto row64 = vector::BitCastOp::create(rewriter, loc, accRowX264Ty, row);
408+
auto deintr64 = vector::DeinterleaveOp::create(rewriter, loc, row64);
408409

409410
// Bitcast back into original element type and insert into the result.
410-
out0 =
411-
rewriter.create<vector::BitCastOp>(loc, accRowTy, deintr64.getRes1());
412-
out1 =
413-
rewriter.create<vector::BitCastOp>(loc, accRowTy, deintr64.getRes2());
411+
out0 = vector::BitCastOp::create(rewriter, loc, accRowTy,
412+
deintr64.getRes1());
413+
out1 = vector::BitCastOp::create(rewriter, loc, accRowTy,
414+
deintr64.getRes2());
414415
}
415-
result = rewriter.create<vector::InsertOp>(loc, out0, result, i * 2);
416-
result = rewriter.create<vector::InsertOp>(loc, out1, result, i * 2 + 1);
416+
result = vector::InsertOp::create(rewriter, loc, out0, result, i * 2);
417+
result = vector::InsertOp::create(rewriter, loc, out1, result, i * 2 + 1);
417418
}
418419

419420
return result;

mlir/lib/Dialect/Linalg/Transforms/Vectorization.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2191,8 +2191,8 @@ vectorizeAsLinalgContraction(RewriterBase &rewriter, VectorizationState &state,
21912191
}
21922192

21932193
// Create contraction.
2194-
Operation *contractOp = rewriter.create<vector::ContractionOp>(
2195-
loc, /*lhs=*/vecOperands[0],
2194+
Operation *contractOp = vector::ContractionOp::create(
2195+
rewriter, loc, /*lhs=*/vecOperands[0],
21962196
/*rhs=*/vecOperands[1], /*acc=*/vecOperands[2],
21972197
linalgOp.getIndexingMaps(), rewriter.getArrayAttr(iterAttrs), *maybeKind);
21982198
contractOp = state.maskOperation(rewriter, contractOp, linalgOp);

mlir/lib/Dialect/MemRef/Utils/MemRefUtils.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,8 @@ LogicalResult resolveSourceIndicesExpandShape(
237237
llvm::map_to_vector(group, [&](int64_t d) { return destShape[d]; });
238238
SmallVector<Value> groupIndices =
239239
llvm::map_to_vector(group, [&](int64_t d) { return indices[d]; });
240-
Value collapsedIndex = rewriter.create<affine::AffineLinearizeIndexOp>(
241-
loc, groupIndices, groupBasis, /*disjoint=*/startsInbounds);
240+
Value collapsedIndex = affine::AffineLinearizeIndexOp::create(
241+
rewriter, loc, groupIndices, groupBasis, /*disjoint=*/startsInbounds);
242242
sourceIndices.push_back(collapsedIndex);
243243
}
244244
return success();
@@ -250,8 +250,8 @@ resolveSourceIndicesCollapseShape(Location loc, PatternRewriter &rewriter,
250250
ValueRange indices,
251251
SmallVectorImpl<Value> &sourceIndices) {
252252
// Note: collapse_shape requires a strided memref, we can do this.
253-
auto metadata = rewriter.create<memref::ExtractStridedMetadataOp>(
254-
loc, collapseShapeOp.getSrc());
253+
auto metadata = memref::ExtractStridedMetadataOp::create(
254+
rewriter, loc, collapseShapeOp.getSrc());
255255
SmallVector<OpFoldResult> sourceSizes = metadata.getConstifiedMixedSizes();
256256
for (auto [index, group] :
257257
llvm::zip(indices, collapseShapeOp.getReassociationIndices())) {
@@ -265,8 +265,8 @@ resolveSourceIndicesCollapseShape(Location loc, PatternRewriter &rewriter,
265265

266266
SmallVector<OpFoldResult> basis =
267267
llvm::map_to_vector(group, [&](int64_t d) { return sourceSizes[d]; });
268-
auto delinearize = rewriter.create<affine::AffineDelinearizeIndexOp>(
269-
loc, index, basis, /*hasOuterBound=*/true);
268+
auto delinearize = affine::AffineDelinearizeIndexOp::create(
269+
rewriter, loc, index, basis, /*hasOuterBound=*/true);
270270
llvm::append_range(sourceIndices, delinearize.getResults());
271271
}
272272
if (collapseShapeOp.getReassociationIndices().empty()) {

mlir/lib/Dialect/XeGPU/Transforms/XeGPUWgToSgDistribute.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ struct WgToSgCreateNdOp : public OpConversionPattern<xegpu::CreateNdDescOp> {
207207
// Subtract startOfRange from the original subgroup id to get the adjusted
208208
// sg id
209209
Value startOfRangeVal =
210-
rewriter.create<arith::ConstantIndexOp>(loc, startOfRange);
210+
arith::ConstantIndexOp::create(rewriter, loc, startOfRange);
211211
adjustedSgId =
212212
rewriter.createOrFold<index::SubOp>(loc, linearSgId, startOfRangeVal);
213213
}
@@ -431,8 +431,8 @@ struct WgToSgVectorBroadcastOp
431431

432432
SmallVector<Value> newBroadcastOps;
433433
for (auto operand : adaptor.getOperands().front()) {
434-
auto newBroadcast = rewriter.create<vector::BroadcastOp>(
435-
op.getLoc(), newResultType, operand);
434+
auto newBroadcast = vector::BroadcastOp::create(rewriter, op.getLoc(),
435+
newResultType, operand);
436436
xegpu::setLayoutAttr(newBroadcast->getResult(0),
437437
layout.dropSgLayoutAndData());
438438
newBroadcastOps.push_back(newBroadcast.getResult());
@@ -563,8 +563,8 @@ struct WgToSgConvertLayoutOp
563563
if (input && target) {
564564
// keep the ConvertLayoutOp for rest fields, e.g., inst_data.
565565
for (auto [i, src] : llvm::enumerate(adaptor.getSource())) {
566-
auto newOp = rewriter.create<xegpu::ConvertLayoutOp>(
567-
op.getLoc(), src.getType(), src, input, target);
566+
auto newOp = xegpu::ConvertLayoutOp::create(
567+
rewriter, op.getLoc(), src.getType(), src, input, target);
568568
newOps[i] = newOp;
569569
}
570570
}

0 commit comments

Comments
 (0)