Skip to content

Commit c20b193

Browse files
committed
Use linalg enum directly
1 parent 01f2705 commit c20b193

7 files changed

Lines changed: 16 additions & 28 deletions

File tree

‎cinnamon/cmake/MLIRUtils.cmake‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,15 @@ function(mlir_gen_ir prefix)
3636
mlir_tablegen(${prefix}Base.cpp.inc -gen-dialect-defs -dialect=${filter})
3737
mlir_tablegen(${prefix}Types.h.inc -gen-typedef-decls -typedefs-dialect=${filter})
3838
mlir_tablegen(${prefix}Types.cpp.inc -gen-typedef-defs -typedefs-dialect=${filter})
39-
mlir_tablegen(${prefix}Enums.h.inc -gen-enum-decls)
40-
mlir_tablegen(${prefix}Enums.cpp.inc -gen-enum-defs)
4139
mlir_tablegen(${prefix}Attributes.h.inc -gen-attrdef-decls -attrdefs-dialect=${filter})
4240
mlir_tablegen(${prefix}Attributes.cpp.inc -gen-attrdef-defs -attrdefs-dialect=${filter})
4341
mlir_tablegen(${prefix}Ops.h.inc -gen-op-decls -dialect=${filter})
4442
mlir_tablegen(${prefix}Ops.cpp.inc -gen-op-defs -dialect=${filter})
4543

44+
set(LLVM_TARGET_DEFINITIONS ${prefix}Attributes.td)
45+
mlir_tablegen(${prefix}Enums.h.inc -gen-enum-decls)
46+
mlir_tablegen(${prefix}Enums.cpp.inc -gen-enum-defs)
47+
4648
add_public_tablegen_target(${prefix}IRIncGen)
4749
add_dependencies(${prefix}IncGen ${prefix}IRIncGen)
4850
endfunction()

‎cinnamon/include/cinm-mlir/Dialect/Cinm/IR/CinmAttributes.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "cinm-mlir/Dialect/Cinm/IR/CinmBase.h"
88
#include "mlir/IR/Attributes.h"
9+
#include <mlir/Dialect/Linalg/IR/Linalg.h>
910

1011
//===- Generated includes -------------------------------------------------===//
1112

‎cinnamon/include/cinm-mlir/Dialect/Cinm/IR/CinmAttributes.td‎

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,29 +12,6 @@ include "cinm-mlir/Dialect/Cinm/IR/CinmBase.td"
1212
include "mlir/IR/EnumAttr.td"
1313
include "mlir/IR/CommonAttrConstraints.td"
1414

15-
// This enum is exactly the same as MLIR's `UnaryFn` enum from
16-
// here: mlir/include/mlir/Dialect/Linalg/IR/LinalgEnums.td,
17-
// ensuring easy compatibility.
18-
def Cinm_UnaryOp : I64EnumAttr<
19-
"Cinm_UnaryOp", "",
20-
[
21-
I64EnumAttrCase<"exp", 0>,
22-
I64EnumAttrCase<"log", 1>,
23-
I64EnumAttrCase<"abs", 2>,
24-
I64EnumAttrCase<"ceil", 3>,
25-
I64EnumAttrCase<"floor", 4>,
26-
I64EnumAttrCase<"negf", 5>,
27-
I64EnumAttrCase<"reciprocal", 6>,
28-
I64EnumAttrCase<"round", 7>,
29-
I64EnumAttrCase<"sqrt", 8>,
30-
I64EnumAttrCase<"rsqrt", 9>,
31-
I64EnumAttrCase<"square", 10>,
32-
I64EnumAttrCase<"tanh", 11>,
33-
I64EnumAttrCase<"erf", 12>
34-
]> {
35-
let cppNamespace = "::mlir::cinm";
36-
}
37-
3815
def Cinm_ScanMethodAttr : I64EnumAttr<
3916
"ScanMethod", "",
4017
[
@@ -44,7 +21,6 @@ def Cinm_ScanMethodAttr : I64EnumAttr<
4421
let cppNamespace = "::mlir::cinm";
4522
}
4623

47-
4824
def Cinm_ReduceMethodAttr : I64EnumAttr<
4925
"ReduceMethod", "",
5026
[

‎cinnamon/include/cinm-mlir/Dialect/Cinm/IR/CinmOps.h‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "mlir/Interfaces/InferTypeOpInterface.h"
1818
#include "mlir/Interfaces/SideEffectInterfaces.h"
1919

20+
2021
//===- Generated includes -------------------------------------------------===//
2122

2223
#define GET_OP_CLASSES

‎cinnamon/include/cinm-mlir/Dialect/Cinm/IR/CinmOps.td‎

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,15 @@ include "mlir/Interfaces/ControlFlowInterfaces.td"
2222
include "mlir/Interfaces/InferTypeOpInterface.td"
2323
include "mlir/Interfaces/SideEffectInterfaces.td"
2424
include "mlir/Interfaces/DestinationStyleOpInterface.td"
25+
include "mlir/Dialect/Linalg/IR/LinalgEnums.td"
2526

2627

28+
// Define the attribute enums matching elementwise op kind (e.g., add).
29+
def ElementwiseKindAttr : EnumAttr<Cinm_Dialect,
30+
UnaryFn, "elemwise_kind"> {
31+
let assemblyFormat = "`<` $value `>`";
32+
}
33+
2734

2835

2936
// Op templates
@@ -72,7 +79,7 @@ def Cinm_Elementwise_Unary_Op : Cinm_Op<"op.element_wise", [Pure, SameOperandsAn
7279
}];
7380

7481
let arguments = (ins
75-
Cinm_UnaryOp:$method,
82+
ElementwiseKindAttr:$method,
7683
AnyRankedTensor:$input
7784
);
7885

‎cinnamon/lib/Conversion/CinmToCnm/CinmToCnm.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -593,7 +593,7 @@ struct ConvertElementWiseUnaryToCnm : OpConversionPattern<cinm::Elementwise_Unar
593593
[&](ImplicitLocOpBuilder &builder, ValueRange inputs, ValueRange outputs) {
594594

595595
builder.create<linalg::ElemwiseUnaryOp>(TypeRange{}, ValueRange(inputs), ValueRange(outputs),
596-
linalg::UnaryFnAttr::get(builder.getContext(), static_cast<linalg::UnaryFn>(op.getMethod())),
596+
linalg::UnaryFnAttr::get(builder.getContext(), op.getMethod()),
597597
linalg::TypeFnAttr::get(builder.getContext(), linalg::TypeFn::cast_signed));
598598
});
599599

‎cinnamon/lib/Dialect/Cinm/IR/CinmOps.cpp‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141

4242
using namespace mlir;
4343
using namespace mlir::cinm;
44+
using linalg::UnaryFn;
4445

4546
//===- Generated implementation -------------------------------------------===//
4647

0 commit comments

Comments
 (0)