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