@@ -37,8 +37,8 @@ static Value createInserts(RewriterBase &rewriter, Location loc, int dim,
37
37
if (dim == static_cast <int >(shape.size ()) - 1 ) {
38
38
for (int i = 0 ; i < shape.back (); ++i) {
39
39
indices.back () = constants[i];
40
- destination = rewriter. create < tensor::InsertOp>( loc, *elementIt,
41
- destination, indices);
40
+ destination = tensor::InsertOp::create (rewriter, loc, *elementIt,
41
+ destination, indices);
42
42
++elementIt;
43
43
}
44
44
return destination;
@@ -65,27 +65,27 @@ static void createMemcpy(OpBuilder &b, Location loc, Value tensorSource,
65
65
MaterializeInDestination: {
66
66
// Note: This is the preferred way of memcpy'ing because no layout map
67
67
// and/or memory space must be specified for the source.
68
- auto materializeOp = b. create < bufferization::MaterializeInDestinationOp> (
69
- loc, tensorSource, memrefDest);
68
+ auto materializeOp = bufferization::MaterializeInDestinationOp::create (
69
+ b, loc, tensorSource, memrefDest);
70
70
materializeOp.setWritable (true );
71
71
} break ;
72
72
case linalg::BufferizeToAllocationOptions::MemcpyOp::MemrefCopy: {
73
73
// TODO: Support custom memory space on source.
74
74
// We do not know the layout map of the source yet, so use a fully dynamic
75
75
// layout for best compatibility.
76
- Value toBuffer = b. create < bufferization::ToBufferOp> (
77
- loc, bufferization::getMemRefTypeWithFullyDynamicLayout (tensorType),
76
+ Value toBuffer = bufferization::ToBufferOp::create (
77
+ b, loc, bufferization::getMemRefTypeWithFullyDynamicLayout (tensorType),
78
78
tensorSource, /* readOnly=*/ true );
79
- b. create < memref::CopyOp>( loc, toBuffer, memrefDest);
79
+ memref::CopyOp::create (b, loc, toBuffer, memrefDest);
80
80
} break ;
81
81
case linalg::BufferizeToAllocationOptions::MemcpyOp::LinalgCopy: {
82
82
// TODO: Support custom memory space on source.
83
83
// We do not know the layout map of the source yet, so use a fully dynamic
84
84
// layout for best compatibility.
85
- Value toBuffer = b. create < bufferization::ToBufferOp> (
86
- loc, bufferization::getMemRefTypeWithFullyDynamicLayout (tensorType),
85
+ Value toBuffer = bufferization::ToBufferOp::create (
86
+ b, loc, bufferization::getMemRefTypeWithFullyDynamicLayout (tensorType),
87
87
tensorSource, /* readOnly=*/ true );
88
- b. create < linalg::CopyOp>( loc, toBuffer, memrefDest);
88
+ linalg::CopyOp::create (b, loc, toBuffer, memrefDest);
89
89
} break ;
90
90
};
91
91
}
@@ -120,15 +120,15 @@ static Operation *movePaddingToFillOrGenericOp(RewriterBase &rewriter,
120
120
->materializeConstant (rewriter, constYieldedValue,
121
121
yieldedValue.getType (), yieldedValue.getLoc ())
122
122
->getResult (0 );
123
- auto fillOp = rewriter. create < linalg::FillOp>( loc, ValueRange (fillValue),
124
- ValueRange (dest));
123
+ auto fillOp = linalg::FillOp::create (rewriter, loc, ValueRange (fillValue),
124
+ ValueRange (dest));
125
125
return fillOp;
126
126
}
127
127
128
128
if (invariantYieldedValue) {
129
129
// Padding with an invariant value.
130
- auto fillOp = rewriter. create < linalg::FillOp>(loc, ValueRange (yieldedValue),
131
- ValueRange (dest));
130
+ auto fillOp = linalg::FillOp::create (
131
+ rewriter, loc, ValueRange (yieldedValue), ValueRange (dest));
132
132
return fillOp;
133
133
}
134
134
@@ -137,16 +137,16 @@ static Operation *movePaddingToFillOrGenericOp(RewriterBase &rewriter,
137
137
utils::IteratorType::parallel);
138
138
SmallVector<AffineMap> indexingMaps (
139
139
1 , rewriter.getMultiDimIdentityMap (resultType.getRank ()));
140
- auto genericOp = rewriter. create < linalg::GenericOp> (
141
- loc, resultType, /* inputs=*/ ValueRange (),
140
+ auto genericOp = linalg::GenericOp::create (
141
+ rewriter, loc, resultType, /* inputs=*/ ValueRange (),
142
142
/* outputs=*/ ValueRange{dest}, /* indexingMaps=*/
143
143
indexingMaps, iteratorTypes);
144
144
Block *body = rewriter.createBlock (&genericOp->getRegion (0 ), {},
145
145
resultType.getElementType (), loc);
146
146
rewriter.setInsertionPointToStart (body);
147
147
SmallVector<Value> bbArgReplacements;
148
148
for (int64_t i = 0 ; i < resultType.getRank (); ++i)
149
- bbArgReplacements.push_back (rewriter. create < linalg::IndexOp>( loc, i));
149
+ bbArgReplacements.push_back (linalg::IndexOp::create (rewriter, loc, i));
150
150
rewriter.mergeBlocks (padOp.getBody (), body, bbArgReplacements);
151
151
152
152
// Update terminator.
@@ -179,8 +179,8 @@ static SmallVector<Value> reifyOrComputeDynamicSizes(OpBuilder &b,
179
179
for (int64_t i = 0 ; i < tensorType.getRank (); ++i) {
180
180
if (tensorType.isDynamicDim (i))
181
181
dynSizes.push_back (
182
- b. create < DimOp>( value.getLoc (), value,
183
- b. create < arith::ConstantIndexOp>( value.getLoc (), i)));
182
+ DimOp::create (b, value.getLoc (), value,
183
+ arith::ConstantIndexOp::create (b, value.getLoc (), i)));
184
184
}
185
185
return dynSizes;
186
186
}
@@ -201,15 +201,15 @@ createAllocationForTensor(RewriterBase &rewriter, Location loc, Value value,
201
201
Value alloc;
202
202
if (options.allocOp ==
203
203
linalg::BufferizeToAllocationOptions::AllocOp::MemrefAlloc) {
204
- alloc = rewriter. create < memref::AllocOp>( loc, memrefType, dynamicSizes);
204
+ alloc = memref::AllocOp::create (rewriter, loc, memrefType, dynamicSizes);
205
205
if (options.emitDealloc ) {
206
206
// Place deallocation at the end of the block.
207
207
rewriter.setInsertionPoint (rewriter.getInsertionBlock ()->getTerminator ());
208
- rewriter. create < memref::DeallocOp>( loc, alloc);
208
+ memref::DeallocOp::create (rewriter, loc, alloc);
209
209
}
210
210
} else if (options.allocOp ==
211
211
linalg::BufferizeToAllocationOptions::AllocOp::MemrefAlloca) {
212
- alloc = rewriter. create < memref::AllocaOp>( loc, memrefType, dynamicSizes);
212
+ alloc = memref::AllocaOp::create (rewriter, loc, memrefType, dynamicSizes);
213
213
// No dealloc is needed.
214
214
}
215
215
@@ -243,14 +243,14 @@ Value linalg::bufferizeToAllocation(
243
243
getMixedSizes (rewriter, loc, padOp.getSource ());
244
244
SmallVector<OpFoldResult> strides (padOp.getResultType ().getRank (),
245
245
rewriter.getIndexAttr (1 ));
246
- Value subview = rewriter. create < memref::SubViewOp> (
247
- loc, alloc, /* offsets=*/ padOp.getMixedLowPad (), sizes, strides);
246
+ Value subview = memref::SubViewOp::create (
247
+ rewriter, loc, alloc, /* offsets=*/ padOp.getMixedLowPad (), sizes, strides);
248
248
createMemcpy (rewriter, loc, padOp.getSource (), subview, options);
249
249
250
250
// Create bufferization.to_tensor with "restrict" and "writable". The returned
251
251
// tensor is a new buffer allocation, so it does not alias with any buffer.
252
- Value toTensorOp = rewriter. create < bufferization::ToTensorOp> (
253
- loc, padOp.getResult ().getType (), alloc, /* restrict=*/ true ,
252
+ Value toTensorOp = bufferization::ToTensorOp::create (
253
+ rewriter, loc, padOp.getResult ().getType (), alloc, /* restrict=*/ true ,
254
254
/* writable=*/ true );
255
255
rewriter.replaceOp (padOp, toTensorOp);
256
256
return alloc;
@@ -338,8 +338,9 @@ Value linalg::bufferizeToAllocation(
338
338
339
339
// Create bufferization.to_tensor with "restrict" and "writable". The returned
340
340
// tensor is a new buffer allocation, so it does not alias with any buffer.
341
- Value toTensorOp = rewriter.create <bufferization::ToTensorOp>(
342
- loc, allocTensorOp.getResult ().getType (), alloc, /* restrict=*/ true ,
341
+ Value toTensorOp = bufferization::ToTensorOp::create (
342
+ rewriter, loc, allocTensorOp.getResult ().getType (), alloc,
343
+ /* restrict=*/ true ,
343
344
/* writable=*/ true );
344
345
rewriter.replaceOp (allocTensorOp, toTensorOp);
345
346
return alloc;
@@ -354,7 +355,7 @@ FailureOr<Operation *> mlir::linalg::rewriteInDestinationPassingStyle(
354
355
auto shape = tensorType.getShape ();
355
356
356
357
// Create tensor.empty.
357
- auto emptyOp = rewriter. create < EmptyOp>( loc, tensorType, ValueRange ());
358
+ auto emptyOp = EmptyOp::create (rewriter, loc, tensorType, ValueRange ());
358
359
359
360
// Case: tensor<elem_type>.
360
361
if (shape.empty ()) {
@@ -369,7 +370,7 @@ FailureOr<Operation *> mlir::linalg::rewriteInDestinationPassingStyle(
369
370
SmallVector<Value, 2 > constants;
370
371
constants.reserve (maxDim);
371
372
for (int i = 0 ; i < maxDim; ++i)
372
- constants.push_back (rewriter. create < arith::ConstantIndexOp>( loc, i));
373
+ constants.push_back (arith::ConstantIndexOp::create (rewriter, loc, i));
373
374
374
375
// Traverse all elements and create tensor.insert ops.
375
376
auto elementIt = fromElementsOp.getElements ().begin ();
@@ -394,24 +395,24 @@ mlir::linalg::rewriteInDestinationPassingStyle(RewriterBase &rewriter,
394
395
RankedTensorType tensorType = cast<RankedTensorType>(generateOp.getType ());
395
396
396
397
// Create tensor.empty.
397
- auto emptyOp =
398
- rewriter. create <EmptyOp>(loc, tensorType, generateOp.getDynamicExtents ());
398
+ auto emptyOp = EmptyOp::create (rewriter, loc, tensorType,
399
+ generateOp.getDynamicExtents ());
399
400
400
401
// Create linalg.generic.
401
402
SmallVector<utils::IteratorType> iteratorTypes (tensorType.getRank (),
402
403
utils::IteratorType::parallel);
403
404
SmallVector<AffineMap> indexingMaps (
404
405
1 , rewriter.getMultiDimIdentityMap (tensorType.getRank ()));
405
- auto genericOp = rewriter. create < linalg::GenericOp> (
406
- loc, tensorType, /* inputs=*/ ValueRange (),
406
+ auto genericOp = linalg::GenericOp::create (
407
+ rewriter, loc, tensorType, /* inputs=*/ ValueRange (),
407
408
/* outputs=*/ ValueRange{emptyOp.getResult ()}, /* indexingMaps=*/
408
409
indexingMaps, iteratorTypes);
409
410
Block *body = rewriter.createBlock (&genericOp->getRegion (0 ), {},
410
411
tensorType.getElementType (), loc);
411
412
rewriter.setInsertionPointToStart (body);
412
413
SmallVector<Value> bbArgReplacements;
413
414
for (int64_t i = 0 ; i < tensorType.getRank (); ++i)
414
- bbArgReplacements.push_back (rewriter. create < linalg::IndexOp>( loc, i));
415
+ bbArgReplacements.push_back (linalg::IndexOp::create (rewriter, loc, i));
415
416
rewriter.mergeBlocks (&generateOp.getBody ().front (), body, bbArgReplacements);
416
417
417
418
// Update terminator.
@@ -450,13 +451,13 @@ mlir::linalg::rewriteInDestinationPassingStyle(RewriterBase &rewriter,
450
451
llvm::all_of (padOp.getMixedHighPad (), isZeroInteger)) {
451
452
using bufferization::AllocTensorOp;
452
453
Value allocated =
453
- rewriter. create < AllocTensorOp>( loc, resultType, dynamicSizes);
454
+ AllocTensorOp::create (rewriter, loc, resultType, dynamicSizes);
454
455
auto copyOp = rewriter.replaceOpWithNewOp <linalg::CopyOp>(
455
456
padOp, padOp.getSource (), allocated);
456
457
return copyOp.getOperation ();
457
458
}
458
459
459
- Value empty = rewriter. create < EmptyOp>( loc, resultType, dynamicSizes);
460
+ Value empty = EmptyOp::create (rewriter, loc, resultType, dynamicSizes);
460
461
// Create linalg.fill or linalg.generic.
461
462
Operation *fillOp = movePaddingToFillOrGenericOp (rewriter, loc, padOp, empty);
462
463
rewriter.setInsertionPointAfter (fillOp);
@@ -567,8 +568,8 @@ Value linalg::bufferizeToAllocation(
567
568
createMemcpy (rewriter, op->getLoc (), operand->get (), alloc, options);
568
569
}
569
570
rewriter.modifyOpInPlace (op, [&]() {
570
- auto toTensorOp = rewriter. create < ToTensorOp>(
571
- op-> getLoc (), operand->get ().getType (), alloc);
571
+ auto toTensorOp = ToTensorOp::create (rewriter, op-> getLoc (),
572
+ operand->get ().getType (), alloc);
572
573
operand->set (toTensorOp);
573
574
if (options.bufferizeDestinationOnly ) {
574
575
rewriter.modifyOpInPlace (toTensorOp, [&]() {
0 commit comments