diff --git a/ChangeLog.md b/ChangeLog.md
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -1,11 +1,16 @@
 # Changelog for spirv-reflect-types
 
+## [0.3] - 2024-07-07
+
+* Update types to accomodate `vulkan-sdk-1.3.283.0`.
+
+[0.3]: https://gitlab.com/dpwiz/spirv-reflect/-/tree/v0.3-types
+
 ## [0.2] - 2022-09-04
 
 * Update types to accomodate FFI loader.
 
 [0.2]: https://gitlab.com/dpwiz/spirv-reflect/-/tree/v0.2-types
-
 
 ## [0.1] - 2022-06-11
 
diff --git a/lib/Data/SpirV/Reflect/BlockVariable.hs b/lib/Data/SpirV/Reflect/BlockVariable.hs
--- a/lib/Data/SpirV/Reflect/BlockVariable.hs
+++ b/lib/Data/SpirV/Reflect/BlockVariable.hs
@@ -1,5 +1,6 @@
 module Data.SpirV.Reflect.BlockVariable
   ( BlockVariable(..)
+  , WordOffset(..)
   ) where
 
 import Data.Text (Text)
@@ -23,5 +24,11 @@
   , array            :: Traits.Array
   , members          :: Vector BlockVariable
   , type_description :: Maybe TypeDescription
+  , word_offset      :: Maybe WordOffset
+  }
+  deriving (Eq, Show, Generic)
+
+newtype WordOffset = WordOffset
+  { offset :: Word32
   }
   deriving (Eq, Show, Generic)
diff --git a/lib/Data/SpirV/Reflect/DescriptorBinding.hs b/lib/Data/SpirV/Reflect/DescriptorBinding.hs
--- a/lib/Data/SpirV/Reflect/DescriptorBinding.hs
+++ b/lib/Data/SpirV/Reflect/DescriptorBinding.hs
@@ -4,6 +4,7 @@
   ) where
 
 import Data.Text (Text)
+import Data.Vector (Vector)
 import Data.Word (Word32)
 import GHC.Generics (Generic)
 
@@ -13,23 +14,25 @@
 import Data.SpirV.Reflect.TypeDescription (TypeDescription)
 
 data DescriptorBinding = DescriptorBinding
-  { spirv_id               :: Maybe Word32
-  , name                   :: Text
-  , binding                :: Word32
-  , input_attachment_index :: Word32
-  , set                    :: Word32
-  , descriptor_type        :: Enums.DescriptorType
-  , resource_type          :: Enums.ResourceFlags
-  , image                  :: Traits.Image
-  , block                  :: Maybe BlockVariable
-  , array                  :: Traits.Array
-  , count                  :: Maybe Word32
-  , accessed               :: Word32
-  , uav_counter_id         :: Word32
-  , uav_counter_binding    :: Maybe DescriptorBinding
-  , type_description       :: Maybe TypeDescription
-  , word_offset            :: WordOffset
-  , decoration_flags       :: Enums.DecorationFlags
+  { spirv_id                    :: Maybe Word32
+  , name                        :: Text
+  , binding                     :: Word32
+  , input_attachment_index      :: Word32
+  , set                         :: Word32
+  , descriptor_type             :: Enums.DescriptorType
+  , resource_type               :: Enums.ResourceFlags
+  , image                       :: Traits.Image
+  , block                       :: Maybe BlockVariable
+  , array                       :: Traits.Array
+  , count                       :: Maybe Word32
+  , accessed                    :: Word32
+  , uav_counter_id              :: Word32
+  , uav_counter_binding         :: Maybe DescriptorBinding
+  , byte_address_buffer_offsets :: Vector Word32
+  , type_description            :: Maybe TypeDescription
+  , word_offset                 :: WordOffset
+  , decoration_flags            :: Enums.DecorationFlags
+  , user_type                   :: Maybe Enums.UserType
   }
   deriving (Eq, Show, Generic)
 
diff --git a/lib/Data/SpirV/Reflect/Enums.hs b/lib/Data/SpirV/Reflect/Enums.hs
--- a/lib/Data/SpirV/Reflect/Enums.hs
+++ b/lib/Data/SpirV/Reflect/Enums.hs
@@ -8,12 +8,8 @@
   , module Data.SpirV.Reflect.Enums.ResourceFlags
   , module Data.SpirV.Reflect.Enums.Result
   , module Data.SpirV.Reflect.Enums.ShaderStage
-  , module Data.SpirV.Reflect.Enums.SpirvBuiltin
-  , module Data.SpirV.Reflect.Enums.SpirvDim
-  , module Data.SpirV.Reflect.Enums.SpirvImageFormat
-  , module Data.SpirV.Reflect.Enums.SpirvOp
-  , module Data.SpirV.Reflect.Enums.SpirvStorageClass
   , module Data.SpirV.Reflect.Enums.TypeFlags
+  , module Data.SpirV.Reflect.Enums.UserType
   ) where
 
 import Data.SpirV.Reflect.Enums.Common
@@ -25,9 +21,5 @@
 import Data.SpirV.Reflect.Enums.ResourceFlags
 import Data.SpirV.Reflect.Enums.Result
 import Data.SpirV.Reflect.Enums.ShaderStage
-import Data.SpirV.Reflect.Enums.SpirvBuiltin
-import Data.SpirV.Reflect.Enums.SpirvDim
-import Data.SpirV.Reflect.Enums.SpirvImageFormat
-import Data.SpirV.Reflect.Enums.SpirvOp
-import Data.SpirV.Reflect.Enums.SpirvStorageClass
 import Data.SpirV.Reflect.Enums.TypeFlags
+import Data.SpirV.Reflect.Enums.UserType
diff --git a/lib/Data/SpirV/Reflect/Enums/DecorationFlags.hs b/lib/Data/SpirV/Reflect/Enums/DecorationFlags.hs
--- a/lib/Data/SpirV/Reflect/Enums/DecorationFlags.hs
+++ b/lib/Data/SpirV/Reflect/Enums/DecorationFlags.hs
@@ -39,3 +39,18 @@
 
 pattern DECORATION_NON_READABLE :: DecorationFlagBits
 pattern DECORATION_NON_READABLE = DecorationFlagBits 0x00000200
+
+pattern DECORATION_PATCH :: DecorationFlagBits
+pattern DECORATION_PATCH = DecorationFlagBits 0x00000400
+
+pattern DECORATION_PER_VERTEX :: DecorationFlagBits
+pattern DECORATION_PER_VERTEX = DecorationFlagBits 0x00000800
+
+pattern DECORATION_PER_TASK :: DecorationFlagBits
+pattern DECORATION_PER_TASK = DecorationFlagBits 0x00001000
+
+pattern DECORATION_WEIGHT_TEXTURE :: DecorationFlagBits
+pattern DECORATION_WEIGHT_TEXTURE = DecorationFlagBits 0x00002000
+
+pattern DECORATION_BLOCK_MATCH_TEXTURE :: DecorationFlagBits
+pattern DECORATION_BLOCK_MATCH_TEXTURE = DecorationFlagBits 0x00004000
diff --git a/lib/Data/SpirV/Reflect/Enums/Format.hs b/lib/Data/SpirV/Reflect/Enums/Format.hs
--- a/lib/Data/SpirV/Reflect/Enums/Format.hs
+++ b/lib/Data/SpirV/Reflect/Enums/Format.hs
@@ -8,6 +8,42 @@
 pattern FORMAT_UNDEFINED :: Format
 pattern FORMAT_UNDEFINED = Format 0
 
+pattern FORMAT_R16_UINT :: Format
+pattern FORMAT_R16_UINT = Format 74
+
+pattern FORMAT_R16_SINT :: Format
+pattern FORMAT_R16_SINT = Format 75
+
+pattern FORMAT_R16_SFLOAT :: Format
+pattern FORMAT_R16_SFLOAT = Format 76
+
+pattern FORMAT_R16G16_UINT :: Format
+pattern FORMAT_R16G16_UINT = Format 81
+
+pattern FORMAT_R16G16_SINT :: Format
+pattern FORMAT_R16G16_SINT = Format 82
+
+pattern FORMAT_R16G16_SFLOAT :: Format
+pattern FORMAT_R16G16_SFLOAT = Format 83
+
+pattern FORMAT_R16G16B16_UINT :: Format
+pattern FORMAT_R16G16B16_UINT = Format 88
+
+pattern FORMAT_R16G16B16_SINT :: Format
+pattern FORMAT_R16G16B16_SINT = Format 89
+
+pattern FORMAT_R16G16B16_SFLOAT :: Format
+pattern FORMAT_R16G16B16_SFLOAT = Format 90
+
+pattern FORMAT_R16G16B16A16_UINT :: Format
+pattern FORMAT_R16G16B16A16_UINT = Format 95
+
+pattern FORMAT_R16G16B16A16_SINT :: Format
+pattern FORMAT_R16G16B16A16_SINT = Format 96
+
+pattern FORMAT_R16G16B16A16_SFLOAT :: Format
+pattern FORMAT_R16G16B16A16_SFLOAT = Format 97
+
 pattern FORMAT_R32_UINT :: Format
 pattern FORMAT_R32_UINT = Format 98
 
