view mlir/test/mlir-tblgen/enums-python-bindings.td @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1f2b6ac9f198
children
line wrap: on
line source

// RUN: mlir-tblgen -gen-python-enum-bindings %s -I %S/../../include | FileCheck %s

include "mlir/IR/EnumAttr.td"

// CHECK: Autogenerated by mlir-tblgen; don't manually edit.

// CHECK: from enum import Enum
// CHECK: from ._ods_common import _cext as _ods_cext
// CHECK: _ods_ir = _ods_cext.ir

def One : I32EnumAttrCase<"CaseOne", 1, "one">;
def Two : I32EnumAttrCase<"CaseTwo", 2, "two">;

def MyEnum : I32EnumAttr<"MyEnum", "An example 32-bit enum", [One, Two]>;
// CHECK: def _register_attribute_builder(kind):
// CHECK:     def decorator_builder(func):
// CHECK:         _ods_ir.AttrBuilder.insert(kind, func)
// CHECK:         return func
// CHECK:     return decorator_builder

// CHECK-LABEL: class MyEnum(Enum):
// CHECK:     """An example 32-bit enum"""

// CHECK:     CASE_ONE = 1
// CHECK:     CASE_TWO = 2

// CHECK:     def _as_int(self):
// CHECK:         if self is MyEnum.CASE_ONE:
// CHECK:             return 1
// CHECK:         if self is MyEnum.CASE_TWO:
// CHECK:             return 2
// CHECK:         assert False, "Unknown MyEnum enum entry."

def One64 : I64EnumAttrCase<"CaseOne64", 1, "one">;
def Two64 : I64EnumAttrCase<"CaseTwo64", 2, "two">;

def MyEnum64 : I64EnumAttr<"MyEnum64", "An example 64-bit enum", [One64, Two64]>;
// CHECK: @_register_attribute_builder("MyEnum")
// CHECK: def _my_enum(x, context):
// CHECK:     return _ods_ir.IntegerAttr.get(_ods_ir.IntegerType.get_signless(32, context=context), x._as_int())

// CHECK-LABEL: class MyEnum64(Enum):
// CHECK:     """An example 64-bit enum"""

// CHECK:     CASE_ONE64 = 1
// CHECK:     CASE_TWO64 = 2

// CHECK:     def _as_int(self):
// CHECK:         if self is MyEnum64.CASE_ONE64:
// CHECK:             return 1
// CHECK:         if self is MyEnum64.CASE_TWO64:
// CHECK:             return 2
// CHECK:         assert False, "Unknown MyEnum64 enum entry."

// CHECK: @_register_attribute_builder("MyEnum64")
// CHECK: def _my_enum64(x, context):
// CHECK:     return _ods_ir.IntegerAttr.get(_ods_ir.IntegerType.get_signless(64, context=context), x._as_int())