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