@@ -86,6 +122,18 @@
 formatNames :: IsString label => [(Format, label)]
 formatNames =
   [ (FORMAT_UNDEFINED, "UNDEFINED")
+  , (FORMAT_R16_UINT, "FORMAT_R16_UINT")
+  , (FORMAT_R16_SINT, "FORMAT_R16_SINT")
+  , (FORMAT_R16_SFLOAT, "FORMAT_R16_SFLOAT")
+  , (FORMAT_R16G16_UINT, "FORMAT_R16G16_UINT")
+  , (FORMAT_R16G16_SINT, "FORMAT_R16G16_SINT")
+  , (FORMAT_R16G16_SFLOAT, "FORMAT_R16G16_SFLOAT")
+  , (FORMAT_R16G16B16_UINT, "FORMAT_R16G16B16_UINT")
+  , (FORMAT_R16G16B16_SINT, "FORMAT_R16G16B16_SINT")
+  , (FORMAT_R16G16B16_SFLOAT, "FORMAT_R16G16B16_SFLOAT")
+  , (FORMAT_R16G16B16A16_UINT, "FORMAT_R16G16B16A16_UINT")
+  , (FORMAT_R16G16B16A16_SINT, "FORMAT_R16G16B16A16_SINT")
+  , (FORMAT_R16G16B16A16_SFLOAT, "FORMAT_R16G16B16A16_SFLOAT")
   , (FORMAT_R32_UINT, "R32_UINT")
   , (FORMAT_R32_SINT, "R32_SINT")
   , (FORMAT_R32_SFLOAT, "R32_SFLOAT")
diff --git a/lib/Data/SpirV/Reflect/Enums/Generator.hs b/lib/Data/SpirV/Reflect/Enums/Generator.hs
--- a/lib/Data/SpirV/Reflect/Enums/Generator.hs
+++ b/lib/Data/SpirV/Reflect/Enums/Generator.hs
@@ -1,5 +1,7 @@
 module Data.SpirV.Reflect.Enums.Generator where
 
+import Data.SpirV.Reflect.Enums.Common
+
 newtype Generator = Generator Int
   deriving newtype (Eq, Ord, Show, Enum)
 
@@ -32,3 +34,20 @@
 
 pattern GENERATOR_CLAY_CLAY_SHADER_COMPILER :: Generator
 pattern GENERATOR_CLAY_CLAY_SHADER_COMPILER = Generator 19
+
+generatorName :: IsString label => Generator -> Maybe label
+generatorName = toLabel generatorNames
+
+generatorNames :: IsString label => [(Generator, label)]
+generatorNames =
+  [ (GENERATOR_KHRONOS_LLVM_SPIRV_TRANSLATOR, "Khronos LLVM/SPIR-V Translator")
+  , (GENERATOR_KHRONOS_SPIRV_TOOLS_ASSEMBLER, "Khronos SPIR-V Tools Assembler")
+  , (GENERATOR_KHRONOS_GLSLANG_REFERENCE_FRONT_END, "Khronos Glslang Reference Front End")
+  , (GENERATOR_GOOGLE_SHADERC_OVER_GLSLANG, "Google Shaderc over Glslang")
+  , (GENERATOR_GOOGLE_SPIREGG, "Google spiregg")
+  , (GENERATOR_GOOGLE_RSPIRV, "Google rspirv")
+  , (GENERATOR_X_LEGEND_MESA_MESAIR_SPIRV_TRANSLATOR, "X-LEGEND Mesa-IR/SPIR-V Translator")
+  , (GENERATOR_KHRONOS_SPIRV_TOOLS_LINKER, "Khronos SPIR-V Tools Linker")
+  , (GENERATOR_WINE_VKD3D_SHADER_COMPILER, "Wine VKD3D Shader Compiler")
+  , (GENERATOR_CLAY_CLAY_SHADER_COMPILER, "Clay Clay Shader Compiler")
+  ]
diff --git a/lib/Data/SpirV/Reflect/Enums/Result.hs b/lib/Data/SpirV/Reflect/Enums/Result.hs
--- a/lib/Data/SpirV/Reflect/Enums/Result.hs
+++ b/lib/Data/SpirV/Reflect/Enums/Result.hs
@@ -22,4 +22,5 @@
   | ERROR_SPIRV_INVALID_BLOCK_MEMBER_REFERENCE
   | ERROR_SPIRV_INVALID_ENTRY_POINT
   | ERROR_SPIRV_INVALID_EXECUTION_MODE
+  | SPV_REFLECT_RESULT_ERROR_SPIRV_MAX_RECURSIVE_EXCEEDED
   deriving (Eq, Ord, Show, Enum, Bounded)
diff --git a/lib/Data/SpirV/Reflect/Enums/ShaderStage.hs b/lib/Data/SpirV/Reflect/Enums/ShaderStage.hs
--- a/lib/Data/SpirV/Reflect/Enums/ShaderStage.hs
+++ b/lib/Data/SpirV/Reflect/Enums/ShaderStage.hs
@@ -30,8 +30,14 @@
 pattern SHADER_STAGE_TASK_BIT_NV :: ShaderStageFlagBits
 pattern SHADER_STAGE_TASK_BIT_NV = ShaderStageFlagBits 0x00000040
 
+pattern SHADER_STAGE_TASK_BIT_EXT :: ShaderStageFlagBits
+pattern SHADER_STAGE_TASK_BIT_EXT = SHADER_STAGE_TASK_BIT_NV -- = VK_SHADER_STAGE_CALLABLE_BIT_EXT
+
 pattern SHADER_STAGE_MESH_BIT_NV :: ShaderStageFlagBits
 pattern SHADER_STAGE_MESH_BIT_NV = ShaderStageFlagBits 0x00000080
+
+pattern SHADER_STAGE_MESH_BIT_EXT :: ShaderStageFlagBits
+pattern SHADER_STAGE_MESH_BIT_EXT = SHADER_STAGE_MESH_BIT_NV -- = VK_SHADER_STAGE_CALLABLE_BIT_EXT
 
 pattern SHADER_STAGE_RAYGEN_BIT_KHR :: ShaderStageFlagBits
 pattern SHADER_STAGE_RAYGEN_BIT_KHR = ShaderStageFlagBits 0x00000100
diff --git a/lib/Data/SpirV/Reflect/Enums/SpirvBuiltin.hs b/lib/Data/SpirV/Reflect/Enums/SpirvBuiltin.hs
deleted file mode 100644
--- a/lib/Data/SpirV/Reflect/Enums/SpirvBuiltin.hs
+++ /dev/null
@@ -1,375 +0,0 @@
-module Data.SpirV.Reflect.Enums.SpirvBuiltin where
-
-import Data.SpirV.Reflect.Enums.Common
-
-newtype BuiltIn = BuiltIn Int32
-  deriving newtype (Eq, Ord, Show, Enum, Bounded)
-
-pattern BuiltInPosition :: BuiltIn
-pattern BuiltInPosition = BuiltIn 0
-
-pattern BuiltInPointSize :: BuiltIn
-pattern BuiltInPointSize = BuiltIn 1
-
-pattern BuiltInClipDistance :: BuiltIn
-pattern BuiltInClipDistance = BuiltIn 3
-
-pattern BuiltInCullDistance :: BuiltIn
-pattern BuiltInCullDistance = BuiltIn 4
-
-pattern BuiltInVertexId :: BuiltIn
-pattern BuiltInVertexId = BuiltIn 5
-
-pattern BuiltInInstanceId :: BuiltIn
-pattern BuiltInInstanceId = BuiltIn 6
-
-pattern BuiltInPrimitiveId :: BuiltIn
-pattern BuiltInPrimitiveId = BuiltIn 7
-
-pattern BuiltInInvocationId :: BuiltIn
-pattern BuiltInInvocationId = BuiltIn 8
-
-pattern BuiltInLayer :: BuiltIn
-pattern BuiltInLayer = BuiltIn 9
-
-pattern BuiltInViewportIndex :: BuiltIn
-pattern BuiltInViewportIndex = BuiltIn 10
-
-pattern BuiltInTessLevelOuter :: BuiltIn
-pattern BuiltInTessLevelOuter = BuiltIn 11
-
-pattern BuiltInTessLevelInner :: BuiltIn
-pattern BuiltInTessLevelInner = BuiltIn 12
-
-pattern BuiltInTessCoord :: BuiltIn
-pattern BuiltInTessCoord = BuiltIn 13
-
-pattern BuiltInPatchVertices :: BuiltIn
-pattern BuiltInPatchVertices = BuiltIn 14
-
-pattern BuiltInFragCoord :: BuiltIn
-pattern BuiltInFragCoord = BuiltIn 15
-
-pattern BuiltInPointCoord :: BuiltIn
-pattern BuiltInPointCoord = BuiltIn 16
-
-pattern BuiltInFrontFacing :: BuiltIn
-pattern BuiltInFrontFacing = BuiltIn 17
-
-pattern BuiltInSampleId :: BuiltIn
-pattern BuiltInSampleId = BuiltIn 18
-
-pattern BuiltInSamplePosition :: BuiltIn
-pattern BuiltInSamplePosition = BuiltIn 19
-
-pattern BuiltInSampleMask :: BuiltIn
-pattern BuiltInSampleMask = BuiltIn 20
-
-pattern BuiltInFragDepth :: BuiltIn
-pattern BuiltInFragDepth = BuiltIn 22
-
-pattern BuiltInHelperInvocation :: BuiltIn
-pattern BuiltInHelperInvocation = BuiltIn 23
-
-pattern BuiltInNumWorkgroups :: BuiltIn
-pattern BuiltInNumWorkgroups = BuiltIn 24
-
-pattern BuiltInWorkgroupSize :: BuiltIn
-pattern BuiltInWorkgroupSize = BuiltIn 25
-
-pattern BuiltInWorkgroupId :: BuiltIn
-pattern BuiltInWorkgroupId = BuiltIn 26
-
-pattern BuiltInLocalInvocationId :: BuiltIn
-pattern BuiltInLocalInvocationId = BuiltIn 27
-
-pattern BuiltInGlobalInvocationId :: BuiltIn
-pattern BuiltInGlobalInvocationId = BuiltIn 28
-
-pattern BuiltInLocalInvocationIndex :: BuiltIn
-pattern BuiltInLocalInvocationIndex = BuiltIn 29
-
-pattern BuiltInWorkDim :: BuiltIn
-pattern BuiltInWorkDim = BuiltIn 30
-
-pattern BuiltInGlobalSize :: BuiltIn
-pattern BuiltInGlobalSize = BuiltIn 31
-
-pattern BuiltInEnqueuedWorkgroupSize :: BuiltIn
-pattern BuiltInEnqueuedWorkgroupSize = BuiltIn 32
-
-pattern BuiltInGlobalOffset :: BuiltIn
-pattern BuiltInGlobalOffset = BuiltIn 33
-
-pattern BuiltInGlobalLinearId :: BuiltIn
-pattern BuiltInGlobalLinearId = BuiltIn 34
-
-pattern BuiltInSubgroupSize :: BuiltIn
-pattern BuiltInSubgroupSize = BuiltIn 36
-
-pattern BuiltInSubgroupMaxSize :: BuiltIn
-pattern BuiltInSubgroupMaxSize = BuiltIn 37
-
-pattern BuiltInNumSubgroups :: BuiltIn
-pattern BuiltInNumSubgroups = BuiltIn 38
-
-pattern BuiltInNumEnqueuedSubgroups :: BuiltIn
-pattern BuiltInNumEnqueuedSubgroups = BuiltIn 39
-
-pattern BuiltInSubgroupId :: BuiltIn
-pattern BuiltInSubgroupId = BuiltIn 40
-
-pattern BuiltInSubgroupLocalInvocationId :: BuiltIn
-pattern BuiltInSubgroupLocalInvocationId = BuiltIn 41
-
-pattern BuiltInVertexIndex :: BuiltIn
-pattern BuiltInVertexIndex = BuiltIn 42
-
-pattern BuiltInInstanceIndex :: BuiltIn
-pattern BuiltInInstanceIndex = BuiltIn 43
-
-pattern BuiltInSubgroupEqMask :: BuiltIn
-pattern BuiltInSubgroupEqMask = BuiltIn 4416
-
-pattern BuiltInSubgroupEqMaskKHR :: BuiltIn
-pattern BuiltInSubgroupEqMaskKHR = BuiltIn 4416
-
-pattern BuiltInSubgroupGeMask :: BuiltIn
-pattern BuiltInSubgroupGeMask = BuiltIn 4417
-
-pattern BuiltInSubgroupGeMaskKHR :: BuiltIn
-pattern BuiltInSubgroupGeMaskKHR = BuiltIn 4417
-
-pattern BuiltInSubgroupGtMask :: BuiltIn
-pattern BuiltInSubgroupGtMask = BuiltIn 4418
-
-pattern BuiltInSubgroupGtMaskKHR :: BuiltIn
-pattern BuiltInSubgroupGtMaskKHR = BuiltIn 4418
-
-pattern BuiltInSubgroupLeMask :: BuiltIn
-pattern BuiltInSubgroupLeMask = BuiltIn 4419
-
-pattern BuiltInSubgroupLeMaskKHR :: BuiltIn
-pattern BuiltInSubgroupLeMaskKHR = BuiltIn 4419
-
-pattern BuiltInSubgroupLtMask :: BuiltIn
-pattern BuiltInSubgroupLtMask = BuiltIn 4420
-
-pattern BuiltInSubgroupLtMaskKHR :: BuiltIn
-pattern BuiltInSubgroupLtMaskKHR = BuiltIn 4420
-
-pattern BuiltInBaseVertex :: BuiltIn
-pattern BuiltInBaseVertex = BuiltIn 4424
-
-pattern BuiltInBaseInstance :: BuiltIn
-pattern BuiltInBaseInstance = BuiltIn 4425
-
-pattern BuiltInDrawIndex :: BuiltIn
-pattern BuiltInDrawIndex = BuiltIn 4426
-
-pattern BuiltInPrimitiveShadingRateKHR :: BuiltIn
-pattern BuiltInPrimitiveShadingRateKHR = BuiltIn 4432
-
-pattern BuiltInDeviceIndex :: BuiltIn
-pattern BuiltInDeviceIndex = BuiltIn 4438
-
-pattern BuiltInViewIndex :: BuiltIn
-pattern BuiltInViewIndex = BuiltIn 4440
-
-pattern BuiltInShadingRateKHR :: BuiltIn
-pattern BuiltInShadingRateKHR = BuiltIn 4444
-
-pattern BuiltInBaryCoordNoPerspAMD :: BuiltIn
-pattern BuiltInBaryCoordNoPerspAMD = BuiltIn 4992
-
-pattern BuiltInBaryCoordNoPerspCentroidAMD :: BuiltIn
-pattern BuiltInBaryCoordNoPerspCentroidAMD = BuiltIn 4993
-
-pattern BuiltInBaryCoordNoPerspSampleAMD :: BuiltIn
-pattern BuiltInBaryCoordNoPerspSampleAMD = BuiltIn 4994
-
-pattern BuiltInBaryCoordSmoothAMD :: BuiltIn
-pattern BuiltInBaryCoordSmoothAMD = BuiltIn 4995
-
-pattern BuiltInBaryCoordSmoothCentroidAMD :: BuiltIn
-pattern BuiltInBaryCoordSmoothCentroidAMD = BuiltIn 4996
-
-pattern BuiltInBaryCoordSmoothSampleAMD :: BuiltIn
-pattern BuiltInBaryCoordSmoothSampleAMD = BuiltIn 4997
-
-pattern BuiltInBaryCoordPullModelAMD :: BuiltIn
-pattern BuiltInBaryCoordPullModelAMD = BuiltIn 4998
-
-pattern BuiltInFragStencilRefEXT :: BuiltIn
-pattern BuiltInFragStencilRefEXT = BuiltIn 5014
-
-pattern BuiltInViewportMaskNV :: BuiltIn
-pattern BuiltInViewportMaskNV = BuiltIn 5253
-
-pattern BuiltInSecondaryPositionNV :: BuiltIn
-pattern BuiltInSecondaryPositionNV = BuiltIn 5257
-
-pattern BuiltInSecondaryViewportMaskNV :: BuiltIn
-pattern BuiltInSecondaryViewportMaskNV = BuiltIn 5258
-
-pattern BuiltInPositionPerViewNV :: BuiltIn
-pattern BuiltInPositionPerViewNV = BuiltIn 5261
-
-pattern BuiltInViewportMaskPerViewNV :: BuiltIn
-pattern BuiltInViewportMaskPerViewNV = BuiltIn 5262
-
-pattern BuiltInFullyCoveredEXT :: BuiltIn
-pattern BuiltInFullyCoveredEXT = BuiltIn 5264
-
-pattern BuiltInTaskCountNV :: BuiltIn
-pattern BuiltInTaskCountNV = BuiltIn 5274
-
-pattern BuiltInPrimitiveCountNV :: BuiltIn
-pattern BuiltInPrimitiveCountNV = BuiltIn 5275
-
-pattern BuiltInPrimitiveIndicesNV :: BuiltIn
-pattern BuiltInPrimitiveIndicesNV = BuiltIn 5276
-
-pattern BuiltInClipDistancePerViewNV :: BuiltIn
-pattern BuiltInClipDistancePerViewNV = BuiltIn 5277
-
-pattern BuiltInCullDistancePerViewNV :: BuiltIn
-pattern BuiltInCullDistancePerViewNV = BuiltIn 5278
-
-pattern BuiltInLayerPerViewNV :: BuiltIn
-pattern BuiltInLayerPerViewNV = BuiltIn 5279
-
-pattern BuiltInMeshViewCountNV :: BuiltIn
-pattern BuiltInMeshViewCountNV = BuiltIn 5280
-
-pattern BuiltInMeshViewIndicesNV :: BuiltIn
-pattern BuiltInMeshViewIndicesNV = BuiltIn 5281
-
-pattern BuiltInBaryCoordKHR :: BuiltIn
-pattern BuiltInBaryCoordKHR = BuiltIn 5286
-
-pattern BuiltInBaryCoordNV :: BuiltIn
-pattern BuiltInBaryCoordNV = BuiltIn 5286
-
-pattern BuiltInBaryCoordNoPerspKHR :: BuiltIn
-pattern BuiltInBaryCoordNoPerspKHR = BuiltIn 5287
-
-pattern BuiltInBaryCoordNoPerspNV :: BuiltIn
-pattern BuiltInBaryCoordNoPerspNV = BuiltIn 5287
-
-pattern BuiltInFragSizeEXT :: BuiltIn
-pattern BuiltInFragSizeEXT = BuiltIn 5292
-
-pattern BuiltInFragmentSizeNV :: BuiltIn
-pattern BuiltInFragmentSizeNV = BuiltIn 5292
-
-pattern BuiltInFragInvocationCountEXT :: BuiltIn
-pattern BuiltInFragInvocationCountEXT = BuiltIn 5293
-
-pattern BuiltInInvocationsPerPixelNV :: BuiltIn
-pattern BuiltInInvocationsPerPixelNV = BuiltIn 5293
-
-pattern BuiltInLaunchIdKHR :: BuiltIn
-pattern BuiltInLaunchIdKHR = BuiltIn 5319
-
-pattern BuiltInLaunchIdNV :: BuiltIn
-pattern BuiltInLaunchIdNV = BuiltIn 5319
-
-pattern BuiltInLaunchSizeKHR :: BuiltIn
-pattern BuiltInLaunchSizeKHR = BuiltIn 5320
-
-pattern BuiltInLaunchSizeNV :: BuiltIn
-pattern BuiltInLaunchSizeNV = BuiltIn 5320
-
-pattern BuiltInWorldRayOriginKHR :: BuiltIn
-pattern BuiltInWorldRayOriginKHR = BuiltIn 5321
-
-pattern BuiltInWorldRayOriginNV :: BuiltIn
-pattern BuiltInWorldRayOriginNV = BuiltIn 5321
-
-pattern BuiltInWorldRayDirectionKHR :: BuiltIn
-pattern BuiltInWorldRayDirectionKHR = BuiltIn 5322
-
-pattern BuiltInWorldRayDirectionNV :: BuiltIn
-pattern BuiltInWorldRayDirectionNV = BuiltIn 5322
-
-pattern BuiltInObjectRayOriginKHR :: BuiltIn
-pattern BuiltInObjectRayOriginKHR = BuiltIn 5323
-
-pattern BuiltInObjectRayOriginNV :: BuiltIn
-pattern BuiltInObjectRayOriginNV = BuiltIn 5323
-
-pattern BuiltInObjectRayDirectionKHR :: BuiltIn
-pattern BuiltInObjectRayDirectionKHR = BuiltIn 5324
-
-pattern BuiltInObjectRayDirectionNV :: BuiltIn
-pattern BuiltInObjectRayDirectionNV = BuiltIn 5324
-
-pattern BuiltInRayTminKHR :: BuiltIn
-pattern BuiltInRayTminKHR = BuiltIn 5325
-
-pattern BuiltInRayTminNV :: BuiltIn
-pattern BuiltInRayTminNV = BuiltIn 5325
-
-pattern BuiltInRayTmaxKHR :: BuiltIn
-pattern BuiltInRayTmaxKHR = BuiltIn 5326
-
-pattern BuiltInRayTmaxNV :: BuiltIn
-pattern BuiltInRayTmaxNV = BuiltIn 5326
-
-pattern BuiltInInstanceCustomIndexKHR :: BuiltIn
-pattern BuiltInInstanceCustomIndexKHR = BuiltIn 5327
-
-pattern BuiltInInstanceCustomIndexNV :: BuiltIn
-pattern BuiltInInstanceCustomIndexNV = BuiltIn 5327
-
-pattern BuiltInObjectToWorldKHR :: BuiltIn
-pattern BuiltInObjectToWorldKHR = BuiltIn 5330
-
-pattern BuiltInObjectToWorldNV :: BuiltIn
-pattern BuiltInObjectToWorldNV = BuiltIn 5330
-
-pattern BuiltInWorldToObjectKHR :: BuiltIn
-pattern BuiltInWorldToObjectKHR = BuiltIn 5331
-
-pattern BuiltInWorldToObjectNV :: BuiltIn
-pattern BuiltInWorldToObjectNV = BuiltIn 5331
-
-pattern BuiltInHitTNV :: BuiltIn
-pattern BuiltInHitTNV = BuiltIn 5332
-
-pattern BuiltInHitKindKHR :: BuiltIn
-pattern BuiltInHitKindKHR = BuiltIn 5333
-
-pattern BuiltInHitKindNV :: BuiltIn
-pattern BuiltInHitKindNV = BuiltIn 5333
-
-pattern BuiltInCurrentRayTimeNV :: BuiltIn
-pattern BuiltInCurrentRayTimeNV = BuiltIn 5334
-
-pattern BuiltInIncomingRayFlagsKHR :: BuiltIn
-pattern BuiltInIncomingRayFlagsKHR = BuiltIn 5351
-
-pattern BuiltInIncomingRayFlagsNV :: BuiltIn
-pattern BuiltInIncomingRayFlagsNV = BuiltIn 5351
-
-pattern BuiltInRayGeometryIndexKHR :: BuiltIn
-pattern BuiltInRayGeometryIndexKHR = BuiltIn 5352
-
-pattern BuiltInWarpsPerSMNV :: BuiltIn
-pattern BuiltInWarpsPerSMNV = BuiltIn 5374
-
-pattern BuiltInSMCountNV :: BuiltIn
-pattern BuiltInSMCountNV = BuiltIn 5375
-
-pattern BuiltInWarpIDNV :: BuiltIn
-pattern BuiltInWarpIDNV = BuiltIn 5376
-
-pattern BuiltInSMIDNV :: BuiltIn
-pattern BuiltInSMIDNV = BuiltIn 5377
-
-pattern BuiltInCullMaskKHR :: BuiltIn
-pattern BuiltInCullMaskKHR = BuiltIn 6021
-
-pattern BuiltInMax :: BuiltIn
-pattern BuiltInMax = BuiltIn 0x7fffffff
diff --git a/lib/Data/SpirV/Reflect/Enums/SpirvDim.hs b/lib/Data/SpirV/Reflect/Enums/SpirvDim.hs
deleted file mode 100644
--- a/lib/Data/SpirV/Reflect/Enums/SpirvDim.hs
+++ /dev/null
@@ -1,30 +0,0 @@
-module Data.SpirV.Reflect.Enums.SpirvDim where
-
-import Data.SpirV.Reflect.Enums.Common
-
-newtype Dim = Dim Int32
-  deriving newtype (Eq, Ord, Show, Enum, Bounded)
-
-pattern Dim1D :: Dim
-pattern Dim1D = Dim 0
-
-pattern Dim2D :: Dim
-pattern Dim2D = Dim 1
-
-pattern Dim3D :: Dim
-pattern Dim3D = Dim 2
-
-pattern DimCube :: Dim
-pattern DimCube = Dim 3
-
-pattern DimRect :: Dim
-pattern DimRect = Dim 4
-
-pattern DimBuffer :: Dim
-pattern DimBuffer = Dim 5
-
-pattern DimSubpassData :: Dim
-pattern DimSubpassData = Dim 6
-
-pattern DimMax :: Dim
-pattern DimMax = Dim 0x7fffffff
diff --git a/lib/Data/SpirV/Reflect/Enums/SpirvImageFormat.hs b/lib/Data/SpirV/Reflect/Enums/SpirvImageFormat.hs
deleted file mode 100644
--- a/lib/Data/SpirV/Reflect/Enums/SpirvImageFormat.hs
+++ /dev/null
@@ -1,135 +0,0 @@
-module Data.SpirV.Reflect.Enums.SpirvImageFormat where
-
-import Data.SpirV.Reflect.Enums.Common
-
-newtype ImageFormat = ImageFormat Int32
-  deriving newtype (Eq, Ord, Show, Enum, Bounded)
-
-pattern ImageFormatUnknown :: ImageFormat
-pattern ImageFormatUnknown = ImageFormat 0
-
-pattern ImageFormatRgba32f :: ImageFormat
-pattern ImageFormatRgba32f = ImageFormat 1
-
-pattern ImageFormatRgba16f :: ImageFormat
-pattern ImageFormatRgba16f = ImageFormat 2
-
-pattern ImageFormatR32f :: ImageFormat
-pattern ImageFormatR32f = ImageFormat 3
-
-pattern ImageFormatRgba8 :: ImageFormat
-pattern ImageFormatRgba8 = ImageFormat 4
-
-pattern ImageFormatRgba8Snorm :: ImageFormat
-pattern ImageFormatRgba8Snorm = ImageFormat 5
-
-pattern ImageFormatRg32f :: ImageFormat
-pattern ImageFormatRg32f = ImageFormat 6
-
-pattern ImageFormatRg16f :: ImageFormat
-pattern ImageFormatRg16f = ImageFormat 7
-
-pattern ImageFormatR11fG11fB10f :: ImageFormat
-pattern ImageFormatR11fG11fB10f = ImageFormat 8
-
-pattern ImageFormatR16f :: ImageFormat
-pattern ImageFormatR16f = ImageFormat 9
-
-pattern ImageFormatRgba16 :: ImageFormat
-pattern ImageFormatRgba16 = ImageFormat 10
-
-pattern ImageFormatRgb10A2 :: ImageFormat
-pattern ImageFormatRgb10A2 = ImageFormat 11
-
-pattern ImageFormatRg16 :: ImageFormat
-pattern ImageFormatRg16 = ImageFormat 12
-
-pattern ImageFormatRg8 :: ImageFormat
-pattern ImageFormatRg8 = ImageFormat 13
-
-pattern ImageFormatR16 :: ImageFormat
-pattern ImageFormatR16 = ImageFormat 14
-
-pattern ImageFormatR8 :: ImageFormat
-pattern ImageFormatR8 = ImageFormat 15
-
-pattern ImageFormatRgba16Snorm :: ImageFormat
-pattern ImageFormatRgba16Snorm = ImageFormat 16
-
-pattern ImageFormatRg16Snorm :: ImageFormat
-pattern ImageFormatRg16Snorm = ImageFormat 17
-
-pattern ImageFormatRg8Snorm :: ImageFormat
-pattern ImageFormatRg8Snorm = ImageFormat 18
-
-pattern ImageFormatR16Snorm :: ImageFormat
-pattern ImageFormatR16Snorm = ImageFormat 19
-
-pattern ImageFormatR8Snorm :: ImageFormat
-pattern ImageFormatR8Snorm = ImageFormat 20
-
-pattern ImageFormatRgba32i :: ImageFormat
-pattern ImageFormatRgba32i = ImageFormat 21
-
-pattern ImageFormatRgba16i :: ImageFormat
-pattern ImageFormatRgba16i = ImageFormat 22
-
-pattern ImageFormatRgba8i :: ImageFormat
-pattern ImageFormatRgba8i = ImageFormat 23
-
-pattern ImageFormatR32i :: ImageFormat
-pattern ImageFormatR32i = ImageFormat 24
-
-pattern ImageFormatRg32i :: ImageFormat
-pattern ImageFormatRg32i = ImageFormat 25
-
-pattern ImageFormatRg16i :: ImageFormat
-pattern ImageFormatRg16i = ImageFormat 26
-
-pattern ImageFormatRg8i :: ImageFormat
-pattern ImageFormatRg8i = ImageFormat 27
-
-pattern ImageFormatR16i :: ImageFormat
-pattern ImageFormatR16i = ImageFormat 28
-
-pattern ImageFormatR8i :: ImageFormat
-pattern ImageFormatR8i = ImageFormat 29
-
-pattern ImageFormatRgba32ui :: ImageFormat
-pattern ImageFormatRgba32ui = ImageFormat 30
-
-pattern ImageFormatRgba16ui :: ImageFormat
-pattern ImageFormatRgba16ui = ImageFormat 31
-
-pattern ImageFormatRgba8ui :: ImageFormat
-pattern ImageFormatRgba8ui = ImageFormat 32
-
-pattern ImageFormatR32ui :: ImageFormat
-pattern ImageFormatR32ui = ImageFormat 33
-
-pattern ImageFormatRgb10a2ui :: ImageFormat
-pattern ImageFormatRgb10a2ui = ImageFormat 34
-
-pattern ImageFormatRg32ui :: ImageFormat
-pattern ImageFormatRg32ui = ImageFormat 35
-
-pattern ImageFormatRg16ui :: ImageFormat
-pattern ImageFormatRg16ui = ImageFormat 36
-
-pattern ImageFormatRg8ui :: ImageFormat
-pattern ImageFormatRg8ui = ImageFormat 37
-
-pattern ImageFormatR16ui :: ImageFormat
-pattern ImageFormatR16ui = ImageFormat 38
-
-pattern ImageFormatR8ui :: ImageFormat
-pattern ImageFormatR8ui = ImageFormat 39
-
-pattern ImageFormatR64ui :: ImageFormat
-pattern ImageFormatR64ui = ImageFormat 40
-
-pattern ImageFormatR64i :: ImageFormat
-pattern ImageFormatR64i = ImageFormat 41
-
-pattern ImageFormatMax :: ImageFormat
-pattern ImageFormatMax = ImageFormat 0x7fffffff
diff --git a/lib/Data/SpirV/Reflect/Enums/SpirvOp.hs b/lib/Data/SpirV/Reflect/Enums/SpirvOp.hs
deleted file mode 100644
--- a/lib/Data/SpirV/Reflect/Enums/SpirvOp.hs
+++ /dev/null
@@ -1,2013 +0,0 @@
-module Data.SpirV.Reflect.Enums.SpirvOp where
-
-import Data.SpirV.Reflect.Enums.Common
-
-newtype Op = Op Int32
-  deriving newtype (Eq, Ord, Show, Enum, Bounded)
-
-pattern OpNop :: Op
-pattern OpNop = Op 0
-
-pattern OpUndef :: Op
-pattern OpUndef = Op 1
-
-pattern OpSourceContinued :: Op
-pattern OpSourceContinued = Op 2
-
-pattern OpSource :: Op
-pattern OpSource = Op 3
-
-pattern OpSourceExtension :: Op
-pattern OpSourceExtension = Op 4
-
-pattern OpName :: Op
-pattern OpName = Op 5
-
-pattern OpMemberName :: Op
-pattern OpMemberName = Op 6
-
-pattern OpString :: Op
-pattern OpString = Op 7
-
-pattern OpLine :: Op
-pattern OpLine = Op 8
-
-pattern OpExtension :: Op
-pattern OpExtension = Op 10
-
-pattern OpExtInstImport :: Op
-pattern OpExtInstImport = Op 11
-
-pattern OpExtInst :: Op
-pattern OpExtInst = Op 12
-
-pattern OpMemoryModel :: Op
-pattern OpMemoryModel = Op 14
-
-pattern OpEntryPoint :: Op
-pattern OpEntryPoint = Op 15
-
-pattern OpExecutionMode :: Op
-pattern OpExecutionMode = Op 16
-
-pattern OpCapability :: Op
-pattern OpCapability = Op 17
-
-pattern OpTypeVoid :: Op
-pattern OpTypeVoid = Op 19
-
-pattern OpTypeBool :: Op
-pattern OpTypeBool = Op 20
-
-pattern OpTypeInt :: Op
-pattern OpTypeInt = Op 21
-
-pattern OpTypeFloat :: Op
-pattern OpTypeFloat = Op 22
-
-pattern OpTypeVector :: Op
-pattern OpTypeVector = Op 23
-
-pattern OpTypeMatrix :: Op
-pattern OpTypeMatrix = Op 24
-
-pattern OpTypeImage :: Op
-pattern OpTypeImage = Op 25
-
-pattern OpTypeSampler :: Op
-pattern OpTypeSampler = Op 26
-
-pattern OpTypeSampledImage :: Op
-pattern OpTypeSampledImage = Op 27
-
-pattern OpTypeArray :: Op
-pattern OpTypeArray = Op 28
-
-pattern OpTypeRuntimeArray :: Op
-pattern OpTypeRuntimeArray = Op 29
-
-pattern OpTypeStruct :: Op
-pattern OpTypeStruct = Op 30
-
-pattern OpTypeOpaque :: Op
-pattern OpTypeOpaque = Op 31
-
-pattern OpTypePointer :: Op
-pattern OpTypePointer = Op 32
-
-pattern OpTypeFunction :: Op
-pattern OpTypeFunction = Op 33
-
-pattern OpTypeEvent :: Op
-pattern OpTypeEvent = Op 34
-
-pattern OpTypeDeviceEvent :: Op
-pattern OpTypeDeviceEvent = Op 35
-
-pattern OpTypeReserveId :: Op
-pattern OpTypeReserveId = Op 36
-
-pattern OpTypeQueue :: Op
-pattern OpTypeQueue = Op 37
-
-pattern OpTypePipe :: Op
-pattern OpTypePipe = Op 38
-
-pattern OpTypeForwardPointer :: Op
-pattern OpTypeForwardPointer = Op 39
-
-pattern OpConstantTrue :: Op
-pattern OpConstantTrue = Op 41
-
-pattern OpConstantFalse :: Op
-pattern OpConstantFalse = Op 42
-
-pattern OpConstant :: Op
-pattern OpConstant = Op 43
-
-pattern OpConstantComposite :: Op
-pattern OpConstantComposite = Op 44
-
-pattern OpConstantSampler :: Op
-pattern OpConstantSampler = Op 45
-
-pattern OpConstantNull :: Op
-pattern OpConstantNull = Op 46
-
-pattern OpSpecConstantTrue :: Op
-pattern OpSpecConstantTrue = Op 48
-
-pattern OpSpecConstantFalse :: Op
-pattern OpSpecConstantFalse = Op 49
-
-pattern OpSpecConstant :: Op
-pattern OpSpecConstant = Op 50
-
-pattern OpSpecConstantComposite :: Op
-pattern OpSpecConstantComposite = Op 51
-
-pattern OpSpecConstantOp :: Op
-pattern OpSpecConstantOp = Op 52
-
-pattern OpFunction :: Op
-pattern OpFunction = Op 54
-
-pattern OpFunctionParameter :: Op
-pattern OpFunctionParameter = Op 55
-
-pattern OpFunctionEnd :: Op
-pattern OpFunctionEnd = Op 56
-
-pattern OpFunctionCall :: Op
-pattern OpFunctionCall = Op 57
-
-pattern OpVariable :: Op
-pattern OpVariable = Op 59
-
-pattern OpImageTexelPointer :: Op
-pattern OpImageTexelPointer = Op 60
-
-pattern OpLoad :: Op
-pattern OpLoad = Op 61
-
-pattern OpStore :: Op
-pattern OpStore = Op 62
-
-pattern OpCopyMemory :: Op
-pattern OpCopyMemory = Op 63
-
-pattern OpCopyMemorySized :: Op
-pattern OpCopyMemorySized = Op 64
-
-pattern OpAccessChain :: Op
-pattern OpAccessChain = Op 65
-
-pattern OpInBoundsAccessChain :: Op
-pattern OpInBoundsAccessChain = Op 66
-
-pattern OpPtrAccessChain :: Op
-pattern OpPtrAccessChain = Op 67
-
-pattern OpArrayLength :: Op
-pattern OpArrayLength = Op 68
-
-pattern OpGenericPtrMemSemantics :: Op
-pattern OpGenericPtrMemSemantics = Op 69
-
-pattern OpInBoundsPtrAccessChain :: Op
-pattern OpInBoundsPtrAccessChain = Op 70
-
-pattern OpDecorate :: Op
-pattern OpDecorate = Op 71
-
-pattern OpMemberDecorate :: Op
-pattern OpMemberDecorate = Op 72
-
-pattern OpDecorationGroup :: Op
-pattern OpDecorationGroup = Op 73
-
-pattern OpGroupDecorate :: Op
-pattern OpGroupDecorate = Op 74
-
-pattern OpGroupMemberDecorate :: Op
-pattern OpGroupMemberDecorate = Op 75
-
-pattern OpVectorExtractDynamic :: Op
-pattern OpVectorExtractDynamic = Op 77
-
-pattern OpVectorInsertDynamic :: Op
-pattern OpVectorInsertDynamic = Op 78
-
-pattern OpVectorShuffle :: Op
-pattern OpVectorShuffle = Op 79
-
-pattern OpCompositeConstruct :: Op
-pattern OpCompositeConstruct = Op 80
-
-pattern OpCompositeExtract :: Op
-pattern OpCompositeExtract = Op 81
-
-pattern OpCompositeInsert :: Op
-pattern OpCompositeInsert = Op 82
-
-pattern OpCopyObject :: Op
-pattern OpCopyObject = Op 83
-
-pattern OpTranspose :: Op
-pattern OpTranspose = Op 84
-
-pattern OpSampledImage :: Op
-pattern OpSampledImage = Op 86
-
-pattern OpImageSampleImplicitLod :: Op
-pattern OpImageSampleImplicitLod = Op 87
-
-pattern OpImageSampleExplicitLod :: Op
-pattern OpImageSampleExplicitLod = Op 88
-
-pattern OpImageSampleDrefImplicitLod :: Op
-pattern OpImageSampleDrefImplicitLod = Op 89
-
-pattern OpImageSampleDrefExplicitLod :: Op
-pattern OpImageSampleDrefExplicitLod = Op 90
-
-pattern OpImageSampleProjImplicitLod :: Op
-pattern OpImageSampleProjImplicitLod = Op 91
-
-pattern OpImageSampleProjExplicitLod :: Op
-pattern OpImageSampleProjExplicitLod = Op 92
-
-pattern OpImageSampleProjDrefImplicitLod :: Op
-pattern OpImageSampleProjDrefImplicitLod = Op 93
-
-pattern OpImageSampleProjDrefExplicitLod :: Op
-pattern OpImageSampleProjDrefExplicitLod = Op 94
-
-pattern OpImageFetch :: Op
-pattern OpImageFetch = Op 95
-
-pattern OpImageGather :: Op
-pattern OpImageGather = Op 96
-
-pattern OpImageDrefGather :: Op
-pattern OpImageDrefGather = Op 97
-
-pattern OpImageRead :: Op
-pattern OpImageRead = Op 98
-
-pattern OpImageWrite :: Op
-pattern OpImageWrite = Op 99
-
-pattern OpImage :: Op
-pattern OpImage = Op 100
-
-pattern OpImageQueryFormat :: Op
-pattern OpImageQueryFormat = Op 101
-
-pattern OpImageQueryOrder :: Op
-pattern OpImageQueryOrder = Op 102
-
-pattern OpImageQuerySizeLod :: Op
-pattern OpImageQuerySizeLod = Op 103
-
-pattern OpImageQuerySize :: Op
-pattern OpImageQuerySize = Op 104
-
-pattern OpImageQueryLod :: Op
-pattern OpImageQueryLod = Op 105
-
-pattern OpImageQueryLevels :: Op
-pattern OpImageQueryLevels = Op 106
-
-pattern OpImageQuerySamples :: Op
-pattern OpImageQuerySamples = Op 107
-
-pattern OpConvertFToU :: Op
-pattern OpConvertFToU = Op 109
-
-pattern OpConvertFToS :: Op
-pattern OpConvertFToS = Op 110
-
-pattern OpConvertSToF :: Op
-pattern OpConvertSToF = Op 111
-
-pattern OpConvertUToF :: Op
-pattern OpConvertUToF = Op 112
-
-pattern OpUConvert :: Op
-pattern OpUConvert = Op 113
-
-pattern OpSConvert :: Op
-pattern OpSConvert = Op 114
-
-pattern OpFConvert :: Op
-pattern OpFConvert = Op 115
-
-pattern OpQuantizeToF16 :: Op
-pattern OpQuantizeToF16 = Op 116
-
-pattern OpConvertPtrToU :: Op
-pattern OpConvertPtrToU = Op 117
-
-pattern OpSatConvertSToU :: Op
-pattern OpSatConvertSToU = Op 118
-
-pattern OpSatConvertUToS :: Op
-pattern OpSatConvertUToS = Op 119
-
-pattern OpConvertUToPtr :: Op
-pattern OpConvertUToPtr = Op 120
-
-pattern OpPtrCastToGeneric :: Op
-pattern OpPtrCastToGeneric = Op 121
-
-pattern OpGenericCastToPtr :: Op
-pattern OpGenericCastToPtr = Op 122
-
-pattern OpGenericCastToPtrExplicit :: Op
-pattern OpGenericCastToPtrExplicit = Op 123
-
-pattern OpBitcast :: Op
-pattern OpBitcast = Op 124
-
-pattern OpSNegate :: Op
-pattern OpSNegate = Op 126
-
-pattern OpFNegate :: Op
-pattern OpFNegate = Op 127
-
-pattern OpIAdd :: Op
-pattern OpIAdd = Op 128
-
-pattern OpFAdd :: Op
-pattern OpFAdd = Op 129
-
-pattern OpISub :: Op
-pattern OpISub = Op 130
-
-pattern OpFSub :: Op
-pattern OpFSub = Op 131
-
-pattern OpIMul :: Op
-pattern OpIMul = Op 132
-
-pattern OpFMul :: Op
-pattern OpFMul = Op 133
-
-pattern OpUDiv :: Op
-pattern OpUDiv = Op 134
-
-pattern OpSDiv :: Op
-pattern OpSDiv = Op 135
-
-pattern OpFDiv :: Op
-pattern OpFDiv = Op 136
-
-pattern OpUMod :: Op
-pattern OpUMod = Op 137
-
-pattern OpSRem :: Op
-pattern OpSRem = Op 138
-
-pattern OpSMod :: Op
-pattern OpSMod = Op 139
-
-pattern OpFRem :: Op
-pattern OpFRem = Op 140
-
-pattern OpFMod :: Op
-pattern OpFMod = Op 141
-
-pattern OpVectorTimesScalar :: Op
-pattern OpVectorTimesScalar = Op 142
-
-pattern OpMatrixTimesScalar :: Op
-pattern OpMatrixTimesScalar = Op 143
-
-pattern OpVectorTimesMatrix :: Op
-pattern OpVectorTimesMatrix = Op 144
-
-pattern OpMatrixTimesVector :: Op
-pattern OpMatrixTimesVector = Op 145
-
-pattern OpMatrixTimesMatrix :: Op
-pattern OpMatrixTimesMatrix = Op 146
-
-pattern OpOuterProduct :: Op
-pattern OpOuterProduct = Op 147
-
-pattern OpDot :: Op
-pattern OpDot = Op 148
-
-pattern OpIAddCarry :: Op
-pattern OpIAddCarry = Op 149
-
-pattern OpISubBorrow :: Op
-pattern OpISubBorrow = Op 150
-
-pattern OpUMulExtended :: Op
-pattern OpUMulExtended = Op 151
-
-pattern OpSMulExtended :: Op
-pattern OpSMulExtended = Op 152
-
-pattern OpAny :: Op
-pattern OpAny = Op 154
-
-pattern OpAll :: Op
-pattern OpAll = Op 155
-
-pattern OpIsNan :: Op
-pattern OpIsNan = Op 156
-
-pattern OpIsInf :: Op
-pattern OpIsInf = Op 157
-
-pattern OpIsFinite :: Op
-pattern OpIsFinite = Op 158
-
-pattern OpIsNormal :: Op
-pattern OpIsNormal = Op 159
-
-pattern OpSignBitSet :: Op
-pattern OpSignBitSet = Op 160
-
-pattern OpLessOrGreater :: Op
-pattern OpLessOrGreater = Op 161
-
-pattern OpOrdered :: Op
-pattern OpOrdered = Op 162
-
-pattern OpUnordered :: Op
-pattern OpUnordered = Op 163
-
-pattern OpLogicalEqual :: Op
-pattern OpLogicalEqual = Op 164
-
-pattern OpLogicalNotEqual :: Op
-pattern OpLogicalNotEqual = Op 165
-
-pattern OpLogicalOr :: Op
-pattern OpLogicalOr = Op 166
-
-pattern OpLogicalAnd :: Op
-pattern OpLogicalAnd = Op 167
-
-pattern OpLogicalNot :: Op
-pattern OpLogicalNot = Op 168
-
-pattern OpSelect :: Op
-pattern OpSelect = Op 169
-
-pattern OpIEqual :: Op
-pattern OpIEqual = Op 170
-
-pattern OpINotEqual :: Op
-pattern OpINotEqual = Op 171
-
-pattern OpUGreaterThan :: Op
-pattern OpUGreaterThan = Op 172
-
-pattern OpSGreaterThan :: Op
-pattern OpSGreaterThan = Op 173
-
-pattern OpUGreaterThanEqual :: Op
-pattern OpUGreaterThanEqual = Op 174
-
-pattern OpSGreaterThanEqual :: Op
-pattern OpSGreaterThanEqual = Op 175
-
-pattern OpULessThan :: Op
-pattern OpULessThan = Op 176
-
-pattern OpSLessThan :: Op
-pattern OpSLessThan = Op 177
-
-pattern OpULessThanEqual :: Op
-pattern OpULessThanEqual = Op 178
-
-pattern OpSLessThanEqual :: Op
-pattern OpSLessThanEqual = Op 179
-
-pattern OpFOrdEqual :: Op
-pattern OpFOrdEqual = Op 180
-
-pattern OpFUnordEqual :: Op
-pattern OpFUnordEqual = Op 181
-
-pattern OpFOrdNotEqual :: Op
-pattern OpFOrdNotEqual = Op 182
-
-pattern OpFUnordNotEqual :: Op
-pattern OpFUnordNotEqual = Op 183
-
-pattern OpFOrdLessThan :: Op
-pattern OpFOrdLessThan = Op 184
-
-pattern OpFUnordLessThan :: Op
-pattern OpFUnordLessThan = Op 185
-
-pattern OpFOrdGreaterThan :: Op
-pattern OpFOrdGreaterThan = Op 186
-
-pattern OpFUnordGreaterThan :: Op
-pattern OpFUnordGreaterThan = Op 187
-
-pattern OpFOrdLessThanEqual :: Op
-pattern OpFOrdLessThanEqual = Op 188
-
-pattern OpFUnordLessThanEqual :: Op
-pattern OpFUnordLessThanEqual = Op 189
-
-pattern OpFOrdGreaterThanEqual :: Op
-pattern OpFOrdGreaterThanEqual = Op 190
-
-pattern OpFUnordGreaterThanEqual :: Op
-pattern OpFUnordGreaterThanEqual = Op 191
-
-pattern OpShiftRightLogical :: Op
-pattern OpShiftRightLogical = Op 194
-
-pattern OpShiftRightArithmetic :: Op
-pattern OpShiftRightArithmetic = Op 195
-
-pattern OpShiftLeftLogical :: Op
-pattern OpShiftLeftLogical = Op 196
-
-pattern OpBitwiseOr :: Op
-pattern OpBitwiseOr = Op 197
-
-pattern OpBitwiseXor :: Op
-pattern OpBitwiseXor = Op 198
-
-pattern OpBitwiseAnd :: Op
-pattern OpBitwiseAnd = Op 199
-
-pattern OpNot :: Op
-pattern OpNot = Op 200
-
-pattern OpBitFieldInsert :: Op
-pattern OpBitFieldInsert = Op 201
-
-pattern OpBitFieldSExtract :: Op
-pattern OpBitFieldSExtract = Op 202
-
-pattern OpBitFieldUExtract :: Op
-pattern OpBitFieldUExtract = Op 203
-
-pattern OpBitReverse :: Op
-pattern OpBitReverse = Op 204
-
-pattern OpBitCount :: Op
-pattern OpBitCount = Op 205
-
-pattern OpDPdx :: Op
-pattern OpDPdx = Op 207
-
-pattern OpDPdy :: Op
-pattern OpDPdy = Op 208
-
-pattern OpFwidth :: Op
-pattern OpFwidth = Op 209
-
-pattern OpDPdxFine :: Op
-pattern OpDPdxFine = Op 210
-
-pattern OpDPdyFine :: Op
-pattern OpDPdyFine = Op 211
-
-pattern OpFwidthFine :: Op
-pattern OpFwidthFine = Op 212
-
-pattern OpDPdxCoarse :: Op
-pattern OpDPdxCoarse = Op 213
-
-pattern OpDPdyCoarse :: Op
-pattern OpDPdyCoarse = Op 214
-
-pattern OpFwidthCoarse :: Op
-pattern OpFwidthCoarse = Op 215
-
-pattern OpEmitVertex :: Op
-pattern OpEmitVertex = Op 218
-
-pattern OpEndPrimitive :: Op
-pattern OpEndPrimitive = Op 219
-
-pattern OpEmitStreamVertex :: Op
-pattern OpEmitStreamVertex = Op 220
-
-pattern OpEndStreamPrimitive :: Op
-pattern OpEndStreamPrimitive = Op 221
-
-pattern OpControlBarrier :: Op
-pattern OpControlBarrier = Op 224
-
-pattern OpMemoryBarrier :: Op
-pattern OpMemoryBarrier = Op 225
-
-pattern OpAtomicLoad :: Op
-pattern OpAtomicLoad = Op 227
-
-pattern OpAtomicStore :: Op
-pattern OpAtomicStore = Op 228
-
-pattern OpAtomicExchange :: Op
-pattern OpAtomicExchange = Op 229
-
-pattern OpAtomicCompareExchange :: Op
-pattern OpAtomicCompareExchange = Op 230
-
-pattern OpAtomicCompareExchangeWeak :: Op
-pattern OpAtomicCompareExchangeWeak = Op 231
-
-pattern OpAtomicIIncrement :: Op
-pattern OpAtomicIIncrement = Op 232
-
-pattern OpAtomicIDecrement :: Op
-pattern OpAtomicIDecrement = Op 233
-
-pattern OpAtomicIAdd :: Op
-pattern OpAtomicIAdd = Op 234
-
-pattern OpAtomicISub :: Op
-pattern OpAtomicISub = Op 235
-
-pattern OpAtomicSMin :: Op
-pattern OpAtomicSMin = Op 236
-
-pattern OpAtomicUMin :: Op
-pattern OpAtomicUMin = Op 237
-
-pattern OpAtomicSMax :: Op
-pattern OpAtomicSMax = Op 238
-
-pattern OpAtomicUMax :: Op
-pattern OpAtomicUMax = Op 239
-
-pattern OpAtomicAnd :: Op
-pattern OpAtomicAnd = Op 240
-
-pattern OpAtomicOr :: Op
-pattern OpAtomicOr = Op 241
-
-pattern OpAtomicXor :: Op
-pattern OpAtomicXor = Op 242
-
-pattern OpPhi :: Op
-pattern OpPhi = Op 245
-
-pattern OpLoopMerge :: Op
-pattern OpLoopMerge = Op 246
-
-pattern OpSelectionMerge :: Op
-pattern OpSelectionMerge = Op 247
-
-pattern OpLabel :: Op
-pattern OpLabel = Op 248
-
-pattern OpBranch :: Op
-pattern OpBranch = Op 249
-
-pattern OpBranchConditional :: Op
-pattern OpBranchConditional = Op 250
-
-pattern OpSwitch :: Op
-pattern OpSwitch = Op 251
-
-pattern OpKill :: Op
-pattern OpKill = Op 252
-
-pattern OpReturn :: Op
-pattern OpReturn = Op 253
-
-pattern OpReturnValue :: Op
-pattern OpReturnValue = Op 254
-
-pattern OpUnreachable :: Op
-pattern OpUnreachable = Op 255
-
-pattern OpLifetimeStart :: Op
-pattern OpLifetimeStart = Op 256
-
-pattern OpLifetimeStop :: Op
-pattern OpLifetimeStop = Op 257
-
-pattern OpGroupAsyncCopy :: Op
-pattern OpGroupAsyncCopy = Op 259
-
-pattern OpGroupWaitEvents :: Op
-pattern OpGroupWaitEvents = Op 260
-
-pattern OpGroupAll :: Op
-pattern OpGroupAll = Op 261
-
-pattern OpGroupAny :: Op
-pattern OpGroupAny = Op 262
-
-pattern OpGroupBroadcast :: Op
-pattern OpGroupBroadcast = Op 263
-
-pattern OpGroupIAdd :: Op
-pattern OpGroupIAdd = Op 264
-
-pattern OpGroupFAdd :: Op
-pattern OpGroupFAdd = Op 265
-
-pattern OpGroupFMin :: Op
-pattern OpGroupFMin = Op 266
-
-pattern OpGroupUMin :: Op
-pattern OpGroupUMin = Op 267
-
-pattern OpGroupSMin :: Op
-pattern OpGroupSMin = Op 268
-
-pattern OpGroupFMax :: Op
-pattern OpGroupFMax = Op 269
-
-pattern OpGroupUMax :: Op
-pattern OpGroupUMax = Op 270
-
-pattern OpGroupSMax :: Op
-pattern OpGroupSMax = Op 271
-
-pattern OpReadPipe :: Op
-pattern OpReadPipe = Op 274
-
-pattern OpWritePipe :: Op
-pattern OpWritePipe = Op 275
-
-pattern OpReservedReadPipe :: Op
-pattern OpReservedReadPipe = Op 276
-
-pattern OpReservedWritePipe :: Op
-pattern OpReservedWritePipe = Op 277
-
-pattern OpReserveReadPipePackets :: Op
-pattern OpReserveReadPipePackets = Op 278
-
-pattern OpReserveWritePipePackets :: Op
-pattern OpReserveWritePipePackets = Op 279
-
-pattern OpCommitReadPipe :: Op
-pattern OpCommitReadPipe = Op 280
-
-pattern OpCommitWritePipe :: Op
-pattern OpCommitWritePipe = Op 281
-
-pattern OpIsValidReserveId :: Op
-pattern OpIsValidReserveId = Op 282
-
-pattern OpGetNumPipePackets :: Op
-pattern OpGetNumPipePackets = Op 283
-
-pattern OpGetMaxPipePackets :: Op
-pattern OpGetMaxPipePackets = Op 284
-
-pattern OpGroupReserveReadPipePackets :: Op
-pattern OpGroupReserveReadPipePackets = Op 285
-
-pattern OpGroupReserveWritePipePackets :: Op
-pattern OpGroupReserveWritePipePackets = Op 286
-
-pattern OpGroupCommitReadPipe :: Op
-pattern OpGroupCommitReadPipe = Op 287
-
-pattern OpGroupCommitWritePipe :: Op
-pattern OpGroupCommitWritePipe = Op 288
-
-pattern OpEnqueueMarker :: Op
-pattern OpEnqueueMarker = Op 291
-
-pattern OpEnqueueKernel :: Op
-pattern OpEnqueueKernel = Op 292
-
-pattern OpGetKernelNDrangeSubGroupCount :: Op
-pattern OpGetKernelNDrangeSubGroupCount = Op 293
-
-pattern OpGetKernelNDrangeMaxSubGroupSize :: Op
-pattern OpGetKernelNDrangeMaxSubGroupSize = Op 294
-
-pattern OpGetKernelWorkGroupSize :: Op
-pattern OpGetKernelWorkGroupSize = Op 295
-
-pattern OpGetKernelPreferredWorkGroupSizeMultiple :: Op
-pattern OpGetKernelPreferredWorkGroupSizeMultiple = Op 296
-
-pattern OpRetainEvent :: Op
-pattern OpRetainEvent = Op 297
-
-pattern OpReleaseEvent :: Op
-pattern OpReleaseEvent = Op 298
-
-pattern OpCreateUserEvent :: Op
-pattern OpCreateUserEvent = Op 299
-
-pattern OpIsValidEvent :: Op
-pattern OpIsValidEvent = Op 300
-
-pattern OpSetUserEventStatus :: Op
-pattern OpSetUserEventStatus = Op 301
-
-pattern OpCaptureEventProfilingInfo :: Op
-pattern OpCaptureEventProfilingInfo = Op 302
-
-pattern OpGetDefaultQueue :: Op
-pattern OpGetDefaultQueue = Op 303
-
-pattern OpBuildNDRange :: Op
-pattern OpBuildNDRange = Op 304
-
-pattern OpImageSparseSampleImplicitLod :: Op
-pattern OpImageSparseSampleImplicitLod = Op 305
-
-pattern OpImageSparseSampleExplicitLod :: Op
-pattern OpImageSparseSampleExplicitLod = Op 306
-
-pattern OpImageSparseSampleDrefImplicitLod :: Op
-pattern OpImageSparseSampleDrefImplicitLod = Op 307
-
-pattern OpImageSparseSampleDrefExplicitLod :: Op
-pattern OpImageSparseSampleDrefExplicitLod = Op 308
-
-pattern OpImageSparseSampleProjImplicitLod :: Op
-pattern OpImageSparseSampleProjImplicitLod = Op 309
-
-pattern OpImageSparseSampleProjExplicitLod :: Op
-pattern OpImageSparseSampleProjExplicitLod = Op 310
-
-pattern OpImageSparseSampleProjDrefImplicitLod :: Op
-pattern OpImageSparseSampleProjDrefImplicitLod = Op 311
-
-pattern OpImageSparseSampleProjDrefExplicitLod :: Op
-pattern OpImageSparseSampleProjDrefExplicitLod = Op 312
-
-pattern OpImageSparseFetch :: Op
-pattern OpImageSparseFetch = Op 313
-
-pattern OpImageSparseGather :: Op
-pattern OpImageSparseGather = Op 314
-
-pattern OpImageSparseDrefGather :: Op
-pattern OpImageSparseDrefGather = Op 315
-
-pattern OpImageSparseTexelsResident :: Op
-pattern OpImageSparseTexelsResident = Op 316
-
-pattern OpNoLine :: Op
-pattern OpNoLine = Op 317
-
-pattern OpAtomicFlagTestAndSet :: Op
-pattern OpAtomicFlagTestAndSet = Op 318
-
-pattern OpAtomicFlagClear :: Op
-pattern OpAtomicFlagClear = Op 319
-
-pattern OpImageSparseRead :: Op
-pattern OpImageSparseRead = Op 320
-
-pattern OpSizeOf :: Op
-pattern OpSizeOf = Op 321
-
-pattern OpTypePipeStorage :: Op
-pattern OpTypePipeStorage = Op 322
-
-pattern OpConstantPipeStorage :: Op
-pattern OpConstantPipeStorage = Op 323
-
-pattern OpCreatePipeFromPipeStorage :: Op
-pattern OpCreatePipeFromPipeStorage = Op 324
-
-pattern OpGetKernelLocalSizeForSubgroupCount :: Op
-pattern OpGetKernelLocalSizeForSubgroupCount = Op 325
-
-pattern OpGetKernelMaxNumSubgroups :: Op
-pattern OpGetKernelMaxNumSubgroups = Op 326
-
-pattern OpTypeNamedBarrier :: Op
-pattern OpTypeNamedBarrier = Op 327
-
-pattern OpNamedBarrierInitialize :: Op
-pattern OpNamedBarrierInitialize = Op 328
-
-pattern OpMemoryNamedBarrier :: Op
-pattern OpMemoryNamedBarrier = Op 329
-
-pattern OpModuleProcessed :: Op
-pattern OpModuleProcessed = Op 330
-
-pattern OpExecutionModeId :: Op
-pattern OpExecutionModeId = Op 331
-
-pattern OpDecorateId :: Op
-pattern OpDecorateId = Op 332
-
-pattern OpGroupNonUniformElect :: Op
-pattern OpGroupNonUniformElect = Op 333
-
-pattern OpGroupNonUniformAll :: Op
-pattern OpGroupNonUniformAll = Op 334
-
-pattern OpGroupNonUniformAny :: Op
-pattern OpGroupNonUniformAny = Op 335
-
-pattern OpGroupNonUniformAllEqual :: Op
-pattern OpGroupNonUniformAllEqual = Op 336
-
-pattern OpGroupNonUniformBroadcast :: Op
-pattern OpGroupNonUniformBroadcast = Op 337
-
-pattern OpGroupNonUniformBroadcastFirst :: Op
-pattern OpGroupNonUniformBroadcastFirst = Op 338
-
-pattern OpGroupNonUniformBallot :: Op
-pattern OpGroupNonUniformBallot = Op 339
-
-pattern OpGroupNonUniformInverseBallot :: Op
-pattern OpGroupNonUniformInverseBallot = Op 340
-
-pattern OpGroupNonUniformBallotBitExtract :: Op
-pattern OpGroupNonUniformBallotBitExtract = Op 341
-
-pattern OpGroupNonUniformBallotBitCount :: Op
-pattern OpGroupNonUniformBallotBitCount = Op 342
-
-pattern OpGroupNonUniformBallotFindLSB :: Op
-pattern OpGroupNonUniformBallotFindLSB = Op 343
-
-pattern OpGroupNonUniformBallotFindMSB :: Op
-pattern OpGroupNonUniformBallotFindMSB = Op 344
-
-pattern OpGroupNonUniformShuffle :: Op
-pattern OpGroupNonUniformShuffle = Op 345
-
-pattern OpGroupNonUniformShuffleXor :: Op
-pattern OpGroupNonUniformShuffleXor = Op 346
-
-pattern OpGroupNonUniformShuffleUp :: Op
-pattern OpGroupNonUniformShuffleUp = Op 347
-
-pattern OpGroupNonUniformShuffleDown :: Op
-pattern OpGroupNonUniformShuffleDown = Op 348
-
-pattern OpGroupNonUniformIAdd :: Op
-pattern OpGroupNonUniformIAdd = Op 349
-
-pattern OpGroupNonUniformFAdd :: Op
-pattern OpGroupNonUniformFAdd = Op 350
-
-pattern OpGroupNonUniformIMul :: Op
-pattern OpGroupNonUniformIMul = Op 351
-
-pattern OpGroupNonUniformFMul :: Op
-pattern OpGroupNonUniformFMul = Op 352
-
-pattern OpGroupNonUniformSMin :: Op
-pattern OpGroupNonUniformSMin = Op 353
-
-pattern OpGroupNonUniformUMin :: Op
-pattern OpGroupNonUniformUMin = Op 354
-
-pattern OpGroupNonUniformFMin :: Op
-pattern OpGroupNonUniformFMin = Op 355
-
-pattern OpGroupNonUniformSMax :: Op
-pattern OpGroupNonUniformSMax = Op 356
-
-pattern OpGroupNonUniformUMax :: Op
-pattern OpGroupNonUniformUMax = Op 357
-
-pattern OpGroupNonUniformFMax :: Op
-pattern OpGroupNonUniformFMax = Op 358
-
-pattern OpGroupNonUniformBitwiseAnd :: Op
-pattern OpGroupNonUniformBitwiseAnd = Op 359
-
-pattern OpGroupNonUniformBitwiseOr :: Op
-pattern OpGroupNonUniformBitwiseOr = Op 360
-
-pattern OpGroupNonUniformBitwiseXor :: Op
-pattern OpGroupNonUniformBitwiseXor = Op 361
-
-pattern OpGroupNonUniformLogicalAnd :: Op
-pattern OpGroupNonUniformLogicalAnd = Op 362
-
-pattern OpGroupNonUniformLogicalOr :: Op
-pattern OpGroupNonUniformLogicalOr = Op 363
-
-pattern OpGroupNonUniformLogicalXor :: Op
-pattern OpGroupNonUniformLogicalXor = Op 364
-
-pattern OpGroupNonUniformQuadBroadcast :: Op
-pattern OpGroupNonUniformQuadBroadcast = Op 365
-
-pattern OpGroupNonUniformQuadSwap :: Op
-pattern OpGroupNonUniformQuadSwap = Op 366
-
-pattern OpCopyLogical :: Op
-pattern OpCopyLogical = Op 400
-
-pattern OpPtrEqual :: Op
-pattern OpPtrEqual = Op 401
-
-pattern OpPtrNotEqual :: Op
-pattern OpPtrNotEqual = Op 402
-
-pattern OpPtrDiff :: Op
-pattern OpPtrDiff = Op 403
-
-pattern OpTerminateInvocation :: Op
-pattern OpTerminateInvocation = Op 4416
-
-pattern OpSubgroupBallotKHR :: Op
-pattern OpSubgroupBallotKHR = Op 4421
-
-pattern OpSubgroupFirstInvocationKHR :: Op
-pattern OpSubgroupFirstInvocationKHR = Op 4422
-
-pattern OpSubgroupAllKHR :: Op
-pattern OpSubgroupAllKHR = Op 4428
-
-pattern OpSubgroupAnyKHR :: Op
-pattern OpSubgroupAnyKHR = Op 4429
-
-pattern OpSubgroupAllEqualKHR :: Op
-pattern OpSubgroupAllEqualKHR = Op 4430
-
-pattern OpGroupNonUniformRotateKHR :: Op
-pattern OpGroupNonUniformRotateKHR = Op 4431
-
-pattern OpSubgroupReadInvocationKHR :: Op
-pattern OpSubgroupReadInvocationKHR = Op 4432
-
-pattern OpTraceRayKHR :: Op
-pattern OpTraceRayKHR = Op 4445
-
-pattern OpExecuteCallableKHR :: Op
-pattern OpExecuteCallableKHR = Op 4446
-
-pattern OpConvertUToAccelerationStructureKHR :: Op
-pattern OpConvertUToAccelerationStructureKHR = Op 4447
-
-pattern OpIgnoreIntersectionKHR :: Op
-pattern OpIgnoreIntersectionKHR = Op 4448
-
-pattern OpTerminateRayKHR :: Op
-pattern OpTerminateRayKHR = Op 4449
-
-pattern OpSDot :: Op
-pattern OpSDot = Op 4450
-
-pattern OpSDotKHR :: Op
-pattern OpSDotKHR = Op 4450
-
-pattern OpUDot :: Op
-pattern OpUDot = Op 4451
-
-pattern OpUDotKHR :: Op
-pattern OpUDotKHR = Op 4451
-
-pattern OpSUDot :: Op
-pattern OpSUDot = Op 4452
-
-pattern OpSUDotKHR :: Op
-pattern OpSUDotKHR = Op 4452
-
-pattern OpSDotAccSat :: Op
-pattern OpSDotAccSat = Op 4453
-
-pattern OpSDotAccSatKHR :: Op
-pattern OpSDotAccSatKHR = Op 4453
-
-pattern OpUDotAccSat :: Op
-pattern OpUDotAccSat = Op 4454
-
-pattern OpUDotAccSatKHR :: Op
-pattern OpUDotAccSatKHR = Op 4454
-
-pattern OpSUDotAccSat :: Op
-pattern OpSUDotAccSat = Op 4455
-
-pattern OpSUDotAccSatKHR :: Op
-pattern OpSUDotAccSatKHR = Op 4455
-
-pattern OpTypeRayQueryKHR :: Op
-pattern OpTypeRayQueryKHR = Op 4472
-
-pattern OpRayQueryInitializeKHR :: Op
-pattern OpRayQueryInitializeKHR = Op 4473
-
-pattern OpRayQueryTerminateKHR :: Op
-pattern OpRayQueryTerminateKHR = Op 4474
-
-pattern OpRayQueryGenerateIntersectionKHR :: Op
-pattern OpRayQueryGenerateIntersectionKHR = Op 4475
-
-pattern OpRayQueryConfirmIntersectionKHR :: Op
-pattern OpRayQueryConfirmIntersectionKHR = Op 4476
-
-pattern OpRayQueryProceedKHR :: Op
-pattern OpRayQueryProceedKHR = Op 4477
-
-pattern OpRayQueryGetIntersectionTypeKHR :: Op
-pattern OpRayQueryGetIntersectionTypeKHR = Op 4479
-
-pattern OpGroupIAddNonUniformAMD :: Op
-pattern OpGroupIAddNonUniformAMD = Op 5000
-
-pattern OpGroupFAddNonUniformAMD :: Op
-pattern OpGroupFAddNonUniformAMD = Op 5001
-
-pattern OpGroupFMinNonUniformAMD :: Op
-pattern OpGroupFMinNonUniformAMD = Op 5002
-
-pattern OpGroupUMinNonUniformAMD :: Op
-pattern OpGroupUMinNonUniformAMD = Op 5003
-
-pattern OpGroupSMinNonUniformAMD :: Op
-pattern OpGroupSMinNonUniformAMD = Op 5004
-
-pattern OpGroupFMaxNonUniformAMD :: Op
-pattern OpGroupFMaxNonUniformAMD = Op 5005
-
-pattern OpGroupUMaxNonUniformAMD :: Op
-pattern OpGroupUMaxNonUniformAMD = Op 5006
-
-pattern OpGroupSMaxNonUniformAMD :: Op
-pattern OpGroupSMaxNonUniformAMD = Op 5007
-
-pattern OpFragmentMaskFetchAMD :: Op
-pattern OpFragmentMaskFetchAMD = Op 5011
-
-pattern OpFragmentFetchAMD :: Op
-pattern OpFragmentFetchAMD = Op 5012
-
-pattern OpReadClockKHR :: Op
-pattern OpReadClockKHR = Op 5056
-
-pattern OpImageSampleFootprintNV :: Op
-pattern OpImageSampleFootprintNV = Op 5283
-
-pattern OpGroupNonUniformPartitionNV :: Op
-pattern OpGroupNonUniformPartitionNV = Op 5296
-
-pattern OpWritePackedPrimitiveIndices4x8NV :: Op
-pattern OpWritePackedPrimitiveIndices4x8NV = Op 5299
-
-pattern OpReportIntersectionKHR :: Op
-pattern OpReportIntersectionKHR = Op 5334
-
-pattern OpReportIntersectionNV :: Op
-pattern OpReportIntersectionNV = Op 5334
-
-pattern OpIgnoreIntersectionNV :: Op
-pattern OpIgnoreIntersectionNV = Op 5335
-
-pattern OpTerminateRayNV :: Op
-pattern OpTerminateRayNV = Op 5336
-
-pattern OpTraceNV :: Op
-pattern OpTraceNV = Op 5337
-
-pattern OpTraceMotionNV :: Op
-pattern OpTraceMotionNV = Op 5338
-
-pattern OpTraceRayMotionNV :: Op
-pattern OpTraceRayMotionNV = Op 5339
-
-pattern OpTypeAccelerationStructureKHR :: Op
-pattern OpTypeAccelerationStructureKHR = Op 5341
-
-pattern OpTypeAccelerationStructureNV :: Op
-pattern OpTypeAccelerationStructureNV = Op 5341
-
-pattern OpExecuteCallableNV :: Op
-pattern OpExecuteCallableNV = Op 5344
-
-pattern OpTypeCooperativeMatrixNV :: Op
-pattern OpTypeCooperativeMatrixNV = Op 5358
-
-pattern OpCooperativeMatrixLoadNV :: Op
-pattern OpCooperativeMatrixLoadNV = Op 5359
-
-pattern OpCooperativeMatrixStoreNV :: Op
-pattern OpCooperativeMatrixStoreNV = Op 5360
-
-pattern OpCooperativeMatrixMulAddNV :: Op
-pattern OpCooperativeMatrixMulAddNV = Op 5361
-
-pattern OpCooperativeMatrixLengthNV :: Op
-pattern OpCooperativeMatrixLengthNV = Op 5362
-
-pattern OpBeginInvocationInterlockEXT :: Op
-pattern OpBeginInvocationInterlockEXT = Op 5364
-
-pattern OpEndInvocationInterlockEXT :: Op
-pattern OpEndInvocationInterlockEXT = Op 5365
-
-pattern OpDemoteToHelperInvocation :: Op
-pattern OpDemoteToHelperInvocation = Op 5380
-
-pattern OpDemoteToHelperInvocationEXT :: Op
-pattern OpDemoteToHelperInvocationEXT = Op 5380
-
-pattern OpIsHelperInvocationEXT :: Op
-pattern OpIsHelperInvocationEXT = Op 5381
-
-pattern OpConvertUToImageNV :: Op
-pattern OpConvertUToImageNV = Op 5391
-
-pattern OpConvertUToSamplerNV :: Op
-pattern OpConvertUToSamplerNV = Op 5392
-
-pattern OpConvertImageToUNV :: Op
-pattern OpConvertImageToUNV = Op 5393
-
-pattern OpConvertSamplerToUNV :: Op
-pattern OpConvertSamplerToUNV = Op 5394
-
-pattern OpConvertUToSampledImageNV :: Op
-pattern OpConvertUToSampledImageNV = Op 5395
-
-pattern OpConvertSampledImageToUNV :: Op
-pattern OpConvertSampledImageToUNV = Op 5396
-
-pattern OpSamplerImageAddressingModeNV :: Op
-pattern OpSamplerImageAddressingModeNV = Op 5397
-
-pattern OpSubgroupShuffleINTEL :: Op
-pattern OpSubgroupShuffleINTEL = Op 5571
-
-pattern OpSubgroupShuffleDownINTEL :: Op
-pattern OpSubgroupShuffleDownINTEL = Op 5572
-
-pattern OpSubgroupShuffleUpINTEL :: Op
-pattern OpSubgroupShuffleUpINTEL = Op 5573
-
-pattern OpSubgroupShuffleXorINTEL :: Op
-pattern OpSubgroupShuffleXorINTEL = Op 5574
-
-pattern OpSubgroupBlockReadINTEL :: Op
-pattern OpSubgroupBlockReadINTEL = Op 5575
-
-pattern OpSubgroupBlockWriteINTEL :: Op
-pattern OpSubgroupBlockWriteINTEL = Op 5576
-
-pattern OpSubgroupImageBlockReadINTEL :: Op
-pattern OpSubgroupImageBlockReadINTEL = Op 5577
-
-pattern OpSubgroupImageBlockWriteINTEL :: Op
-pattern OpSubgroupImageBlockWriteINTEL = Op 5578
-
-pattern OpSubgroupImageMediaBlockReadINTEL :: Op
-pattern OpSubgroupImageMediaBlockReadINTEL = Op 5580
-
-pattern OpSubgroupImageMediaBlockWriteINTEL :: Op
-pattern OpSubgroupImageMediaBlockWriteINTEL = Op 5581
-
-pattern OpUCountLeadingZerosINTEL :: Op
-pattern OpUCountLeadingZerosINTEL = Op 5585
-
-pattern OpUCountTrailingZerosINTEL :: Op
-pattern OpUCountTrailingZerosINTEL = Op 5586
-
-pattern OpAbsISubINTEL :: Op
-pattern OpAbsISubINTEL = Op 5587
-
-pattern OpAbsUSubINTEL :: Op
-pattern OpAbsUSubINTEL = Op 5588
-
-pattern OpIAddSatINTEL :: Op
-pattern OpIAddSatINTEL = Op 5589
-
-pattern OpUAddSatINTEL :: Op
-pattern OpUAddSatINTEL = Op 5590
-
-pattern OpIAverageINTEL :: Op
-pattern OpIAverageINTEL = Op 5591
-
-pattern OpUAverageINTEL :: Op
-pattern OpUAverageINTEL = Op 5592
-
-pattern OpIAverageRoundedINTEL :: Op
-pattern OpIAverageRoundedINTEL = Op 5593
-
-pattern OpUAverageRoundedINTEL :: Op
-pattern OpUAverageRoundedINTEL = Op 5594
-
-pattern OpISubSatINTEL :: Op
-pattern OpISubSatINTEL = Op 5595
-
-pattern OpUSubSatINTEL :: Op
-pattern OpUSubSatINTEL = Op 5596
-
-pattern OpIMul32x16INTEL :: Op
-pattern OpIMul32x16INTEL = Op 5597
-
-pattern OpUMul32x16INTEL :: Op
-pattern OpUMul32x16INTEL = Op 5598
-
-pattern OpConstantFunctionPointerINTEL :: Op
-pattern OpConstantFunctionPointerINTEL = Op 5600
-
-pattern OpFunctionPointerCallINTEL :: Op
-pattern OpFunctionPointerCallINTEL = Op 5601
-
-pattern OpAsmTargetINTEL :: Op
-pattern OpAsmTargetINTEL = Op 5609
-
-pattern OpAsmINTEL :: Op
-pattern OpAsmINTEL = Op 5610
-
-pattern OpAsmCallINTEL :: Op
-pattern OpAsmCallINTEL = Op 5611
-
-pattern OpAtomicFMinEXT :: Op
-pattern OpAtomicFMinEXT = Op 5614
-
-pattern OpAtomicFMaxEXT :: Op
-pattern OpAtomicFMaxEXT = Op 5615
-
-pattern OpAssumeTrueKHR :: Op
-pattern OpAssumeTrueKHR = Op 5630
-
-pattern OpExpectKHR :: Op
-pattern OpExpectKHR = Op 5631
-
-pattern OpDecorateString :: Op
-pattern OpDecorateString = Op 5632
-
-pattern OpDecorateStringGOOGLE :: Op
-pattern OpDecorateStringGOOGLE = Op 5632
-
-pattern OpMemberDecorateString :: Op
-pattern OpMemberDecorateString = Op 5633
-
-pattern OpMemberDecorateStringGOOGLE :: Op
-pattern OpMemberDecorateStringGOOGLE = Op 5633
-
-pattern OpVmeImageINTEL :: Op
-pattern OpVmeImageINTEL = Op 5699
-
-pattern OpTypeVmeImageINTEL :: Op
-pattern OpTypeVmeImageINTEL = Op 5700
-
-pattern OpTypeAvcImePayloadINTEL :: Op
-pattern OpTypeAvcImePayloadINTEL = Op 5701
-
-pattern OpTypeAvcRefPayloadINTEL :: Op
-pattern OpTypeAvcRefPayloadINTEL = Op 5702
-
-pattern OpTypeAvcSicPayloadINTEL :: Op
-pattern OpTypeAvcSicPayloadINTEL = Op 5703
-
-pattern OpTypeAvcMcePayloadINTEL :: Op
-pattern OpTypeAvcMcePayloadINTEL = Op 5704
-
-pattern OpTypeAvcMceResultINTEL :: Op
-pattern OpTypeAvcMceResultINTEL = Op 5705
-
-pattern OpTypeAvcImeResultINTEL :: Op
-pattern OpTypeAvcImeResultINTEL = Op 5706
-
-pattern OpTypeAvcImeResultSingleReferenceStreamoutINTEL :: Op
-pattern OpTypeAvcImeResultSingleReferenceStreamoutINTEL = Op 5707
-
-pattern OpTypeAvcImeResultDualReferenceStreamoutINTEL :: Op
-pattern OpTypeAvcImeResultDualReferenceStreamoutINTEL = Op 5708
-
-pattern OpTypeAvcImeSingleReferenceStreaminINTEL :: Op
-pattern OpTypeAvcImeSingleReferenceStreaminINTEL = Op 5709
-
-pattern OpTypeAvcImeDualReferenceStreaminINTEL :: Op
-pattern OpTypeAvcImeDualReferenceStreaminINTEL = Op 5710
-
-pattern OpTypeAvcRefResultINTEL :: Op
-pattern OpTypeAvcRefResultINTEL = Op 5711
-
-pattern OpTypeAvcSicResultINTEL :: Op
-pattern OpTypeAvcSicResultINTEL = Op 5712
-
-pattern OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = Op 5713
-
-pattern OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL :: Op
-pattern OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = Op 5714
-
-pattern OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = Op 5715
-
-pattern OpSubgroupAvcMceSetInterShapePenaltyINTEL :: Op
-pattern OpSubgroupAvcMceSetInterShapePenaltyINTEL = Op 5716
-
-pattern OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = Op 5717
-
-pattern OpSubgroupAvcMceSetInterDirectionPenaltyINTEL :: Op
-pattern OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = Op 5718
-
-pattern OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = Op 5719
-
-pattern OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = Op 5720
-
-pattern OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = Op 5721
-
-pattern OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = Op 5722
-
-pattern OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = Op 5723
-
-pattern OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL :: Op
-pattern OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = Op 5724
-
-pattern OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = Op 5725
-
-pattern OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = Op 5726
-
-pattern OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL :: Op
-pattern OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = Op 5727
-
-pattern OpSubgroupAvcMceSetAcOnlyHaarINTEL :: Op
-pattern OpSubgroupAvcMceSetAcOnlyHaarINTEL = Op 5728
-
-pattern OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL :: Op
-pattern OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = Op 5729
-
-pattern OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL :: Op
-pattern OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = Op 5730
-
-pattern OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL :: Op
-pattern OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = Op 5731
-
-pattern OpSubgroupAvcMceConvertToImePayloadINTEL :: Op
-pattern OpSubgroupAvcMceConvertToImePayloadINTEL = Op 5732
-
-pattern OpSubgroupAvcMceConvertToImeResultINTEL :: Op
-pattern OpSubgroupAvcMceConvertToImeResultINTEL = Op 5733
-
-pattern OpSubgroupAvcMceConvertToRefPayloadINTEL :: Op
-pattern OpSubgroupAvcMceConvertToRefPayloadINTEL = Op 5734
-
-pattern OpSubgroupAvcMceConvertToRefResultINTEL :: Op
-pattern OpSubgroupAvcMceConvertToRefResultINTEL = Op 5735
-
-pattern OpSubgroupAvcMceConvertToSicPayloadINTEL :: Op
-pattern OpSubgroupAvcMceConvertToSicPayloadINTEL = Op 5736
-
-pattern OpSubgroupAvcMceConvertToSicResultINTEL :: Op
-pattern OpSubgroupAvcMceConvertToSicResultINTEL = Op 5737
-
-pattern OpSubgroupAvcMceGetMotionVectorsINTEL :: Op
-pattern OpSubgroupAvcMceGetMotionVectorsINTEL = Op 5738
-
-pattern OpSubgroupAvcMceGetInterDistortionsINTEL :: Op
-pattern OpSubgroupAvcMceGetInterDistortionsINTEL = Op 5739
-
-pattern OpSubgroupAvcMceGetBestInterDistortionsINTEL :: Op
-pattern OpSubgroupAvcMceGetBestInterDistortionsINTEL = Op 5740
-
-pattern OpSubgroupAvcMceGetInterMajorShapeINTEL :: Op
-pattern OpSubgroupAvcMceGetInterMajorShapeINTEL = Op 5741
-
-pattern OpSubgroupAvcMceGetInterMinorShapeINTEL :: Op
-pattern OpSubgroupAvcMceGetInterMinorShapeINTEL = Op 5742
-
-pattern OpSubgroupAvcMceGetInterDirectionsINTEL :: Op
-pattern OpSubgroupAvcMceGetInterDirectionsINTEL = Op 5743
-
-pattern OpSubgroupAvcMceGetInterMotionVectorCountINTEL :: Op
-pattern OpSubgroupAvcMceGetInterMotionVectorCountINTEL = Op 5744
-
-pattern OpSubgroupAvcMceGetInterReferenceIdsINTEL :: Op
-pattern OpSubgroupAvcMceGetInterReferenceIdsINTEL = Op 5745
-
-pattern OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL :: Op
-pattern OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = Op 5746
-
-pattern OpSubgroupAvcImeInitializeINTEL :: Op
-pattern OpSubgroupAvcImeInitializeINTEL = Op 5747
-
-pattern OpSubgroupAvcImeSetSingleReferenceINTEL :: Op
-pattern OpSubgroupAvcImeSetSingleReferenceINTEL = Op 5748
-
-pattern OpSubgroupAvcImeSetDualReferenceINTEL :: Op
-pattern OpSubgroupAvcImeSetDualReferenceINTEL = Op 5749
-
-pattern OpSubgroupAvcImeRefWindowSizeINTEL :: Op
-pattern OpSubgroupAvcImeRefWindowSizeINTEL = Op 5750
-
-pattern OpSubgroupAvcImeAdjustRefOffsetINTEL :: Op
-pattern OpSubgroupAvcImeAdjustRefOffsetINTEL = Op 5751
-
-pattern OpSubgroupAvcImeConvertToMcePayloadINTEL :: Op
-pattern OpSubgroupAvcImeConvertToMcePayloadINTEL = Op 5752
-
-pattern OpSubgroupAvcImeSetMaxMotionVectorCountINTEL :: Op
-pattern OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = Op 5753
-
-pattern OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL :: Op
-pattern OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = Op 5754
-
-pattern OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL :: Op
-pattern OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = Op 5755
-
-pattern OpSubgroupAvcImeSetWeightedSadINTEL :: Op
-pattern OpSubgroupAvcImeSetWeightedSadINTEL = Op 5756
-
-pattern OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL :: Op
-pattern OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = Op 5757
-
-pattern OpSubgroupAvcImeEvaluateWithDualReferenceINTEL :: Op
-pattern OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = Op 5758
-
-pattern OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL :: Op
-pattern OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = Op 5759
-
-pattern OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL :: Op
-pattern OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = Op 5760
-
-pattern OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL :: Op
-pattern OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = Op 5761
-
-pattern OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL :: Op
-pattern OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = Op 5762
-
-pattern OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL :: Op
-pattern OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = Op 5763
-
-pattern OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL :: Op
-pattern OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = Op 5764
-
-pattern OpSubgroupAvcImeConvertToMceResultINTEL :: Op
-pattern OpSubgroupAvcImeConvertToMceResultINTEL = Op 5765
-
-pattern OpSubgroupAvcImeGetSingleReferenceStreaminINTEL :: Op
-pattern OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = Op 5766
-
-pattern OpSubgroupAvcImeGetDualReferenceStreaminINTEL :: Op
-pattern OpSubgroupAvcImeGetDualReferenceStreaminINTEL = Op 5767
-
-pattern OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL :: Op
-pattern OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = Op 5768
-
-pattern OpSubgroupAvcImeStripDualReferenceStreamoutINTEL :: Op
-pattern OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = Op 5769
-
-pattern OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL :: Op
-pattern OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = Op 5770
-
-pattern OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL :: Op
-pattern OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = Op 5771
-
-pattern OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL :: Op
-pattern OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = Op 5772
-
-pattern OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL :: Op
-pattern OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = Op 5773
-
-pattern OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL :: Op
-pattern OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = Op 5774
-
-pattern OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL :: Op
-pattern OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = Op 5775
-
-pattern OpSubgroupAvcImeGetBorderReachedINTEL :: Op
-pattern OpSubgroupAvcImeGetBorderReachedINTEL = Op 5776
-
-pattern OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL :: Op
-pattern OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = Op 5777
-
-pattern OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL :: Op
-pattern OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = Op 5778
-
-pattern OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL :: Op
-pattern OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = Op 5779
-
-pattern OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL :: Op
-pattern OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = Op 5780
-
-pattern OpSubgroupAvcFmeInitializeINTEL :: Op
-pattern OpSubgroupAvcFmeInitializeINTEL = Op 5781
-
-pattern OpSubgroupAvcBmeInitializeINTEL :: Op
-pattern OpSubgroupAvcBmeInitializeINTEL = Op 5782
-
-pattern OpSubgroupAvcRefConvertToMcePayloadINTEL :: Op
-pattern OpSubgroupAvcRefConvertToMcePayloadINTEL = Op 5783
-
-pattern OpSubgroupAvcRefSetBidirectionalMixDisableINTEL :: Op
-pattern OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = Op 5784
-
-pattern OpSubgroupAvcRefSetBilinearFilterEnableINTEL :: Op
-pattern OpSubgroupAvcRefSetBilinearFilterEnableINTEL = Op 5785
-
-pattern OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL :: Op
-pattern OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = Op 5786
-
-pattern OpSubgroupAvcRefEvaluateWithDualReferenceINTEL :: Op
-pattern OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = Op 5787
-
-pattern OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL :: Op
-pattern OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = Op 5788
-
-pattern OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL :: Op
-pattern OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = Op 5789
-
-pattern OpSubgroupAvcRefConvertToMceResultINTEL :: Op
-pattern OpSubgroupAvcRefConvertToMceResultINTEL = Op 5790
-
-pattern OpSubgroupAvcSicInitializeINTEL :: Op
-pattern OpSubgroupAvcSicInitializeINTEL = Op 5791
-
-pattern OpSubgroupAvcSicConfigureSkcINTEL :: Op
-pattern OpSubgroupAvcSicConfigureSkcINTEL = Op 5792
-
-pattern OpSubgroupAvcSicConfigureIpeLumaINTEL :: Op
-pattern OpSubgroupAvcSicConfigureIpeLumaINTEL = Op 5793
-
-pattern OpSubgroupAvcSicConfigureIpeLumaChromaINTEL :: Op
-pattern OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = Op 5794
-
-pattern OpSubgroupAvcSicGetMotionVectorMaskINTEL :: Op
-pattern OpSubgroupAvcSicGetMotionVectorMaskINTEL = Op 5795
-
-pattern OpSubgroupAvcSicConvertToMcePayloadINTEL :: Op
-pattern OpSubgroupAvcSicConvertToMcePayloadINTEL = Op 5796
-
-pattern OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL :: Op
-pattern OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = Op 5797
-
-pattern OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL :: Op
-pattern OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = Op 5798
-
-pattern OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL :: Op
-pattern OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = Op 5799
-
-pattern OpSubgroupAvcSicSetBilinearFilterEnableINTEL :: Op
-pattern OpSubgroupAvcSicSetBilinearFilterEnableINTEL = Op 5800
-
-pattern OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL :: Op
-pattern OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = Op 5801
-
-pattern OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL :: Op
-pattern OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = Op 5802
-
-pattern OpSubgroupAvcSicEvaluateIpeINTEL :: Op
-pattern OpSubgroupAvcSicEvaluateIpeINTEL = Op 5803
-
-pattern OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL :: Op
-pattern OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = Op 5804
-
-pattern OpSubgroupAvcSicEvaluateWithDualReferenceINTEL :: Op
-pattern OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = Op 5805
-
-pattern OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL :: Op
-pattern OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = Op 5806
-
-pattern OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL :: Op
-pattern OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = Op 5807
-
-pattern OpSubgroupAvcSicConvertToMceResultINTEL :: Op
-pattern OpSubgroupAvcSicConvertToMceResultINTEL = Op 5808
-
-pattern OpSubgroupAvcSicGetIpeLumaShapeINTEL :: Op
-pattern OpSubgroupAvcSicGetIpeLumaShapeINTEL = Op 5809
-
-pattern OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL :: Op
-pattern OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = Op 5810
-
-pattern OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL :: Op
-pattern OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = Op 5811
-
-pattern OpSubgroupAvcSicGetPackedIpeLumaModesINTEL :: Op
-pattern OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = Op 5812
-
-pattern OpSubgroupAvcSicGetIpeChromaModeINTEL :: Op
-pattern OpSubgroupAvcSicGetIpeChromaModeINTEL = Op 5813
-
-pattern OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL :: Op
-pattern OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = Op 5814
-
-pattern OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL :: Op
-pattern OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = Op 5815
-
-pattern OpSubgroupAvcSicGetInterRawSadsINTEL :: Op
-pattern OpSubgroupAvcSicGetInterRawSadsINTEL = Op 5816
-
-pattern OpVariableLengthArrayINTEL :: Op
-pattern OpVariableLengthArrayINTEL = Op 5818
-
-pattern OpSaveMemoryINTEL :: Op
-pattern OpSaveMemoryINTEL = Op 5819
-
-pattern OpRestoreMemoryINTEL :: Op
-pattern OpRestoreMemoryINTEL = Op 5820
-
-pattern OpArbitraryFloatSinCosPiINTEL :: Op
-pattern OpArbitraryFloatSinCosPiINTEL = Op 5840
-
-pattern OpArbitraryFloatCastINTEL :: Op
-pattern OpArbitraryFloatCastINTEL = Op 5841
-
-pattern OpArbitraryFloatCastFromIntINTEL :: Op
-pattern OpArbitraryFloatCastFromIntINTEL = Op 5842
-
-pattern OpArbitraryFloatCastToIntINTEL :: Op
-pattern OpArbitraryFloatCastToIntINTEL = Op 5843
-
-pattern OpArbitraryFloatAddINTEL :: Op
-pattern OpArbitraryFloatAddINTEL = Op 5846
-
-pattern OpArbitraryFloatSubINTEL :: Op
-pattern OpArbitraryFloatSubINTEL = Op 5847
-
-pattern OpArbitraryFloatMulINTEL :: Op
-pattern OpArbitraryFloatMulINTEL = Op 5848
-
-pattern OpArbitraryFloatDivINTEL :: Op
-pattern OpArbitraryFloatDivINTEL = Op 5849
-
-pattern OpArbitraryFloatGTINTEL :: Op
-pattern OpArbitraryFloatGTINTEL = Op 5850
-
-pattern OpArbitraryFloatGEINTEL :: Op
-pattern OpArbitraryFloatGEINTEL = Op 5851
-
-pattern OpArbitraryFloatLTINTEL :: Op
-pattern OpArbitraryFloatLTINTEL = Op 5852
-
-pattern OpArbitraryFloatLEINTEL :: Op
-pattern OpArbitraryFloatLEINTEL = Op 5853
-
-pattern OpArbitraryFloatEQINTEL :: Op
-pattern OpArbitraryFloatEQINTEL = Op 5854
-
-pattern OpArbitraryFloatRecipINTEL :: Op
-pattern OpArbitraryFloatRecipINTEL = Op 5855
-
-pattern OpArbitraryFloatRSqrtINTEL :: Op
-pattern OpArbitraryFloatRSqrtINTEL = Op 5856
-
-pattern OpArbitraryFloatCbrtINTEL :: Op
-pattern OpArbitraryFloatCbrtINTEL = Op 5857
-
-pattern OpArbitraryFloatHypotINTEL :: Op
-pattern OpArbitraryFloatHypotINTEL = Op 5858
-
-pattern OpArbitraryFloatSqrtINTEL :: Op
-pattern OpArbitraryFloatSqrtINTEL = Op 5859
-
-pattern OpArbitraryFloatLogINTEL :: Op
-pattern OpArbitraryFloatLogINTEL = Op 5860
-
-pattern OpArbitraryFloatLog2INTEL :: Op
-pattern OpArbitraryFloatLog2INTEL = Op 5861
-
-pattern OpArbitraryFloatLog10INTEL :: Op
-pattern OpArbitraryFloatLog10INTEL = Op 5862
-
-pattern OpArbitraryFloatLog1pINTEL :: Op
-pattern OpArbitraryFloatLog1pINTEL = Op 5863
-
-pattern OpArbitraryFloatExpINTEL :: Op
-pattern OpArbitraryFloatExpINTEL = Op 5864
-
-pattern OpArbitraryFloatExp2INTEL :: Op
-pattern OpArbitraryFloatExp2INTEL = Op 5865
-
-pattern OpArbitraryFloatExp10INTEL :: Op
-pattern OpArbitraryFloatExp10INTEL = Op 5866
-
-pattern OpArbitraryFloatExpm1INTEL :: Op
-pattern OpArbitraryFloatExpm1INTEL = Op 5867
-
-pattern OpArbitraryFloatSinINTEL :: Op
-pattern OpArbitraryFloatSinINTEL = Op 5868
-
-pattern OpArbitraryFloatCosINTEL :: Op
-pattern OpArbitraryFloatCosINTEL = Op 5869
-
-pattern OpArbitraryFloatSinCosINTEL :: Op
-pattern OpArbitraryFloatSinCosINTEL = Op 5870
-
-pattern OpArbitraryFloatSinPiINTEL :: Op
-pattern OpArbitraryFloatSinPiINTEL = Op 5871
-
-pattern OpArbitraryFloatCosPiINTEL :: Op
-pattern OpArbitraryFloatCosPiINTEL = Op 5872
-
-pattern OpArbitraryFloatASinINTEL :: Op
-pattern OpArbitraryFloatASinINTEL = Op 5873
-
-pattern OpArbitraryFloatASinPiINTEL :: Op
-pattern OpArbitraryFloatASinPiINTEL = Op 5874
-
-pattern OpArbitraryFloatACosINTEL :: Op
-pattern OpArbitraryFloatACosINTEL = Op 5875
-
-pattern OpArbitraryFloatACosPiINTEL :: Op
-pattern OpArbitraryFloatACosPiINTEL = Op 5876
-
-pattern OpArbitraryFloatATanINTEL :: Op
-pattern OpArbitraryFloatATanINTEL = Op 5877
-
-pattern OpArbitraryFloatATanPiINTEL :: Op
-pattern OpArbitraryFloatATanPiINTEL = Op 5878
-
-pattern OpArbitraryFloatATan2INTEL :: Op
-pattern OpArbitraryFloatATan2INTEL = Op 5879
-
-pattern OpArbitraryFloatPowINTEL :: Op
-pattern OpArbitraryFloatPowINTEL = Op 5880
-
-pattern OpArbitraryFloatPowRINTEL :: Op
-pattern OpArbitraryFloatPowRINTEL = Op 5881
-
-pattern OpArbitraryFloatPowNINTEL :: Op
-pattern OpArbitraryFloatPowNINTEL = Op 5882
-
-pattern OpLoopControlINTEL :: Op
-pattern OpLoopControlINTEL = Op 5887
-
-pattern OpAliasDomainDeclINTEL :: Op
-pattern OpAliasDomainDeclINTEL = Op 5911
-
-pattern OpAliasScopeDeclINTEL :: Op
-pattern OpAliasScopeDeclINTEL = Op 5912
-
-pattern OpAliasScopeListDeclINTEL :: Op
-pattern OpAliasScopeListDeclINTEL = Op 5913
-
-pattern OpFixedSqrtINTEL :: Op
-pattern OpFixedSqrtINTEL = Op 5923
-
-pattern OpFixedRecipINTEL :: Op
-pattern OpFixedRecipINTEL = Op 5924
-
-pattern OpFixedRsqrtINTEL :: Op
-pattern OpFixedRsqrtINTEL = Op 5925
-
-pattern OpFixedSinINTEL :: Op
-pattern OpFixedSinINTEL = Op 5926
-
-pattern OpFixedCosINTEL :: Op
-pattern OpFixedCosINTEL = Op 5927
-
-pattern OpFixedSinCosINTEL :: Op
-pattern OpFixedSinCosINTEL = Op 5928
-
-pattern OpFixedSinPiINTEL :: Op
-pattern OpFixedSinPiINTEL = Op 5929
-
-pattern OpFixedCosPiINTEL :: Op
-pattern OpFixedCosPiINTEL = Op 5930
-
-pattern OpFixedSinCosPiINTEL :: Op
-pattern OpFixedSinCosPiINTEL = Op 5931
-
-pattern OpFixedLogINTEL :: Op
-pattern OpFixedLogINTEL = Op 5932
-
-pattern OpFixedExpINTEL :: Op
-pattern OpFixedExpINTEL = Op 5933
-
-pattern OpPtrCastToCrossWorkgroupINTEL :: Op
-pattern OpPtrCastToCrossWorkgroupINTEL = Op 5934
-
-pattern OpCrossWorkgroupCastToPtrINTEL :: Op
-pattern OpCrossWorkgroupCastToPtrINTEL = Op 5938
-
-pattern OpReadPipeBlockingINTEL :: Op
-pattern OpReadPipeBlockingINTEL = Op 5946
-
-pattern OpWritePipeBlockingINTEL :: Op
-pattern OpWritePipeBlockingINTEL = Op 5947
-
-pattern OpFPGARegINTEL :: Op
-pattern OpFPGARegINTEL = Op 5949
-
-pattern OpRayQueryGetRayTMinKHR :: Op
-pattern OpRayQueryGetRayTMinKHR = Op 6016
-
-pattern OpRayQueryGetRayFlagsKHR :: Op
-pattern OpRayQueryGetRayFlagsKHR = Op 6017
-
-pattern OpRayQueryGetIntersectionTKHR :: Op
-pattern OpRayQueryGetIntersectionTKHR = Op 6018
-
-pattern OpRayQueryGetIntersectionInstanceCustomIndexKHR :: Op
-pattern OpRayQueryGetIntersectionInstanceCustomIndexKHR = Op 6019
-
-pattern OpRayQueryGetIntersectionInstanceIdKHR :: Op
-pattern OpRayQueryGetIntersectionInstanceIdKHR = Op 6020
-
-pattern OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR :: Op
-pattern OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = Op 6021
-
-pattern OpRayQueryGetIntersectionGeometryIndexKHR :: Op
-pattern OpRayQueryGetIntersectionGeometryIndexKHR = Op 6022
-
-pattern OpRayQueryGetIntersectionPrimitiveIndexKHR :: Op
-pattern OpRayQueryGetIntersectionPrimitiveIndexKHR = Op 6023
-
-pattern OpRayQueryGetIntersectionBarycentricsKHR :: Op
-pattern OpRayQueryGetIntersectionBarycentricsKHR = Op 6024
-
-pattern OpRayQueryGetIntersectionFrontFaceKHR :: Op
-pattern OpRayQueryGetIntersectionFrontFaceKHR = Op 6025
-
-pattern OpRayQueryGetIntersectionCandidateAABBOpaqueKHR :: Op
-pattern OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = Op 6026
-
-pattern OpRayQueryGetIntersectionObjectRayDirectionKHR :: Op
-pattern OpRayQueryGetIntersectionObjectRayDirectionKHR = Op 6027
-
-pattern OpRayQueryGetIntersectionObjectRayOriginKHR :: Op
-pattern OpRayQueryGetIntersectionObjectRayOriginKHR = Op 6028
-
-pattern OpRayQueryGetWorldRayDirectionKHR :: Op
-pattern OpRayQueryGetWorldRayDirectionKHR = Op 6029
-
-pattern OpRayQueryGetWorldRayOriginKHR :: Op
-pattern OpRayQueryGetWorldRayOriginKHR = Op 6030
-
-pattern OpRayQueryGetIntersectionObjectToWorldKHR :: Op
-pattern OpRayQueryGetIntersectionObjectToWorldKHR = Op 6031
-
-pattern OpRayQueryGetIntersectionWorldToObjectKHR :: Op
-pattern OpRayQueryGetIntersectionWorldToObjectKHR = Op 6032
-
-pattern OpAtomicFAddEXT :: Op
-pattern OpAtomicFAddEXT = Op 6035
-
-pattern OpTypeBufferSurfaceINTEL :: Op
-pattern OpTypeBufferSurfaceINTEL = Op 6086
-
-pattern OpTypeStructContinuedINTEL :: Op
-pattern OpTypeStructContinuedINTEL = Op 6090
-
-pattern OpConstantCompositeContinuedINTEL :: Op
-pattern OpConstantCompositeContinuedINTEL = Op 6091
-
-pattern OpSpecConstantCompositeContinuedINTEL :: Op
-pattern OpSpecConstantCompositeContinuedINTEL = Op 6092
-
-pattern OpControlBarrierArriveINTEL :: Op
-pattern OpControlBarrierArriveINTEL = Op 6142
-
-pattern OpControlBarrierWaitINTEL :: Op
-pattern OpControlBarrierWaitINTEL = Op 6143
-
-pattern OpGroupIMulKHR :: Op
-pattern OpGroupIMulKHR = Op 6401
-
-pattern OpGroupFMulKHR :: Op
-pattern OpGroupFMulKHR = Op 6402
-
-pattern OpGroupBitwiseAndKHR :: Op
-pattern OpGroupBitwiseAndKHR = Op 6403
-
-pattern OpGroupBitwiseOrKHR :: Op
-pattern OpGroupBitwiseOrKHR = Op 6404
-
-pattern OpGroupBitwiseXorKHR :: Op
-pattern OpGroupBitwiseXorKHR = Op 6405
-
-pattern OpGroupLogicalAndKHR :: Op
-pattern OpGroupLogicalAndKHR = Op 6406
-
-pattern OpGroupLogicalOrKHR :: Op
-pattern OpGroupLogicalOrKHR = Op 6407
-
-pattern OpGroupLogicalXorKHR :: Op
-pattern OpGroupLogicalXorKHR = Op 6408
-
-pattern OpMax :: Op
-pattern OpMax = Op 0x7fffffff
diff --git a/lib/Data/SpirV/Reflect/Enums/SpirvStorageClass.hs b/lib/Data/SpirV/Reflect/Enums/SpirvStorageClass.hs
deleted file mode 100644
--- a/lib/Data/SpirV/Reflect/Enums/SpirvStorageClass.hs
+++ /dev/null
@@ -1,99 +0,0 @@
-module Data.SpirV.Reflect.Enums.SpirvStorageClass where
-
-import Data.SpirV.Reflect.Enums.Common
-
-newtype StorageClass = StorageClass Int32
-  deriving newtype (Eq, Ord, Show, Enum, Bounded)
-
-pattern StorageClassUniformConstant :: StorageClass
-pattern StorageClassUniformConstant = StorageClass 0
-
-pattern StorageClassInput :: StorageClass
-pattern StorageClassInput = StorageClass 1
-
-pattern StorageClassUniform :: StorageClass
-pattern StorageClassUniform = StorageClass 2
-
-pattern StorageClassOutput :: StorageClass
-pattern StorageClassOutput = StorageClass 3
-
-pattern StorageClassWorkgroup :: StorageClass
-pattern StorageClassWorkgroup = StorageClass 4
-
-pattern StorageClassCrossWorkgroup :: StorageClass
-pattern StorageClassCrossWorkgroup = StorageClass 5
-
-pattern StorageClassPrivate :: StorageClass
-pattern StorageClassPrivate = StorageClass 6
-
-pattern StorageClassFunction :: StorageClass
-pattern StorageClassFunction = StorageClass 7
-
-pattern StorageClassGeneric :: StorageClass
-pattern StorageClassGeneric = StorageClass 8
-
-pattern StorageClassPushConstant :: StorageClass
-pattern StorageClassPushConstant = StorageClass 9
-
-pattern StorageClassAtomicCounter :: StorageClass
-pattern StorageClassAtomicCounter = StorageClass 10
-
-pattern StorageClassImage :: StorageClass
-pattern StorageClassImage = StorageClass 11
-
-pattern StorageClassStorageBuffer :: StorageClass
-pattern StorageClassStorageBuffer = StorageClass 12
-
-pattern StorageClassCallableDataKHR :: StorageClass
-pattern StorageClassCallableDataKHR = StorageClass 5328
-
-pattern StorageClassCallableDataNV :: StorageClass
-pattern StorageClassCallableDataNV = StorageClass 5328
-
-pattern StorageClassIncomingCallableDataKHR :: StorageClass
-pattern StorageClassIncomingCallableDataKHR = StorageClass 5329
-
-pattern StorageClassIncomingCallableDataNV :: StorageClass
-pattern StorageClassIncomingCallableDataNV = StorageClass 5329
-
-pattern StorageClassRayPayloadKHR :: StorageClass
-pattern StorageClassRayPayloadKHR = StorageClass 5338
-
-pattern StorageClassRayPayloadNV :: StorageClass
-pattern StorageClassRayPayloadNV = StorageClass 5338
-
-pattern StorageClassHitAttributeKHR :: StorageClass
-pattern StorageClassHitAttributeKHR = StorageClass 5339
-
-pattern StorageClassHitAttributeNV :: StorageClass
-pattern StorageClassHitAttributeNV = StorageClass 5339
-
-pattern StorageClassIncomingRayPayloadKHR :: StorageClass
-pattern StorageClassIncomingRayPayloadKHR = StorageClass 5342
-
-pattern StorageClassIncomingRayPayloadNV :: StorageClass
-pattern StorageClassIncomingRayPayloadNV = StorageClass 5342
-
-pattern StorageClassShaderRecordBufferKHR :: StorageClass
-pattern StorageClassShaderRecordBufferKHR = StorageClass 5343
-
-pattern StorageClassShaderRecordBufferNV :: StorageClass
-pattern StorageClassShaderRecordBufferNV = StorageClass 5343
-
-pattern StorageClassPhysicalStorageBuffer :: StorageClass
-pattern StorageClassPhysicalStorageBuffer = StorageClass 5349
-
-pattern StorageClassPhysicalStorageBufferEXT :: StorageClass
-pattern StorageClassPhysicalStorageBufferEXT = StorageClass 5349
-
-pattern StorageClassCodeSectionINTEL :: StorageClass
-pattern StorageClassCodeSectionINTEL = StorageClass 5605
-
-pattern StorageClassDeviceOnlyINTEL :: StorageClass
-pattern StorageClassDeviceOnlyINTEL = StorageClass 5936
-
-pattern StorageClassHostOnlyINTEL :: StorageClass
-pattern StorageClassHostOnlyINTEL = StorageClass 5937
-
-pattern StorageClassMax :: StorageClass
-pattern StorageClassMax = StorageClass 0x7fffffff
diff --git a/lib/Data/SpirV/Reflect/Enums/TypeFlags.hs b/lib/Data/SpirV/Reflect/Enums/TypeFlags.hs
--- a/lib/Data/SpirV/Reflect/Enums/TypeFlags.hs
+++ b/lib/Data/SpirV/Reflect/Enums/TypeFlags.hs
@@ -54,6 +54,9 @@
 pattern TYPE_FLAG_ARRAY :: TypeFlagBits
 pattern TYPE_FLAG_ARRAY = TypeFlagBits 0x20000000
 
+pattern TYPE_FLAG_REF :: TypeFlagBits
+pattern TYPE_FLAG_REF = TypeFlagBits 0x40000000
+
 typeFlagBitNames :: IsString label => [(TypeFlagBits, label)]
 typeFlagBitNames =
   [ (TYPE_FLAG_UNDEFINED, "UNDEFINED")
@@ -71,6 +74,7 @@
   , (TYPE_FLAG_EXTERNAL_MASK, "EXTERNAL_MASK")
   , (TYPE_FLAG_STRUCT, "STRUCT")
   , (TYPE_FLAG_ARRAY, "ARRAY")
+  , (TYPE_FLAG_ARRAY, "REF")
   ]
 
 typeFlagsNames :: IsString label => TypeFlags -> [label]
diff --git a/lib/Data/SpirV/Reflect/Enums/UserType.hs b/lib/Data/SpirV/Reflect/Enums/UserType.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/SpirV/Reflect/Enums/UserType.hs
@@ -0,0 +1,217 @@
+module Data.SpirV.Reflect.Enums.UserType where
+
+import Data.SpirV.Reflect.Enums.Common
+
+newtype UserType = UserType Int
+  deriving newtype (Eq, Ord, Show, Enum)
+
+pattern USER_TYPE_INVALID :: UserType
+pattern USER_TYPE_INVALID = UserType 0
+
+pattern USER_TYPE_CBUFFER :: UserType
+pattern USER_TYPE_CBUFFER = UserType 1
+
+pattern USER_TYPE_TBUFFER :: UserType
+pattern USER_TYPE_TBUFFER = UserType 2
+
+pattern USER_TYPE_APPEND_STRUCTURED_BUFFER :: UserType
+pattern USER_TYPE_APPEND_STRUCTURED_BUFFER = UserType 3
+
+pattern USER_TYPE_BUFFER :: UserType
+pattern USER_TYPE_BUFFER = UserType 4
+
+pattern USER_TYPE_BYTE_ADDRESS_BUFFER :: UserType
+pattern USER_TYPE_BYTE_ADDRESS_BUFFER = UserType 5
+
+pattern USER_TYPE_CONSTANT_BUFFER :: UserType
+pattern USER_TYPE_CONSTANT_BUFFER = UserType 6
+
+pattern USER_TYPE_CONSUME_STRUCTURED_BUFFER :: UserType
+pattern USER_TYPE_CONSUME_STRUCTURED_BUFFER = UserType 7
+
+pattern USER_TYPE_INPUT_PATCH :: UserType
+pattern USER_TYPE_INPUT_PATCH = UserType 8
+
+pattern USER_TYPE_OUTPUT_PATCH :: UserType
+pattern USER_TYPE_OUTPUT_PATCH = UserType 9
+
+pattern USER_TYPE_RASTERIZER_ORDERED_BUFFER :: UserType
+pattern USER_TYPE_RASTERIZER_ORDERED_BUFFER = UserType 10
+
+pattern USER_TYPE_RASTERIZER_ORDERED_BYTE_ADDRESS_BUFFER :: UserType
+pattern USER_TYPE_RASTERIZER_ORDERED_BYTE_ADDRESS_BUFFER = UserType 11
+
+pattern USER_TYPE_RASTERIZER_ORDERED_STRUCTURED_BUFFER :: UserType
+pattern USER_TYPE_RASTERIZER_ORDERED_STRUCTURED_BUFFER = UserType 12
+
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_1D :: UserType
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_1D = UserType 13
+
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_1D_ARRAY :: UserType
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_1D_ARRAY = UserType 14
+
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_2D :: UserType
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_2D = UserType 15
+
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_2D_ARRAY :: UserType
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_2D_ARRAY = UserType 16
+
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_3D :: UserType
+pattern USER_TYPE_RASTERIZER_ORDERED_TEXTURE_3D = UserType 17
+
+pattern USER_TYPE_RAYTRACING_ACCELERATION_STRUCTURE :: UserType
+pattern USER_TYPE_RAYTRACING_ACCELERATION_STRUCTURE = UserType 18
+
+pattern USER_TYPE_RW_BUFFER :: UserType
+pattern USER_TYPE_RW_BUFFER = UserType 19
+
+pattern USER_TYPE_RW_BYTE_ADDRESS_BUFFER :: UserType
+pattern USER_TYPE_RW_BYTE_ADDRESS_BUFFER = UserType 20
+
+pattern USER_TYPE_RW_STRUCTURED_BUFFER :: UserType
+pattern USER_TYPE_RW_STRUCTURED_BUFFER = UserType 21
+
+pattern USER_TYPE_RW_TEXTURE_1D :: UserType
+pattern USER_TYPE_RW_TEXTURE_1D = UserType 22
+
+pattern USER_TYPE_RW_TEXTURE_1D_ARRAY :: UserType
+pattern USER_TYPE_RW_TEXTURE_1D_ARRAY = UserType 23
+
+pattern USER_TYPE_RW_TEXTURE_2D :: UserType
+pattern USER_TYPE_RW_TEXTURE_2D = UserType 24
+
+pattern USER_TYPE_RW_TEXTURE_2D_ARRAY :: UserType
+pattern USER_TYPE_RW_TEXTURE_2D_ARRAY = UserType 25
+
+pattern USER_TYPE_RW_TEXTURE_3D :: UserType
+pattern USER_TYPE_RW_TEXTURE_3D = UserType 26
+
+pattern USER_TYPE_STRUCTURED_BUFFER :: UserType
+pattern USER_TYPE_STRUCTURED_BUFFER = UserType 27
+
+pattern USER_TYPE_SUBPASS_INPUT :: UserType
+pattern USER_TYPE_SUBPASS_INPUT = UserType 28
+
+pattern USER_TYPE_SUBPASS_INPUT_MS :: UserType
+pattern USER_TYPE_SUBPASS_INPUT_MS = UserType 29
+
+pattern USER_TYPE_TEXTURE_1D :: UserType
+pattern USER_TYPE_TEXTURE_1D = UserType 30
+
+pattern USER_TYPE_TEXTURE_1D_ARRAY :: UserType
+pattern USER_TYPE_TEXTURE_1D_ARRAY = UserType 31
+
+pattern USER_TYPE_TEXTURE_2D :: UserType
+pattern USER_TYPE_TEXTURE_2D = UserType 32
+
+pattern USER_TYPE_TEXTURE_2D_ARRAY :: UserType
+pattern USER_TYPE_TEXTURE_2D_ARRAY = UserType 33
+
+pattern USER_TYPE_TEXTURE_2DMS :: UserType
+pattern USER_TYPE_TEXTURE_2DMS = UserType 34
+
+pattern USER_TYPE_TEXTURE_2DMS_ARRAY :: UserType
+pattern USER_TYPE_TEXTURE_2DMS_ARRAY = UserType 35
+
+pattern USER_TYPE_TEXTURE_3D :: UserType
+pattern USER_TYPE_TEXTURE_3D = UserType 36
+
+pattern USER_TYPE_TEXTURE_BUFFER :: UserType
+pattern USER_TYPE_TEXTURE_BUFFER = UserType 37
+
+pattern USER_TYPE_TEXTURE_CUBE :: UserType
+pattern USER_TYPE_TEXTURE_CUBE = UserType 38
+
+pattern USER_TYPE_TEXTURE_CUBE_ARRAY :: UserType
+pattern USER_TYPE_TEXTURE_CUBE_ARRAY = UserType 39
+
+userTypeName :: IsString label => UserType -> Maybe label
+userTypeName = toLabel userTypeNames
+
+userTypeNames :: IsString label => [(UserType, label)]
+userTypeNames =
+  [ (USER_TYPE_INVALID, "Invalid")
+  , (USER_TYPE_CBUFFER, "cbuffer")
+  , (USER_TYPE_TBUFFER, "tbuffer")
+  , (USER_TYPE_APPEND_STRUCTURED_BUFFER, "AppendStructuredBuffer")
+  , (USER_TYPE_BUFFER, "Buffer")
+  , (USER_TYPE_BYTE_ADDRESS_BUFFER, "ByteAddressBuffer")
+  , (USER_TYPE_CONSTANT_BUFFER, "ConstantBuffer")
+  , (USER_TYPE_CONSUME_STRUCTURED_BUFFER, "ConsumeStructuredBuffer")
+  , (USER_TYPE_INPUT_PATCH, "InputPatch")
+  , (USER_TYPE_OUTPUT_PATCH, "OutputPatch")
+  , (USER_TYPE_RASTERIZER_ORDERED_BUFFER, "RasterizerOrderedBuffer")
+  , (USER_TYPE_RASTERIZER_ORDERED_BYTE_ADDRESS_BUFFER, "RasterizerOrderedByteAddressBuffer")
+  , (USER_TYPE_RASTERIZER_ORDERED_STRUCTURED_BUFFER, "RasterizerOrderedStructuredBuffer")
+  , (USER_TYPE_RASTERIZER_ORDERED_TEXTURE_1D, "RasterizerOrderedTexture1D")
+  , (USER_TYPE_RASTERIZER_ORDERED_TEXTURE_1D_ARRAY, "RasterizerOrderedTexture1DArray")
+  , (USER_TYPE_RASTERIZER_ORDERED_TEXTURE_2D, "RasterizerOrderedTexture2D")
+  , (USER_TYPE_RASTERIZER_ORDERED_TEXTURE_2D_ARRAY, "RasterizerOrdered_Texture2DArray")
+  , (USER_TYPE_RASTERIZER_ORDERED_TEXTURE_3D, "RasterizerOrderedTexture3D")
+  , (USER_TYPE_RAYTRACING_ACCELERATION_STRUCTURE, "RaytracingAccelerationStructure")
+  , (USER_TYPE_RW_BUFFER, "RWBuffer")
+  , (USER_TYPE_RW_BYTE_ADDRESS_BUFFER, "RWByteAddressBuffer")
+  , (USER_TYPE_RW_STRUCTURED_BUFFER, "RWStructuredBuffer")
+  , (USER_TYPE_RW_TEXTURE_1D, "RWTexture1D")
+  , (USER_TYPE_RW_TEXTURE_1D_ARRAY, "RWTexture1DArray")
+  , (USER_TYPE_RW_TEXTURE_2D, "RWTexture2D")
+  , (USER_TYPE_RW_TEXTURE_2D_ARRAY, "RWTexture2DArray")
+  , (USER_TYPE_RW_TEXTURE_3D, "RWTexture3D")
+  , (USER_TYPE_STRUCTURED_BUFFER, "StructuredBuffer")
+  , (USER_TYPE_SUBPASS_INPUT, "SubpassInput")
+  , (USER_TYPE_SUBPASS_INPUT_MS, "SubpassInputMS")
+  , (USER_TYPE_TEXTURE_1D, "Texture1D")
+  , (USER_TYPE_TEXTURE_1D_ARRAY, "Texture1DArray")
+  , (USER_TYPE_TEXTURE_2D, "Texture2D")
+  , (USER_TYPE_TEXTURE_2D_ARRAY, "Texture2DArray")
+  , (USER_TYPE_TEXTURE_2DMS, "Texture2DMS")
+  , (USER_TYPE_TEXTURE_2DMS_ARRAY, "Texture2DMSArray")
+  , (USER_TYPE_TEXTURE_3D, "Texture3D")
+  , (USER_TYPE_TEXTURE_BUFFER, "TextureBuffer")
+  , (USER_TYPE_TEXTURE_CUBE, "TextureCube")
+  , (USER_TYPE_TEXTURE_CUBE_ARRAY, "TextureCubeArray")
+  ]
+
+userTypeId :: (Eq label, IsString label) => label -> Maybe UserType
+userTypeId = \case
+  "Invalid" -> Just USER_TYPE_INVALID
+  "cbuffer" -> Just USER_TYPE_CBUFFER
+  "tbuffer" -> Just USER_TYPE_TBUFFER
+  "AppendStructuredBuffer" -> Just USER_TYPE_APPEND_STRUCTURED_BUFFER
+  "Buffer" -> Just USER_TYPE_BUFFER
+  "ByteAddressBuffer" -> Just USER_TYPE_BYTE_ADDRESS_BUFFER
+  "ConstantBuffer" -> Just USER_TYPE_CONSTANT_BUFFER
+  "ConsumeStructuredBuffer" -> Just USER_TYPE_CONSUME_STRUCTURED_BUFFER
+  "InputPatch" -> Just USER_TYPE_INPUT_PATCH
+  "OutputPatch" -> Just USER_TYPE_OUTPUT_PATCH
+  "RasterizerOrderedBuffer" -> Just USER_TYPE_RASTERIZER_ORDERED_BUFFER
+  "RasterizerOrderedByteAddressBuffer" -> Just USER_TYPE_RASTERIZER_ORDERED_BYTE_ADDRESS_BUFFER
+  "RasterizerOrderedStructuredBuffer" -> Just USER_TYPE_RASTERIZER_ORDERED_STRUCTURED_BUFFER
+  "RasterizerOrderedTexture1D" -> Just USER_TYPE_RASTERIZER_ORDERED_TEXTURE_1D
+  "RasterizerOrderedTexture1DArray" -> Just USER_TYPE_RASTERIZER_ORDERED_TEXTURE_1D_ARRAY
+  "RasterizerOrderedTexture2D" -> Just USER_TYPE_RASTERIZER_ORDERED_TEXTURE_2D
+  "RasterizerOrderedTexture2DArray" -> Just USER_TYPE_RASTERIZER_ORDERED_TEXTURE_2D_ARRAY
+  "RasterizerOrderedTexture3D" -> Just USER_TYPE_RASTERIZER_ORDERED_TEXTURE_3D
+  "RaytracingAccelerationStructure" -> Just USER_TYPE_RAYTRACING_ACCELERATION_STRUCTURE
+  "RWBuffer" -> Just USER_TYPE_RW_BUFFER
+  "RWByteAddressBuffer" -> Just USER_TYPE_RW_BYTE_ADDRESS_BUFFER
+  "RWStructuredBuffer" -> Just USER_TYPE_RW_STRUCTURED_BUFFER
+  "RWTexture1D" -> Just USER_TYPE_RW_TEXTURE_1D
+  "RWTexture1DArray" -> Just USER_TYPE_RW_TEXTURE_1D_ARRAY
+  "RWTexture2D" -> Just USER_TYPE_RW_TEXTURE_2D
+  "RWTexture2DArray" -> Just USER_TYPE_RW_TEXTURE_2D_ARRAY
+  "RWTexture3D" -> Just USER_TYPE_RW_TEXTURE_3D
+  "StructuredBuffer" -> Just USER_TYPE_STRUCTURED_BUFFER
+  "SubpassInput" -> Just USER_TYPE_SUBPASS_INPUT
+  "SubpassInputMs" -> Just USER_TYPE_SUBPASS_INPUT_MS
+  "Texture1D" -> Just USER_TYPE_TEXTURE_1D
+  "Texture1DArray" -> Just USER_TYPE_TEXTURE_1D_ARRAY
+  "Texture2D" -> Just USER_TYPE_TEXTURE_2D
+  "Texture2DArray" -> Just USER_TYPE_TEXTURE_2D_ARRAY
+  "Texture2DMS" -> Just USER_TYPE_TEXTURE_2DMS
+  "Texture2DMSArray" -> Just USER_TYPE_TEXTURE_2DMS_ARRAY
+  "Texture3D" -> Just USER_TYPE_TEXTURE_3D
+  "TextureBuffer" -> Just USER_TYPE_TEXTURE_BUFFER
+  "TextureCube" -> Just USER_TYPE_TEXTURE_CUBE
+  "TextureCubeArray" -> Just USER_TYPE_TEXTURE_CUBE_ARRAY
+  _ -> Nothing
diff --git a/lib/Data/SpirV/Reflect/InterfaceVariable.hs b/lib/Data/SpirV/Reflect/InterfaceVariable.hs
--- a/lib/Data/SpirV/Reflect/InterfaceVariable.hs
+++ b/lib/Data/SpirV/Reflect/InterfaceVariable.hs
@@ -3,27 +3,28 @@
   , WordOffset(..)
   ) where
 
