1//===-- enums.td - EnumsGen test definition file -----------*- 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 9include "mlir/IR/EnumAttr.td" 10include "mlir/IR/OpBase.td" 11 12def CaseA: I32EnumAttrCase<"CaseA", 0>; 13def CaseB: I32EnumAttrCase<"CaseB", 1>; 14 15def FooEnum: I32EnumAttr<"FooEnum", "A test enum", [CaseA, CaseB]> { 16 let cppNamespace = "Outer::Inner"; 17 let stringToSymbolFnName = "ConvertToEnum"; 18 let symbolToStringFnName = "ConvertToString"; 19 let genSpecializedAttr = 1; 20} 21 22def Case5: I32EnumAttrCase<"Case5", 5>; 23def Case10: I32EnumAttrCase<"Case10", 10>; 24 25def I32Enum: I32EnumAttr<"I32Enum", "A test enum", [Case5, Case10]>; 26 27def NoBits : I32BitEnumAttrCaseNone<"None">; 28def Bit0 : I32BitEnumAttrCaseBit<"Bit0", 0>; 29def Bit1 : I32BitEnumAttrCaseBit<"Bit1", 1>; 30def Bit2 : I32BitEnumAttrCaseBit<"Bit2", 2>; 31def Bit3 : I32BitEnumAttrCaseBit<"Bit3", 3>; 32def Bit4 : I32BitEnumAttrCaseBit<"Bit4", 4>; 33def Bit5 : I32BitEnumAttrCaseBit<"Bit5", 5>; 34 35def BitEnumWithNone : I32BitEnumAttr<"BitEnumWithNone", "A test enum", 36 [NoBits, Bit0, Bit3]> { 37 let separator = " | "; 38} 39 40def BitEnumWithoutNone : I32BitEnumAttr<"BitEnumWithoutNone", "A test enum", 41 [Bit0, Bit3]>; 42 43def Bits0To3 : I32BitEnumAttrCaseGroup<"Bits0To3", 44 [Bit0, Bit1, Bit2, Bit3]>; 45def Bits4And5 : I32BitEnumAttrCaseGroup<"Bits4And5", 46 [Bit4, Bit5]>; 47def Bits0To5 : I32BitEnumAttrCaseGroup<"Bits0To5", 48 [Bits0To3, Bits4And5]>; 49 50def BitEnumWithGroup : I32BitEnumAttr<"BitEnumWithGroup", "A test enum", 51 [Bit0, Bit1, Bit2, Bit3, Bit4, Bits0To3]> { 52 let separator = "|"; 53} 54 55def BitEnumPrimaryGroup : I32BitEnumAttr<"BitEnumPrimaryGroup", "test enum", 56 [Bit0, Bit1, Bit2, Bit3, Bit4, Bit5, 57 Bits0To3, Bits4And5, Bits0To5]> { 58 let separator = ", "; 59 let printBitEnumPrimaryGroups = 1; 60} 61 62def BitEnum64_None : I64BitEnumAttrCaseNone<"None">; 63def BitEnum64_57 : I64BitEnumAttrCaseBit<"Bit57", 57>; 64def BitEnum64_1 : I64BitEnumAttrCaseBit<"Bit1", 1>; 65def BitEnum64_Test : I64BitEnumAttr<"BitEnum64_Test", "A 64-bit test enum", 66 [BitEnum64_None, BitEnum64_1, BitEnum64_57]>; 67 68def PrettyIntEnumCase1: I32EnumAttrCase<"Case1", 1, "case_one">; 69def PrettyIntEnumCase2: I32EnumAttrCase<"Case2", 2, "case_two">; 70 71def PrettyIntEnum: I32EnumAttr<"PrettyIntEnum", "A test enum", 72 [PrettyIntEnumCase1, PrettyIntEnumCase2]>; 73