Skip to content

Commit b4279f8

Browse files
committed
Revert "[MLIR][Linalg] Remove matmul_transpose variants (llvm#147961)"
This reverts commit d152808.
1 parent 8071d27 commit b4279f8

File tree

23 files changed

+902
-689
lines changed

23 files changed

+902
-689
lines changed

mlir/include/mlir/Dialect/Linalg/IR/Linalg.h

Lines changed: 4 additions & 190 deletions
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,8 @@ std::pair<int64_t, int64_t> getFmrFromWinogradConv2DFmr(WinogradConv2DFmr fmr);
145145
#define GET_OP_CLASSES
146146
#include "mlir/Dialect/Linalg/IR/LinalgRelayoutOps.h.inc"
147147

148-
namespace mlir::linalg {
148+
namespace mlir {
149+
namespace linalg {
149150

150151
/// Returns the outer shape in the packed domain before applying the
151152
/// transposition.
@@ -154,194 +155,7 @@ template <typename OpTy,
154155
std::is_same_v<OpTy, linalg::UnPackOp>>>
155156
SmallVector<int64_t> getPackedOuterShapeWithoutTransposition(OpTy packOrUnPack);
156157

157-
/// Specialization of `linalg.matmul` op that has a transpose map on A
158-
class MatmulTransposeAOp : public MatmulOp {
159-
/// Create an affine map for a transpose-A matmul. Used only in the builders.
160-
static SmallVector<AffineMap> getDefaultIndexingMaps(OpBuilder &builder);
161-
162-
public:
163-
using MatmulOp::MatmulOp;
164-
static ::mlir::TypeID resolveTypeID() { return TypeID::get<MatmulOp>(); }
165-
166-
/// Build a transpose A matmul.
167-
static void build(OpBuilder &builder, OperationState &result,
168-
ValueRange inputs, ValueRange outputs,
169-
ArrayRef<NamedAttribute> attributes = {});
170-
171-
static MatmulTransposeAOp create(OpBuilder &builder, Location location,
172-
ValueRange inputs, ValueRange outputs,
173-
ArrayRef<NamedAttribute> attributes = {});
174-
175-
/// Build a transpose A matmul with a specific result type.
176-
static void build(OpBuilder &builder, OperationState &result,
177-
TypeRange resultTensorTypes, ValueRange inputs,
178-
ValueRange outputs,
179-
ArrayRef<NamedAttribute> attributes = {});
180-
181-
static MatmulTransposeAOp create(OpBuilder &builder, Location location,
182-
TypeRange resultTensorTypes,
183-
ValueRange inputs, ValueRange outputs,
184-
ArrayRef<NamedAttribute> attributes = {});
185-
186-
/// Build a transpose A matmul with a specific result type and a cast type.
187-
static void build(OpBuilder &builder, OperationState &result,
188-
TypeRange resultTensorTypes, ValueRange inputs,
189-
ValueRange outputs, Attribute cast,
190-
ArrayRef<NamedAttribute> attributes = {});
191-
192-
static MatmulTransposeAOp create(OpBuilder &builder, Location location,
193-
TypeRange resultTensorTypes,
194-
ValueRange inputs, ValueRange outputs,
195-
Attribute cast,
196-
ArrayRef<NamedAttribute> attributes = {});
197-
198-
/// Checks if the affine map is the expected one for this operation
199-
static bool isDefaultIndexingMaps(Attribute attr);
200-
201-
static bool classof(Operation *op);
202-
};
203-
204-
/// Specialization of `linalg.matmul` op that has a transpose map on B
205-
class MatmulTransposeBOp : public MatmulOp {
206-
/// Create an affine map for a transpose-B matmul. Used only in the builders.
207-
static SmallVector<AffineMap> getDefaultIndexingMaps(OpBuilder &builder);
208-
209-
public:
210-
using MatmulOp::MatmulOp;
211-
static ::mlir::TypeID resolveTypeID() { return TypeID::get<MatmulOp>(); }
212-
213-
/// Build a transpose B matmul.
214-
static void build(OpBuilder &builder, OperationState &result,
215-
ValueRange inputs, ValueRange outputs,
216-
ArrayRef<NamedAttribute> attributes = {});
217-
218-
static MatmulTransposeBOp create(OpBuilder &builder, Location location,
219-
ValueRange inputs, ValueRange outputs,
220-
ArrayRef<NamedAttribute> attributes = {});
221-
222-
/// Build a transpose B matmul with a specific result type.
223-
static void build(OpBuilder &builder, OperationState &result,
224-
TypeRange resultTensorTypes, ValueRange inputs,
225-
ValueRange outputs,
226-
ArrayRef<NamedAttribute> attributes = {});
227-
228-
static MatmulTransposeBOp create(OpBuilder &builder, Location location,
229-
TypeRange resultTensorTypes,
230-
ValueRange inputs, ValueRange outputs,
231-
ArrayRef<NamedAttribute> attributes = {});
232-
233-
/// Build a transpose B matmul with a specific result type and a cast type.
234-
static void build(OpBuilder &builder, OperationState &result,
235-
TypeRange resultTensorTypes, ValueRange inputs,
236-
ValueRange outputs, Attribute cast,
237-
ArrayRef<NamedAttribute> attributes = {});
238-
239-
static MatmulTransposeBOp create(OpBuilder &builder, Location location,
240-
TypeRange resultTensorTypes,
241-
ValueRange inputs, ValueRange outputs,
242-
Attribute cast,
243-
ArrayRef<NamedAttribute> attributes = {});
244-
245-
/// Checks if the affine map is the expected one for this operation
246-
static bool isDefaultIndexingMaps(Attribute attr);
247-
248-
static bool classof(Operation *op);
249-
};
250-
251-
/// Specialization of `linalg.batch_matmul` op that has a transpose map on A
252-
class BatchMatmulTransposeAOp : public BatchMatmulOp {
253-
/// Create an affine map for a transpose-A batch_matmul. Used only in the
254-
/// builders.
255-
static SmallVector<AffineMap> getDefaultIndexingMaps(OpBuilder &builder);
256-
257-
public:
258-
using BatchMatmulOp::BatchMatmulOp;
259-
static ::mlir::TypeID resolveTypeID() { return TypeID::get<BatchMatmulOp>(); }
260-
261-
/// Build a transpose A matmul.
262-
static void build(OpBuilder &builder, OperationState &result,
263-
ValueRange inputs, ValueRange outputs,
264-
ArrayRef<NamedAttribute> attributes = {});
265-
266-
static BatchMatmulTransposeAOp
267-
create(OpBuilder &builder, Location location, ValueRange inputs,
268-
ValueRange outputs, ArrayRef<NamedAttribute> attributes = {});
269-
270-
/// Build a transpose A matmul with a specific result type.
271-
static void build(OpBuilder &builder, OperationState &result,
272-
TypeRange resultTensorTypes, ValueRange inputs,
273-
ValueRange outputs,
274-
ArrayRef<NamedAttribute> attributes = {});
275-
276-
static BatchMatmulTransposeAOp
277-
create(OpBuilder &builder, Location location, TypeRange resultTensorTypes,
278-
ValueRange inputs, ValueRange outputs,
279-
ArrayRef<NamedAttribute> attributes = {});
280-
281-
/// Build a transpose A matmul with a specific result type and a cast type.
282-
static void build(OpBuilder &builder, OperationState &result,
283-
TypeRange resultTensorTypes, ValueRange inputs,
284-
ValueRange outputs, Attribute cast,
285-
ArrayRef<NamedAttribute> attributes = {});
286-
287-
static BatchMatmulTransposeAOp
288-
create(OpBuilder &builder, Location location, TypeRange resultTensorTypes,
289-
ValueRange inputs, ValueRange outputs, Attribute cast,
290-
ArrayRef<NamedAttribute> attributes = {});
291-
292-
/// Checks if the affine map is the expected one for this operation
293-
static bool isDefaultIndexingMaps(Attribute attr);
294-
295-
static bool classof(Operation *op);
296-
};
297-
298-
/// Specialization of `linalg.batch_matmul` op that has a transpose map on B
299-
class BatchMatmulTransposeBOp : public BatchMatmulOp {
300-
/// Create an affine map for a transpose-B batch_matmul. Used only in the
301-
/// builders.
302-
static SmallVector<AffineMap> getDefaultIndexingMaps(OpBuilder &builder);
303-
304-
public:
305-
using BatchMatmulOp::BatchMatmulOp;
306-
static ::mlir::TypeID resolveTypeID() { return TypeID::get<BatchMatmulOp>(); }
307-
308-
/// Build a transpose B matmul.
309-
static void build(OpBuilder &builder, OperationState &result,
310-
ValueRange inputs, ValueRange outputs,
311-
ArrayRef<NamedAttribute> attributes = {});
312-
313-
static BatchMatmulTransposeBOp
314-
create(OpBuilder &builder, Location location, ValueRange inputs,
315-
ValueRange outputs, ArrayRef<NamedAttribute> attributes = {});
316-
317-
/// Build a transpose B matmul with a specific result type.
318-
static void build(OpBuilder &builder, OperationState &result,
319-
TypeRange resultTensorTypes, ValueRange inputs,
320-
ValueRange outputs,
321-
ArrayRef<NamedAttribute> attributes = {});
322-
323-
static BatchMatmulTransposeBOp
324-
create(OpBuilder &builder, Location location, TypeRange resultTensorTypes,
325-
ValueRange inputs, ValueRange outputs,
326-
ArrayRef<NamedAttribute> attributes = {});
327-
328-
/// Build a transpose B matmul with a specific result type and a cast type.
329-
static void build(OpBuilder &builder, OperationState &result,
330-
TypeRange resultTensorTypes, ValueRange inputs,
331-
ValueRange outputs, Attribute cast,
332-
ArrayRef<NamedAttribute> attributes = {});
333-
334-
static BatchMatmulTransposeBOp
335-
create(OpBuilder &builder, Location location, TypeRange resultTensorTypes,
336-
ValueRange inputs, ValueRange outputs, Attribute cast,
337-
ArrayRef<NamedAttribute> attributes = {});
338-
339-
/// Checks if the affine map is the expected one for this operation
340-
static bool isDefaultIndexingMaps(Attribute attr);
341-
342-
static bool classof(Operation *op);
343-
};
344-
345-
} // namespace mlir::linalg
158+
} // namespace linalg
159+
} // namespace mlir
346160

347161
#endif // MLIR_DIALECT_LINALG_IR_LINALG_H

0 commit comments

Comments
 (0)