xref: /llvm-project/mlir/unittests/TableGen/enums.td (revision 5c3b20520b5716d61833c8ce45d19faa48ce8db7)
11be9fc66SLei Zhang//===-- enums.td - EnumsGen test definition file -----------*- tablegen -*-===//
21be9fc66SLei Zhang//
330857107SMehdi Amini// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
456222a06SMehdi Amini// See https://llvm.org/LICENSE.txt for license information.
556222a06SMehdi Amini// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
61be9fc66SLei Zhang//
756222a06SMehdi Amini//===----------------------------------------------------------------------===//
81be9fc66SLei Zhang
9bed82121Sjfurtekinclude "mlir/IR/EnumAttr.td"
101be9fc66SLei Zhanginclude "mlir/IR/OpBase.td"
111be9fc66SLei Zhang
1260e34f8dSMogballdef CaseA: I32EnumAttrCase<"CaseA", 0>;
1360e34f8dSMogballdef CaseB: I32EnumAttrCase<"CaseB", 1>;
141be9fc66SLei Zhang
1560e34f8dSMogballdef FooEnum: I32EnumAttr<"FooEnum", "A test enum", [CaseA, CaseB]> {
161be9fc66SLei Zhang  let cppNamespace = "Outer::Inner";
171be9fc66SLei Zhang  let stringToSymbolFnName = "ConvertToEnum";
181be9fc66SLei Zhang  let symbolToStringFnName = "ConvertToString";
19fee90542SVladislav Vinogradov  let genSpecializedAttr = 1;
201be9fc66SLei Zhang}
211be9fc66SLei Zhang
229dd182e0SLei Zhangdef Case5: I32EnumAttrCase<"Case5", 5>;
239dd182e0SLei Zhangdef Case10: I32EnumAttrCase<"Case10", 10>;
249dd182e0SLei Zhang
259dd182e0SLei Zhangdef I32Enum: I32EnumAttr<"I32Enum", "A test enum", [Case5, Case10]>;
262fa86571SLei Zhang
2721949de6SJeremy Furtekdef NoBits : I32BitEnumAttrCaseNone<"None">;
2821949de6SJeremy Furtekdef Bit0 : I32BitEnumAttrCaseBit<"Bit0", 0>;
2921949de6SJeremy Furtekdef Bit1 : I32BitEnumAttrCaseBit<"Bit1", 1>;
3021949de6SJeremy Furtekdef Bit2 : I32BitEnumAttrCaseBit<"Bit2", 2>;
3121949de6SJeremy Furtekdef Bit3 : I32BitEnumAttrCaseBit<"Bit3", 3>;
3221949de6SJeremy Furtekdef Bit4 : I32BitEnumAttrCaseBit<"Bit4", 4>;
3321949de6SJeremy Furtekdef Bit5 : I32BitEnumAttrCaseBit<"Bit5", 5>;
342fa86571SLei Zhang
3521949de6SJeremy Furtekdef BitEnumWithNone : I32BitEnumAttr<"BitEnumWithNone", "A test enum",
36*5c3b2052Sjfurtek                                     [NoBits, Bit0, Bit3]> {
37*5c3b2052Sjfurtek  let separator = " | ";
38*5c3b2052Sjfurtek}
392fa86571SLei Zhang
4021949de6SJeremy Furtekdef BitEnumWithoutNone : I32BitEnumAttr<"BitEnumWithoutNone", "A test enum",
4133185e66SJeremy Furtek                                        [Bit0, Bit3]>;
4233185e66SJeremy Furtek
4321949de6SJeremy Furtekdef Bits0To3 : I32BitEnumAttrCaseGroup<"Bits0To3",
4433185e66SJeremy Furtek                                       [Bit0, Bit1, Bit2, Bit3]>;
454e5dee2fSjfurtekdef Bits4And5 : I32BitEnumAttrCaseGroup<"Bits4And5",
464e5dee2fSjfurtek                                       [Bit4, Bit5]>;
474e5dee2fSjfurtekdef Bits0To5 : I32BitEnumAttrCaseGroup<"Bits0To5",
484e5dee2fSjfurtek                                       [Bits0To3, Bits4And5]>;
4933185e66SJeremy Furtek
5021949de6SJeremy Furtekdef BitEnumWithGroup : I32BitEnumAttr<"BitEnumWithGroup", "A test enum",
51*5c3b2052Sjfurtek                                      [Bit0, Bit1, Bit2, Bit3, Bit4, Bits0To3]> {
52*5c3b2052Sjfurtek  let separator = "|";
53*5c3b2052Sjfurtek}
54fdc496a3SAlex Zinenko
554e5dee2fSjfurtekdef BitEnumPrimaryGroup : I32BitEnumAttr<"BitEnumPrimaryGroup", "test enum",
564e5dee2fSjfurtek                                        [Bit0, Bit1, Bit2, Bit3, Bit4, Bit5,
574e5dee2fSjfurtek                                         Bits0To3, Bits4And5, Bits0To5]> {
584e5dee2fSjfurtek  let separator = ", ";
594e5dee2fSjfurtek  let printBitEnumPrimaryGroups = 1;
604e5dee2fSjfurtek}
614e5dee2fSjfurtek
6221949de6SJeremy Furtekdef BitEnum64_None : I64BitEnumAttrCaseNone<"None">;
6321949de6SJeremy Furtekdef BitEnum64_57   : I64BitEnumAttrCaseBit<"Bit57", 57>;
6421949de6SJeremy Furtekdef BitEnum64_1    : I64BitEnumAttrCaseBit<"Bit1", 1>;
6521949de6SJeremy Furtekdef BitEnum64_Test : I64BitEnumAttr<"BitEnum64_Test", "A 64-bit test enum",
6621949de6SJeremy Furtek                                    [BitEnum64_None, BitEnum64_1, BitEnum64_57]>;
6721949de6SJeremy Furtek
68fdc496a3SAlex Zinenkodef PrettyIntEnumCase1: I32EnumAttrCase<"Case1", 1, "case_one">;
69fdc496a3SAlex Zinenkodef PrettyIntEnumCase2: I32EnumAttrCase<"Case2", 2, "case_two">;
70fdc496a3SAlex Zinenko
71fdc496a3SAlex Zinenkodef PrettyIntEnum: I32EnumAttr<"PrettyIntEnum", "A test enum",
72fdc496a3SAlex Zinenko                               [PrettyIntEnumCase1, PrettyIntEnumCase2]>;
73