+import Data.SpirV.Enum qualified as SpirV
+import Data.SpirV.Reflect.Enums qualified as Reflect
+import Data.SpirV.Reflect.Traits qualified as Traits
+import Data.SpirV.Reflect.TypeDescription (TypeDescription)
 import Data.Text (Text)
 import Data.Vector (Vector)
 import Data.Word (Word32)
 import GHC.Generics (Generic)
 
-import Data.SpirV.Reflect.Enums qualified as Enums
-import Data.SpirV.Reflect.Traits qualified as Traits
-import Data.SpirV.Reflect.TypeDescription (TypeDescription)
-
 data InterfaceVariable = InterfaceVariable
   { spirv_id         :: Maybe Word32
   , name             :: Maybe Text
   , location         :: Word32
-  , storage_class    :: Enums.StorageClass
+  , component        :: Maybe Word32
+  , storage_class    :: SpirV.StorageClass
   , semantic         :: Maybe Text
-  , decoration_flags :: Enums.DecorationFlags
-  , built_in         :: Enums.BuiltIn
+  , decoration_flags :: Reflect.DecorationFlags
+  , built_in         :: Maybe SpirV.BuiltIn
   , numeric          :: Traits.Numeric
   , array            :: Traits.Array
   , members          :: Vector InterfaceVariable
-  , format           :: Enums.Format
+  , format           :: Reflect.Format
   , type_description :: Maybe TypeDescription
   , word_offset      :: WordOffset
   }
