// Begin enum section. Generated from SPIR-V spec; DO NOT MODIFY!
-def SPV_AM_Logical : EnumAttrCase<"Logical">;
-def SPV_AM_Physical32 : EnumAttrCase<"Physical32">;
-def SPV_AM_Physical64 : EnumAttrCase<"Physical64">;
-def SPV_AM_PhysicalStorageBuffer64EXT : EnumAttrCase<"PhysicalStorageBuffer64EXT">;
+def SPV_AM_Logical : EnumAttrCase<"Logical", 0>;
+def SPV_AM_Physical32 : EnumAttrCase<"Physical32", 1>;
+def SPV_AM_Physical64 : EnumAttrCase<"Physical64", 2>;
+def SPV_AM_PhysicalStorageBuffer64EXT : EnumAttrCase<"PhysicalStorageBuffer64EXT", 5348>;
def SPV_AddressingModelAttr :
EnumAttr<"AddressingModel", "valid SPIR-V AddressingModel", [
SPV_AM_Logical, SPV_AM_Physical32, SPV_AM_Physical64,
SPV_AM_PhysicalStorageBuffer64EXT
- ]>;
+ ]> {
+ let cppNamespace = "::mlir::spirv";
+ let underlyingType = "uint32_t";
+}
-def SPV_MM_Simple : EnumAttrCase<"Simple">;
-def SPV_MM_GLSL450 : EnumAttrCase<"GLSL450">;
-def SPV_MM_OpenCL : EnumAttrCase<"OpenCL">;
-def SPV_MM_VulkanKHR : EnumAttrCase<"VulkanKHR">;
+def SPV_MM_Simple : EnumAttrCase<"Simple", 0>;
+def SPV_MM_GLSL450 : EnumAttrCase<"GLSL450", 1>;
+def SPV_MM_OpenCL : EnumAttrCase<"OpenCL", 2>;
+def SPV_MM_VulkanKHR : EnumAttrCase<"VulkanKHR", 3>;
def SPV_MemoryModelAttr :
EnumAttr<"MemoryModel", "valid SPIR-V MemoryModel", [
SPV_MM_Simple, SPV_MM_GLSL450, SPV_MM_OpenCL, SPV_MM_VulkanKHR
- ]>;
+ ]> {
+ let cppNamespace = "::mlir::spirv";
+ let underlyingType = "uint32_t";
+}
// End enum section. Generated from SPIR-V spec; DO NOT MODIFY!
//===----------------------------------------------------------------------===//
#include "mlir/SPIRV/SPIRVTypes.h"
+#include "llvm/ADT/StringSwitch.h"
using namespace mlir;
using namespace mlir::spirv;
+// Pull in all enum utility function definitions
+#include "mlir/SPIRV/SPIRVEnums.cpp.inc"
+
//===----------------------------------------------------------------------===//
// ArrayType
//===----------------------------------------------------------------------===//
# Generate the definition for each enum case
fmt_str = 'def SPV_{acronym}_{symbol} {colon:>{offset}} '\
- 'EnumAttrCase<"{symbol}">;'
- case_defs = [fmt_str.format(acronym=kind_acronym, symbol=case[0],
- colon=':', offset=(max_len + 1 - len(case[0])))
- for case in kind_cases]
+ 'EnumAttrCase<"{symbol}", {value}>;'
+ case_defs = [
+ fmt_str.format(
+ acronym=kind_acronym,
+ symbol=case[0],
+ value=case[1],
+ colon=':',
+ offset=(max_len + 1 - len(case[0]))) for case in kind_cases
+ ]
case_defs = '\n'.join(case_defs)
# Generate the list of enum case names
# Generate the enum attribute definition
enum_attr = 'def SPV_{name}Attr :\n '\
- 'EnumAttr<"{name}", "valid SPIR-V {name}", [\n{cases}\n ]>;'.format(
+ 'EnumAttr<"{name}", "valid SPIR-V {name}", [\n{cases}\n ]> {{\n'\
+ ' let cppNamespace = "::mlir::spirv";\n'\
+ ' let underlyingType = "uint32_t";\n}}'.format(
name=kind_name, cases=case_names)
return kind_name, case_defs + '\n' + enum_attr