Skip to content

Commit 4129fd1

Browse files
author
git apple-llvm automerger
committed
Merge commit '7fd7078a8da6' from apple/main into swift/next
2 parents 34c0dba + 7fd7078 commit 4129fd1

File tree

8 files changed

+94
-102
lines changed

8 files changed

+94
-102
lines changed

mlir/include/mlir/Dialect/Linalg/Transforms/Transforms.h

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
namespace mlir {
2020

21-
class BufferAssignmentTypeConverter;
21+
class BufferizeTypeConverter;
2222

2323
namespace linalg {
2424

@@ -51,7 +51,7 @@ void populateConvVectorizationPatterns(
5151

5252
/// Populates the given list with patterns to bufferize linalg ops.
5353
void populateLinalgBufferizePatterns(MLIRContext *context,
54-
BufferAssignmentTypeConverter &converter,
54+
BufferizeTypeConverter &converter,
5555
OwningRewritePatternList &patterns);
5656

5757
/// Performs standalone tiling of a single LinalgOp by `tileSizes`.
@@ -801,14 +801,13 @@ void populateLinalgToStandardConversionPatterns(
801801
// Buffer allocation patterns.
802802
//===----------------------------------------------------------------------===//
803803

804-
/// Generic BufferAssignmentConversionPattern that matches any Operation* and
804+
/// Generic BufferizeConversionPattern that matches any Operation* and
805805
/// dispatches internally. This avoids template instantiating one pattern for
806806
/// each LinalgOp op.
807-
class LinalgOpConverter : public BufferAssignmentConversionPattern {
807+
class LinalgOpConverter : public BufferizeConversionPattern {
808808
public:
809-
LinalgOpConverter(MLIRContext *context,
810-
BufferAssignmentTypeConverter &converter)
811-
: BufferAssignmentConversionPattern(context, converter) {}
809+
LinalgOpConverter(MLIRContext *context, BufferizeTypeConverter &converter)
810+
: BufferizeConversionPattern(context, converter) {}
812811

813812
LogicalResult
814813
matchAndRewrite(Operation *op, ArrayRef<Value> operands,
@@ -819,10 +818,9 @@ class LinalgOpConverter : public BufferAssignmentConversionPattern {
819818
/// stored in memory. A linalg.reshape is introduced to convert to the desired
820819
/// n-D buffer form.
821820
class TensorConstantOpConverter
822-
: public BufferAssignmentOpConversionPattern<ConstantOp> {
821+
: public BufferizeOpConversionPattern<ConstantOp> {
823822
public:
824-
using BufferAssignmentOpConversionPattern<
825-
ConstantOp>::BufferAssignmentOpConversionPattern;
823+
using BufferizeOpConversionPattern<ConstantOp>::BufferizeOpConversionPattern;
826824

827825
LogicalResult
828826
matchAndRewrite(ConstantOp op, ArrayRef<Value> operands,
@@ -831,10 +829,10 @@ class TensorConstantOpConverter
831829

832830
/// TensorCastOp converts 1-1 to MemRefCastOp.
833831
class TensorCastOpConverter
834-
: public BufferAssignmentOpConversionPattern<TensorCastOp> {
832+
: public BufferizeOpConversionPattern<TensorCastOp> {
835833
public:
836-
using BufferAssignmentOpConversionPattern<
837-
TensorCastOp>::BufferAssignmentOpConversionPattern;
834+
using BufferizeOpConversionPattern<
835+
TensorCastOp>::BufferizeOpConversionPattern;
838836

839837
LogicalResult
840838
matchAndRewrite(TensorCastOp op, ArrayRef<Value> operands,

mlir/include/mlir/Dialect/Shape/Transforms/Passes.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
#include "mlir/Pass/Pass.h"
1818

1919
namespace mlir {
20-
class BufferAssignmentTypeConverter;
20+
class BufferizeTypeConverter;
2121
} // namespace mlir
2222

2323
namespace mlir {
@@ -40,9 +40,9 @@ void populateRemoveShapeConstraintsPatterns(OwningRewritePatternList &patterns,
4040
MLIRContext *ctx);
4141
std::unique_ptr<FunctionPass> createRemoveShapeConstraintsPass();
4242

43-
void populateShapeTypeConversionPatterns(
44-
MLIRContext *ctx, BufferAssignmentTypeConverter &converter,
45-
OwningRewritePatternList &patterns);
43+
void populateShapeTypeConversionPatterns(MLIRContext *ctx,
44+
BufferizeTypeConverter &converter,
45+
OwningRewritePatternList &patterns);
4646
// Bufferizes shape dialect ops.
4747
//
4848
// Note that most shape dialect ops must be converted to std before

mlir/include/mlir/Transforms/Bufferize.h

Lines changed: 33 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ namespace mlir {
2929
/// A helper type converter class for using inside Buffer Assignment operation
3030
/// conversion patterns. The default constructor keeps all the types intact
3131
/// except for the ranked-tensor types which is converted to memref types.
32-
class BufferAssignmentTypeConverter : public TypeConverter {
32+
class BufferizeTypeConverter : public TypeConverter {
3333
public:
3434
/// This enum is for showing how buffer placement operation converters should
3535
/// conduct with certain result type after type conversion. This value can be
3636
/// set/get for each specific type using setResultConversionKind or
3737
/// getResultConversionKind.
3838
enum ResultConversionKind { AppendToArgumentsList, KeepAsFunctionResult };
3939

40-
BufferAssignmentTypeConverter();
40+
BufferizeTypeConverter();
4141

4242
/// This method tries to decompose a value of a certain type using provided
4343
/// decompose callback functions. If it is unable to do so, the original value
@@ -131,46 +131,43 @@ class BufferAssignmentTypeConverter : public TypeConverter {
131131
SmallVector<DecomposeTypeConversionCallFn, 2> decomposeTypeConversions;
132132
};
133133

134-
/// Helper conversion pattern that encapsulates a BufferAssignmentTypeConverter
134+
/// Helper conversion pattern that encapsulates a BufferizeTypeConverter
135135
/// instance.
136136
template <typename SourceOp>
137-
class BufferAssignmentOpConversionPattern
138-
: public OpConversionPattern<SourceOp> {
137+
class BufferizeOpConversionPattern : public OpConversionPattern<SourceOp> {
139138
public:
140-
explicit BufferAssignmentOpConversionPattern(
141-
MLIRContext *context, BufferAssignmentTypeConverter &converter,
142-
PatternBenefit benefit = 1)
139+
explicit BufferizeOpConversionPattern(MLIRContext *context,
140+
BufferizeTypeConverter &converter,
141+
PatternBenefit benefit = 1)
143142
: OpConversionPattern<SourceOp>(context, benefit), converter(converter) {}
144143

145144
protected:
146-
BufferAssignmentTypeConverter &converter;
145+
BufferizeTypeConverter &converter;
147146
};
148147

149-
/// Helper conversion pattern that encapsulates a BufferAssignmentTypeConverter
148+
/// Helper conversion pattern that encapsulates a BufferizeTypeConverter
150149
/// instance and that operates on Operation* to be compatible with OpInterfaces.
151150
/// This allows avoiding to instantiate N patterns for ops that can be subsumed
152151
/// by a single op interface (e.g. Linalg named ops).
153-
class BufferAssignmentConversionPattern : public ConversionPattern {
152+
class BufferizeConversionPattern : public ConversionPattern {
154153
public:
155-
explicit BufferAssignmentConversionPattern(
156-
MLIRContext *context, BufferAssignmentTypeConverter &converter,
157-
PatternBenefit benefit = 1)
154+
explicit BufferizeConversionPattern(MLIRContext *context,
155+
BufferizeTypeConverter &converter,
156+
PatternBenefit benefit = 1)
158157
: ConversionPattern(benefit, converter, MatchAnyOpTypeTag()),
159158
converter(converter) {}
160159

161160
protected:
162-
BufferAssignmentTypeConverter &converter;
161+
BufferizeTypeConverter &converter;
163162
};
164163

165-
/// Converts the signature of the function using BufferAssignmentTypeConverter.
164+
/// Converts the signature of the function using BufferizeTypeConverter.
166165
/// Each result type of the function is kept as a function result or appended to
167166
/// the function arguments list based on ResultConversionKind for the converted
168167
/// result type.
169-
class BufferAssignmentFuncOpConverter
170-
: public BufferAssignmentOpConversionPattern<FuncOp> {
168+
class BufferizeFuncOpConverter : public BufferizeOpConversionPattern<FuncOp> {
171169
public:
172-
using BufferAssignmentOpConversionPattern<
173-
FuncOp>::BufferAssignmentOpConversionPattern;
170+
using BufferizeOpConversionPattern<FuncOp>::BufferizeOpConversionPattern;
174171

175172
/// Performs the actual signature rewriting step.
176173
LogicalResult matchAndRewrite(mlir::FuncOp, ArrayRef<Value>,
@@ -183,11 +180,11 @@ class BufferAssignmentFuncOpConverter
183180
/// operation from the operand to the target function argument is inserted.
184181
template <typename ReturnOpSourceTy, typename ReturnOpTargetTy,
185182
typename CopyOpTy>
186-
class BufferAssignmentReturnOpConverter
187-
: public BufferAssignmentOpConversionPattern<ReturnOpSourceTy> {
183+
class BufferizeReturnOpConverter
184+
: public BufferizeOpConversionPattern<ReturnOpSourceTy> {
188185
public:
189-
using BufferAssignmentOpConversionPattern<
190-
ReturnOpSourceTy>::BufferAssignmentOpConversionPattern;
186+
using BufferizeOpConversionPattern<
187+
ReturnOpSourceTy>::BufferizeOpConversionPattern;
191188

192189
/// Performs the actual return-op conversion step.
193190
LogicalResult
@@ -212,10 +209,10 @@ class BufferAssignmentReturnOpConverter
212209
Type origin = originTypes[value.index()];
213210
Type converted = value.value().getType();
214211
auto kind = this->converter.getResultConversionKind(origin, converted);
215-
if (kind == BufferAssignmentTypeConverter::KeepAsFunctionResult)
212+
if (kind == BufferizeTypeConverter::KeepAsFunctionResult)
216213
newOperands.push_back(value.value());
217214
else
218-
// kind = BufferAssignmentTypeConverter::AppendToArgumentsList
215+
// kind = BufferizeTypeConverter::AppendToArgumentsList
219216
needCopyOperands.push_back(value.value());
220217
}
221218
}
@@ -242,12 +239,10 @@ class BufferAssignmentReturnOpConverter
242239

243240
/// Rewrites the `CallOp` to match its operands and results with the signature
244241
/// of the callee after rewriting the callee with
245-
/// BufferAssignmentFuncOpConverter.
246-
class BufferAssignmentCallOpConverter
247-
: public BufferAssignmentOpConversionPattern<CallOp> {
242+
/// BufferizeFuncOpConverter.
243+
class BufferizeCallOpConverter : public BufferizeOpConversionPattern<CallOp> {
248244
public:
249-
using BufferAssignmentOpConversionPattern<
250-
CallOp>::BufferAssignmentOpConversionPattern;
245+
using BufferizeOpConversionPattern<CallOp>::BufferizeOpConversionPattern;
251246

252247
/// Performs the actual rewriting step.
253248
LogicalResult matchAndRewrite(CallOp, ArrayRef<Value>,
@@ -258,14 +253,15 @@ class BufferAssignmentCallOpConverter
258253
/// assignment.
259254
template <typename ReturnOpSourceTy, typename ReturnOpTargetTy,
260255
typename CopyOpTy>
261-
static void populateWithBufferAssignmentOpConversionPatterns(
262-
MLIRContext *context, BufferAssignmentTypeConverter &converter,
263-
OwningRewritePatternList &patterns) {
256+
static void
257+
populateWithBufferizeOpConversionPatterns(MLIRContext *context,
258+
BufferizeTypeConverter &converter,
259+
OwningRewritePatternList &patterns) {
264260
// clang-format off
265261
patterns.insert<
266-
BufferAssignmentCallOpConverter,
267-
BufferAssignmentFuncOpConverter,
268-
BufferAssignmentReturnOpConverter
262+
BufferizeCallOpConverter,
263+
BufferizeFuncOpConverter,
264+
BufferizeReturnOpConverter
269265
<ReturnOpSourceTy, ReturnOpTargetTy, CopyOpTy>
270266
>(context, converter);
271267
// clang-format on

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,7 @@ allocateBuffersForResults(Location loc, LinalgOp linalgOp,
122122

123123
// Specialization for `linalg::GenericOp`.
124124
/// A pattern to convert Generic Linalg operations which work on tensors to
125-
/// use buffers. A buffer is allocated using BufferAssignmentPlacer for
126-
/// each operation result. BufferPlacement pass should be later used to move
125+
/// use buffers. BufferPlacement pass should be later used to move
127126
/// Alloc operations to the correct positions and insert the missing Dealloc
128127
/// operations in the correct places.
129128
static void finalizeBufferAllocation(ConversionPatternRewriter &rewriter,
@@ -294,7 +293,7 @@ struct LinalgBufferizePass : public LinalgBufferizeBase<LinalgBufferizePass> {
294293
void runOnOperation() override {
295294
MLIRContext &context = getContext();
296295
ConversionTarget target(context);
297-
BufferAssignmentTypeConverter converter;
296+
BufferizeTypeConverter converter;
298297

299298
// Mark all Standard operations legal.
300299
target.addLegalDialect<StandardOpsDialect, vector::VectorDialect>();
@@ -344,13 +343,13 @@ struct LinalgBufferizePass : public LinalgBufferizeBase<LinalgBufferizePass> {
344343
});
345344

346345
converter.setResultConversionKind<RankedTensorType, MemRefType>(
347-
BufferAssignmentTypeConverter::AppendToArgumentsList);
346+
BufferizeTypeConverter::AppendToArgumentsList);
348347

349348
OwningRewritePatternList patterns;
350349
populateLinalgBufferizePatterns(&context, converter, patterns);
351-
populateWithBufferAssignmentOpConversionPatterns<
352-
mlir::ReturnOp, mlir::ReturnOp, linalg::CopyOp>(&context, converter,
353-
patterns);
350+
populateWithBufferizeOpConversionPatterns<mlir::ReturnOp, mlir::ReturnOp,
351+
linalg::CopyOp>(
352+
&context, converter, patterns);
354353
if (failed(applyFullConversion(this->getOperation(), target, patterns)))
355354
this->signalPassFailure();
356355
}
@@ -361,7 +360,7 @@ std::unique_ptr<OperationPass<ModuleOp>> mlir::createLinalgBufferizePass() {
361360
return std::make_unique<LinalgBufferizePass>();
362361
}
363362
void mlir::linalg::populateLinalgBufferizePatterns(
364-
MLIRContext *context, BufferAssignmentTypeConverter &converter,
363+
MLIRContext *context, BufferizeTypeConverter &converter,
365364
OwningRewritePatternList &patterns) {
366365
patterns.insert<
367366
// clang-format off

mlir/lib/Dialect/Shape/Transforms/Bufferize.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ using namespace mlir::shape;
2121
namespace {
2222
// Propagate tensor to memref conversions through shape.assuming ops.
2323
class TypeConversionAssumingOpConverter
24-
: public BufferAssignmentOpConversionPattern<shape::AssumingOp> {
24+
: public BufferizeOpConversionPattern<shape::AssumingOp> {
2525
public:
26-
using BufferAssignmentOpConversionPattern<
27-
shape::AssumingOp>::BufferAssignmentOpConversionPattern;
26+
using BufferizeOpConversionPattern<
27+
shape::AssumingOp>::BufferizeOpConversionPattern;
2828

2929
LogicalResult
3030
matchAndRewrite(shape::AssumingOp assumingOp, ArrayRef<Value> operands,
@@ -53,7 +53,7 @@ struct ShapeBufferizePass : public ShapeBufferizeBase<ShapeBufferizePass> {
5353
MLIRContext &ctx = getContext();
5454

5555
OwningRewritePatternList patterns;
56-
BufferAssignmentTypeConverter converter;
56+
BufferizeTypeConverter converter;
5757
populateShapeTypeConversionPatterns(&ctx, converter, patterns);
5858

5959
ConversionTarget target(getContext());
@@ -75,7 +75,7 @@ struct ShapeBufferizePass : public ShapeBufferizeBase<ShapeBufferizePass> {
7575
//
7676
// TODO: Change this to work generally with any type conversions.
7777
void mlir::populateShapeTypeConversionPatterns(
78-
MLIRContext *context, BufferAssignmentTypeConverter &converter,
78+
MLIRContext *context, BufferizeTypeConverter &converter,
7979
OwningRewritePatternList &patterns) {
8080
patterns.insert<TypeConversionAssumingOpConverter>(context, converter);
8181
}

0 commit comments

Comments
 (0)