diff --git a/lib/Data/SpirV/Reflect/Module.hs b/lib/Data/SpirV/Reflect/Module.hs
--- a/lib/Data/SpirV/Reflect/Module.hs
+++ b/lib/Data/SpirV/Reflect/Module.hs
@@ -11,6 +11,7 @@
 import Data.SpirV.Reflect.DescriptorSet (DescriptorSet)
 import Data.SpirV.Reflect.Enums qualified as Enums
 import Data.SpirV.Reflect.InterfaceVariable (InterfaceVariable)
+import Data.SpirV.Reflect.SpecializationConstant (SpecializationConstant)
 
 data Module = Module
   { generator               :: Enums.Generator
@@ -25,5 +26,6 @@
   , input_variables         :: Vector InterfaceVariable
   , output_variables        :: Vector InterfaceVariable
   , push_constants          :: Vector BlockVariable
+  , spec_constants          :: Vector SpecializationConstant
   }
   deriving (Eq, Show, Generic)
diff --git a/lib/Data/SpirV/Reflect/SpecializationConstant.hs b/lib/Data/SpirV/Reflect/SpecializationConstant.hs
new file mode 100644
--- /dev/null
+++ b/lib/Data/SpirV/Reflect/SpecializationConstant.hs
@@ -0,0 +1,14 @@
+module Data.SpirV.Reflect.SpecializationConstant
+  ( SpecializationConstant(..)
+  ) where
+
+import Data.Text (Text)
+import Data.Word (Word32)
+import GHC.Generics (Generic)
+
+data SpecializationConstant = SpecializationConstant
+  { spirv_id    :: Maybe Word32
+  , constant_id :: Word32
+  , name        :: Maybe Text
+  }
+  deriving (Eq, Show, Generic)
diff --git a/lib/Data/SpirV/Reflect/Traits.hs b/lib/Data/SpirV/Reflect/Traits.hs
--- a/lib/Data/SpirV/Reflect/Traits.hs
+++ b/lib/Data/SpirV/Reflect/Traits.hs
@@ -1,11 +1,12 @@
 module Data.SpirV.Reflect.Traits where
 
