xref: /llvm-project/mlir/include/mlir/Dialect/Linalg/IR/LinalgEnums.td (revision e7d09cecc9123f89ace1712a617e252d78b179e9)
1//===- LinalgEnums.td - Linalg dialect base support ---------*- tablegen -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8//
9// This is the definition file for enums used in linear algebra operations.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LINALG_ENUMS
14#define LINALG_ENUMS
15
16include "mlir/IR/EnumAttr.td"
17
18// Define the function attribute enums matching the OpDSL functions.
19def UnaryFn : I32EnumAttr<"UnaryFn", "", [
20  I32EnumAttrCase<"exp", 0>,
21  I32EnumAttrCase<"log", 1>,
22  I32EnumAttrCase<"abs", 2>,
23  I32EnumAttrCase<"ceil", 3>,
24  I32EnumAttrCase<"floor", 4>,
25  I32EnumAttrCase<"negf", 5>,
26  I32EnumAttrCase<"reciprocal", 6>,
27  I32EnumAttrCase<"round", 7>,
28  I32EnumAttrCase<"sqrt", 8>,
29  I32EnumAttrCase<"rsqrt", 9>,
30  I32EnumAttrCase<"square", 10>,
31  I32EnumAttrCase<"tanh", 11>,
32  I32EnumAttrCase<"erf", 12>
33]> {
34  let genSpecializedAttr = 0;
35  let cppNamespace = "::mlir::linalg";
36}
37def BinaryFn : I32EnumAttr<"BinaryFn", "", [
38  I32EnumAttrCase<"add", 0>,
39  I32EnumAttrCase<"sub", 1>,
40  I32EnumAttrCase<"mul", 2>,
41  I32EnumAttrCase<"div", 3>,
42  I32EnumAttrCase<"div_unsigned", 4>,
43  I32EnumAttrCase<"max_signed", 5>,
44  I32EnumAttrCase<"min_signed", 6>,
45  I32EnumAttrCase<"max_unsigned", 7>,
46  I32EnumAttrCase<"min_unsigned", 8>,
47  I32EnumAttrCase<"powf", 9>
48]> {
49  let genSpecializedAttr = 0;
50  let cppNamespace = "::mlir::linalg";
51}
52def TernaryFn : I32EnumAttr<"TernaryFn", "", [
53  I32EnumAttrCase<"select", 0>
54]> {
55  let genSpecializedAttr = 0;
56  let cppNamespace = "::mlir::linalg";
57}
58def TypeFn : I32EnumAttr<"TypeFn", "", [
59  I32EnumAttrCase<"cast_signed", 0>,
60  I32EnumAttrCase<"cast_unsigned", 1>
61]> {
62  let genSpecializedAttr = 0;
63  let cppNamespace = "::mlir::linalg";
64}
65
66#endif // LINALG_ENUMS
67