+import Data.SpirV.Enum qualified as SpirV
+import Data.SpirV.Enum.Dim qualified as Dim
+import Data.SpirV.Enum.ImageFormat qualified as ImageFormat
 import Data.Vector.Storable qualified as Storable
 import Data.Word (Word32)
 import GHC.Generics (Generic)
 
-import Data.SpirV.Reflect.Enums qualified as Enums
-
 data Numeric = Numeric
   { scalar :: Scalar
   , vector :: Vector
@@ -13,17 +14,36 @@
   }
   deriving (Eq, Ord, Show, Generic)
 
+emptyNumeric :: Numeric
+emptyNumeric =
+  Numeric
+  { scalar = emptyScalar
+  , vector = emptyVector
+  , matrix = emptyMatrix
+  }
+
 data Scalar = Scalar
-  { width      :: Word32
-  , signedness :: Word32
+  { width  :: Word32
+  , signed :: Bool
   }
   deriving (Eq, Ord, Show, Generic)
 
+emptyScalar :: Scalar
+emptyScalar = Scalar
+  { width = 0
+  , signed = False
+  }
+
 data Vector = Vector
   { component_count :: Word32
   }
   deriving (Eq, Ord, Show, Generic)
 
+emptyVector :: Vector
+emptyVector = Vector
+  { component_count = 0
+  }
+
 data Matrix = Matrix
   { column_count :: Word32
   , row_count    :: Word32
@@ -31,6 +51,13 @@
   }
   deriving (Eq, Ord, Show, Generic)
 
+emptyMatrix :: Matrix
+emptyMatrix = Matrix
+  { column_count = 0
+  , row_count = 0
+  , stride = 0
+  }
+
 data Array = Array
   { dims_count :: Word32
   , dims       :: Storable.Vector Word32
@@ -38,12 +65,29 @@
   }
   deriving (Eq, Ord, Show, Generic)
 
+emptyArray :: Array
+emptyArray = Array
+  { dims_count = 0
+  , dims = mempty
+  , stride = Nothing
+  }
+
 data Image = Image
-  { dim          :: Enums.Dim
+  { dim          :: SpirV.Dim
   , depth        :: Word32
   , arrayed      :: Word32
   , ms           :: Word32 -- ^ 0: single-sampled, 1: multisampled
   , sampled      :: Word32
-  , image_format :: Enums.ImageFormat
+  , image_format :: SpirV.ImageFormat
   }
   deriving (Eq, Ord, Show, Generic)
+
+emptyImage :: Image
+emptyImage = Image
+  { dim = Dim.Dim1D
+  , depth = 0
+  , arrayed = 0
+  , ms = 0
+  , sampled = 0
+  , image_format = ImageFormat.Unknown
+  }
diff --git a/lib/Data/SpirV/Reflect/TypeDescription.hs b/lib/Data/SpirV/Reflect/TypeDescription.hs
--- a/lib/Data/SpirV/Reflect/TypeDescription.hs
+++ b/lib/Data/SpirV/Reflect/TypeDescription.hs
@@ -1,22 +1,24 @@
 module Data.SpirV.Reflect.TypeDescription where
 
+import Data.SpirV.Enum qualified as SpirV
+import Data.SpirV.Reflect.Enums qualified as Reflect
+import Data.SpirV.Reflect.Traits qualified as Traits
 import Data.Text (Text)
 import Data.Vector (Vector)
-import GHC.Generics (Generic)
 import Data.Word (Word32)
-
-import Data.SpirV.Reflect.Enums qualified as Enums
-import Data.SpirV.Reflect.Traits qualified as Traits
+import GHC.Generics (Generic)
 
 data TypeDescription = TypeDescription
-  { id                 :: Maybe Word32
-  , op                 :: Maybe Enums.Op
-  , type_name          :: Maybe Text
-  , struct_member_name :: Maybe Text
-  , storage_class      :: Enums.StorageClass
-  , type_flags         :: Enums.TypeFlags
-  , traits             :: Maybe Traits
-  , members            :: Vector TypeDescription
+  { id                      :: Maybe Word32
+  , op                      :: Maybe SpirV.Op
+  , type_name               :: Maybe Text
+  , struct_member_name      :: Maybe Text
+  , storage_class           :: SpirV.StorageClass
+  , type_flags              :: Reflect.TypeFlags
+  , traits                  :: Maybe Traits
+  , struct_type_description :: Maybe TypeDescription -- ^ If underlying type is a struct (ex. array of structs) this gives access to the 'OpTypeStruct'.
+  , copied                  :: Maybe Word32 -- ^ Some pointers to SpvReflectTypeDescription are really just copies of another reference to the same OpType.
+  , members                 :: Vector TypeDescription -- XXX: deprecated
   }
   deriving (Eq, Show, Generic)
 
@@ -26,3 +28,10 @@
   , array   :: Traits.Array
   }
   deriving (Eq, Show, Generic)
+
+emptyTraits :: Traits
+emptyTraits = Traits
+  { numeric = Traits.emptyNumeric
+  , image   = Traits.emptyImage
+  , array   = Traits.emptyArray
+  }
diff --git a/spirv-reflect-types.cabal b/spirv-reflect-types.cabal
--- a/spirv-reflect-types.cabal
+++ b/spirv-reflect-types.cabal
@@ -1,11 +1,11 @@
 cabal-version: 1.12
 
--- This file has been generated from package.yaml by hpack version 0.34.4.
+-- This file has been generated from package.yaml by hpack version 0.36.0.
 --
 -- see: https://github.com/sol/hpack
 
 name:           spirv-reflect-types
-version:        0.2
+version:        0.3
 synopsis:       Data types from spirv-reflect tool.
 category:       Graphics
 author:         IC Rainbow
@@ -36,14 +36,11 @@
       Data.SpirV.Reflect.Enums.ResourceFlags
       Data.SpirV.Reflect.Enums.Result
       Data.SpirV.Reflect.Enums.ShaderStage
-      Data.SpirV.Reflect.Enums.SpirvBuiltin
-      Data.SpirV.Reflect.Enums.SpirvDim
-      Data.SpirV.Reflect.Enums.SpirvImageFormat
-      Data.SpirV.Reflect.Enums.SpirvOp
-      Data.SpirV.Reflect.Enums.SpirvStorageClass
       Data.SpirV.Reflect.Enums.TypeFlags
+      Data.SpirV.Reflect.Enums.UserType
       Data.SpirV.Reflect.InterfaceVariable
       Data.SpirV.Reflect.Module
+      Data.SpirV.Reflect.SpecializationConstant
       Data.SpirV.Reflect.Traits
       Data.SpirV.Reflect.TypeDescription
   other-modules:
@@ -68,6 +65,7 @@
   build-depends:
       base >=4.7 && <5
     , containers
+    , spirv-enum ==0.1.*
     , text
     , vector
   default-language: Haskell2010
