diff --git a/spirv-enum.cabal b/spirv-enum.cabal
new file mode 100644
--- /dev/null
+++ b/spirv-enum.cabal
@@ -0,0 +1,82 @@
+cabal-version: 2.2
+
+-- This file has been generated from package.yaml by hpack version 0.36.0.
+--
+-- see: https://github.com/sol/hpack
+
+name:           spirv-enum
+version:        0.1.0.0
+synopsis:       SPIR-V enumerations generated from Khronos JSON.
+category:       Graphics
+author:         IC Rainbow
+maintainer:     aenor.realm@gmail.com
+copyright:      2024 IC Rainbow
+license:        BSD-3-Clause
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://gitlab.com/dpwiz/spirv-headers
+
+library
+  exposed-modules:
+      Data.SpirV.Enum
+      Data.SpirV.Enum.AccessQualifier
+      Data.SpirV.Enum.AddressingModel
+      Data.SpirV.Enum.BuiltIn
+      Data.SpirV.Enum.Capability
+      Data.SpirV.Enum.CooperativeMatrixLayout
+      Data.SpirV.Enum.CooperativeMatrixOperands
+      Data.SpirV.Enum.CooperativeMatrixUse
+      Data.SpirV.Enum.Decoration
+      Data.SpirV.Enum.Dim
+      Data.SpirV.Enum.ExecutionMode
+      Data.SpirV.Enum.ExecutionModel
+      Data.SpirV.Enum.FPDenormMode
+      Data.SpirV.Enum.FPFastMathMode
+      Data.SpirV.Enum.FPOperationMode
+      Data.SpirV.Enum.FPRoundingMode
+      Data.SpirV.Enum.FragmentShadingRate
+      Data.SpirV.Enum.FunctionControl
+      Data.SpirV.Enum.FunctionParameterAttribute
+      Data.SpirV.Enum.GroupOperation
+      Data.SpirV.Enum.HostAccessQualifier
+      Data.SpirV.Enum.ImageChannelDataType
+      Data.SpirV.Enum.ImageChannelOrder
+      Data.SpirV.Enum.ImageFormat
+      Data.SpirV.Enum.ImageOperands
+      Data.SpirV.Enum.InitializationModeQualifier
+      Data.SpirV.Enum.KernelEnqueueFlags
+      Data.SpirV.Enum.KernelProfilingInfo
+      Data.SpirV.Enum.LinkageType
+      Data.SpirV.Enum.LoadCacheControl
+      Data.SpirV.Enum.LoopControl
+      Data.SpirV.Enum.MemoryAccess
+      Data.SpirV.Enum.MemoryModel
+      Data.SpirV.Enum.MemorySemantics
+      Data.SpirV.Enum.NamedMaximumNumberOfRegisters
+      Data.SpirV.Enum.Op
+      Data.SpirV.Enum.OverflowModes
+      Data.SpirV.Enum.PackedVectorFormat
+      Data.SpirV.Enum.QuantizationModes
+      Data.SpirV.Enum.RawAccessChainOperands
+      Data.SpirV.Enum.RayFlags
+      Data.SpirV.Enum.RayQueryCandidateIntersectionType
+      Data.SpirV.Enum.RayQueryCommittedIntersectionType
+      Data.SpirV.Enum.RayQueryIntersection
+      Data.SpirV.Enum.SamplerAddressingMode
+      Data.SpirV.Enum.SamplerFilterMode
+      Data.SpirV.Enum.Scope
+      Data.SpirV.Enum.SelectionControl
+      Data.SpirV.Enum.SourceLanguage
+      Data.SpirV.Enum.StorageClass
+      Data.SpirV.Enum.StoreCacheControl
+  other-modules:
+      Paths_spirv_enum
+  autogen-modules:
+      Paths_spirv_enum
+  hs-source-dirs:
+      src
+  build-depends:
+      base >=4.7 && <5
+  default-language: Haskell2010
diff --git a/src/Data/SpirV/Enum.hs b/src/Data/SpirV/Enum.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum.hs
@@ -0,0 +1,103 @@
+module Data.SpirV.Enum
+  ( module Data.SpirV.Enum.AccessQualifier
+  , module Data.SpirV.Enum.AddressingModel
+  , module Data.SpirV.Enum.BuiltIn
+  , module Data.SpirV.Enum.Capability
+  , module Data.SpirV.Enum.CooperativeMatrixLayout
+  , module Data.SpirV.Enum.CooperativeMatrixOperands
+  , module Data.SpirV.Enum.CooperativeMatrixUse
+  , module Data.SpirV.Enum.Decoration
+  , module Data.SpirV.Enum.Dim
+  , module Data.SpirV.Enum.ExecutionMode
+  , module Data.SpirV.Enum.ExecutionModel
+  , module Data.SpirV.Enum.FPDenormMode
+  , module Data.SpirV.Enum.FPFastMathMode
+  , module Data.SpirV.Enum.FPOperationMode
+  , module Data.SpirV.Enum.FPRoundingMode
+  , module Data.SpirV.Enum.FragmentShadingRate
+  , module Data.SpirV.Enum.FunctionControl
+  , module Data.SpirV.Enum.FunctionParameterAttribute
+  , module Data.SpirV.Enum.GroupOperation
+  , module Data.SpirV.Enum.HostAccessQualifier
+  , module Data.SpirV.Enum.ImageChannelDataType
+  , module Data.SpirV.Enum.ImageChannelOrder
+  , module Data.SpirV.Enum.ImageFormat
+  , module Data.SpirV.Enum.ImageOperands
+  , module Data.SpirV.Enum.InitializationModeQualifier
+  , module Data.SpirV.Enum.KernelEnqueueFlags
+  , module Data.SpirV.Enum.KernelProfilingInfo
+  , module Data.SpirV.Enum.LinkageType
+  , module Data.SpirV.Enum.LoadCacheControl
+  , module Data.SpirV.Enum.LoopControl
+  , module Data.SpirV.Enum.MemoryAccess
+  , module Data.SpirV.Enum.MemoryModel
+  , module Data.SpirV.Enum.MemorySemantics
+  , module Data.SpirV.Enum.NamedMaximumNumberOfRegisters
+  , module Data.SpirV.Enum.Op
+  , module Data.SpirV.Enum.OverflowModes
+  , module Data.SpirV.Enum.PackedVectorFormat
+  , module Data.SpirV.Enum.QuantizationModes
+  , module Data.SpirV.Enum.RawAccessChainOperands
+  , module Data.SpirV.Enum.RayFlags
+  , module Data.SpirV.Enum.RayQueryCandidateIntersectionType
+  , module Data.SpirV.Enum.RayQueryCommittedIntersectionType
+  , module Data.SpirV.Enum.RayQueryIntersection
+  , module Data.SpirV.Enum.SamplerAddressingMode
+  , module Data.SpirV.Enum.SamplerFilterMode
+  , module Data.SpirV.Enum.Scope
+  , module Data.SpirV.Enum.SelectionControl
+  , module Data.SpirV.Enum.SourceLanguage
+  , module Data.SpirV.Enum.StorageClass
+  , module Data.SpirV.Enum.StoreCacheControl
+  ) where
+
+import Data.SpirV.Enum.AccessQualifier (AccessQualifier(..))
+import Data.SpirV.Enum.AddressingModel (AddressingModel(..))
+import Data.SpirV.Enum.BuiltIn (BuiltIn(..))
+import Data.SpirV.Enum.Capability (Capability(..))
+import Data.SpirV.Enum.CooperativeMatrixLayout (CooperativeMatrixLayout(..))
+import Data.SpirV.Enum.CooperativeMatrixOperands (CooperativeMatrixOperands, CooperativeMatrixOperandsBits(..))
+import Data.SpirV.Enum.CooperativeMatrixUse (CooperativeMatrixUse(..))
+import Data.SpirV.Enum.Decoration (Decoration(..))
+import Data.SpirV.Enum.Dim (Dim(..))
+import Data.SpirV.Enum.ExecutionMode (ExecutionMode(..))
+import Data.SpirV.Enum.ExecutionModel (ExecutionModel(..))
+import Data.SpirV.Enum.FPDenormMode (FPDenormMode(..))
+import Data.SpirV.Enum.FPFastMathMode (FPFastMathMode, FPFastMathModeBits(..))
+import Data.SpirV.Enum.FPOperationMode (FPOperationMode(..))
+import Data.SpirV.Enum.FPRoundingMode (FPRoundingMode(..))
+import Data.SpirV.Enum.FragmentShadingRate (FragmentShadingRate, FragmentShadingRateBits(..))
+import Data.SpirV.Enum.FunctionControl (FunctionControl, FunctionControlBits(..))
+import Data.SpirV.Enum.FunctionParameterAttribute (FunctionParameterAttribute(..))
+import Data.SpirV.Enum.GroupOperation (GroupOperation(..))
+import Data.SpirV.Enum.HostAccessQualifier (HostAccessQualifier(..))
+import Data.SpirV.Enum.ImageChannelDataType (ImageChannelDataType(..))
+import Data.SpirV.Enum.ImageChannelOrder (ImageChannelOrder(..))
+import Data.SpirV.Enum.ImageFormat (ImageFormat(..))
+import Data.SpirV.Enum.ImageOperands (ImageOperands, ImageOperandsBits(..))
+import Data.SpirV.Enum.InitializationModeQualifier (InitializationModeQualifier(..))
+import Data.SpirV.Enum.KernelEnqueueFlags (KernelEnqueueFlags(..))
+import Data.SpirV.Enum.KernelProfilingInfo (KernelProfilingInfo, KernelProfilingInfoBits(..))
+import Data.SpirV.Enum.LinkageType (LinkageType(..))
+import Data.SpirV.Enum.LoadCacheControl (LoadCacheControl(..))
+import Data.SpirV.Enum.LoopControl (LoopControl, LoopControlBits(..))
+import Data.SpirV.Enum.MemoryAccess (MemoryAccess, MemoryAccessBits(..))
+import Data.SpirV.Enum.MemoryModel (MemoryModel(..))
+import Data.SpirV.Enum.MemorySemantics (MemorySemantics, MemorySemanticsBits(..))
+import Data.SpirV.Enum.NamedMaximumNumberOfRegisters (NamedMaximumNumberOfRegisters(..))
+import Data.SpirV.Enum.Op (Op(..))
+import Data.SpirV.Enum.OverflowModes (OverflowModes(..))
+import Data.SpirV.Enum.PackedVectorFormat (PackedVectorFormat(..))
+import Data.SpirV.Enum.QuantizationModes (QuantizationModes(..))
+import Data.SpirV.Enum.RawAccessChainOperands (RawAccessChainOperands, RawAccessChainOperandsBits(..))
+import Data.SpirV.Enum.RayFlags (RayFlags, RayFlagsBits(..))
+import Data.SpirV.Enum.RayQueryCandidateIntersectionType (RayQueryCandidateIntersectionType(..))
+import Data.SpirV.Enum.RayQueryCommittedIntersectionType (RayQueryCommittedIntersectionType(..))
+import Data.SpirV.Enum.RayQueryIntersection (RayQueryIntersection(..))
+import Data.SpirV.Enum.SamplerAddressingMode (SamplerAddressingMode(..))
+import Data.SpirV.Enum.SamplerFilterMode (SamplerFilterMode(..))
+import Data.SpirV.Enum.Scope (Scope(..))
+import Data.SpirV.Enum.SelectionControl (SelectionControl, SelectionControlBits(..))
+import Data.SpirV.Enum.SourceLanguage (SourceLanguage(..))
+import Data.SpirV.Enum.StorageClass (StorageClass(..))
+import Data.SpirV.Enum.StoreCacheControl (StoreCacheControl(..))
diff --git a/src/Data/SpirV/Enum/AccessQualifier.hs b/src/Data/SpirV/Enum/AccessQualifier.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/AccessQualifier.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.AccessQualifier where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype AccessQualifier = AccessQualifier Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show AccessQualifier where
+  showsPrec p (AccessQualifier v) = case v of
+    0 -> showString "ReadOnly"
+    1 -> showString "WriteOnly"
+    2 -> showString "ReadWrite"
+    x -> showParen (p > 10) $ showString "AccessQualifier " . showsPrec (p + 1) x
+
+pattern ReadOnly :: AccessQualifier
+pattern ReadOnly = AccessQualifier 0
+
+pattern WriteOnly :: AccessQualifier
+pattern WriteOnly = AccessQualifier 1
+
+pattern ReadWrite :: AccessQualifier
+pattern ReadWrite = AccessQualifier 2
diff --git a/src/Data/SpirV/Enum/AddressingModel.hs b/src/Data/SpirV/Enum/AddressingModel.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/AddressingModel.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.AddressingModel where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype AddressingModel = AddressingModel Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show AddressingModel where
+  showsPrec p (AddressingModel v) = case v of
+    0 -> showString "Logical"
+    1 -> showString "Physical32"
+    2 -> showString "Physical64"
+    5348 -> showString "PhysicalStorageBuffer64"
+    x -> showParen (p > 10) $ showString "AddressingModel " . showsPrec (p + 1) x
+
+pattern Logical :: AddressingModel
+pattern Logical = AddressingModel 0
+
+pattern Physical32 :: AddressingModel
+pattern Physical32 = AddressingModel 1
+
+pattern Physical64 :: AddressingModel
+pattern Physical64 = AddressingModel 2
+
+pattern PhysicalStorageBuffer64 :: AddressingModel
+pattern PhysicalStorageBuffer64 = AddressingModel 5348
+
+pattern PhysicalStorageBuffer64EXT :: AddressingModel
+pattern PhysicalStorageBuffer64EXT = AddressingModel 5348
diff --git a/src/Data/SpirV/Enum/BuiltIn.hs b/src/Data/SpirV/Enum/BuiltIn.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/BuiltIn.hs
@@ -0,0 +1,546 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.BuiltIn where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype BuiltIn = BuiltIn Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show BuiltIn where
+  showsPrec p (BuiltIn v) = case v of
+    0 -> showString "Position"
+    1 -> showString "PointSize"
+    3 -> showString "ClipDistance"
+    4 -> showString "CullDistance"
+    5 -> showString "VertexId"
+    6 -> showString "InstanceId"
+    7 -> showString "PrimitiveId"
+    8 -> showString "InvocationId"
+    9 -> showString "Layer"
+    10 -> showString "ViewportIndex"
+    11 -> showString "TessLevelOuter"
+    12 -> showString "TessLevelInner"
+    13 -> showString "TessCoord"
+    14 -> showString "PatchVertices"
+    15 -> showString "FragCoord"
+    16 -> showString "PointCoord"
+    17 -> showString "FrontFacing"
+    18 -> showString "SampleId"
+    19 -> showString "SamplePosition"
+    20 -> showString "SampleMask"
+    22 -> showString "FragDepth"
+    23 -> showString "HelperInvocation"
+    24 -> showString "NumWorkgroups"
+    25 -> showString "WorkgroupSize"
+    26 -> showString "WorkgroupId"
+    27 -> showString "LocalInvocationId"
+    28 -> showString "GlobalInvocationId"
+    29 -> showString "LocalInvocationIndex"
+    30 -> showString "WorkDim"
+    31 -> showString "GlobalSize"
+    32 -> showString "EnqueuedWorkgroupSize"
+    33 -> showString "GlobalOffset"
+    34 -> showString "GlobalLinearId"
+    36 -> showString "SubgroupSize"
+    37 -> showString "SubgroupMaxSize"
+    38 -> showString "NumSubgroups"
+    39 -> showString "NumEnqueuedSubgroups"
+    40 -> showString "SubgroupId"
+    41 -> showString "SubgroupLocalInvocationId"
+    42 -> showString "VertexIndex"
+    43 -> showString "InstanceIndex"
+    4160 -> showString "CoreIDARM"
+    4161 -> showString "CoreCountARM"
+    4162 -> showString "CoreMaxIDARM"
+    4163 -> showString "WarpIDARM"
+    4164 -> showString "WarpMaxIDARM"
+    4416 -> showString "SubgroupEqMask"
+    4417 -> showString "SubgroupGeMask"
+    4418 -> showString "SubgroupGtMask"
+    4419 -> showString "SubgroupLeMask"
+    4420 -> showString "SubgroupLtMask"
+    4424 -> showString "BaseVertex"
+    4425 -> showString "BaseInstance"
+    4426 -> showString "DrawIndex"
+    4432 -> showString "PrimitiveShadingRateKHR"
+    4438 -> showString "DeviceIndex"
+    4440 -> showString "ViewIndex"
+    4444 -> showString "ShadingRateKHR"
+    4992 -> showString "BaryCoordNoPerspAMD"
+    4993 -> showString "BaryCoordNoPerspCentroidAMD"
+    4994 -> showString "BaryCoordNoPerspSampleAMD"
+    4995 -> showString "BaryCoordSmoothAMD"
+    4996 -> showString "BaryCoordSmoothCentroidAMD"
+    4997 -> showString "BaryCoordSmoothSampleAMD"
+    4998 -> showString "BaryCoordPullModelAMD"
+    5014 -> showString "FragStencilRefEXT"
+    5021 -> showString "CoalescedInputCountAMDX"
+    5073 -> showString "ShaderIndexAMDX"
+    5253 -> showString "ViewportMaskNV"
+    5257 -> showString "SecondaryPositionNV"
+    5258 -> showString "SecondaryViewportMaskNV"
+    5261 -> showString "PositionPerViewNV"
+    5262 -> showString "ViewportMaskPerViewNV"
+    5264 -> showString "FullyCoveredEXT"
+    5274 -> showString "TaskCountNV"
+    5275 -> showString "PrimitiveCountNV"
+    5276 -> showString "PrimitiveIndicesNV"
+    5277 -> showString "ClipDistancePerViewNV"
+    5278 -> showString "CullDistancePerViewNV"
+    5279 -> showString "LayerPerViewNV"
+    5280 -> showString "MeshViewCountNV"
+    5281 -> showString "MeshViewIndicesNV"
+    5286 -> showString "BaryCoordKHR"
+    5287 -> showString "BaryCoordNoPerspKHR"
+    5292 -> showString "FragSizeEXT"
+    5293 -> showString "FragInvocationCountEXT"
+    5294 -> showString "PrimitivePointIndicesEXT"
+    5295 -> showString "PrimitiveLineIndicesEXT"
+    5296 -> showString "PrimitiveTriangleIndicesEXT"
+    5299 -> showString "CullPrimitiveEXT"
+    5319 -> showString "LaunchIdKHR"
+    5320 -> showString "LaunchSizeKHR"
+    5321 -> showString "WorldRayOriginKHR"
+    5322 -> showString "WorldRayDirectionKHR"
+    5323 -> showString "ObjectRayOriginKHR"
+    5324 -> showString "ObjectRayDirectionKHR"
+    5325 -> showString "RayTminKHR"
+    5326 -> showString "RayTmaxKHR"
+    5327 -> showString "InstanceCustomIndexKHR"
+    5330 -> showString "ObjectToWorldKHR"
+    5331 -> showString "WorldToObjectKHR"
+    5332 -> showString "HitTNV"
+    5333 -> showString "HitKindKHR"
+    5334 -> showString "CurrentRayTimeNV"
+    5335 -> showString "HitTriangleVertexPositionsKHR"
+    5337 -> showString "HitMicroTriangleVertexPositionsNV"
+    5344 -> showString "HitMicroTriangleVertexBarycentricsNV"
+    5351 -> showString "IncomingRayFlagsKHR"
+    5352 -> showString "RayGeometryIndexKHR"
+    5374 -> showString "WarpsPerSMNV"
+    5375 -> showString "SMCountNV"
+    5376 -> showString "WarpIDNV"
+    5377 -> showString "SMIDNV"
+    5405 -> showString "HitKindFrontFacingMicroTriangleNV"
+    5406 -> showString "HitKindBackFacingMicroTriangleNV"
+    6021 -> showString "CullMaskKHR"
+    x -> showParen (p > 10) $ showString "BuiltIn " . showsPrec (p + 1) x
+
+pattern Position :: BuiltIn
+pattern Position = BuiltIn 0
+
+pattern PointSize :: BuiltIn
+pattern PointSize = BuiltIn 1
+
+pattern ClipDistance :: BuiltIn
+pattern ClipDistance = BuiltIn 3
+
+pattern CullDistance :: BuiltIn
+pattern CullDistance = BuiltIn 4
+
+pattern VertexId :: BuiltIn
+pattern VertexId = BuiltIn 5
+
+pattern InstanceId :: BuiltIn
+pattern InstanceId = BuiltIn 6
+
+pattern PrimitiveId :: BuiltIn
+pattern PrimitiveId = BuiltIn 7
+
+pattern InvocationId :: BuiltIn
+pattern InvocationId = BuiltIn 8
+
+pattern Layer :: BuiltIn
+pattern Layer = BuiltIn 9
+
+pattern ViewportIndex :: BuiltIn
+pattern ViewportIndex = BuiltIn 10
+
+pattern TessLevelOuter :: BuiltIn
+pattern TessLevelOuter = BuiltIn 11
+
+pattern TessLevelInner :: BuiltIn
+pattern TessLevelInner = BuiltIn 12
+
+pattern TessCoord :: BuiltIn
+pattern TessCoord = BuiltIn 13
+
+pattern PatchVertices :: BuiltIn
+pattern PatchVertices = BuiltIn 14
+
+pattern FragCoord :: BuiltIn
+pattern FragCoord = BuiltIn 15
+
+pattern PointCoord :: BuiltIn
+pattern PointCoord = BuiltIn 16
+
+pattern FrontFacing :: BuiltIn
+pattern FrontFacing = BuiltIn 17
+
+pattern SampleId :: BuiltIn
+pattern SampleId = BuiltIn 18
+
+pattern SamplePosition :: BuiltIn
+pattern SamplePosition = BuiltIn 19
+
+pattern SampleMask :: BuiltIn
+pattern SampleMask = BuiltIn 20
+
+pattern FragDepth :: BuiltIn
+pattern FragDepth = BuiltIn 22
+
+pattern HelperInvocation :: BuiltIn
+pattern HelperInvocation = BuiltIn 23
+
+pattern NumWorkgroups :: BuiltIn
+pattern NumWorkgroups = BuiltIn 24
+
+pattern WorkgroupSize :: BuiltIn
+pattern WorkgroupSize = BuiltIn 25
+
+pattern WorkgroupId :: BuiltIn
+pattern WorkgroupId = BuiltIn 26
+
+pattern LocalInvocationId :: BuiltIn
+pattern LocalInvocationId = BuiltIn 27
+
+pattern GlobalInvocationId :: BuiltIn
+pattern GlobalInvocationId = BuiltIn 28
+
+pattern LocalInvocationIndex :: BuiltIn
+pattern LocalInvocationIndex = BuiltIn 29
+
+pattern WorkDim :: BuiltIn
+pattern WorkDim = BuiltIn 30
+
+pattern GlobalSize :: BuiltIn
+pattern GlobalSize = BuiltIn 31
+
+pattern EnqueuedWorkgroupSize :: BuiltIn
+pattern EnqueuedWorkgroupSize = BuiltIn 32
+
+pattern GlobalOffset :: BuiltIn
+pattern GlobalOffset = BuiltIn 33
+
+pattern GlobalLinearId :: BuiltIn
+pattern GlobalLinearId = BuiltIn 34
+
+pattern SubgroupSize :: BuiltIn
+pattern SubgroupSize = BuiltIn 36
+
+pattern SubgroupMaxSize :: BuiltIn
+pattern SubgroupMaxSize = BuiltIn 37
+
+pattern NumSubgroups :: BuiltIn
+pattern NumSubgroups = BuiltIn 38
+
+pattern NumEnqueuedSubgroups :: BuiltIn
+pattern NumEnqueuedSubgroups = BuiltIn 39
+
+pattern SubgroupId :: BuiltIn
+pattern SubgroupId = BuiltIn 40
+
+pattern SubgroupLocalInvocationId :: BuiltIn
+pattern SubgroupLocalInvocationId = BuiltIn 41
+
+pattern VertexIndex :: BuiltIn
+pattern VertexIndex = BuiltIn 42
+
+pattern InstanceIndex :: BuiltIn
+pattern InstanceIndex = BuiltIn 43
+
+pattern CoreIDARM :: BuiltIn
+pattern CoreIDARM = BuiltIn 4160
+
+pattern CoreCountARM :: BuiltIn
+pattern CoreCountARM = BuiltIn 4161
+
+pattern CoreMaxIDARM :: BuiltIn
+pattern CoreMaxIDARM = BuiltIn 4162
+
+pattern WarpIDARM :: BuiltIn
+pattern WarpIDARM = BuiltIn 4163
+
+pattern WarpMaxIDARM :: BuiltIn
+pattern WarpMaxIDARM = BuiltIn 4164
+
+pattern SubgroupEqMask :: BuiltIn
+pattern SubgroupEqMask = BuiltIn 4416
+
+pattern SubgroupEqMaskKHR :: BuiltIn
+pattern SubgroupEqMaskKHR = BuiltIn 4416
+
+pattern SubgroupGeMask :: BuiltIn
+pattern SubgroupGeMask = BuiltIn 4417
+
+pattern SubgroupGeMaskKHR :: BuiltIn
+pattern SubgroupGeMaskKHR = BuiltIn 4417
+
+pattern SubgroupGtMask :: BuiltIn
+pattern SubgroupGtMask = BuiltIn 4418
+
+pattern SubgroupGtMaskKHR :: BuiltIn
+pattern SubgroupGtMaskKHR = BuiltIn 4418
+
+pattern SubgroupLeMask :: BuiltIn
+pattern SubgroupLeMask = BuiltIn 4419
+
+pattern SubgroupLeMaskKHR :: BuiltIn
+pattern SubgroupLeMaskKHR = BuiltIn 4419
+
+pattern SubgroupLtMask :: BuiltIn
+pattern SubgroupLtMask = BuiltIn 4420
+
+pattern SubgroupLtMaskKHR :: BuiltIn
+pattern SubgroupLtMaskKHR = BuiltIn 4420
+
+pattern BaseVertex :: BuiltIn
+pattern BaseVertex = BuiltIn 4424
+
+pattern BaseInstance :: BuiltIn
+pattern BaseInstance = BuiltIn 4425
+
+pattern DrawIndex :: BuiltIn
+pattern DrawIndex = BuiltIn 4426
+
+pattern PrimitiveShadingRateKHR :: BuiltIn
+pattern PrimitiveShadingRateKHR = BuiltIn 4432
+
+pattern DeviceIndex :: BuiltIn
+pattern DeviceIndex = BuiltIn 4438
+
+pattern ViewIndex :: BuiltIn
+pattern ViewIndex = BuiltIn 4440
+
+pattern ShadingRateKHR :: BuiltIn
+pattern ShadingRateKHR = BuiltIn 4444
+
+pattern BaryCoordNoPerspAMD :: BuiltIn
+pattern BaryCoordNoPerspAMD = BuiltIn 4992
+
+pattern BaryCoordNoPerspCentroidAMD :: BuiltIn
+pattern BaryCoordNoPerspCentroidAMD = BuiltIn 4993
+
+pattern BaryCoordNoPerspSampleAMD :: BuiltIn
+pattern BaryCoordNoPerspSampleAMD = BuiltIn 4994
+
+pattern BaryCoordSmoothAMD :: BuiltIn
+pattern BaryCoordSmoothAMD = BuiltIn 4995
+
+pattern BaryCoordSmoothCentroidAMD :: BuiltIn
+pattern BaryCoordSmoothCentroidAMD = BuiltIn 4996
+
+pattern BaryCoordSmoothSampleAMD :: BuiltIn
+pattern BaryCoordSmoothSampleAMD = BuiltIn 4997
+
+pattern BaryCoordPullModelAMD :: BuiltIn
+pattern BaryCoordPullModelAMD = BuiltIn 4998
+
+pattern FragStencilRefEXT :: BuiltIn
+pattern FragStencilRefEXT = BuiltIn 5014
+
+pattern CoalescedInputCountAMDX :: BuiltIn
+pattern CoalescedInputCountAMDX = BuiltIn 5021
+
+pattern ShaderIndexAMDX :: BuiltIn
+pattern ShaderIndexAMDX = BuiltIn 5073
+
+pattern ViewportMaskNV :: BuiltIn
+pattern ViewportMaskNV = BuiltIn 5253
+
+pattern SecondaryPositionNV :: BuiltIn
+pattern SecondaryPositionNV = BuiltIn 5257
+
+pattern SecondaryViewportMaskNV :: BuiltIn
+pattern SecondaryViewportMaskNV = BuiltIn 5258
+
+pattern PositionPerViewNV :: BuiltIn
+pattern PositionPerViewNV = BuiltIn 5261
+
+pattern ViewportMaskPerViewNV :: BuiltIn
+pattern ViewportMaskPerViewNV = BuiltIn 5262
+
+pattern FullyCoveredEXT :: BuiltIn
+pattern FullyCoveredEXT = BuiltIn 5264
+
+pattern TaskCountNV :: BuiltIn
+pattern TaskCountNV = BuiltIn 5274
+
+pattern PrimitiveCountNV :: BuiltIn
+pattern PrimitiveCountNV = BuiltIn 5275
+
+pattern PrimitiveIndicesNV :: BuiltIn
+pattern PrimitiveIndicesNV = BuiltIn 5276
+
+pattern ClipDistancePerViewNV :: BuiltIn
+pattern ClipDistancePerViewNV = BuiltIn 5277
+
+pattern CullDistancePerViewNV :: BuiltIn
+pattern CullDistancePerViewNV = BuiltIn 5278
+
+pattern LayerPerViewNV :: BuiltIn
+pattern LayerPerViewNV = BuiltIn 5279
+
+pattern MeshViewCountNV :: BuiltIn
+pattern MeshViewCountNV = BuiltIn 5280
+
+pattern MeshViewIndicesNV :: BuiltIn
+pattern MeshViewIndicesNV = BuiltIn 5281
+
+pattern BaryCoordKHR :: BuiltIn
+pattern BaryCoordKHR = BuiltIn 5286
+
+pattern BaryCoordNV :: BuiltIn
+pattern BaryCoordNV = BuiltIn 5286
+
+pattern BaryCoordNoPerspKHR :: BuiltIn
+pattern BaryCoordNoPerspKHR = BuiltIn 5287
+
+pattern BaryCoordNoPerspNV :: BuiltIn
+pattern BaryCoordNoPerspNV = BuiltIn 5287
+
+pattern FragSizeEXT :: BuiltIn
+pattern FragSizeEXT = BuiltIn 5292
+
+pattern FragmentSizeNV :: BuiltIn
+pattern FragmentSizeNV = BuiltIn 5292
+
+pattern FragInvocationCountEXT :: BuiltIn
+pattern FragInvocationCountEXT = BuiltIn 5293
+
+pattern InvocationsPerPixelNV :: BuiltIn
+pattern InvocationsPerPixelNV = BuiltIn 5293
+
+pattern PrimitivePointIndicesEXT :: BuiltIn
+pattern PrimitivePointIndicesEXT = BuiltIn 5294
+
+pattern PrimitiveLineIndicesEXT :: BuiltIn
+pattern PrimitiveLineIndicesEXT = BuiltIn 5295
+
+pattern PrimitiveTriangleIndicesEXT :: BuiltIn
+pattern PrimitiveTriangleIndicesEXT = BuiltIn 5296
+
+pattern CullPrimitiveEXT :: BuiltIn
+pattern CullPrimitiveEXT = BuiltIn 5299
+
+pattern LaunchIdKHR :: BuiltIn
+pattern LaunchIdKHR = BuiltIn 5319
+
+pattern LaunchIdNV :: BuiltIn
+pattern LaunchIdNV = BuiltIn 5319
+
+pattern LaunchSizeKHR :: BuiltIn
+pattern LaunchSizeKHR = BuiltIn 5320
+
+pattern LaunchSizeNV :: BuiltIn
+pattern LaunchSizeNV = BuiltIn 5320
+
+pattern WorldRayOriginKHR :: BuiltIn
+pattern WorldRayOriginKHR = BuiltIn 5321
+
+pattern WorldRayOriginNV :: BuiltIn
+pattern WorldRayOriginNV = BuiltIn 5321
+
+pattern WorldRayDirectionKHR :: BuiltIn
+pattern WorldRayDirectionKHR = BuiltIn 5322
+
+pattern WorldRayDirectionNV :: BuiltIn
+pattern WorldRayDirectionNV = BuiltIn 5322
+
+pattern ObjectRayOriginKHR :: BuiltIn
+pattern ObjectRayOriginKHR = BuiltIn 5323
+
+pattern ObjectRayOriginNV :: BuiltIn
+pattern ObjectRayOriginNV = BuiltIn 5323
+
+pattern ObjectRayDirectionKHR :: BuiltIn
+pattern ObjectRayDirectionKHR = BuiltIn 5324
+
+pattern ObjectRayDirectionNV :: BuiltIn
+pattern ObjectRayDirectionNV = BuiltIn 5324
+
+pattern RayTminKHR :: BuiltIn
+pattern RayTminKHR = BuiltIn 5325
+
+pattern RayTminNV :: BuiltIn
+pattern RayTminNV = BuiltIn 5325
+
+pattern RayTmaxKHR :: BuiltIn
+pattern RayTmaxKHR = BuiltIn 5326
+
+pattern RayTmaxNV :: BuiltIn
+pattern RayTmaxNV = BuiltIn 5326
+
+pattern InstanceCustomIndexKHR :: BuiltIn
+pattern InstanceCustomIndexKHR = BuiltIn 5327
+
+pattern InstanceCustomIndexNV :: BuiltIn
+pattern InstanceCustomIndexNV = BuiltIn 5327
+
+pattern ObjectToWorldKHR :: BuiltIn
+pattern ObjectToWorldKHR = BuiltIn 5330
+
+pattern ObjectToWorldNV :: BuiltIn
+pattern ObjectToWorldNV = BuiltIn 5330
+
+pattern WorldToObjectKHR :: BuiltIn
+pattern WorldToObjectKHR = BuiltIn 5331
+
+pattern WorldToObjectNV :: BuiltIn
+pattern WorldToObjectNV = BuiltIn 5331
+
+pattern HitTNV :: BuiltIn
+pattern HitTNV = BuiltIn 5332
+
+pattern HitKindKHR :: BuiltIn
+pattern HitKindKHR = BuiltIn 5333
+
+pattern HitKindNV :: BuiltIn
+pattern HitKindNV = BuiltIn 5333
+
+pattern CurrentRayTimeNV :: BuiltIn
+pattern CurrentRayTimeNV = BuiltIn 5334
+
+pattern HitTriangleVertexPositionsKHR :: BuiltIn
+pattern HitTriangleVertexPositionsKHR = BuiltIn 5335
+
+pattern HitMicroTriangleVertexPositionsNV :: BuiltIn
+pattern HitMicroTriangleVertexPositionsNV = BuiltIn 5337
+
+pattern HitMicroTriangleVertexBarycentricsNV :: BuiltIn
+pattern HitMicroTriangleVertexBarycentricsNV = BuiltIn 5344
+
+pattern IncomingRayFlagsKHR :: BuiltIn
+pattern IncomingRayFlagsKHR = BuiltIn 5351
+
+pattern IncomingRayFlagsNV :: BuiltIn
+pattern IncomingRayFlagsNV = BuiltIn 5351
+
+pattern RayGeometryIndexKHR :: BuiltIn
+pattern RayGeometryIndexKHR = BuiltIn 5352
+
+pattern WarpsPerSMNV :: BuiltIn
+pattern WarpsPerSMNV = BuiltIn 5374
+
+pattern SMCountNV :: BuiltIn
+pattern SMCountNV = BuiltIn 5375
+
+pattern WarpIDNV :: BuiltIn
+pattern WarpIDNV = BuiltIn 5376
+
+pattern SMIDNV :: BuiltIn
+pattern SMIDNV = BuiltIn 5377
+
+pattern HitKindFrontFacingMicroTriangleNV :: BuiltIn
+pattern HitKindFrontFacingMicroTriangleNV = BuiltIn 5405
+
+pattern HitKindBackFacingMicroTriangleNV :: BuiltIn
+pattern HitKindBackFacingMicroTriangleNV = BuiltIn 5406
+
+pattern CullMaskKHR :: BuiltIn
+pattern CullMaskKHR = BuiltIn 6021
diff --git a/src/Data/SpirV/Enum/Capability.hs b/src/Data/SpirV/Enum/Capability.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/Capability.hs
@@ -0,0 +1,1035 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.Capability where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype Capability = Capability Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show Capability where
+  showsPrec p (Capability v) = case v of
+    0 -> showString "Matrix"
+    1 -> showString "Shader"
+    2 -> showString "Geometry"
+    3 -> showString "Tessellation"
+    4 -> showString "Addresses"
+    5 -> showString "Linkage"
+    6 -> showString "Kernel"
+    7 -> showString "Vector16"
+    8 -> showString "Float16Buffer"
+    9 -> showString "Float16"
+    10 -> showString "Float64"
+    11 -> showString "Int64"
+    12 -> showString "Int64Atomics"
+    13 -> showString "ImageBasic"
+    14 -> showString "ImageReadWrite"
+    15 -> showString "ImageMipmap"
+    17 -> showString "Pipes"
+    18 -> showString "Groups"
+    19 -> showString "DeviceEnqueue"
+    20 -> showString "LiteralSampler"
+    21 -> showString "AtomicStorage"
+    22 -> showString "Int16"
+    23 -> showString "TessellationPointSize"
+    24 -> showString "GeometryPointSize"
+    25 -> showString "ImageGatherExtended"
+    27 -> showString "StorageImageMultisample"
+    28 -> showString "UniformBufferArrayDynamicIndexing"
+    29 -> showString "SampledImageArrayDynamicIndexing"
+    30 -> showString "StorageBufferArrayDynamicIndexing"
+    31 -> showString "StorageImageArrayDynamicIndexing"
+    32 -> showString "ClipDistance"
+    33 -> showString "CullDistance"
+    34 -> showString "ImageCubeArray"
+    35 -> showString "SampleRateShading"
+    36 -> showString "ImageRect"
+    37 -> showString "SampledRect"
+    38 -> showString "GenericPointer"
+    39 -> showString "Int8"
+    40 -> showString "InputAttachment"
+    41 -> showString "SparseResidency"
+    42 -> showString "MinLod"
+    43 -> showString "Sampled1D"
+    44 -> showString "Image1D"
+    45 -> showString "SampledCubeArray"
+    46 -> showString "SampledBuffer"
+    47 -> showString "ImageBuffer"
+    48 -> showString "ImageMSArray"
+    49 -> showString "StorageImageExtendedFormats"
+    50 -> showString "ImageQuery"
+    51 -> showString "DerivativeControl"
+    52 -> showString "InterpolationFunction"
+    53 -> showString "TransformFeedback"
+    54 -> showString "GeometryStreams"
+    55 -> showString "StorageImageReadWithoutFormat"
+    56 -> showString "StorageImageWriteWithoutFormat"
+    57 -> showString "MultiViewport"
+    58 -> showString "SubgroupDispatch"
+    59 -> showString "NamedBarrier"
+    60 -> showString "PipeStorage"
+    61 -> showString "GroupNonUniform"
+    62 -> showString "GroupNonUniformVote"
+    63 -> showString "GroupNonUniformArithmetic"
+    64 -> showString "GroupNonUniformBallot"
+    65 -> showString "GroupNonUniformShuffle"
+    66 -> showString "GroupNonUniformShuffleRelative"
+    67 -> showString "GroupNonUniformClustered"
+    68 -> showString "GroupNonUniformQuad"
+    69 -> showString "ShaderLayer"
+    70 -> showString "ShaderViewportIndex"
+    71 -> showString "UniformDecoration"
+    4165 -> showString "CoreBuiltinsARM"
+    4166 -> showString "TileImageColorReadAccessEXT"
+    4167 -> showString "TileImageDepthReadAccessEXT"
+    4168 -> showString "TileImageStencilReadAccessEXT"
+    4201 -> showString "CooperativeMatrixLayoutsARM"
+    4422 -> showString "FragmentShadingRateKHR"
+    4423 -> showString "SubgroupBallotKHR"
+    4427 -> showString "DrawParameters"
+    4428 -> showString "WorkgroupMemoryExplicitLayoutKHR"
+    4429 -> showString "WorkgroupMemoryExplicitLayout8BitAccessKHR"
+    4430 -> showString "WorkgroupMemoryExplicitLayout16BitAccessKHR"
+    4431 -> showString "SubgroupVoteKHR"
+    4433 -> showString "StorageBuffer16BitAccess"
+    4434 -> showString "StorageUniform16"
+    4435 -> showString "StoragePushConstant16"
+    4436 -> showString "StorageInputOutput16"
+    4437 -> showString "DeviceGroup"
+    4439 -> showString "MultiView"
+    4441 -> showString "VariablePointersStorageBuffer"
+    4442 -> showString "VariablePointers"
+    4445 -> showString "AtomicStorageOps"
+    4447 -> showString "SampleMaskPostDepthCoverage"
+    4448 -> showString "StorageBuffer8BitAccess"
+    4449 -> showString "UniformAndStorageBuffer8BitAccess"
+    4450 -> showString "StoragePushConstant8"
+    4464 -> showString "DenormPreserve"
+    4465 -> showString "DenormFlushToZero"
+    4466 -> showString "SignedZeroInfNanPreserve"
+    4467 -> showString "RoundingModeRTE"
+    4468 -> showString "RoundingModeRTZ"
+    4471 -> showString "RayQueryProvisionalKHR"
+    4472 -> showString "RayQueryKHR"
+    4478 -> showString "RayTraversalPrimitiveCullingKHR"
+    4479 -> showString "RayTracingKHR"
+    4484 -> showString "TextureSampleWeightedQCOM"
+    4485 -> showString "TextureBoxFilterQCOM"
+    4486 -> showString "TextureBlockMatchQCOM"
+    4498 -> showString "TextureBlockMatch2QCOM"
+    5008 -> showString "Float16ImageAMD"
+    5009 -> showString "ImageGatherBiasLodAMD"
+    5010 -> showString "FragmentMaskAMD"
+    5013 -> showString "StencilExportEXT"
+    5015 -> showString "ImageReadWriteLodAMD"
+    5016 -> showString "Int64ImageEXT"
+    5055 -> showString "ShaderClockKHR"
+    5067 -> showString "ShaderEnqueueAMDX"
+    5087 -> showString "QuadControlKHR"
+    5249 -> showString "SampleMaskOverrideCoverageNV"
+    5251 -> showString "GeometryShaderPassthroughNV"
+    5254 -> showString "ShaderViewportIndexLayerEXT"
+    5255 -> showString "ShaderViewportMaskNV"
+    5259 -> showString "ShaderStereoViewNV"
+    5260 -> showString "PerViewAttributesNV"
+    5265 -> showString "FragmentFullyCoveredEXT"
+    5266 -> showString "MeshShadingNV"
+    5282 -> showString "ImageFootprintNV"
+    5283 -> showString "MeshShadingEXT"
+    5284 -> showString "FragmentBarycentricKHR"
+    5288 -> showString "ComputeDerivativeGroupQuadsNV"
+    5291 -> showString "FragmentDensityEXT"
+    5297 -> showString "GroupNonUniformPartitionedNV"
+    5301 -> showString "ShaderNonUniform"
+    5302 -> showString "RuntimeDescriptorArray"
+    5303 -> showString "InputAttachmentArrayDynamicIndexing"
+    5304 -> showString "UniformTexelBufferArrayDynamicIndexing"
+    5305 -> showString "StorageTexelBufferArrayDynamicIndexing"
+    5306 -> showString "UniformBufferArrayNonUniformIndexing"
+    5307 -> showString "SampledImageArrayNonUniformIndexing"
+    5308 -> showString "StorageBufferArrayNonUniformIndexing"
+    5309 -> showString "StorageImageArrayNonUniformIndexing"
+    5310 -> showString "InputAttachmentArrayNonUniformIndexing"
+    5311 -> showString "UniformTexelBufferArrayNonUniformIndexing"
+    5312 -> showString "StorageTexelBufferArrayNonUniformIndexing"
+    5336 -> showString "RayTracingPositionFetchKHR"
+    5340 -> showString "RayTracingNV"
+    5341 -> showString "RayTracingMotionBlurNV"
+    5345 -> showString "VulkanMemoryModel"
+    5346 -> showString "VulkanMemoryModelDeviceScope"
+    5347 -> showString "PhysicalStorageBufferAddresses"
+    5350 -> showString "ComputeDerivativeGroupLinearNV"
+    5353 -> showString "RayTracingProvisionalKHR"
+    5357 -> showString "CooperativeMatrixNV"
+    5363 -> showString "FragmentShaderSampleInterlockEXT"
+    5372 -> showString "FragmentShaderShadingRateInterlockEXT"
+    5373 -> showString "ShaderSMBuiltinsNV"
+    5378 -> showString "FragmentShaderPixelInterlockEXT"
+    5379 -> showString "DemoteToHelperInvocation"
+    5380 -> showString "DisplacementMicromapNV"
+    5381 -> showString "RayTracingOpacityMicromapEXT"
+    5383 -> showString "ShaderInvocationReorderNV"
+    5390 -> showString "BindlessTextureNV"
+    5391 -> showString "RayQueryPositionFetchKHR"
+    5404 -> showString "AtomicFloat16VectorNV"
+    5409 -> showString "RayTracingDisplacementMicromapNV"
+    5414 -> showString "RawAccessChainsNV"
+    5568 -> showString "SubgroupShuffleINTEL"
+    5569 -> showString "SubgroupBufferBlockIOINTEL"
+    5570 -> showString "SubgroupImageBlockIOINTEL"
+    5579 -> showString "SubgroupImageMediaBlockIOINTEL"
+    5582 -> showString "RoundToInfinityINTEL"
+    5583 -> showString "FloatingPointModeINTEL"
+    5584 -> showString "IntegerFunctions2INTEL"
+    5603 -> showString "FunctionPointersINTEL"
+    5604 -> showString "IndirectReferencesINTEL"
+    5606 -> showString "AsmINTEL"
+    5612 -> showString "AtomicFloat32MinMaxEXT"
+    5613 -> showString "AtomicFloat64MinMaxEXT"
+    5616 -> showString "AtomicFloat16MinMaxEXT"
+    5617 -> showString "VectorComputeINTEL"
+    5619 -> showString "VectorAnyINTEL"
+    5629 -> showString "ExpectAssumeKHR"
+    5696 -> showString "SubgroupAvcMotionEstimationINTEL"
+    5697 -> showString "SubgroupAvcMotionEstimationIntraINTEL"
+    5698 -> showString "SubgroupAvcMotionEstimationChromaINTEL"
+    5817 -> showString "VariableLengthArrayINTEL"
+    5821 -> showString "FunctionFloatControlINTEL"
+    5824 -> showString "FPGAMemoryAttributesINTEL"
+    5837 -> showString "FPFastMathModeINTEL"
+    5844 -> showString "ArbitraryPrecisionIntegersINTEL"
+    5845 -> showString "ArbitraryPrecisionFloatingPointINTEL"
+    5886 -> showString "UnstructuredLoopControlsINTEL"
+    5888 -> showString "FPGALoopControlsINTEL"
+    5892 -> showString "KernelAttributesINTEL"
+    5897 -> showString "FPGAKernelAttributesINTEL"
+    5898 -> showString "FPGAMemoryAccessesINTEL"
+    5904 -> showString "FPGAClusterAttributesINTEL"
+    5906 -> showString "LoopFuseINTEL"
+    5908 -> showString "FPGADSPControlINTEL"
+    5910 -> showString "MemoryAccessAliasingINTEL"
+    5916 -> showString "FPGAInvocationPipeliningAttributesINTEL"
+    5920 -> showString "FPGABufferLocationINTEL"
+    5922 -> showString "ArbitraryPrecisionFixedPointINTEL"
+    5935 -> showString "USMStorageClassesINTEL"
+    5939 -> showString "RuntimeAlignedAttributeINTEL"
+    5943 -> showString "IOPipesINTEL"
+    5945 -> showString "BlockingPipesINTEL"
+    5948 -> showString "FPGARegINTEL"
+    6016 -> showString "DotProductInputAll"
+    6017 -> showString "DotProductInput4x8Bit"
+    6018 -> showString "DotProductInput4x8BitPacked"
+    6019 -> showString "DotProduct"
+    6020 -> showString "RayCullMaskKHR"
+    6022 -> showString "CooperativeMatrixKHR"
+    6024 -> showString "ReplicatedCompositesEXT"
+    6025 -> showString "BitInstructions"
+    6026 -> showString "GroupNonUniformRotateKHR"
+    6029 -> showString "FloatControls2"
+    6033 -> showString "AtomicFloat32AddEXT"
+    6034 -> showString "AtomicFloat64AddEXT"
+    6089 -> showString "LongCompositesINTEL"
+    6094 -> showString "OptNoneINTEL"
+    6095 -> showString "AtomicFloat16AddEXT"
+    6114 -> showString "DebugInfoModuleINTEL"
+    6115 -> showString "BFloat16ConversionINTEL"
+    6141 -> showString "SplitBarrierINTEL"
+    6150 -> showString "FPGAClusterAttributesV2INTEL"
+    6161 -> showString "FPGAKernelAttributesv2INTEL"
+    6169 -> showString "FPMaxErrorINTEL"
+    6171 -> showString "FPGALatencyControlINTEL"
+    6174 -> showString "FPGAArgumentInterfacesINTEL"
+    6187 -> showString "GlobalVariableHostAccessINTEL"
+    6189 -> showString "GlobalVariableFPGADecorationsINTEL"
+    6400 -> showString "GroupUniformArithmeticKHR"
+    6427 -> showString "MaskedGatherScatterINTEL"
+    6441 -> showString "CacheControlsINTEL"
+    6460 -> showString "RegisterLimitsINTEL"
+    x -> showParen (p > 10) $ showString "Capability " . showsPrec (p + 1) x
+
+pattern Matrix :: Capability
+pattern Matrix = Capability 0
+
+pattern Shader :: Capability
+pattern Shader = Capability 1
+
+pattern Geometry :: Capability
+pattern Geometry = Capability 2
+
+pattern Tessellation :: Capability
+pattern Tessellation = Capability 3
+
+pattern Addresses :: Capability
+pattern Addresses = Capability 4
+
+pattern Linkage :: Capability
+pattern Linkage = Capability 5
+
+pattern Kernel :: Capability
+pattern Kernel = Capability 6
+
+pattern Vector16 :: Capability
+pattern Vector16 = Capability 7
+
+pattern Float16Buffer :: Capability
+pattern Float16Buffer = Capability 8
+
+pattern Float16 :: Capability
+pattern Float16 = Capability 9
+
+pattern Float64 :: Capability
+pattern Float64 = Capability 10
+
+pattern Int64 :: Capability
+pattern Int64 = Capability 11
+
+pattern Int64Atomics :: Capability
+pattern Int64Atomics = Capability 12
+
+pattern ImageBasic :: Capability
+pattern ImageBasic = Capability 13
+
+pattern ImageReadWrite :: Capability
+pattern ImageReadWrite = Capability 14
+
+pattern ImageMipmap :: Capability
+pattern ImageMipmap = Capability 15
+
+pattern Pipes :: Capability
+pattern Pipes = Capability 17
+
+pattern Groups :: Capability
+pattern Groups = Capability 18
+
+pattern DeviceEnqueue :: Capability
+pattern DeviceEnqueue = Capability 19
+
+pattern LiteralSampler :: Capability
+pattern LiteralSampler = Capability 20
+
+pattern AtomicStorage :: Capability
+pattern AtomicStorage = Capability 21
+
+pattern Int16 :: Capability
+pattern Int16 = Capability 22
+
+pattern TessellationPointSize :: Capability
+pattern TessellationPointSize = Capability 23
+
+pattern GeometryPointSize :: Capability
+pattern GeometryPointSize = Capability 24
+
+pattern ImageGatherExtended :: Capability
+pattern ImageGatherExtended = Capability 25
+
+pattern StorageImageMultisample :: Capability
+pattern StorageImageMultisample = Capability 27
+
+pattern UniformBufferArrayDynamicIndexing :: Capability
+pattern UniformBufferArrayDynamicIndexing = Capability 28
+
+pattern SampledImageArrayDynamicIndexing :: Capability
+pattern SampledImageArrayDynamicIndexing = Capability 29
+
+pattern StorageBufferArrayDynamicIndexing :: Capability
+pattern StorageBufferArrayDynamicIndexing = Capability 30
+
+pattern StorageImageArrayDynamicIndexing :: Capability
+pattern StorageImageArrayDynamicIndexing = Capability 31
+
+pattern ClipDistance :: Capability
+pattern ClipDistance = Capability 32
+
+pattern CullDistance :: Capability
+pattern CullDistance = Capability 33
+
+pattern ImageCubeArray :: Capability
+pattern ImageCubeArray = Capability 34
+
+pattern SampleRateShading :: Capability
+pattern SampleRateShading = Capability 35
+
+pattern ImageRect :: Capability
+pattern ImageRect = Capability 36
+
+pattern SampledRect :: Capability
+pattern SampledRect = Capability 37
+
+pattern GenericPointer :: Capability
+pattern GenericPointer = Capability 38
+
+pattern Int8 :: Capability
+pattern Int8 = Capability 39
+
+pattern InputAttachment :: Capability
+pattern InputAttachment = Capability 40
+
+pattern SparseResidency :: Capability
+pattern SparseResidency = Capability 41
+
+pattern MinLod :: Capability
+pattern MinLod = Capability 42
+
+pattern Sampled1D :: Capability
+pattern Sampled1D = Capability 43
+
+pattern Image1D :: Capability
+pattern Image1D = Capability 44
+
+pattern SampledCubeArray :: Capability
+pattern SampledCubeArray = Capability 45
+
+pattern SampledBuffer :: Capability
+pattern SampledBuffer = Capability 46
+
+pattern ImageBuffer :: Capability
+pattern ImageBuffer = Capability 47
+
+pattern ImageMSArray :: Capability
+pattern ImageMSArray = Capability 48
+
+pattern StorageImageExtendedFormats :: Capability
+pattern StorageImageExtendedFormats = Capability 49
+
+pattern ImageQuery :: Capability
+pattern ImageQuery = Capability 50
+
+pattern DerivativeControl :: Capability
+pattern DerivativeControl = Capability 51
+
+pattern InterpolationFunction :: Capability
+pattern InterpolationFunction = Capability 52
+
+pattern TransformFeedback :: Capability
+pattern TransformFeedback = Capability 53
+
+pattern GeometryStreams :: Capability
+pattern GeometryStreams = Capability 54
+
+pattern StorageImageReadWithoutFormat :: Capability
+pattern StorageImageReadWithoutFormat = Capability 55
+
+pattern StorageImageWriteWithoutFormat :: Capability
+pattern StorageImageWriteWithoutFormat = Capability 56
+
+pattern MultiViewport :: Capability
+pattern MultiViewport = Capability 57
+
+pattern SubgroupDispatch :: Capability
+pattern SubgroupDispatch = Capability 58
+
+pattern NamedBarrier :: Capability
+pattern NamedBarrier = Capability 59
+
+pattern PipeStorage :: Capability
+pattern PipeStorage = Capability 60
+
+pattern GroupNonUniform :: Capability
+pattern GroupNonUniform = Capability 61
+
+pattern GroupNonUniformVote :: Capability
+pattern GroupNonUniformVote = Capability 62
+
+pattern GroupNonUniformArithmetic :: Capability
+pattern GroupNonUniformArithmetic = Capability 63
+
+pattern GroupNonUniformBallot :: Capability
+pattern GroupNonUniformBallot = Capability 64
+
+pattern GroupNonUniformShuffle :: Capability
+pattern GroupNonUniformShuffle = Capability 65
+
+pattern GroupNonUniformShuffleRelative :: Capability
+pattern GroupNonUniformShuffleRelative = Capability 66
+
+pattern GroupNonUniformClustered :: Capability
+pattern GroupNonUniformClustered = Capability 67
+
+pattern GroupNonUniformQuad :: Capability
+pattern GroupNonUniformQuad = Capability 68
+
+pattern ShaderLayer :: Capability
+pattern ShaderLayer = Capability 69
+
+pattern ShaderViewportIndex :: Capability
+pattern ShaderViewportIndex = Capability 70
+
+pattern UniformDecoration :: Capability
+pattern UniformDecoration = Capability 71
+
+pattern CoreBuiltinsARM :: Capability
+pattern CoreBuiltinsARM = Capability 4165
+
+pattern TileImageColorReadAccessEXT :: Capability
+pattern TileImageColorReadAccessEXT = Capability 4166
+
+pattern TileImageDepthReadAccessEXT :: Capability
+pattern TileImageDepthReadAccessEXT = Capability 4167
+
+pattern TileImageStencilReadAccessEXT :: Capability
+pattern TileImageStencilReadAccessEXT = Capability 4168
+
+pattern CooperativeMatrixLayoutsARM :: Capability
+pattern CooperativeMatrixLayoutsARM = Capability 4201
+
+pattern FragmentShadingRateKHR :: Capability
+pattern FragmentShadingRateKHR = Capability 4422
+
+pattern SubgroupBallotKHR :: Capability
+pattern SubgroupBallotKHR = Capability 4423
+
+pattern DrawParameters :: Capability
+pattern DrawParameters = Capability 4427
+
+pattern WorkgroupMemoryExplicitLayoutKHR :: Capability
+pattern WorkgroupMemoryExplicitLayoutKHR = Capability 4428
+
+pattern WorkgroupMemoryExplicitLayout8BitAccessKHR :: Capability
+pattern WorkgroupMemoryExplicitLayout8BitAccessKHR = Capability 4429
+
+pattern WorkgroupMemoryExplicitLayout16BitAccessKHR :: Capability
+pattern WorkgroupMemoryExplicitLayout16BitAccessKHR = Capability 4430
+
+pattern SubgroupVoteKHR :: Capability
+pattern SubgroupVoteKHR = Capability 4431
+
+pattern StorageBuffer16BitAccess :: Capability
+pattern StorageBuffer16BitAccess = Capability 4433
+
+pattern StorageUniformBufferBlock16 :: Capability
+pattern StorageUniformBufferBlock16 = Capability 4433
+
+pattern StorageUniform16 :: Capability
+pattern StorageUniform16 = Capability 4434
+
+pattern UniformAndStorageBuffer16BitAccess :: Capability
+pattern UniformAndStorageBuffer16BitAccess = Capability 4434
+
+pattern StoragePushConstant16 :: Capability
+pattern StoragePushConstant16 = Capability 4435
+
+pattern StorageInputOutput16 :: Capability
+pattern StorageInputOutput16 = Capability 4436
+
+pattern DeviceGroup :: Capability
+pattern DeviceGroup = Capability 4437
+
+pattern MultiView :: Capability
+pattern MultiView = Capability 4439
+
+pattern VariablePointersStorageBuffer :: Capability
+pattern VariablePointersStorageBuffer = Capability 4441
+
+pattern VariablePointers :: Capability
+pattern VariablePointers = Capability 4442
+
+pattern AtomicStorageOps :: Capability
+pattern AtomicStorageOps = Capability 4445
+
+pattern SampleMaskPostDepthCoverage :: Capability
+pattern SampleMaskPostDepthCoverage = Capability 4447
+
+pattern StorageBuffer8BitAccess :: Capability
+pattern StorageBuffer8BitAccess = Capability 4448
+
+pattern UniformAndStorageBuffer8BitAccess :: Capability
+pattern UniformAndStorageBuffer8BitAccess = Capability 4449
+
+pattern StoragePushConstant8 :: Capability
+pattern StoragePushConstant8 = Capability 4450
+
+pattern DenormPreserve :: Capability
+pattern DenormPreserve = Capability 4464
+
+pattern DenormFlushToZero :: Capability
+pattern DenormFlushToZero = Capability 4465
+
+pattern SignedZeroInfNanPreserve :: Capability
+pattern SignedZeroInfNanPreserve = Capability 4466
+
+pattern RoundingModeRTE :: Capability
+pattern RoundingModeRTE = Capability 4467
+
+pattern RoundingModeRTZ :: Capability
+pattern RoundingModeRTZ = Capability 4468
+
+pattern RayQueryProvisionalKHR :: Capability
+pattern RayQueryProvisionalKHR = Capability 4471
+
+pattern RayQueryKHR :: Capability
+pattern RayQueryKHR = Capability 4472
+
+pattern RayTraversalPrimitiveCullingKHR :: Capability
+pattern RayTraversalPrimitiveCullingKHR = Capability 4478
+
+pattern RayTracingKHR :: Capability
+pattern RayTracingKHR = Capability 4479
+
+pattern TextureSampleWeightedQCOM :: Capability
+pattern TextureSampleWeightedQCOM = Capability 4484
+
+pattern TextureBoxFilterQCOM :: Capability
+pattern TextureBoxFilterQCOM = Capability 4485
+
+pattern TextureBlockMatchQCOM :: Capability
+pattern TextureBlockMatchQCOM = Capability 4486
+
+pattern TextureBlockMatch2QCOM :: Capability
+pattern TextureBlockMatch2QCOM = Capability 4498
+
+pattern Float16ImageAMD :: Capability
+pattern Float16ImageAMD = Capability 5008
+
+pattern ImageGatherBiasLodAMD :: Capability
+pattern ImageGatherBiasLodAMD = Capability 5009
+
+pattern FragmentMaskAMD :: Capability
+pattern FragmentMaskAMD = Capability 5010
+
+pattern StencilExportEXT :: Capability
+pattern StencilExportEXT = Capability 5013
+
+pattern ImageReadWriteLodAMD :: Capability
+pattern ImageReadWriteLodAMD = Capability 5015
+
+pattern Int64ImageEXT :: Capability
+pattern Int64ImageEXT = Capability 5016
+
+pattern ShaderClockKHR :: Capability
+pattern ShaderClockKHR = Capability 5055
+
+pattern ShaderEnqueueAMDX :: Capability
+pattern ShaderEnqueueAMDX = Capability 5067
+
+pattern QuadControlKHR :: Capability
+pattern QuadControlKHR = Capability 5087
+
+pattern SampleMaskOverrideCoverageNV :: Capability
+pattern SampleMaskOverrideCoverageNV = Capability 5249
+
+pattern GeometryShaderPassthroughNV :: Capability
+pattern GeometryShaderPassthroughNV = Capability 5251
+
+pattern ShaderViewportIndexLayerEXT :: Capability
+pattern ShaderViewportIndexLayerEXT = Capability 5254
+
+pattern ShaderViewportIndexLayerNV :: Capability
+pattern ShaderViewportIndexLayerNV = Capability 5254
+
+pattern ShaderViewportMaskNV :: Capability
+pattern ShaderViewportMaskNV = Capability 5255
+
+pattern ShaderStereoViewNV :: Capability
+pattern ShaderStereoViewNV = Capability 5259
+
+pattern PerViewAttributesNV :: Capability
+pattern PerViewAttributesNV = Capability 5260
+
+pattern FragmentFullyCoveredEXT :: Capability
+pattern FragmentFullyCoveredEXT = Capability 5265
+
+pattern MeshShadingNV :: Capability
+pattern MeshShadingNV = Capability 5266
+
+pattern ImageFootprintNV :: Capability
+pattern ImageFootprintNV = Capability 5282
+
+pattern MeshShadingEXT :: Capability
+pattern MeshShadingEXT = Capability 5283
+
+pattern FragmentBarycentricKHR :: Capability
+pattern FragmentBarycentricKHR = Capability 5284
+
+pattern FragmentBarycentricNV :: Capability
+pattern FragmentBarycentricNV = Capability 5284
+
+pattern ComputeDerivativeGroupQuadsNV :: Capability
+pattern ComputeDerivativeGroupQuadsNV = Capability 5288
+
+pattern FragmentDensityEXT :: Capability
+pattern FragmentDensityEXT = Capability 5291
+
+pattern ShadingRateNV :: Capability
+pattern ShadingRateNV = Capability 5291
+
+pattern GroupNonUniformPartitionedNV :: Capability
+pattern GroupNonUniformPartitionedNV = Capability 5297
+
+pattern ShaderNonUniform :: Capability
+pattern ShaderNonUniform = Capability 5301
+
+pattern ShaderNonUniformEXT :: Capability
+pattern ShaderNonUniformEXT = Capability 5301
+
+pattern RuntimeDescriptorArray :: Capability
+pattern RuntimeDescriptorArray = Capability 5302
+
+pattern RuntimeDescriptorArrayEXT :: Capability
+pattern RuntimeDescriptorArrayEXT = Capability 5302
+
+pattern InputAttachmentArrayDynamicIndexing :: Capability
+pattern InputAttachmentArrayDynamicIndexing = Capability 5303
+
+pattern InputAttachmentArrayDynamicIndexingEXT :: Capability
+pattern InputAttachmentArrayDynamicIndexingEXT = Capability 5303
+
+pattern UniformTexelBufferArrayDynamicIndexing :: Capability
+pattern UniformTexelBufferArrayDynamicIndexing = Capability 5304
+
+pattern UniformTexelBufferArrayDynamicIndexingEXT :: Capability
+pattern UniformTexelBufferArrayDynamicIndexingEXT = Capability 5304
+
+pattern StorageTexelBufferArrayDynamicIndexing :: Capability
+pattern StorageTexelBufferArrayDynamicIndexing = Capability 5305
+
+pattern StorageTexelBufferArrayDynamicIndexingEXT :: Capability
+pattern StorageTexelBufferArrayDynamicIndexingEXT = Capability 5305
+
+pattern UniformBufferArrayNonUniformIndexing :: Capability
+pattern UniformBufferArrayNonUniformIndexing = Capability 5306
+
+pattern UniformBufferArrayNonUniformIndexingEXT :: Capability
+pattern UniformBufferArrayNonUniformIndexingEXT = Capability 5306
+
+pattern SampledImageArrayNonUniformIndexing :: Capability
+pattern SampledImageArrayNonUniformIndexing = Capability 5307
+
+pattern SampledImageArrayNonUniformIndexingEXT :: Capability
+pattern SampledImageArrayNonUniformIndexingEXT = Capability 5307
+
+pattern StorageBufferArrayNonUniformIndexing :: Capability
+pattern StorageBufferArrayNonUniformIndexing = Capability 5308
+
+pattern StorageBufferArrayNonUniformIndexingEXT :: Capability
+pattern StorageBufferArrayNonUniformIndexingEXT = Capability 5308
+
+pattern StorageImageArrayNonUniformIndexing :: Capability
+pattern StorageImageArrayNonUniformIndexing = Capability 5309
+
+pattern StorageImageArrayNonUniformIndexingEXT :: Capability
+pattern StorageImageArrayNonUniformIndexingEXT = Capability 5309
+
+pattern InputAttachmentArrayNonUniformIndexing :: Capability
+pattern InputAttachmentArrayNonUniformIndexing = Capability 5310
+
+pattern InputAttachmentArrayNonUniformIndexingEXT :: Capability
+pattern InputAttachmentArrayNonUniformIndexingEXT = Capability 5310
+
+pattern UniformTexelBufferArrayNonUniformIndexing :: Capability
+pattern UniformTexelBufferArrayNonUniformIndexing = Capability 5311
+
+pattern UniformTexelBufferArrayNonUniformIndexingEXT :: Capability
+pattern UniformTexelBufferArrayNonUniformIndexingEXT = Capability 5311
+
+pattern StorageTexelBufferArrayNonUniformIndexing :: Capability
+pattern StorageTexelBufferArrayNonUniformIndexing = Capability 5312
+
+pattern StorageTexelBufferArrayNonUniformIndexingEXT :: Capability
+pattern StorageTexelBufferArrayNonUniformIndexingEXT = Capability 5312
+
+pattern RayTracingPositionFetchKHR :: Capability
+pattern RayTracingPositionFetchKHR = Capability 5336
+
+pattern RayTracingNV :: Capability
+pattern RayTracingNV = Capability 5340
+
+pattern RayTracingMotionBlurNV :: Capability
+pattern RayTracingMotionBlurNV = Capability 5341
+
+pattern VulkanMemoryModel :: Capability
+pattern VulkanMemoryModel = Capability 5345
+
+pattern VulkanMemoryModelKHR :: Capability
+pattern VulkanMemoryModelKHR = Capability 5345
+
+pattern VulkanMemoryModelDeviceScope :: Capability
+pattern VulkanMemoryModelDeviceScope = Capability 5346
+
+pattern VulkanMemoryModelDeviceScopeKHR :: Capability
+pattern VulkanMemoryModelDeviceScopeKHR = Capability 5346
+
+pattern PhysicalStorageBufferAddresses :: Capability
+pattern PhysicalStorageBufferAddresses = Capability 5347
+
+pattern PhysicalStorageBufferAddressesEXT :: Capability
+pattern PhysicalStorageBufferAddressesEXT = Capability 5347
+
+pattern ComputeDerivativeGroupLinearNV :: Capability
+pattern ComputeDerivativeGroupLinearNV = Capability 5350
+
+pattern RayTracingProvisionalKHR :: Capability
+pattern RayTracingProvisionalKHR = Capability 5353
+
+pattern CooperativeMatrixNV :: Capability
+pattern CooperativeMatrixNV = Capability 5357
+
+pattern FragmentShaderSampleInterlockEXT :: Capability
+pattern FragmentShaderSampleInterlockEXT = Capability 5363
+
+pattern FragmentShaderShadingRateInterlockEXT :: Capability
+pattern FragmentShaderShadingRateInterlockEXT = Capability 5372
+
+pattern ShaderSMBuiltinsNV :: Capability
+pattern ShaderSMBuiltinsNV = Capability 5373
+
+pattern FragmentShaderPixelInterlockEXT :: Capability
+pattern FragmentShaderPixelInterlockEXT = Capability 5378
+
+pattern DemoteToHelperInvocation :: Capability
+pattern DemoteToHelperInvocation = Capability 5379
+
+pattern DemoteToHelperInvocationEXT :: Capability
+pattern DemoteToHelperInvocationEXT = Capability 5379
+
+pattern DisplacementMicromapNV :: Capability
+pattern DisplacementMicromapNV = Capability 5380
+
+pattern RayTracingOpacityMicromapEXT :: Capability
+pattern RayTracingOpacityMicromapEXT = Capability 5381
+
+pattern ShaderInvocationReorderNV :: Capability
+pattern ShaderInvocationReorderNV = Capability 5383
+
+pattern BindlessTextureNV :: Capability
+pattern BindlessTextureNV = Capability 5390
+
+pattern RayQueryPositionFetchKHR :: Capability
+pattern RayQueryPositionFetchKHR = Capability 5391
+
+pattern AtomicFloat16VectorNV :: Capability
+pattern AtomicFloat16VectorNV = Capability 5404
+
+pattern RayTracingDisplacementMicromapNV :: Capability
+pattern RayTracingDisplacementMicromapNV = Capability 5409
+
+pattern RawAccessChainsNV :: Capability
+pattern RawAccessChainsNV = Capability 5414
+
+pattern SubgroupShuffleINTEL :: Capability
+pattern SubgroupShuffleINTEL = Capability 5568
+
+pattern SubgroupBufferBlockIOINTEL :: Capability
+pattern SubgroupBufferBlockIOINTEL = Capability 5569
+
+pattern SubgroupImageBlockIOINTEL :: Capability
+pattern SubgroupImageBlockIOINTEL = Capability 5570
+
+pattern SubgroupImageMediaBlockIOINTEL :: Capability
+pattern SubgroupImageMediaBlockIOINTEL = Capability 5579
+
+pattern RoundToInfinityINTEL :: Capability
+pattern RoundToInfinityINTEL = Capability 5582
+
+pattern FloatingPointModeINTEL :: Capability
+pattern FloatingPointModeINTEL = Capability 5583
+
+pattern IntegerFunctions2INTEL :: Capability
+pattern IntegerFunctions2INTEL = Capability 5584
+
+pattern FunctionPointersINTEL :: Capability
+pattern FunctionPointersINTEL = Capability 5603
+
+pattern IndirectReferencesINTEL :: Capability
+pattern IndirectReferencesINTEL = Capability 5604
+
+pattern AsmINTEL :: Capability
+pattern AsmINTEL = Capability 5606
+
+pattern AtomicFloat32MinMaxEXT :: Capability
+pattern AtomicFloat32MinMaxEXT = Capability 5612
+
+pattern AtomicFloat64MinMaxEXT :: Capability
+pattern AtomicFloat64MinMaxEXT = Capability 5613
+
+pattern AtomicFloat16MinMaxEXT :: Capability
+pattern AtomicFloat16MinMaxEXT = Capability 5616
+
+pattern VectorComputeINTEL :: Capability
+pattern VectorComputeINTEL = Capability 5617
+
+pattern VectorAnyINTEL :: Capability
+pattern VectorAnyINTEL = Capability 5619
+
+pattern ExpectAssumeKHR :: Capability
+pattern ExpectAssumeKHR = Capability 5629
+
+pattern SubgroupAvcMotionEstimationINTEL :: Capability
+pattern SubgroupAvcMotionEstimationINTEL = Capability 5696
+
+pattern SubgroupAvcMotionEstimationIntraINTEL :: Capability
+pattern SubgroupAvcMotionEstimationIntraINTEL = Capability 5697
+
+pattern SubgroupAvcMotionEstimationChromaINTEL :: Capability
+pattern SubgroupAvcMotionEstimationChromaINTEL = Capability 5698
+
+pattern VariableLengthArrayINTEL :: Capability
+pattern VariableLengthArrayINTEL = Capability 5817
+
+pattern FunctionFloatControlINTEL :: Capability
+pattern FunctionFloatControlINTEL = Capability 5821
+
+pattern FPGAMemoryAttributesINTEL :: Capability
+pattern FPGAMemoryAttributesINTEL = Capability 5824
+
+pattern FPFastMathModeINTEL :: Capability
+pattern FPFastMathModeINTEL = Capability 5837
+
+pattern ArbitraryPrecisionIntegersINTEL :: Capability
+pattern ArbitraryPrecisionIntegersINTEL = Capability 5844
+
+pattern ArbitraryPrecisionFloatingPointINTEL :: Capability
+pattern ArbitraryPrecisionFloatingPointINTEL = Capability 5845
+
+pattern UnstructuredLoopControlsINTEL :: Capability
+pattern UnstructuredLoopControlsINTEL = Capability 5886
+
+pattern FPGALoopControlsINTEL :: Capability
+pattern FPGALoopControlsINTEL = Capability 5888
+
+pattern KernelAttributesINTEL :: Capability
+pattern KernelAttributesINTEL = Capability 5892
+
+pattern FPGAKernelAttributesINTEL :: Capability
+pattern FPGAKernelAttributesINTEL = Capability 5897
+
+pattern FPGAMemoryAccessesINTEL :: Capability
+pattern FPGAMemoryAccessesINTEL = Capability 5898
+
+pattern FPGAClusterAttributesINTEL :: Capability
+pattern FPGAClusterAttributesINTEL = Capability 5904
+
+pattern LoopFuseINTEL :: Capability
+pattern LoopFuseINTEL = Capability 5906
+
+pattern FPGADSPControlINTEL :: Capability
+pattern FPGADSPControlINTEL = Capability 5908
+
+pattern MemoryAccessAliasingINTEL :: Capability
+pattern MemoryAccessAliasingINTEL = Capability 5910
+
+pattern FPGAInvocationPipeliningAttributesINTEL :: Capability
+pattern FPGAInvocationPipeliningAttributesINTEL = Capability 5916
+
+pattern FPGABufferLocationINTEL :: Capability
+pattern FPGABufferLocationINTEL = Capability 5920
+
+pattern ArbitraryPrecisionFixedPointINTEL :: Capability
+pattern ArbitraryPrecisionFixedPointINTEL = Capability 5922
+
+pattern USMStorageClassesINTEL :: Capability
+pattern USMStorageClassesINTEL = Capability 5935
+
+pattern RuntimeAlignedAttributeINTEL :: Capability
+pattern RuntimeAlignedAttributeINTEL = Capability 5939
+
+pattern IOPipesINTEL :: Capability
+pattern IOPipesINTEL = Capability 5943
+
+pattern BlockingPipesINTEL :: Capability
+pattern BlockingPipesINTEL = Capability 5945
+
+pattern FPGARegINTEL :: Capability
+pattern FPGARegINTEL = Capability 5948
+
+pattern DotProductInputAll :: Capability
+pattern DotProductInputAll = Capability 6016
+
+pattern DotProductInputAllKHR :: Capability
+pattern DotProductInputAllKHR = Capability 6016
+
+pattern DotProductInput4x8Bit :: Capability
+pattern DotProductInput4x8Bit = Capability 6017
+
+pattern DotProductInput4x8BitKHR :: Capability
+pattern DotProductInput4x8BitKHR = Capability 6017
+
+pattern DotProductInput4x8BitPacked :: Capability
+pattern DotProductInput4x8BitPacked = Capability 6018
+
+pattern DotProductInput4x8BitPackedKHR :: Capability
+pattern DotProductInput4x8BitPackedKHR = Capability 6018
+
+pattern DotProduct :: Capability
+pattern DotProduct = Capability 6019
+
+pattern DotProductKHR :: Capability
+pattern DotProductKHR = Capability 6019
+
+pattern RayCullMaskKHR :: Capability
+pattern RayCullMaskKHR = Capability 6020
+
+pattern CooperativeMatrixKHR :: Capability
+pattern CooperativeMatrixKHR = Capability 6022
+
+pattern ReplicatedCompositesEXT :: Capability
+pattern ReplicatedCompositesEXT = Capability 6024
+
+pattern BitInstructions :: Capability
+pattern BitInstructions = Capability 6025
+
+pattern GroupNonUniformRotateKHR :: Capability
+pattern GroupNonUniformRotateKHR = Capability 6026
+
+pattern FloatControls2 :: Capability
+pattern FloatControls2 = Capability 6029
+
+pattern AtomicFloat32AddEXT :: Capability
+pattern AtomicFloat32AddEXT = Capability 6033
+
+pattern AtomicFloat64AddEXT :: Capability
+pattern AtomicFloat64AddEXT = Capability 6034
+
+pattern LongCompositesINTEL :: Capability
+pattern LongCompositesINTEL = Capability 6089
+
+pattern OptNoneINTEL :: Capability
+pattern OptNoneINTEL = Capability 6094
+
+pattern AtomicFloat16AddEXT :: Capability
+pattern AtomicFloat16AddEXT = Capability 6095
+
+pattern DebugInfoModuleINTEL :: Capability
+pattern DebugInfoModuleINTEL = Capability 6114
+
+pattern BFloat16ConversionINTEL :: Capability
+pattern BFloat16ConversionINTEL = Capability 6115
+
+pattern SplitBarrierINTEL :: Capability
+pattern SplitBarrierINTEL = Capability 6141
+
+pattern FPGAClusterAttributesV2INTEL :: Capability
+pattern FPGAClusterAttributesV2INTEL = Capability 6150
+
+pattern FPGAKernelAttributesv2INTEL :: Capability
+pattern FPGAKernelAttributesv2INTEL = Capability 6161
+
+pattern FPMaxErrorINTEL :: Capability
+pattern FPMaxErrorINTEL = Capability 6169
+
+pattern FPGALatencyControlINTEL :: Capability
+pattern FPGALatencyControlINTEL = Capability 6171
+
+pattern FPGAArgumentInterfacesINTEL :: Capability
+pattern FPGAArgumentInterfacesINTEL = Capability 6174
+
+pattern GlobalVariableHostAccessINTEL :: Capability
+pattern GlobalVariableHostAccessINTEL = Capability 6187
+
+pattern GlobalVariableFPGADecorationsINTEL :: Capability
+pattern GlobalVariableFPGADecorationsINTEL = Capability 6189
+
+pattern GroupUniformArithmeticKHR :: Capability
+pattern GroupUniformArithmeticKHR = Capability 6400
+
+pattern MaskedGatherScatterINTEL :: Capability
+pattern MaskedGatherScatterINTEL = Capability 6427
+
+pattern CacheControlsINTEL :: Capability
+pattern CacheControlsINTEL = Capability 6441
+
+pattern RegisterLimitsINTEL :: Capability
+pattern RegisterLimitsINTEL = Capability 6460
diff --git a/src/Data/SpirV/Enum/CooperativeMatrixLayout.hs b/src/Data/SpirV/Enum/CooperativeMatrixLayout.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/CooperativeMatrixLayout.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.CooperativeMatrixLayout where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype CooperativeMatrixLayout = CooperativeMatrixLayout Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show CooperativeMatrixLayout where
+  showsPrec p (CooperativeMatrixLayout v) = case v of
+    0 -> showString "RowMajorKHR"
+    1 -> showString "ColumnMajorKHR"
+    4202 -> showString "RowBlockedInterleavedARM"
+    4203 -> showString "ColumnBlockedInterleavedARM"
+    x -> showParen (p > 10) $ showString "CooperativeMatrixLayout " . showsPrec (p + 1) x
+
+pattern RowMajorKHR :: CooperativeMatrixLayout
+pattern RowMajorKHR = CooperativeMatrixLayout 0
+
+pattern ColumnMajorKHR :: CooperativeMatrixLayout
+pattern ColumnMajorKHR = CooperativeMatrixLayout 1
+
+pattern RowBlockedInterleavedARM :: CooperativeMatrixLayout
+pattern RowBlockedInterleavedARM = CooperativeMatrixLayout 4202
+
+pattern ColumnBlockedInterleavedARM :: CooperativeMatrixLayout
+pattern ColumnBlockedInterleavedARM = CooperativeMatrixLayout 4203
diff --git a/src/Data/SpirV/Enum/CooperativeMatrixOperands.hs b/src/Data/SpirV/Enum/CooperativeMatrixOperands.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/CooperativeMatrixOperands.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.CooperativeMatrixOperands where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type CooperativeMatrixOperands = CooperativeMatrixOperandsBits
+
+newtype CooperativeMatrixOperandsBits = CooperativeMatrixOperandsBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup CooperativeMatrixOperands where
+  (CooperativeMatrixOperandsBits a) <> (CooperativeMatrixOperandsBits b) = CooperativeMatrixOperandsBits (a .|. b)
+
+instance Monoid CooperativeMatrixOperands where
+  mempty = CooperativeMatrixOperandsBits 0
+
+pattern MatrixASignedComponentsKHR :: CooperativeMatrixOperandsBits
+pattern MatrixASignedComponentsKHR = CooperativeMatrixOperandsBits 0x00000001
+
+pattern MatrixBSignedComponentsKHR :: CooperativeMatrixOperandsBits
+pattern MatrixBSignedComponentsKHR = CooperativeMatrixOperandsBits 0x00000002
+
+pattern MatrixCSignedComponentsKHR :: CooperativeMatrixOperandsBits
+pattern MatrixCSignedComponentsKHR = CooperativeMatrixOperandsBits 0x00000004
+
+pattern MatrixResultSignedComponentsKHR :: CooperativeMatrixOperandsBits
+pattern MatrixResultSignedComponentsKHR = CooperativeMatrixOperandsBits 0x00000008
+
+pattern SaturatingAccumulationKHR :: CooperativeMatrixOperandsBits
+pattern SaturatingAccumulationKHR = CooperativeMatrixOperandsBits 0x00000010
diff --git a/src/Data/SpirV/Enum/CooperativeMatrixUse.hs b/src/Data/SpirV/Enum/CooperativeMatrixUse.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/CooperativeMatrixUse.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.CooperativeMatrixUse where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype CooperativeMatrixUse = CooperativeMatrixUse Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show CooperativeMatrixUse where
+  showsPrec p (CooperativeMatrixUse v) = case v of
+    0 -> showString "MatrixAKHR"
+    1 -> showString "MatrixBKHR"
+    2 -> showString "MatrixAccumulatorKHR"
+    x -> showParen (p > 10) $ showString "CooperativeMatrixUse " . showsPrec (p + 1) x
+
+pattern MatrixAKHR :: CooperativeMatrixUse
+pattern MatrixAKHR = CooperativeMatrixUse 0
+
+pattern MatrixBKHR :: CooperativeMatrixUse
+pattern MatrixBKHR = CooperativeMatrixUse 1
+
+pattern MatrixAccumulatorKHR :: CooperativeMatrixUse
+pattern MatrixAccumulatorKHR = CooperativeMatrixUse 2
diff --git a/src/Data/SpirV/Enum/Decoration.hs b/src/Data/SpirV/Enum/Decoration.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/Decoration.hs
@@ -0,0 +1,589 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.Decoration where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype Decoration = Decoration Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show Decoration where
+  showsPrec p (Decoration v) = case v of
+    0 -> showString "RelaxedPrecision"
+    1 -> showString "SpecId"
+    2 -> showString "Block"
+    3 -> showString "BufferBlock"
+    4 -> showString "RowMajor"
+    5 -> showString "ColMajor"
+    6 -> showString "ArrayStride"
+    7 -> showString "MatrixStride"
+    8 -> showString "GLSLShared"
+    9 -> showString "GLSLPacked"
+    10 -> showString "CPacked"
+    11 -> showString "BuiltIn"
+    13 -> showString "NoPerspective"
+    14 -> showString "Flat"
+    15 -> showString "Patch"
+    16 -> showString "Centroid"
+    17 -> showString "Sample"
+    18 -> showString "Invariant"
+    19 -> showString "Restrict"
+    20 -> showString "Aliased"
+    21 -> showString "Volatile"
+    22 -> showString "Constant"
+    23 -> showString "Coherent"
+    24 -> showString "NonWritable"
+    25 -> showString "NonReadable"
+    26 -> showString "Uniform"
+    27 -> showString "UniformId"
+    28 -> showString "SaturatedConversion"
+    29 -> showString "Stream"
+    30 -> showString "Location"
+    31 -> showString "Component"
+    32 -> showString "Index"
+    33 -> showString "Binding"
+    34 -> showString "DescriptorSet"
+    35 -> showString "Offset"
+    36 -> showString "XfbBuffer"
+    37 -> showString "XfbStride"
+    38 -> showString "FuncParamAttr"
+    39 -> showString "FPRoundingMode"
+    40 -> showString "FPFastMathMode"
+    41 -> showString "LinkageAttributes"
+    42 -> showString "NoContraction"
+    43 -> showString "InputAttachmentIndex"
+    44 -> showString "Alignment"
+    45 -> showString "MaxByteOffset"
+    46 -> showString "AlignmentId"
+    47 -> showString "MaxByteOffsetId"
+    4469 -> showString "NoSignedWrap"
+    4470 -> showString "NoUnsignedWrap"
+    4487 -> showString "WeightTextureQCOM"
+    4488 -> showString "BlockMatchTextureQCOM"
+    4499 -> showString "BlockMatchSamplerQCOM"
+    4999 -> showString "ExplicitInterpAMD"
+    5019 -> showString "NodeSharesPayloadLimitsWithAMDX"
+    5020 -> showString "NodeMaxPayloadsAMDX"
+    5078 -> showString "TrackFinishWritingAMDX"
+    5091 -> showString "PayloadNodeNameAMDX"
+    5248 -> showString "OverrideCoverageNV"
+    5250 -> showString "PassthroughNV"
+    5252 -> showString "ViewportRelativeNV"
+    5256 -> showString "SecondaryViewportRelativeNV"
+    5271 -> showString "PerPrimitiveEXT"
+    5272 -> showString "PerViewNV"
+    5273 -> showString "PerTaskNV"
+    5285 -> showString "PerVertexKHR"
+    5300 -> showString "NonUniform"
+    5355 -> showString "RestrictPointer"
+    5356 -> showString "AliasedPointer"
+    5386 -> showString "HitObjectShaderRecordBufferNV"
+    5398 -> showString "BindlessSamplerNV"
+    5399 -> showString "BindlessImageNV"
+    5400 -> showString "BoundSamplerNV"
+    5401 -> showString "BoundImageNV"
+    5599 -> showString "SIMTCallINTEL"
+    5602 -> showString "ReferencedIndirectlyINTEL"
+    5607 -> showString "ClobberINTEL"
+    5608 -> showString "SideEffectsINTEL"
+    5624 -> showString "VectorComputeVariableINTEL"
+    5625 -> showString "FuncParamIOKindINTEL"
+    5626 -> showString "VectorComputeFunctionINTEL"
+    5627 -> showString "StackCallINTEL"
+    5628 -> showString "GlobalVariableOffsetINTEL"
+    5634 -> showString "CounterBuffer"
+    5635 -> showString "HlslSemanticGOOGLE"
+    5636 -> showString "UserTypeGOOGLE"
+    5822 -> showString "FunctionRoundingModeINTEL"
+    5823 -> showString "FunctionDenormModeINTEL"
+    5825 -> showString "RegisterINTEL"
+    5826 -> showString "MemoryINTEL"
+    5827 -> showString "NumbanksINTEL"
+    5828 -> showString "BankwidthINTEL"
+    5829 -> showString "MaxPrivateCopiesINTEL"
+    5830 -> showString "SinglepumpINTEL"
+    5831 -> showString "DoublepumpINTEL"
+    5832 -> showString "MaxReplicatesINTEL"
+    5833 -> showString "SimpleDualPortINTEL"
+    5834 -> showString "MergeINTEL"
+    5835 -> showString "BankBitsINTEL"
+    5836 -> showString "ForcePow2DepthINTEL"
+    5883 -> showString "StridesizeINTEL"
+    5884 -> showString "WordsizeINTEL"
+    5885 -> showString "TrueDualPortINTEL"
+    5899 -> showString "BurstCoalesceINTEL"
+    5900 -> showString "CacheSizeINTEL"
+    5901 -> showString "DontStaticallyCoalesceINTEL"
+    5902 -> showString "PrefetchINTEL"
+    5905 -> showString "StallEnableINTEL"
+    5907 -> showString "FuseLoopsInFunctionINTEL"
+    5909 -> showString "MathOpDSPModeINTEL"
+    5914 -> showString "AliasScopeINTEL"
+    5915 -> showString "NoAliasINTEL"
+    5917 -> showString "InitiationIntervalINTEL"
+    5918 -> showString "MaxConcurrencyINTEL"
+    5919 -> showString "PipelineEnableINTEL"
+    5921 -> showString "BufferLocationINTEL"
+    5944 -> showString "IOPipeStorageINTEL"
+    6080 -> showString "FunctionFloatingPointModeINTEL"
+    6085 -> showString "SingleElementVectorINTEL"
+    6087 -> showString "VectorComputeCallableFunctionINTEL"
+    6140 -> showString "MediaBlockIOINTEL"
+    6151 -> showString "StallFreeINTEL"
+    6170 -> showString "FPMaxErrorDecorationINTEL"
+    6172 -> showString "LatencyControlLabelINTEL"
+    6173 -> showString "LatencyControlConstraintINTEL"
+    6175 -> showString "ConduitKernelArgumentINTEL"
+    6176 -> showString "RegisterMapKernelArgumentINTEL"
+    6177 -> showString "MMHostInterfaceAddressWidthINTEL"
+    6178 -> showString "MMHostInterfaceDataWidthINTEL"
+    6179 -> showString "MMHostInterfaceLatencyINTEL"
+    6180 -> showString "MMHostInterfaceReadWriteModeINTEL"
+    6181 -> showString "MMHostInterfaceMaxBurstINTEL"
+    6182 -> showString "MMHostInterfaceWaitRequestINTEL"
+    6183 -> showString "StableKernelArgumentINTEL"
+    6188 -> showString "HostAccessINTEL"
+    6190 -> showString "InitModeINTEL"
+    6191 -> showString "ImplementInRegisterMapINTEL"
+    6442 -> showString "CacheControlLoadINTEL"
+    6443 -> showString "CacheControlStoreINTEL"
+    x -> showParen (p > 10) $ showString "Decoration " . showsPrec (p + 1) x
+
+pattern RelaxedPrecision :: Decoration
+pattern RelaxedPrecision = Decoration 0
+
+pattern SpecId :: Decoration
+pattern SpecId = Decoration 1
+
+pattern Block :: Decoration
+pattern Block = Decoration 2
+
+pattern BufferBlock :: Decoration
+pattern BufferBlock = Decoration 3
+
+pattern RowMajor :: Decoration
+pattern RowMajor = Decoration 4
+
+pattern ColMajor :: Decoration
+pattern ColMajor = Decoration 5
+
+pattern ArrayStride :: Decoration
+pattern ArrayStride = Decoration 6
+
+pattern MatrixStride :: Decoration
+pattern MatrixStride = Decoration 7
+
+pattern GLSLShared :: Decoration
+pattern GLSLShared = Decoration 8
+
+pattern GLSLPacked :: Decoration
+pattern GLSLPacked = Decoration 9
+
+pattern CPacked :: Decoration
+pattern CPacked = Decoration 10
+
+pattern BuiltIn :: Decoration
+pattern BuiltIn = Decoration 11
+
+pattern NoPerspective :: Decoration
+pattern NoPerspective = Decoration 13
+
+pattern Flat :: Decoration
+pattern Flat = Decoration 14
+
+pattern Patch :: Decoration
+pattern Patch = Decoration 15
+
+pattern Centroid :: Decoration
+pattern Centroid = Decoration 16
+
+pattern Sample :: Decoration
+pattern Sample = Decoration 17
+
+pattern Invariant :: Decoration
+pattern Invariant = Decoration 18
+
+pattern Restrict :: Decoration
+pattern Restrict = Decoration 19
+
+pattern Aliased :: Decoration
+pattern Aliased = Decoration 20
+
+pattern Volatile :: Decoration
+pattern Volatile = Decoration 21
+
+pattern Constant :: Decoration
+pattern Constant = Decoration 22
+
+pattern Coherent :: Decoration
+pattern Coherent = Decoration 23
+
+pattern NonWritable :: Decoration
+pattern NonWritable = Decoration 24
+
+pattern NonReadable :: Decoration
+pattern NonReadable = Decoration 25
+
+pattern Uniform :: Decoration
+pattern Uniform = Decoration 26
+
+pattern UniformId :: Decoration
+pattern UniformId = Decoration 27
+
+pattern SaturatedConversion :: Decoration
+pattern SaturatedConversion = Decoration 28
+
+pattern Stream :: Decoration
+pattern Stream = Decoration 29
+
+pattern Location :: Decoration
+pattern Location = Decoration 30
+
+pattern Component :: Decoration
+pattern Component = Decoration 31
+
+pattern Index :: Decoration
+pattern Index = Decoration 32
+
+pattern Binding :: Decoration
+pattern Binding = Decoration 33
+
+pattern DescriptorSet :: Decoration
+pattern DescriptorSet = Decoration 34
+
+pattern Offset :: Decoration
+pattern Offset = Decoration 35
+
+pattern XfbBuffer :: Decoration
+pattern XfbBuffer = Decoration 36
+
+pattern XfbStride :: Decoration
+pattern XfbStride = Decoration 37
+
+pattern FuncParamAttr :: Decoration
+pattern FuncParamAttr = Decoration 38
+
+pattern FPRoundingMode :: Decoration
+pattern FPRoundingMode = Decoration 39
+
+pattern FPFastMathMode :: Decoration
+pattern FPFastMathMode = Decoration 40
+
+pattern LinkageAttributes :: Decoration
+pattern LinkageAttributes = Decoration 41
+
+pattern NoContraction :: Decoration
+pattern NoContraction = Decoration 42
+
+pattern InputAttachmentIndex :: Decoration
+pattern InputAttachmentIndex = Decoration 43
+
+pattern Alignment :: Decoration
+pattern Alignment = Decoration 44
+
+pattern MaxByteOffset :: Decoration
+pattern MaxByteOffset = Decoration 45
+
+pattern AlignmentId :: Decoration
+pattern AlignmentId = Decoration 46
+
+pattern MaxByteOffsetId :: Decoration
+pattern MaxByteOffsetId = Decoration 47
+
+pattern NoSignedWrap :: Decoration
+pattern NoSignedWrap = Decoration 4469
+
+pattern NoUnsignedWrap :: Decoration
+pattern NoUnsignedWrap = Decoration 4470
+
+pattern WeightTextureQCOM :: Decoration
+pattern WeightTextureQCOM = Decoration 4487
+
+pattern BlockMatchTextureQCOM :: Decoration
+pattern BlockMatchTextureQCOM = Decoration 4488
+
+pattern BlockMatchSamplerQCOM :: Decoration
+pattern BlockMatchSamplerQCOM = Decoration 4499
+
+pattern ExplicitInterpAMD :: Decoration
+pattern ExplicitInterpAMD = Decoration 4999
+
+pattern NodeSharesPayloadLimitsWithAMDX :: Decoration
+pattern NodeSharesPayloadLimitsWithAMDX = Decoration 5019
+
+pattern NodeMaxPayloadsAMDX :: Decoration
+pattern NodeMaxPayloadsAMDX = Decoration 5020
+
+pattern TrackFinishWritingAMDX :: Decoration
+pattern TrackFinishWritingAMDX = Decoration 5078
+
+pattern PayloadNodeNameAMDX :: Decoration
+pattern PayloadNodeNameAMDX = Decoration 5091
+
+pattern OverrideCoverageNV :: Decoration
+pattern OverrideCoverageNV = Decoration 5248
+
+pattern PassthroughNV :: Decoration
+pattern PassthroughNV = Decoration 5250
+
+pattern ViewportRelativeNV :: Decoration
+pattern ViewportRelativeNV = Decoration 5252
+
+pattern SecondaryViewportRelativeNV :: Decoration
+pattern SecondaryViewportRelativeNV = Decoration 5256
+
+pattern PerPrimitiveEXT :: Decoration
+pattern PerPrimitiveEXT = Decoration 5271
+
+pattern PerPrimitiveNV :: Decoration
+pattern PerPrimitiveNV = Decoration 5271
+
+pattern PerViewNV :: Decoration
+pattern PerViewNV = Decoration 5272
+
+pattern PerTaskNV :: Decoration
+pattern PerTaskNV = Decoration 5273
+
+pattern PerVertexKHR :: Decoration
+pattern PerVertexKHR = Decoration 5285
+
+pattern PerVertexNV :: Decoration
+pattern PerVertexNV = Decoration 5285
+
+pattern NonUniform :: Decoration
+pattern NonUniform = Decoration 5300
+
+pattern NonUniformEXT :: Decoration
+pattern NonUniformEXT = Decoration 5300
+
+pattern RestrictPointer :: Decoration
+pattern RestrictPointer = Decoration 5355
+
+pattern RestrictPointerEXT :: Decoration
+pattern RestrictPointerEXT = Decoration 5355
+
+pattern AliasedPointer :: Decoration
+pattern AliasedPointer = Decoration 5356
+
+pattern AliasedPointerEXT :: Decoration
+pattern AliasedPointerEXT = Decoration 5356
+
+pattern HitObjectShaderRecordBufferNV :: Decoration
+pattern HitObjectShaderRecordBufferNV = Decoration 5386
+
+pattern BindlessSamplerNV :: Decoration
+pattern BindlessSamplerNV = Decoration 5398
+
+pattern BindlessImageNV :: Decoration
+pattern BindlessImageNV = Decoration 5399
+
+pattern BoundSamplerNV :: Decoration
+pattern BoundSamplerNV = Decoration 5400
+
+pattern BoundImageNV :: Decoration
+pattern BoundImageNV = Decoration 5401
+
+pattern SIMTCallINTEL :: Decoration
+pattern SIMTCallINTEL = Decoration 5599
+
+pattern ReferencedIndirectlyINTEL :: Decoration
+pattern ReferencedIndirectlyINTEL = Decoration 5602
+
+pattern ClobberINTEL :: Decoration
+pattern ClobberINTEL = Decoration 5607
+
+pattern SideEffectsINTEL :: Decoration
+pattern SideEffectsINTEL = Decoration 5608
+
+pattern VectorComputeVariableINTEL :: Decoration
+pattern VectorComputeVariableINTEL = Decoration 5624
+
+pattern FuncParamIOKindINTEL :: Decoration
+pattern FuncParamIOKindINTEL = Decoration 5625
+
+pattern VectorComputeFunctionINTEL :: Decoration
+pattern VectorComputeFunctionINTEL = Decoration 5626
+
+pattern StackCallINTEL :: Decoration
+pattern StackCallINTEL = Decoration 5627
+
+pattern GlobalVariableOffsetINTEL :: Decoration
+pattern GlobalVariableOffsetINTEL = Decoration 5628
+
+pattern CounterBuffer :: Decoration
+pattern CounterBuffer = Decoration 5634
+
+pattern HlslCounterBufferGOOGLE :: Decoration
+pattern HlslCounterBufferGOOGLE = Decoration 5634
+
+pattern HlslSemanticGOOGLE :: Decoration
+pattern HlslSemanticGOOGLE = Decoration 5635
+
+pattern UserSemantic :: Decoration
+pattern UserSemantic = Decoration 5635
+
+pattern UserTypeGOOGLE :: Decoration
+pattern UserTypeGOOGLE = Decoration 5636
+
+pattern FunctionRoundingModeINTEL :: Decoration
+pattern FunctionRoundingModeINTEL = Decoration 5822
+
+pattern FunctionDenormModeINTEL :: Decoration
+pattern FunctionDenormModeINTEL = Decoration 5823
+
+pattern RegisterINTEL :: Decoration
+pattern RegisterINTEL = Decoration 5825
+
+pattern MemoryINTEL :: Decoration
+pattern MemoryINTEL = Decoration 5826
+
+pattern NumbanksINTEL :: Decoration
+pattern NumbanksINTEL = Decoration 5827
+
+pattern BankwidthINTEL :: Decoration
+pattern BankwidthINTEL = Decoration 5828
+
+pattern MaxPrivateCopiesINTEL :: Decoration
+pattern MaxPrivateCopiesINTEL = Decoration 5829
+
+pattern SinglepumpINTEL :: Decoration
+pattern SinglepumpINTEL = Decoration 5830
+
+pattern DoublepumpINTEL :: Decoration
+pattern DoublepumpINTEL = Decoration 5831
+
+pattern MaxReplicatesINTEL :: Decoration
+pattern MaxReplicatesINTEL = Decoration 5832
+
+pattern SimpleDualPortINTEL :: Decoration
+pattern SimpleDualPortINTEL = Decoration 5833
+
+pattern MergeINTEL :: Decoration
+pattern MergeINTEL = Decoration 5834
+
+pattern BankBitsINTEL :: Decoration
+pattern BankBitsINTEL = Decoration 5835
+
+pattern ForcePow2DepthINTEL :: Decoration
+pattern ForcePow2DepthINTEL = Decoration 5836
+
+pattern StridesizeINTEL :: Decoration
+pattern StridesizeINTEL = Decoration 5883
+
+pattern WordsizeINTEL :: Decoration
+pattern WordsizeINTEL = Decoration 5884
+
+pattern TrueDualPortINTEL :: Decoration
+pattern TrueDualPortINTEL = Decoration 5885
+
+pattern BurstCoalesceINTEL :: Decoration
+pattern BurstCoalesceINTEL = Decoration 5899
+
+pattern CacheSizeINTEL :: Decoration
+pattern CacheSizeINTEL = Decoration 5900
+
+pattern DontStaticallyCoalesceINTEL :: Decoration
+pattern DontStaticallyCoalesceINTEL = Decoration 5901
+
+pattern PrefetchINTEL :: Decoration
+pattern PrefetchINTEL = Decoration 5902
+
+pattern StallEnableINTEL :: Decoration
+pattern StallEnableINTEL = Decoration 5905
+
+pattern FuseLoopsInFunctionINTEL :: Decoration
+pattern FuseLoopsInFunctionINTEL = Decoration 5907
+
+pattern MathOpDSPModeINTEL :: Decoration
+pattern MathOpDSPModeINTEL = Decoration 5909
+
+pattern AliasScopeINTEL :: Decoration
+pattern AliasScopeINTEL = Decoration 5914
+
+pattern NoAliasINTEL :: Decoration
+pattern NoAliasINTEL = Decoration 5915
+
+pattern InitiationIntervalINTEL :: Decoration
+pattern InitiationIntervalINTEL = Decoration 5917
+
+pattern MaxConcurrencyINTEL :: Decoration
+pattern MaxConcurrencyINTEL = Decoration 5918
+
+pattern PipelineEnableINTEL :: Decoration
+pattern PipelineEnableINTEL = Decoration 5919
+
+pattern BufferLocationINTEL :: Decoration
+pattern BufferLocationINTEL = Decoration 5921
+
+pattern IOPipeStorageINTEL :: Decoration
+pattern IOPipeStorageINTEL = Decoration 5944
+
+pattern FunctionFloatingPointModeINTEL :: Decoration
+pattern FunctionFloatingPointModeINTEL = Decoration 6080
+
+pattern SingleElementVectorINTEL :: Decoration
+pattern SingleElementVectorINTEL = Decoration 6085
+
+pattern VectorComputeCallableFunctionINTEL :: Decoration
+pattern VectorComputeCallableFunctionINTEL = Decoration 6087
+
+pattern MediaBlockIOINTEL :: Decoration
+pattern MediaBlockIOINTEL = Decoration 6140
+
+pattern StallFreeINTEL :: Decoration
+pattern StallFreeINTEL = Decoration 6151
+
+pattern FPMaxErrorDecorationINTEL :: Decoration
+pattern FPMaxErrorDecorationINTEL = Decoration 6170
+
+pattern LatencyControlLabelINTEL :: Decoration
+pattern LatencyControlLabelINTEL = Decoration 6172
+
+pattern LatencyControlConstraintINTEL :: Decoration
+pattern LatencyControlConstraintINTEL = Decoration 6173
+
+pattern ConduitKernelArgumentINTEL :: Decoration
+pattern ConduitKernelArgumentINTEL = Decoration 6175
+
+pattern RegisterMapKernelArgumentINTEL :: Decoration
+pattern RegisterMapKernelArgumentINTEL = Decoration 6176
+
+pattern MMHostInterfaceAddressWidthINTEL :: Decoration
+pattern MMHostInterfaceAddressWidthINTEL = Decoration 6177
+
+pattern MMHostInterfaceDataWidthINTEL :: Decoration
+pattern MMHostInterfaceDataWidthINTEL = Decoration 6178
+
+pattern MMHostInterfaceLatencyINTEL :: Decoration
+pattern MMHostInterfaceLatencyINTEL = Decoration 6179
+
+pattern MMHostInterfaceReadWriteModeINTEL :: Decoration
+pattern MMHostInterfaceReadWriteModeINTEL = Decoration 6180
+
+pattern MMHostInterfaceMaxBurstINTEL :: Decoration
+pattern MMHostInterfaceMaxBurstINTEL = Decoration 6181
+
+pattern MMHostInterfaceWaitRequestINTEL :: Decoration
+pattern MMHostInterfaceWaitRequestINTEL = Decoration 6182
+
+pattern StableKernelArgumentINTEL :: Decoration
+pattern StableKernelArgumentINTEL = Decoration 6183
+
+pattern HostAccessINTEL :: Decoration
+pattern HostAccessINTEL = Decoration 6188
+
+pattern InitModeINTEL :: Decoration
+pattern InitModeINTEL = Decoration 6190
+
+pattern ImplementInRegisterMapINTEL :: Decoration
+pattern ImplementInRegisterMapINTEL = Decoration 6191
+
+pattern CacheControlLoadINTEL :: Decoration
+pattern CacheControlLoadINTEL = Decoration 6442
+
+pattern CacheControlStoreINTEL :: Decoration
+pattern CacheControlStoreINTEL = Decoration 6443
diff --git a/src/Data/SpirV/Enum/Dim.hs b/src/Data/SpirV/Enum/Dim.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/Dim.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.Dim where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype Dim = Dim Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show Dim where
+  showsPrec p (Dim v) = case v of
+    0 -> showString "Dim1D"
+    1 -> showString "Dim2D"
+    2 -> showString "Dim3D"
+    3 -> showString "Cube"
+    4 -> showString "Rect"
+    5 -> showString "Buffer"
+    6 -> showString "SubpassData"
+    4173 -> showString "TileImageDataEXT"
+    x -> showParen (p > 10) $ showString "Dim " . showsPrec (p + 1) x
+
+pattern Dim1D :: Dim
+pattern Dim1D = Dim 0
+
+pattern Dim2D :: Dim
+pattern Dim2D = Dim 1
+
+pattern Dim3D :: Dim
+pattern Dim3D = Dim 2
+
+pattern Cube :: Dim
+pattern Cube = Dim 3
+
+pattern Rect :: Dim
+pattern Rect = Dim 4
+
+pattern Buffer :: Dim
+pattern Buffer = Dim 5
+
+pattern SubpassData :: Dim
+pattern SubpassData = Dim 6
+
+pattern TileImageDataEXT :: Dim
+pattern TileImageDataEXT = Dim 4173
diff --git a/src/Data/SpirV/Enum/ExecutionMode.hs b/src/Data/SpirV/Enum/ExecutionMode.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/ExecutionMode.hs
@@ -0,0 +1,393 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.ExecutionMode where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype ExecutionMode = ExecutionMode Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show ExecutionMode where
+  showsPrec p (ExecutionMode v) = case v of
+    0 -> showString "Invocations"
+    1 -> showString "SpacingEqual"
+    2 -> showString "SpacingFractionalEven"
+    3 -> showString "SpacingFractionalOdd"
+    4 -> showString "VertexOrderCw"
+    5 -> showString "VertexOrderCcw"
+    6 -> showString "PixelCenterInteger"
+    7 -> showString "OriginUpperLeft"
+    8 -> showString "OriginLowerLeft"
+    9 -> showString "EarlyFragmentTests"
+    10 -> showString "PointMode"
+    11 -> showString "Xfb"
+    12 -> showString "DepthReplacing"
+    14 -> showString "DepthGreater"
+    15 -> showString "DepthLess"
+    16 -> showString "DepthUnchanged"
+    17 -> showString "LocalSize"
+    18 -> showString "LocalSizeHint"
+    19 -> showString "InputPoints"
+    20 -> showString "InputLines"
+    21 -> showString "InputLinesAdjacency"
+    22 -> showString "Triangles"
+    23 -> showString "InputTrianglesAdjacency"
+    24 -> showString "Quads"
+    25 -> showString "Isolines"
+    26 -> showString "OutputVertices"
+    27 -> showString "OutputPoints"
+    28 -> showString "OutputLineStrip"
+    29 -> showString "OutputTriangleStrip"
+    30 -> showString "VecTypeHint"
+    31 -> showString "ContractionOff"
+    33 -> showString "Initializer"
+    34 -> showString "Finalizer"
+    35 -> showString "SubgroupSize"
+    36 -> showString "SubgroupsPerWorkgroup"
+    37 -> showString "SubgroupsPerWorkgroupId"
+    38 -> showString "LocalSizeId"
+    39 -> showString "LocalSizeHintId"
+    4169 -> showString "NonCoherentColorAttachmentReadEXT"
+    4170 -> showString "NonCoherentDepthAttachmentReadEXT"
+    4171 -> showString "NonCoherentStencilAttachmentReadEXT"
+    4421 -> showString "SubgroupUniformControlFlowKHR"
+    4446 -> showString "PostDepthCoverage"
+    4459 -> showString "DenormPreserve"
+    4460 -> showString "DenormFlushToZero"
+    4461 -> showString "SignedZeroInfNanPreserve"
+    4462 -> showString "RoundingModeRTE"
+    4463 -> showString "RoundingModeRTZ"
+    5017 -> showString "EarlyAndLateFragmentTestsAMD"
+    5027 -> showString "StencilRefReplacingEXT"
+    5069 -> showString "CoalescingAMDX"
+    5071 -> showString "MaxNodeRecursionAMDX"
+    5072 -> showString "StaticNumWorkgroupsAMDX"
+    5073 -> showString "ShaderIndexAMDX"
+    5077 -> showString "MaxNumWorkgroupsAMDX"
+    5079 -> showString "StencilRefUnchangedFrontAMD"
+    5080 -> showString "StencilRefGreaterFrontAMD"
+    5081 -> showString "StencilRefLessFrontAMD"
+    5082 -> showString "StencilRefUnchangedBackAMD"
+    5083 -> showString "StencilRefGreaterBackAMD"
+    5084 -> showString "StencilRefLessBackAMD"
+    5088 -> showString "QuadDerivativesKHR"
+    5089 -> showString "RequireFullQuadsKHR"
+    5269 -> showString "OutputLinesEXT"
+    5270 -> showString "OutputPrimitivesEXT"
+    5289 -> showString "DerivativeGroupQuadsNV"
+    5290 -> showString "DerivativeGroupLinearNV"
+    5298 -> showString "OutputTrianglesEXT"
+    5366 -> showString "PixelInterlockOrderedEXT"
+    5367 -> showString "PixelInterlockUnorderedEXT"
+    5368 -> showString "SampleInterlockOrderedEXT"
+    5369 -> showString "SampleInterlockUnorderedEXT"
+    5370 -> showString "ShadingRateInterlockOrderedEXT"
+    5371 -> showString "ShadingRateInterlockUnorderedEXT"
+    5618 -> showString "SharedLocalMemorySizeINTEL"
+    5620 -> showString "RoundingModeRTPINTEL"
+    5621 -> showString "RoundingModeRTNINTEL"
+    5622 -> showString "FloatingPointModeALTINTEL"
+    5623 -> showString "FloatingPointModeIEEEINTEL"
+    5893 -> showString "MaxWorkgroupSizeINTEL"
+    5894 -> showString "MaxWorkDimINTEL"
+    5895 -> showString "NoGlobalOffsetINTEL"
+    5896 -> showString "NumSIMDWorkitemsINTEL"
+    5903 -> showString "SchedulerTargetFmaxMhzINTEL"
+    6023 -> showString "MaximallyReconvergesKHR"
+    6028 -> showString "FPFastMathDefault"
+    6154 -> showString "StreamingInterfaceINTEL"
+    6160 -> showString "RegisterMapInterfaceINTEL"
+    6417 -> showString "NamedBarrierCountINTEL"
+    6461 -> showString "MaximumRegistersINTEL"
+    6462 -> showString "MaximumRegistersIdINTEL"
+    6463 -> showString "NamedMaximumRegistersINTEL"
+    x -> showParen (p > 10) $ showString "ExecutionMode " . showsPrec (p + 1) x
+
+pattern Invocations :: ExecutionMode
+pattern Invocations = ExecutionMode 0
+
+pattern SpacingEqual :: ExecutionMode
+pattern SpacingEqual = ExecutionMode 1
+
+pattern SpacingFractionalEven :: ExecutionMode
+pattern SpacingFractionalEven = ExecutionMode 2
+
+pattern SpacingFractionalOdd :: ExecutionMode
+pattern SpacingFractionalOdd = ExecutionMode 3
+
+pattern VertexOrderCw :: ExecutionMode
+pattern VertexOrderCw = ExecutionMode 4
+
+pattern VertexOrderCcw :: ExecutionMode
+pattern VertexOrderCcw = ExecutionMode 5
+
+pattern PixelCenterInteger :: ExecutionMode
+pattern PixelCenterInteger = ExecutionMode 6
+
+pattern OriginUpperLeft :: ExecutionMode
+pattern OriginUpperLeft = ExecutionMode 7
+
+pattern OriginLowerLeft :: ExecutionMode
+pattern OriginLowerLeft = ExecutionMode 8
+
+pattern EarlyFragmentTests :: ExecutionMode
+pattern EarlyFragmentTests = ExecutionMode 9
+
+pattern PointMode :: ExecutionMode
+pattern PointMode = ExecutionMode 10
+
+pattern Xfb :: ExecutionMode
+pattern Xfb = ExecutionMode 11
+
+pattern DepthReplacing :: ExecutionMode
+pattern DepthReplacing = ExecutionMode 12
+
+pattern DepthGreater :: ExecutionMode
+pattern DepthGreater = ExecutionMode 14
+
+pattern DepthLess :: ExecutionMode
+pattern DepthLess = ExecutionMode 15
+
+pattern DepthUnchanged :: ExecutionMode
+pattern DepthUnchanged = ExecutionMode 16
+
+pattern LocalSize :: ExecutionMode
+pattern LocalSize = ExecutionMode 17
+
+pattern LocalSizeHint :: ExecutionMode
+pattern LocalSizeHint = ExecutionMode 18
+
+pattern InputPoints :: ExecutionMode
+pattern InputPoints = ExecutionMode 19
+
+pattern InputLines :: ExecutionMode
+pattern InputLines = ExecutionMode 20
+
+pattern InputLinesAdjacency :: ExecutionMode
+pattern InputLinesAdjacency = ExecutionMode 21
+
+pattern Triangles :: ExecutionMode
+pattern Triangles = ExecutionMode 22
+
+pattern InputTrianglesAdjacency :: ExecutionMode
+pattern InputTrianglesAdjacency = ExecutionMode 23
+
+pattern Quads :: ExecutionMode
+pattern Quads = ExecutionMode 24
+
+pattern Isolines :: ExecutionMode
+pattern Isolines = ExecutionMode 25
+
+pattern OutputVertices :: ExecutionMode
+pattern OutputVertices = ExecutionMode 26
+
+pattern OutputPoints :: ExecutionMode
+pattern OutputPoints = ExecutionMode 27
+
+pattern OutputLineStrip :: ExecutionMode
+pattern OutputLineStrip = ExecutionMode 28
+
+pattern OutputTriangleStrip :: ExecutionMode
+pattern OutputTriangleStrip = ExecutionMode 29
+
+pattern VecTypeHint :: ExecutionMode
+pattern VecTypeHint = ExecutionMode 30
+
+pattern ContractionOff :: ExecutionMode
+pattern ContractionOff = ExecutionMode 31
+
+pattern Initializer :: ExecutionMode
+pattern Initializer = ExecutionMode 33
+
+pattern Finalizer :: ExecutionMode
+pattern Finalizer = ExecutionMode 34
+
+pattern SubgroupSize :: ExecutionMode
+pattern SubgroupSize = ExecutionMode 35
+
+pattern SubgroupsPerWorkgroup :: ExecutionMode
+pattern SubgroupsPerWorkgroup = ExecutionMode 36
+
+pattern SubgroupsPerWorkgroupId :: ExecutionMode
+pattern SubgroupsPerWorkgroupId = ExecutionMode 37
+
+pattern LocalSizeId :: ExecutionMode
+pattern LocalSizeId = ExecutionMode 38
+
+pattern LocalSizeHintId :: ExecutionMode
+pattern LocalSizeHintId = ExecutionMode 39
+
+pattern NonCoherentColorAttachmentReadEXT :: ExecutionMode
+pattern NonCoherentColorAttachmentReadEXT = ExecutionMode 4169
+
+pattern NonCoherentDepthAttachmentReadEXT :: ExecutionMode
+pattern NonCoherentDepthAttachmentReadEXT = ExecutionMode 4170
+
+pattern NonCoherentStencilAttachmentReadEXT :: ExecutionMode
+pattern NonCoherentStencilAttachmentReadEXT = ExecutionMode 4171
+
+pattern SubgroupUniformControlFlowKHR :: ExecutionMode
+pattern SubgroupUniformControlFlowKHR = ExecutionMode 4421
+
+pattern PostDepthCoverage :: ExecutionMode
+pattern PostDepthCoverage = ExecutionMode 4446
+
+pattern DenormPreserve :: ExecutionMode
+pattern DenormPreserve = ExecutionMode 4459
+
+pattern DenormFlushToZero :: ExecutionMode
+pattern DenormFlushToZero = ExecutionMode 4460
+
+pattern SignedZeroInfNanPreserve :: ExecutionMode
+pattern SignedZeroInfNanPreserve = ExecutionMode 4461
+
+pattern RoundingModeRTE :: ExecutionMode
+pattern RoundingModeRTE = ExecutionMode 4462
+
+pattern RoundingModeRTZ :: ExecutionMode
+pattern RoundingModeRTZ = ExecutionMode 4463
+
+pattern EarlyAndLateFragmentTestsAMD :: ExecutionMode
+pattern EarlyAndLateFragmentTestsAMD = ExecutionMode 5017
+
+pattern StencilRefReplacingEXT :: ExecutionMode
+pattern StencilRefReplacingEXT = ExecutionMode 5027
+
+pattern CoalescingAMDX :: ExecutionMode
+pattern CoalescingAMDX = ExecutionMode 5069
+
+pattern MaxNodeRecursionAMDX :: ExecutionMode
+pattern MaxNodeRecursionAMDX = ExecutionMode 5071
+
+pattern StaticNumWorkgroupsAMDX :: ExecutionMode
+pattern StaticNumWorkgroupsAMDX = ExecutionMode 5072
+
+pattern ShaderIndexAMDX :: ExecutionMode
+pattern ShaderIndexAMDX = ExecutionMode 5073
+
+pattern MaxNumWorkgroupsAMDX :: ExecutionMode
+pattern MaxNumWorkgroupsAMDX = ExecutionMode 5077
+
+pattern StencilRefUnchangedFrontAMD :: ExecutionMode
+pattern StencilRefUnchangedFrontAMD = ExecutionMode 5079
+
+pattern StencilRefGreaterFrontAMD :: ExecutionMode
+pattern StencilRefGreaterFrontAMD = ExecutionMode 5080
+
+pattern StencilRefLessFrontAMD :: ExecutionMode
+pattern StencilRefLessFrontAMD = ExecutionMode 5081
+
+pattern StencilRefUnchangedBackAMD :: ExecutionMode
+pattern StencilRefUnchangedBackAMD = ExecutionMode 5082
+
+pattern StencilRefGreaterBackAMD :: ExecutionMode
+pattern StencilRefGreaterBackAMD = ExecutionMode 5083
+
+pattern StencilRefLessBackAMD :: ExecutionMode
+pattern StencilRefLessBackAMD = ExecutionMode 5084
+
+pattern QuadDerivativesKHR :: ExecutionMode
+pattern QuadDerivativesKHR = ExecutionMode 5088
+
+pattern RequireFullQuadsKHR :: ExecutionMode
+pattern RequireFullQuadsKHR = ExecutionMode 5089
+
+pattern OutputLinesEXT :: ExecutionMode
+pattern OutputLinesEXT = ExecutionMode 5269
+
+pattern OutputLinesNV :: ExecutionMode
+pattern OutputLinesNV = ExecutionMode 5269
+
+pattern OutputPrimitivesEXT :: ExecutionMode
+pattern OutputPrimitivesEXT = ExecutionMode 5270
+
+pattern OutputPrimitivesNV :: ExecutionMode
+pattern OutputPrimitivesNV = ExecutionMode 5270
+
+pattern DerivativeGroupQuadsNV :: ExecutionMode
+pattern DerivativeGroupQuadsNV = ExecutionMode 5289
+
+pattern DerivativeGroupLinearNV :: ExecutionMode
+pattern DerivativeGroupLinearNV = ExecutionMode 5290
+
+pattern OutputTrianglesEXT :: ExecutionMode
+pattern OutputTrianglesEXT = ExecutionMode 5298
+
+pattern OutputTrianglesNV :: ExecutionMode
+pattern OutputTrianglesNV = ExecutionMode 5298
+
+pattern PixelInterlockOrderedEXT :: ExecutionMode
+pattern PixelInterlockOrderedEXT = ExecutionMode 5366
+
+pattern PixelInterlockUnorderedEXT :: ExecutionMode
+pattern PixelInterlockUnorderedEXT = ExecutionMode 5367
+
+pattern SampleInterlockOrderedEXT :: ExecutionMode
+pattern SampleInterlockOrderedEXT = ExecutionMode 5368
+
+pattern SampleInterlockUnorderedEXT :: ExecutionMode
+pattern SampleInterlockUnorderedEXT = ExecutionMode 5369
+
+pattern ShadingRateInterlockOrderedEXT :: ExecutionMode
+pattern ShadingRateInterlockOrderedEXT = ExecutionMode 5370
+
+pattern ShadingRateInterlockUnorderedEXT :: ExecutionMode
+pattern ShadingRateInterlockUnorderedEXT = ExecutionMode 5371
+
+pattern SharedLocalMemorySizeINTEL :: ExecutionMode
+pattern SharedLocalMemorySizeINTEL = ExecutionMode 5618
+
+pattern RoundingModeRTPINTEL :: ExecutionMode
+pattern RoundingModeRTPINTEL = ExecutionMode 5620
+
+pattern RoundingModeRTNINTEL :: ExecutionMode
+pattern RoundingModeRTNINTEL = ExecutionMode 5621
+
+pattern FloatingPointModeALTINTEL :: ExecutionMode
+pattern FloatingPointModeALTINTEL = ExecutionMode 5622
+
+pattern FloatingPointModeIEEEINTEL :: ExecutionMode
+pattern FloatingPointModeIEEEINTEL = ExecutionMode 5623
+
+pattern MaxWorkgroupSizeINTEL :: ExecutionMode
+pattern MaxWorkgroupSizeINTEL = ExecutionMode 5893
+
+pattern MaxWorkDimINTEL :: ExecutionMode
+pattern MaxWorkDimINTEL = ExecutionMode 5894
+
+pattern NoGlobalOffsetINTEL :: ExecutionMode
+pattern NoGlobalOffsetINTEL = ExecutionMode 5895
+
+pattern NumSIMDWorkitemsINTEL :: ExecutionMode
+pattern NumSIMDWorkitemsINTEL = ExecutionMode 5896
+
+pattern SchedulerTargetFmaxMhzINTEL :: ExecutionMode
+pattern SchedulerTargetFmaxMhzINTEL = ExecutionMode 5903
+
+pattern MaximallyReconvergesKHR :: ExecutionMode
+pattern MaximallyReconvergesKHR = ExecutionMode 6023
+
+pattern FPFastMathDefault :: ExecutionMode
+pattern FPFastMathDefault = ExecutionMode 6028
+
+pattern StreamingInterfaceINTEL :: ExecutionMode
+pattern StreamingInterfaceINTEL = ExecutionMode 6154
+
+pattern RegisterMapInterfaceINTEL :: ExecutionMode
+pattern RegisterMapInterfaceINTEL = ExecutionMode 6160
+
+pattern NamedBarrierCountINTEL :: ExecutionMode
+pattern NamedBarrierCountINTEL = ExecutionMode 6417
+
+pattern MaximumRegistersINTEL :: ExecutionMode
+pattern MaximumRegistersINTEL = ExecutionMode 6461
+
+pattern MaximumRegistersIdINTEL :: ExecutionMode
+pattern MaximumRegistersIdINTEL = ExecutionMode 6462
+
+pattern NamedMaximumRegistersINTEL :: ExecutionMode
+pattern NamedMaximumRegistersINTEL = ExecutionMode 6463
diff --git a/src/Data/SpirV/Enum/ExecutionModel.hs b/src/Data/SpirV/Enum/ExecutionModel.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/ExecutionModel.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.ExecutionModel where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype ExecutionModel = ExecutionModel Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show ExecutionModel where
+  showsPrec p (ExecutionModel v) = case v of
+    0 -> showString "Vertex"
+    1 -> showString "TessellationControl"
+    2 -> showString "TessellationEvaluation"
+    3 -> showString "Geometry"
+    4 -> showString "Fragment"
+    5 -> showString "GLCompute"
+    6 -> showString "Kernel"
+    5267 -> showString "TaskNV"
+    5268 -> showString "MeshNV"
+    5313 -> showString "RayGenerationKHR"
+    5314 -> showString "IntersectionKHR"
+    5315 -> showString "AnyHitKHR"
+    5316 -> showString "ClosestHitKHR"
+    5317 -> showString "MissKHR"
+    5318 -> showString "CallableKHR"
+    5364 -> showString "TaskEXT"
+    5365 -> showString "MeshEXT"
+    x -> showParen (p > 10) $ showString "ExecutionModel " . showsPrec (p + 1) x
+
+pattern Vertex :: ExecutionModel
+pattern Vertex = ExecutionModel 0
+
+pattern TessellationControl :: ExecutionModel
+pattern TessellationControl = ExecutionModel 1
+
+pattern TessellationEvaluation :: ExecutionModel
+pattern TessellationEvaluation = ExecutionModel 2
+
+pattern Geometry :: ExecutionModel
+pattern Geometry = ExecutionModel 3
+
+pattern Fragment :: ExecutionModel
+pattern Fragment = ExecutionModel 4
+
+pattern GLCompute :: ExecutionModel
+pattern GLCompute = ExecutionModel 5
+
+pattern Kernel :: ExecutionModel
+pattern Kernel = ExecutionModel 6
+
+pattern TaskNV :: ExecutionModel
+pattern TaskNV = ExecutionModel 5267
+
+pattern MeshNV :: ExecutionModel
+pattern MeshNV = ExecutionModel 5268
+
+pattern RayGenerationKHR :: ExecutionModel
+pattern RayGenerationKHR = ExecutionModel 5313
+
+pattern RayGenerationNV :: ExecutionModel
+pattern RayGenerationNV = ExecutionModel 5313
+
+pattern IntersectionKHR :: ExecutionModel
+pattern IntersectionKHR = ExecutionModel 5314
+
+pattern IntersectionNV :: ExecutionModel
+pattern IntersectionNV = ExecutionModel 5314
+
+pattern AnyHitKHR :: ExecutionModel
+pattern AnyHitKHR = ExecutionModel 5315
+
+pattern AnyHitNV :: ExecutionModel
+pattern AnyHitNV = ExecutionModel 5315
+
+pattern ClosestHitKHR :: ExecutionModel
+pattern ClosestHitKHR = ExecutionModel 5316
+
+pattern ClosestHitNV :: ExecutionModel
+pattern ClosestHitNV = ExecutionModel 5316
+
+pattern MissKHR :: ExecutionModel
+pattern MissKHR = ExecutionModel 5317
+
+pattern MissNV :: ExecutionModel
+pattern MissNV = ExecutionModel 5317
+
+pattern CallableKHR :: ExecutionModel
+pattern CallableKHR = ExecutionModel 5318
+
+pattern CallableNV :: ExecutionModel
+pattern CallableNV = ExecutionModel 5318
+
+pattern TaskEXT :: ExecutionModel
+pattern TaskEXT = ExecutionModel 5364
+
+pattern MeshEXT :: ExecutionModel
+pattern MeshEXT = ExecutionModel 5365
diff --git a/src/Data/SpirV/Enum/FPDenormMode.hs b/src/Data/SpirV/Enum/FPDenormMode.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/FPDenormMode.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.FPDenormMode where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype FPDenormMode = FPDenormMode Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show FPDenormMode where
+  showsPrec p (FPDenormMode v) = case v of
+    0 -> showString "Preserve"
+    1 -> showString "FlushToZero"
+    x -> showParen (p > 10) $ showString "FPDenormMode " . showsPrec (p + 1) x
+
+pattern Preserve :: FPDenormMode
+pattern Preserve = FPDenormMode 0
+
+pattern FlushToZero :: FPDenormMode
+pattern FlushToZero = FPDenormMode 1
diff --git a/src/Data/SpirV/Enum/FPFastMathMode.hs b/src/Data/SpirV/Enum/FPFastMathMode.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/FPFastMathMode.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.FPFastMathMode where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type FPFastMathMode = FPFastMathModeBits
+
+newtype FPFastMathModeBits = FPFastMathModeBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup FPFastMathMode where
+  (FPFastMathModeBits a) <> (FPFastMathModeBits b) = FPFastMathModeBits (a .|. b)
+
+instance Monoid FPFastMathMode where
+  mempty = FPFastMathModeBits 0
+
+pattern NotNaN :: FPFastMathModeBits
+pattern NotNaN = FPFastMathModeBits 0x00000001
+
+pattern NotInf :: FPFastMathModeBits
+pattern NotInf = FPFastMathModeBits 0x00000002
+
+pattern NSZ :: FPFastMathModeBits
+pattern NSZ = FPFastMathModeBits 0x00000004
+
+pattern AllowRecip :: FPFastMathModeBits
+pattern AllowRecip = FPFastMathModeBits 0x00000008
+
+pattern Fast :: FPFastMathModeBits
+pattern Fast = FPFastMathModeBits 0x00000010
+
+pattern AllowContract :: FPFastMathModeBits
+pattern AllowContract = FPFastMathModeBits 0x00010000
+
+pattern AllowContractFastINTEL :: FPFastMathModeBits
+pattern AllowContractFastINTEL = FPFastMathModeBits 0x00010000
+
+pattern AllowReassoc :: FPFastMathModeBits
+pattern AllowReassoc = FPFastMathModeBits 0x00020000
+
+pattern AllowReassocINTEL :: FPFastMathModeBits
+pattern AllowReassocINTEL = FPFastMathModeBits 0x00020000
+
+pattern AllowTransform :: FPFastMathModeBits
+pattern AllowTransform = FPFastMathModeBits 0x00040000
diff --git a/src/Data/SpirV/Enum/FPOperationMode.hs b/src/Data/SpirV/Enum/FPOperationMode.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/FPOperationMode.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.FPOperationMode where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype FPOperationMode = FPOperationMode Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show FPOperationMode where
+  showsPrec p (FPOperationMode v) = case v of
+    0 -> showString "IEEE"
+    1 -> showString "ALT"
+    x -> showParen (p > 10) $ showString "FPOperationMode " . showsPrec (p + 1) x
+
+pattern IEEE :: FPOperationMode
+pattern IEEE = FPOperationMode 0
+
+pattern ALT :: FPOperationMode
+pattern ALT = FPOperationMode 1
diff --git a/src/Data/SpirV/Enum/FPRoundingMode.hs b/src/Data/SpirV/Enum/FPRoundingMode.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/FPRoundingMode.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.FPRoundingMode where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype FPRoundingMode = FPRoundingMode Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show FPRoundingMode where
+  showsPrec p (FPRoundingMode v) = case v of
+    0 -> showString "RTE"
+    1 -> showString "RTZ"
+    2 -> showString "RTP"
+    3 -> showString "RTN"
+    x -> showParen (p > 10) $ showString "FPRoundingMode " . showsPrec (p + 1) x
+
+pattern RTE :: FPRoundingMode
+pattern RTE = FPRoundingMode 0
+
+pattern RTZ :: FPRoundingMode
+pattern RTZ = FPRoundingMode 1
+
+pattern RTP :: FPRoundingMode
+pattern RTP = FPRoundingMode 2
+
+pattern RTN :: FPRoundingMode
+pattern RTN = FPRoundingMode 3
diff --git a/src/Data/SpirV/Enum/FragmentShadingRate.hs b/src/Data/SpirV/Enum/FragmentShadingRate.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/FragmentShadingRate.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.FragmentShadingRate where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type FragmentShadingRate = FragmentShadingRateBits
+
+newtype FragmentShadingRateBits = FragmentShadingRateBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup FragmentShadingRate where
+  (FragmentShadingRateBits a) <> (FragmentShadingRateBits b) = FragmentShadingRateBits (a .|. b)
+
+instance Monoid FragmentShadingRate where
+  mempty = FragmentShadingRateBits 0
+
+pattern Vertical2Pixels :: FragmentShadingRateBits
+pattern Vertical2Pixels = FragmentShadingRateBits 0x00000001
+
+pattern Vertical4Pixels :: FragmentShadingRateBits
+pattern Vertical4Pixels = FragmentShadingRateBits 0x00000002
+
+pattern Horizontal2Pixels :: FragmentShadingRateBits
+pattern Horizontal2Pixels = FragmentShadingRateBits 0x00000004
+
+pattern Horizontal4Pixels :: FragmentShadingRateBits
+pattern Horizontal4Pixels = FragmentShadingRateBits 0x00000008
diff --git a/src/Data/SpirV/Enum/FunctionControl.hs b/src/Data/SpirV/Enum/FunctionControl.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/FunctionControl.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.FunctionControl where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type FunctionControl = FunctionControlBits
+
+newtype FunctionControlBits = FunctionControlBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup FunctionControl where
+  (FunctionControlBits a) <> (FunctionControlBits b) = FunctionControlBits (a .|. b)
+
+instance Monoid FunctionControl where
+  mempty = FunctionControlBits 0
+
+pattern Inline :: FunctionControlBits
+pattern Inline = FunctionControlBits 0x00000001
+
+pattern DontInline :: FunctionControlBits
+pattern DontInline = FunctionControlBits 0x00000002
+
+pattern Pure :: FunctionControlBits
+pattern Pure = FunctionControlBits 0x00000004
+
+pattern Const :: FunctionControlBits
+pattern Const = FunctionControlBits 0x00000008
+
+pattern OptNoneINTEL :: FunctionControlBits
+pattern OptNoneINTEL = FunctionControlBits 0x00010000
diff --git a/src/Data/SpirV/Enum/FunctionParameterAttribute.hs b/src/Data/SpirV/Enum/FunctionParameterAttribute.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/FunctionParameterAttribute.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.FunctionParameterAttribute where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype FunctionParameterAttribute = FunctionParameterAttribute Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show FunctionParameterAttribute where
+  showsPrec p (FunctionParameterAttribute v) = case v of
+    0 -> showString "Zext"
+    1 -> showString "Sext"
+    2 -> showString "ByVal"
+    3 -> showString "Sret"
+    4 -> showString "NoAlias"
+    5 -> showString "NoCapture"
+    6 -> showString "NoWrite"
+    7 -> showString "NoReadWrite"
+    5940 -> showString "RuntimeAlignedINTEL"
+    x -> showParen (p > 10) $ showString "FunctionParameterAttribute " . showsPrec (p + 1) x
+
+pattern Zext :: FunctionParameterAttribute
+pattern Zext = FunctionParameterAttribute 0
+
+pattern Sext :: FunctionParameterAttribute
+pattern Sext = FunctionParameterAttribute 1
+
+pattern ByVal :: FunctionParameterAttribute
+pattern ByVal = FunctionParameterAttribute 2
+
+pattern Sret :: FunctionParameterAttribute
+pattern Sret = FunctionParameterAttribute 3
+
+pattern NoAlias :: FunctionParameterAttribute
+pattern NoAlias = FunctionParameterAttribute 4
+
+pattern NoCapture :: FunctionParameterAttribute
+pattern NoCapture = FunctionParameterAttribute 5
+
+pattern NoWrite :: FunctionParameterAttribute
+pattern NoWrite = FunctionParameterAttribute 6
+
+pattern NoReadWrite :: FunctionParameterAttribute
+pattern NoReadWrite = FunctionParameterAttribute 7
+
+pattern RuntimeAlignedINTEL :: FunctionParameterAttribute
+pattern RuntimeAlignedINTEL = FunctionParameterAttribute 5940
diff --git a/src/Data/SpirV/Enum/GroupOperation.hs b/src/Data/SpirV/Enum/GroupOperation.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/GroupOperation.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.GroupOperation where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype GroupOperation = GroupOperation Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show GroupOperation where
+  showsPrec p (GroupOperation v) = case v of
+    0 -> showString "Reduce"
+    1 -> showString "InclusiveScan"
+    2 -> showString "ExclusiveScan"
+    3 -> showString "ClusteredReduce"
+    6 -> showString "PartitionedReduceNV"
+    7 -> showString "PartitionedInclusiveScanNV"
+    8 -> showString "PartitionedExclusiveScanNV"
+    x -> showParen (p > 10) $ showString "GroupOperation " . showsPrec (p + 1) x
+
+pattern Reduce :: GroupOperation
+pattern Reduce = GroupOperation 0
+
+pattern InclusiveScan :: GroupOperation
+pattern InclusiveScan = GroupOperation 1
+
+pattern ExclusiveScan :: GroupOperation
+pattern ExclusiveScan = GroupOperation 2
+
+pattern ClusteredReduce :: GroupOperation
+pattern ClusteredReduce = GroupOperation 3
+
+pattern PartitionedReduceNV :: GroupOperation
+pattern PartitionedReduceNV = GroupOperation 6
+
+pattern PartitionedInclusiveScanNV :: GroupOperation
+pattern PartitionedInclusiveScanNV = GroupOperation 7
+
+pattern PartitionedExclusiveScanNV :: GroupOperation
+pattern PartitionedExclusiveScanNV = GroupOperation 8
diff --git a/src/Data/SpirV/Enum/HostAccessQualifier.hs b/src/Data/SpirV/Enum/HostAccessQualifier.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/HostAccessQualifier.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.HostAccessQualifier where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype HostAccessQualifier = HostAccessQualifier Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show HostAccessQualifier where
+  showsPrec p (HostAccessQualifier v) = case v of
+    0 -> showString "NoneINTEL"
+    1 -> showString "ReadINTEL"
+    2 -> showString "WriteINTEL"
+    3 -> showString "ReadWriteINTEL"
+    x -> showParen (p > 10) $ showString "HostAccessQualifier " . showsPrec (p + 1) x
+
+pattern NoneINTEL :: HostAccessQualifier
+pattern NoneINTEL = HostAccessQualifier 0
+
+pattern ReadINTEL :: HostAccessQualifier
+pattern ReadINTEL = HostAccessQualifier 1
+
+pattern WriteINTEL :: HostAccessQualifier
+pattern WriteINTEL = HostAccessQualifier 2
+
+pattern ReadWriteINTEL :: HostAccessQualifier
+pattern ReadWriteINTEL = HostAccessQualifier 3
diff --git a/src/Data/SpirV/Enum/ImageChannelDataType.hs b/src/Data/SpirV/Enum/ImageChannelDataType.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/ImageChannelDataType.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.ImageChannelDataType where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype ImageChannelDataType = ImageChannelDataType Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show ImageChannelDataType where
+  showsPrec p (ImageChannelDataType v) = case v of
+    0 -> showString "SnormInt8"
+    1 -> showString "SnormInt16"
+    2 -> showString "UnormInt8"
+    3 -> showString "UnormInt16"
+    4 -> showString "UnormShort565"
+    5 -> showString "UnormShort555"
+    6 -> showString "UnormInt101010"
+    7 -> showString "SignedInt8"
+    8 -> showString "SignedInt16"
+    9 -> showString "SignedInt32"
+    10 -> showString "UnsignedInt8"
+    11 -> showString "UnsignedInt16"
+    12 -> showString "UnsignedInt32"
+    13 -> showString "HalfFloat"
+    14 -> showString "Float"
+    15 -> showString "UnormInt24"
+    16 -> showString "UnormInt101010_2"
+    19 -> showString "UnsignedIntRaw10EXT"
+    20 -> showString "UnsignedIntRaw12EXT"
+    x -> showParen (p > 10) $ showString "ImageChannelDataType " . showsPrec (p + 1) x
+
+pattern SnormInt8 :: ImageChannelDataType
+pattern SnormInt8 = ImageChannelDataType 0
+
+pattern SnormInt16 :: ImageChannelDataType
+pattern SnormInt16 = ImageChannelDataType 1
+
+pattern UnormInt8 :: ImageChannelDataType
+pattern UnormInt8 = ImageChannelDataType 2
+
+pattern UnormInt16 :: ImageChannelDataType
+pattern UnormInt16 = ImageChannelDataType 3
+
+pattern UnormShort565 :: ImageChannelDataType
+pattern UnormShort565 = ImageChannelDataType 4
+
+pattern UnormShort555 :: ImageChannelDataType
+pattern UnormShort555 = ImageChannelDataType 5
+
+pattern UnormInt101010 :: ImageChannelDataType
+pattern UnormInt101010 = ImageChannelDataType 6
+
+pattern SignedInt8 :: ImageChannelDataType
+pattern SignedInt8 = ImageChannelDataType 7
+
+pattern SignedInt16 :: ImageChannelDataType
+pattern SignedInt16 = ImageChannelDataType 8
+
+pattern SignedInt32 :: ImageChannelDataType
+pattern SignedInt32 = ImageChannelDataType 9
+
+pattern UnsignedInt8 :: ImageChannelDataType
+pattern UnsignedInt8 = ImageChannelDataType 10
+
+pattern UnsignedInt16 :: ImageChannelDataType
+pattern UnsignedInt16 = ImageChannelDataType 11
+
+pattern UnsignedInt32 :: ImageChannelDataType
+pattern UnsignedInt32 = ImageChannelDataType 12
+
+pattern HalfFloat :: ImageChannelDataType
+pattern HalfFloat = ImageChannelDataType 13
+
+pattern Float :: ImageChannelDataType
+pattern Float = ImageChannelDataType 14
+
+pattern UnormInt24 :: ImageChannelDataType
+pattern UnormInt24 = ImageChannelDataType 15
+
+pattern UnormInt101010_2 :: ImageChannelDataType
+pattern UnormInt101010_2 = ImageChannelDataType 16
+
+pattern UnsignedIntRaw10EXT :: ImageChannelDataType
+pattern UnsignedIntRaw10EXT = ImageChannelDataType 19
+
+pattern UnsignedIntRaw12EXT :: ImageChannelDataType
+pattern UnsignedIntRaw12EXT = ImageChannelDataType 20
diff --git a/src/Data/SpirV/Enum/ImageChannelOrder.hs b/src/Data/SpirV/Enum/ImageChannelOrder.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/ImageChannelOrder.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.ImageChannelOrder where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype ImageChannelOrder = ImageChannelOrder Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show ImageChannelOrder where
+  showsPrec p (ImageChannelOrder v) = case v of
+    0 -> showString "R"
+    1 -> showString "A"
+    2 -> showString "RG"
+    3 -> showString "RA"
+    4 -> showString "RGB"
+    5 -> showString "RGBA"
+    6 -> showString "BGRA"
+    7 -> showString "ARGB"
+    8 -> showString "Intensity"
+    9 -> showString "Luminance"
+    10 -> showString "Rx"
+    11 -> showString "RGx"
+    12 -> showString "RGBx"
+    13 -> showString "Depth"
+    14 -> showString "DepthStencil"
+    15 -> showString "SRGB"
+    16 -> showString "SRGBx"
+    17 -> showString "SRGBA"
+    18 -> showString "SBGRA"
+    19 -> showString "ABGR"
+    x -> showParen (p > 10) $ showString "ImageChannelOrder " . showsPrec (p + 1) x
+
+pattern R :: ImageChannelOrder
+pattern R = ImageChannelOrder 0
+
+pattern A :: ImageChannelOrder
+pattern A = ImageChannelOrder 1
+
+pattern RG :: ImageChannelOrder
+pattern RG = ImageChannelOrder 2
+
+pattern RA :: ImageChannelOrder
+pattern RA = ImageChannelOrder 3
+
+pattern RGB :: ImageChannelOrder
+pattern RGB = ImageChannelOrder 4
+
+pattern RGBA :: ImageChannelOrder
+pattern RGBA = ImageChannelOrder 5
+
+pattern BGRA :: ImageChannelOrder
+pattern BGRA = ImageChannelOrder 6
+
+pattern ARGB :: ImageChannelOrder
+pattern ARGB = ImageChannelOrder 7
+
+pattern Intensity :: ImageChannelOrder
+pattern Intensity = ImageChannelOrder 8
+
+pattern Luminance :: ImageChannelOrder
+pattern Luminance = ImageChannelOrder 9
+
+pattern Rx :: ImageChannelOrder
+pattern Rx = ImageChannelOrder 10
+
+pattern RGx :: ImageChannelOrder
+pattern RGx = ImageChannelOrder 11
+
+pattern RGBx :: ImageChannelOrder
+pattern RGBx = ImageChannelOrder 12
+
+pattern Depth :: ImageChannelOrder
+pattern Depth = ImageChannelOrder 13
+
+pattern DepthStencil :: ImageChannelOrder
+pattern DepthStencil = ImageChannelOrder 14
+
+pattern SRGB :: ImageChannelOrder
+pattern SRGB = ImageChannelOrder 15
+
+pattern SRGBx :: ImageChannelOrder
+pattern SRGBx = ImageChannelOrder 16
+
+pattern SRGBA :: ImageChannelOrder
+pattern SRGBA = ImageChannelOrder 17
+
+pattern SBGRA :: ImageChannelOrder
+pattern SBGRA = ImageChannelOrder 18
+
+pattern ABGR :: ImageChannelOrder
+pattern ABGR = ImageChannelOrder 19
diff --git a/src/Data/SpirV/Enum/ImageFormat.hs b/src/Data/SpirV/Enum/ImageFormat.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/ImageFormat.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.ImageFormat where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype ImageFormat = ImageFormat Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show ImageFormat where
+  showsPrec p (ImageFormat v) = case v of
+    0 -> showString "Unknown"
+    1 -> showString "Rgba32f"
+    2 -> showString "Rgba16f"
+    3 -> showString "R32f"
+    4 -> showString "Rgba8"
+    5 -> showString "Rgba8Snorm"
+    6 -> showString "Rg32f"
+    7 -> showString "Rg16f"
+    8 -> showString "R11fG11fB10f"
+    9 -> showString "R16f"
+    10 -> showString "Rgba16"
+    11 -> showString "Rgb10A2"
+    12 -> showString "Rg16"
+    13 -> showString "Rg8"
+    14 -> showString "R16"
+    15 -> showString "R8"
+    16 -> showString "Rgba16Snorm"
+    17 -> showString "Rg16Snorm"
+    18 -> showString "Rg8Snorm"
+    19 -> showString "R16Snorm"
+    20 -> showString "R8Snorm"
+    21 -> showString "Rgba32i"
+    22 -> showString "Rgba16i"
+    23 -> showString "Rgba8i"
+    24 -> showString "R32i"
+    25 -> showString "Rg32i"
+    26 -> showString "Rg16i"
+    27 -> showString "Rg8i"
+    28 -> showString "R16i"
+    29 -> showString "R8i"
+    30 -> showString "Rgba32ui"
+    31 -> showString "Rgba16ui"
+    32 -> showString "Rgba8ui"
+    33 -> showString "R32ui"
+    34 -> showString "Rgb10a2ui"
+    35 -> showString "Rg32ui"
+    36 -> showString "Rg16ui"
+    37 -> showString "Rg8ui"
+    38 -> showString "R16ui"
+    39 -> showString "R8ui"
+    40 -> showString "R64ui"
+    41 -> showString "R64i"
+    x -> showParen (p > 10) $ showString "ImageFormat " . showsPrec (p + 1) x
+
+pattern Unknown :: ImageFormat
+pattern Unknown = ImageFormat 0
+
+pattern Rgba32f :: ImageFormat
+pattern Rgba32f = ImageFormat 1
+
+pattern Rgba16f :: ImageFormat
+pattern Rgba16f = ImageFormat 2
+
+pattern R32f :: ImageFormat
+pattern R32f = ImageFormat 3
+
+pattern Rgba8 :: ImageFormat
+pattern Rgba8 = ImageFormat 4
+
+pattern Rgba8Snorm :: ImageFormat
+pattern Rgba8Snorm = ImageFormat 5
+
+pattern Rg32f :: ImageFormat
+pattern Rg32f = ImageFormat 6
+
+pattern Rg16f :: ImageFormat
+pattern Rg16f = ImageFormat 7
+
+pattern R11fG11fB10f :: ImageFormat
+pattern R11fG11fB10f = ImageFormat 8
+
+pattern R16f :: ImageFormat
+pattern R16f = ImageFormat 9
+
+pattern Rgba16 :: ImageFormat
+pattern Rgba16 = ImageFormat 10
+
+pattern Rgb10A2 :: ImageFormat
+pattern Rgb10A2 = ImageFormat 11
+
+pattern Rg16 :: ImageFormat
+pattern Rg16 = ImageFormat 12
+
+pattern Rg8 :: ImageFormat
+pattern Rg8 = ImageFormat 13
+
+pattern R16 :: ImageFormat
+pattern R16 = ImageFormat 14
+
+pattern R8 :: ImageFormat
+pattern R8 = ImageFormat 15
+
+pattern Rgba16Snorm :: ImageFormat
+pattern Rgba16Snorm = ImageFormat 16
+
+pattern Rg16Snorm :: ImageFormat
+pattern Rg16Snorm = ImageFormat 17
+
+pattern Rg8Snorm :: ImageFormat
+pattern Rg8Snorm = ImageFormat 18
+
+pattern R16Snorm :: ImageFormat
+pattern R16Snorm = ImageFormat 19
+
+pattern R8Snorm :: ImageFormat
+pattern R8Snorm = ImageFormat 20
+
+pattern Rgba32i :: ImageFormat
+pattern Rgba32i = ImageFormat 21
+
+pattern Rgba16i :: ImageFormat
+pattern Rgba16i = ImageFormat 22
+
+pattern Rgba8i :: ImageFormat
+pattern Rgba8i = ImageFormat 23
+
+pattern R32i :: ImageFormat
+pattern R32i = ImageFormat 24
+
+pattern Rg32i :: ImageFormat
+pattern Rg32i = ImageFormat 25
+
+pattern Rg16i :: ImageFormat
+pattern Rg16i = ImageFormat 26
+
+pattern Rg8i :: ImageFormat
+pattern Rg8i = ImageFormat 27
+
+pattern R16i :: ImageFormat
+pattern R16i = ImageFormat 28
+
+pattern R8i :: ImageFormat
+pattern R8i = ImageFormat 29
+
+pattern Rgba32ui :: ImageFormat
+pattern Rgba32ui = ImageFormat 30
+
+pattern Rgba16ui :: ImageFormat
+pattern Rgba16ui = ImageFormat 31
+
+pattern Rgba8ui :: ImageFormat
+pattern Rgba8ui = ImageFormat 32
+
+pattern R32ui :: ImageFormat
+pattern R32ui = ImageFormat 33
+
+pattern Rgb10a2ui :: ImageFormat
+pattern Rgb10a2ui = ImageFormat 34
+
+pattern Rg32ui :: ImageFormat
+pattern Rg32ui = ImageFormat 35
+
+pattern Rg16ui :: ImageFormat
+pattern Rg16ui = ImageFormat 36
+
+pattern Rg8ui :: ImageFormat
+pattern Rg8ui = ImageFormat 37
+
+pattern R16ui :: ImageFormat
+pattern R16ui = ImageFormat 38
+
+pattern R8ui :: ImageFormat
+pattern R8ui = ImageFormat 39
+
+pattern R64ui :: ImageFormat
+pattern R64ui = ImageFormat 40
+
+pattern R64i :: ImageFormat
+pattern R64i = ImageFormat 41
diff --git a/src/Data/SpirV/Enum/ImageOperands.hs b/src/Data/SpirV/Enum/ImageOperands.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/ImageOperands.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.ImageOperands where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type ImageOperands = ImageOperandsBits
+
+newtype ImageOperandsBits = ImageOperandsBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup ImageOperands where
+  (ImageOperandsBits a) <> (ImageOperandsBits b) = ImageOperandsBits (a .|. b)
+
+instance Monoid ImageOperands where
+  mempty = ImageOperandsBits 0
+
+pattern Bias :: ImageOperandsBits
+pattern Bias = ImageOperandsBits 0x00000001
+
+pattern Lod :: ImageOperandsBits
+pattern Lod = ImageOperandsBits 0x00000002
+
+pattern Grad :: ImageOperandsBits
+pattern Grad = ImageOperandsBits 0x00000004
+
+pattern ConstOffset :: ImageOperandsBits
+pattern ConstOffset = ImageOperandsBits 0x00000008
+
+pattern Offset :: ImageOperandsBits
+pattern Offset = ImageOperandsBits 0x00000010
+
+pattern ConstOffsets :: ImageOperandsBits
+pattern ConstOffsets = ImageOperandsBits 0x00000020
+
+pattern Sample :: ImageOperandsBits
+pattern Sample = ImageOperandsBits 0x00000040
+
+pattern MinLod :: ImageOperandsBits
+pattern MinLod = ImageOperandsBits 0x00000080
+
+pattern MakeTexelAvailable :: ImageOperandsBits
+pattern MakeTexelAvailable = ImageOperandsBits 0x00000100
+
+pattern MakeTexelAvailableKHR :: ImageOperandsBits
+pattern MakeTexelAvailableKHR = ImageOperandsBits 0x00000100
+
+pattern MakeTexelVisible :: ImageOperandsBits
+pattern MakeTexelVisible = ImageOperandsBits 0x00000200
+
+pattern MakeTexelVisibleKHR :: ImageOperandsBits
+pattern MakeTexelVisibleKHR = ImageOperandsBits 0x00000200
+
+pattern NonPrivateTexel :: ImageOperandsBits
+pattern NonPrivateTexel = ImageOperandsBits 0x00000400
+
+pattern NonPrivateTexelKHR :: ImageOperandsBits
+pattern NonPrivateTexelKHR = ImageOperandsBits 0x00000400
+
+pattern VolatileTexel :: ImageOperandsBits
+pattern VolatileTexel = ImageOperandsBits 0x00000800
+
+pattern VolatileTexelKHR :: ImageOperandsBits
+pattern VolatileTexelKHR = ImageOperandsBits 0x00000800
+
+pattern SignExtend :: ImageOperandsBits
+pattern SignExtend = ImageOperandsBits 0x00001000
+
+pattern ZeroExtend :: ImageOperandsBits
+pattern ZeroExtend = ImageOperandsBits 0x00002000
+
+pattern Nontemporal :: ImageOperandsBits
+pattern Nontemporal = ImageOperandsBits 0x00004000
+
+pattern Offsets :: ImageOperandsBits
+pattern Offsets = ImageOperandsBits 0x00010000
diff --git a/src/Data/SpirV/Enum/InitializationModeQualifier.hs b/src/Data/SpirV/Enum/InitializationModeQualifier.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/InitializationModeQualifier.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.InitializationModeQualifier where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype InitializationModeQualifier = InitializationModeQualifier Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show InitializationModeQualifier where
+  showsPrec p (InitializationModeQualifier v) = case v of
+    0 -> showString "InitOnDeviceReprogramINTEL"
+    1 -> showString "InitOnDeviceResetINTEL"
+    x -> showParen (p > 10) $ showString "InitializationModeQualifier " . showsPrec (p + 1) x
+
+pattern InitOnDeviceReprogramINTEL :: InitializationModeQualifier
+pattern InitOnDeviceReprogramINTEL = InitializationModeQualifier 0
+
+pattern InitOnDeviceResetINTEL :: InitializationModeQualifier
+pattern InitOnDeviceResetINTEL = InitializationModeQualifier 1
diff --git a/src/Data/SpirV/Enum/KernelEnqueueFlags.hs b/src/Data/SpirV/Enum/KernelEnqueueFlags.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/KernelEnqueueFlags.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.KernelEnqueueFlags where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype KernelEnqueueFlags = KernelEnqueueFlags Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show KernelEnqueueFlags where
+  showsPrec p (KernelEnqueueFlags v) = case v of
+    0 -> showString "NoWait"
+    1 -> showString "WaitKernel"
+    2 -> showString "WaitWorkGroup"
+    x -> showParen (p > 10) $ showString "KernelEnqueueFlags " . showsPrec (p + 1) x
+
+pattern NoWait :: KernelEnqueueFlags
+pattern NoWait = KernelEnqueueFlags 0
+
+pattern WaitKernel :: KernelEnqueueFlags
+pattern WaitKernel = KernelEnqueueFlags 1
+
+pattern WaitWorkGroup :: KernelEnqueueFlags
+pattern WaitWorkGroup = KernelEnqueueFlags 2
diff --git a/src/Data/SpirV/Enum/KernelProfilingInfo.hs b/src/Data/SpirV/Enum/KernelProfilingInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/KernelProfilingInfo.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.KernelProfilingInfo where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type KernelProfilingInfo = KernelProfilingInfoBits
+
+newtype KernelProfilingInfoBits = KernelProfilingInfoBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup KernelProfilingInfo where
+  (KernelProfilingInfoBits a) <> (KernelProfilingInfoBits b) = KernelProfilingInfoBits (a .|. b)
+
+instance Monoid KernelProfilingInfo where
+  mempty = KernelProfilingInfoBits 0
+
+pattern CmdExecTime :: KernelProfilingInfoBits
+pattern CmdExecTime = KernelProfilingInfoBits 0x00000001
diff --git a/src/Data/SpirV/Enum/LinkageType.hs b/src/Data/SpirV/Enum/LinkageType.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/LinkageType.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.LinkageType where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype LinkageType = LinkageType Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show LinkageType where
+  showsPrec p (LinkageType v) = case v of
+    0 -> showString "Export"
+    1 -> showString "Import"
+    2 -> showString "LinkOnceODR"
+    x -> showParen (p > 10) $ showString "LinkageType " . showsPrec (p + 1) x
+
+pattern Export :: LinkageType
+pattern Export = LinkageType 0
+
+pattern Import :: LinkageType
+pattern Import = LinkageType 1
+
+pattern LinkOnceODR :: LinkageType
+pattern LinkOnceODR = LinkageType 2
diff --git a/src/Data/SpirV/Enum/LoadCacheControl.hs b/src/Data/SpirV/Enum/LoadCacheControl.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/LoadCacheControl.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.LoadCacheControl where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype LoadCacheControl = LoadCacheControl Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show LoadCacheControl where
+  showsPrec p (LoadCacheControl v) = case v of
+    0 -> showString "UncachedINTEL"
+    1 -> showString "CachedINTEL"
+    2 -> showString "StreamingINTEL"
+    3 -> showString "InvalidateAfterReadINTEL"
+    4 -> showString "ConstCachedINTEL"
+    x -> showParen (p > 10) $ showString "LoadCacheControl " . showsPrec (p + 1) x
+
+pattern UncachedINTEL :: LoadCacheControl
+pattern UncachedINTEL = LoadCacheControl 0
+
+pattern CachedINTEL :: LoadCacheControl
+pattern CachedINTEL = LoadCacheControl 1
+
+pattern StreamingINTEL :: LoadCacheControl
+pattern StreamingINTEL = LoadCacheControl 2
+
+pattern InvalidateAfterReadINTEL :: LoadCacheControl
+pattern InvalidateAfterReadINTEL = LoadCacheControl 3
+
+pattern ConstCachedINTEL :: LoadCacheControl
+pattern ConstCachedINTEL = LoadCacheControl 4
diff --git a/src/Data/SpirV/Enum/LoopControl.hs b/src/Data/SpirV/Enum/LoopControl.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/LoopControl.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.LoopControl where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type LoopControl = LoopControlBits
+
+newtype LoopControlBits = LoopControlBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup LoopControl where
+  (LoopControlBits a) <> (LoopControlBits b) = LoopControlBits (a .|. b)
+
+instance Monoid LoopControl where
+  mempty = LoopControlBits 0
+
+pattern Unroll :: LoopControlBits
+pattern Unroll = LoopControlBits 0x00000001
+
+pattern DontUnroll :: LoopControlBits
+pattern DontUnroll = LoopControlBits 0x00000002
+
+pattern DependencyInfinite :: LoopControlBits
+pattern DependencyInfinite = LoopControlBits 0x00000004
+
+pattern DependencyLength :: LoopControlBits
+pattern DependencyLength = LoopControlBits 0x00000008
+
+pattern MinIterations :: LoopControlBits
+pattern MinIterations = LoopControlBits 0x00000010
+
+pattern MaxIterations :: LoopControlBits
+pattern MaxIterations = LoopControlBits 0x00000020
+
+pattern IterationMultiple :: LoopControlBits
+pattern IterationMultiple = LoopControlBits 0x00000040
+
+pattern PeelCount :: LoopControlBits
+pattern PeelCount = LoopControlBits 0x00000080
+
+pattern PartialCount :: LoopControlBits
+pattern PartialCount = LoopControlBits 0x00000100
+
+pattern InitiationIntervalINTEL :: LoopControlBits
+pattern InitiationIntervalINTEL = LoopControlBits 0x00010000
+
+pattern MaxConcurrencyINTEL :: LoopControlBits
+pattern MaxConcurrencyINTEL = LoopControlBits 0x00020000
+
+pattern DependencyArrayINTEL :: LoopControlBits
+pattern DependencyArrayINTEL = LoopControlBits 0x00040000
+
+pattern PipelineEnableINTEL :: LoopControlBits
+pattern PipelineEnableINTEL = LoopControlBits 0x00080000
+
+pattern LoopCoalesceINTEL :: LoopControlBits
+pattern LoopCoalesceINTEL = LoopControlBits 0x00100000
+
+pattern MaxInterleavingINTEL :: LoopControlBits
+pattern MaxInterleavingINTEL = LoopControlBits 0x00200000
+
+pattern SpeculatedIterationsINTEL :: LoopControlBits
+pattern SpeculatedIterationsINTEL = LoopControlBits 0x00400000
+
+pattern NoFusionINTEL :: LoopControlBits
+pattern NoFusionINTEL = LoopControlBits 0x00800000
+
+pattern LoopCountINTEL :: LoopControlBits
+pattern LoopCountINTEL = LoopControlBits 0x01000000
+
+pattern MaxReinvocationDelayINTEL :: LoopControlBits
+pattern MaxReinvocationDelayINTEL = LoopControlBits 0x02000000
diff --git a/src/Data/SpirV/Enum/MemoryAccess.hs b/src/Data/SpirV/Enum/MemoryAccess.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/MemoryAccess.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.MemoryAccess where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type MemoryAccess = MemoryAccessBits
+
+newtype MemoryAccessBits = MemoryAccessBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup MemoryAccess where
+  (MemoryAccessBits a) <> (MemoryAccessBits b) = MemoryAccessBits (a .|. b)
+
+instance Monoid MemoryAccess where
+  mempty = MemoryAccessBits 0
+
+pattern Volatile :: MemoryAccessBits
+pattern Volatile = MemoryAccessBits 0x00000001
+
+pattern Aligned :: MemoryAccessBits
+pattern Aligned = MemoryAccessBits 0x00000002
+
+pattern Nontemporal :: MemoryAccessBits
+pattern Nontemporal = MemoryAccessBits 0x00000004
+
+pattern MakePointerAvailable :: MemoryAccessBits
+pattern MakePointerAvailable = MemoryAccessBits 0x00000008
+
+pattern MakePointerAvailableKHR :: MemoryAccessBits
+pattern MakePointerAvailableKHR = MemoryAccessBits 0x00000008
+
+pattern MakePointerVisible :: MemoryAccessBits
+pattern MakePointerVisible = MemoryAccessBits 0x00000010
+
+pattern MakePointerVisibleKHR :: MemoryAccessBits
+pattern MakePointerVisibleKHR = MemoryAccessBits 0x00000010
+
+pattern NonPrivatePointer :: MemoryAccessBits
+pattern NonPrivatePointer = MemoryAccessBits 0x00000020
+
+pattern NonPrivatePointerKHR :: MemoryAccessBits
+pattern NonPrivatePointerKHR = MemoryAccessBits 0x00000020
+
+pattern AliasScopeINTELMask :: MemoryAccessBits
+pattern AliasScopeINTELMask = MemoryAccessBits 0x00010000
+
+pattern NoAliasINTELMask :: MemoryAccessBits
+pattern NoAliasINTELMask = MemoryAccessBits 0x00020000
diff --git a/src/Data/SpirV/Enum/MemoryModel.hs b/src/Data/SpirV/Enum/MemoryModel.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/MemoryModel.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.MemoryModel where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype MemoryModel = MemoryModel Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show MemoryModel where
+  showsPrec p (MemoryModel v) = case v of
+    0 -> showString "Simple"
+    1 -> showString "GLSL450"
+    2 -> showString "OpenCL"
+    3 -> showString "Vulkan"
+    x -> showParen (p > 10) $ showString "MemoryModel " . showsPrec (p + 1) x
+
+pattern Simple :: MemoryModel
+pattern Simple = MemoryModel 0
+
+pattern GLSL450 :: MemoryModel
+pattern GLSL450 = MemoryModel 1
+
+pattern OpenCL :: MemoryModel
+pattern OpenCL = MemoryModel 2
+
+pattern Vulkan :: MemoryModel
+pattern Vulkan = MemoryModel 3
+
+pattern VulkanKHR :: MemoryModel
+pattern VulkanKHR = MemoryModel 3
diff --git a/src/Data/SpirV/Enum/MemorySemantics.hs b/src/Data/SpirV/Enum/MemorySemantics.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/MemorySemantics.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.MemorySemantics where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type MemorySemantics = MemorySemanticsBits
+
+newtype MemorySemanticsBits = MemorySemanticsBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup MemorySemantics where
+  (MemorySemanticsBits a) <> (MemorySemanticsBits b) = MemorySemanticsBits (a .|. b)
+
+instance Monoid MemorySemantics where
+  mempty = MemorySemanticsBits 0
+
+pattern Acquire :: MemorySemanticsBits
+pattern Acquire = MemorySemanticsBits 0x00000002
+
+pattern Release :: MemorySemanticsBits
+pattern Release = MemorySemanticsBits 0x00000004
+
+pattern AcquireRelease :: MemorySemanticsBits
+pattern AcquireRelease = MemorySemanticsBits 0x00000008
+
+pattern SequentiallyConsistent :: MemorySemanticsBits
+pattern SequentiallyConsistent = MemorySemanticsBits 0x00000010
+
+pattern UniformMemory :: MemorySemanticsBits
+pattern UniformMemory = MemorySemanticsBits 0x00000040
+
+pattern SubgroupMemory :: MemorySemanticsBits
+pattern SubgroupMemory = MemorySemanticsBits 0x00000080
+
+pattern WorkgroupMemory :: MemorySemanticsBits
+pattern WorkgroupMemory = MemorySemanticsBits 0x00000100
+
+pattern CrossWorkgroupMemory :: MemorySemanticsBits
+pattern CrossWorkgroupMemory = MemorySemanticsBits 0x00000200
+
+pattern AtomicCounterMemory :: MemorySemanticsBits
+pattern AtomicCounterMemory = MemorySemanticsBits 0x00000400
+
+pattern ImageMemory :: MemorySemanticsBits
+pattern ImageMemory = MemorySemanticsBits 0x00000800
+
+pattern OutputMemory :: MemorySemanticsBits
+pattern OutputMemory = MemorySemanticsBits 0x00001000
+
+pattern OutputMemoryKHR :: MemorySemanticsBits
+pattern OutputMemoryKHR = MemorySemanticsBits 0x00001000
+
+pattern MakeAvailable :: MemorySemanticsBits
+pattern MakeAvailable = MemorySemanticsBits 0x00002000
+
+pattern MakeAvailableKHR :: MemorySemanticsBits
+pattern MakeAvailableKHR = MemorySemanticsBits 0x00002000
+
+pattern MakeVisible :: MemorySemanticsBits
+pattern MakeVisible = MemorySemanticsBits 0x00004000
+
+pattern MakeVisibleKHR :: MemorySemanticsBits
+pattern MakeVisibleKHR = MemorySemanticsBits 0x00004000
+
+pattern Volatile :: MemorySemanticsBits
+pattern Volatile = MemorySemanticsBits 0x00008000
diff --git a/src/Data/SpirV/Enum/NamedMaximumNumberOfRegisters.hs b/src/Data/SpirV/Enum/NamedMaximumNumberOfRegisters.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/NamedMaximumNumberOfRegisters.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.NamedMaximumNumberOfRegisters where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype NamedMaximumNumberOfRegisters = NamedMaximumNumberOfRegisters Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show NamedMaximumNumberOfRegisters where
+  showsPrec p (NamedMaximumNumberOfRegisters v) = case v of
+    0 -> showString "AutoINTEL"
+    x -> showParen (p > 10) $ showString "NamedMaximumNumberOfRegisters " . showsPrec (p + 1) x
+
+pattern AutoINTEL :: NamedMaximumNumberOfRegisters
+pattern AutoINTEL = NamedMaximumNumberOfRegisters 0
diff --git a/src/Data/SpirV/Enum/Op.hs b/src/Data/SpirV/Enum/Op.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/Op.hs
@@ -0,0 +1,2953 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.Op where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype Op = Op Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show Op where
+  showsPrec p (Op v) = case v of
+    0 -> showString "OpNop"
+    1 -> showString "OpUndef"
+    2 -> showString "OpSourceContinued"
+    3 -> showString "OpSource"
+    4 -> showString "OpSourceExtension"
+    5 -> showString "OpName"
+    6 -> showString "OpMemberName"
+    7 -> showString "OpString"
+    8 -> showString "OpLine"
+    10 -> showString "OpExtension"
+    11 -> showString "OpExtInstImport"
+    12 -> showString "OpExtInst"
+    14 -> showString "OpMemoryModel"
+    15 -> showString "OpEntryPoint"
+    16 -> showString "OpExecutionMode"
+    17 -> showString "OpCapability"
+    19 -> showString "OpTypeVoid"
+    20 -> showString "OpTypeBool"
+    21 -> showString "OpTypeInt"
+    22 -> showString "OpTypeFloat"
+    23 -> showString "OpTypeVector"
+    24 -> showString "OpTypeMatrix"
+    25 -> showString "OpTypeImage"
+    26 -> showString "OpTypeSampler"
+    27 -> showString "OpTypeSampledImage"
+    28 -> showString "OpTypeArray"
+    29 -> showString "OpTypeRuntimeArray"
+    30 -> showString "OpTypeStruct"
+    31 -> showString "OpTypeOpaque"
+    32 -> showString "OpTypePointer"
+    33 -> showString "OpTypeFunction"
+    34 -> showString "OpTypeEvent"
+    35 -> showString "OpTypeDeviceEvent"
+    36 -> showString "OpTypeReserveId"
+    37 -> showString "OpTypeQueue"
+    38 -> showString "OpTypePipe"
+    39 -> showString "OpTypeForwardPointer"
+    41 -> showString "OpConstantTrue"
+    42 -> showString "OpConstantFalse"
+    43 -> showString "OpConstant"
+    44 -> showString "OpConstantComposite"
+    45 -> showString "OpConstantSampler"
+    46 -> showString "OpConstantNull"
+    48 -> showString "OpSpecConstantTrue"
+    49 -> showString "OpSpecConstantFalse"
+    50 -> showString "OpSpecConstant"
+    51 -> showString "OpSpecConstantComposite"
+    52 -> showString "OpSpecConstantOp"
+    54 -> showString "OpFunction"
+    55 -> showString "OpFunctionParameter"
+    56 -> showString "OpFunctionEnd"
+    57 -> showString "OpFunctionCall"
+    59 -> showString "OpVariable"
+    60 -> showString "OpImageTexelPointer"
+    61 -> showString "OpLoad"
+    62 -> showString "OpStore"
+    63 -> showString "OpCopyMemory"
+    64 -> showString "OpCopyMemorySized"
+    65 -> showString "OpAccessChain"
+    66 -> showString "OpInBoundsAccessChain"
+    67 -> showString "OpPtrAccessChain"
+    68 -> showString "OpArrayLength"
+    69 -> showString "OpGenericPtrMemSemantics"
+    70 -> showString "OpInBoundsPtrAccessChain"
+    71 -> showString "OpDecorate"
+    72 -> showString "OpMemberDecorate"
+    73 -> showString "OpDecorationGroup"
+    74 -> showString "OpGroupDecorate"
+    75 -> showString "OpGroupMemberDecorate"
+    77 -> showString "OpVectorExtractDynamic"
+    78 -> showString "OpVectorInsertDynamic"
+    79 -> showString "OpVectorShuffle"
+    80 -> showString "OpCompositeConstruct"
+    81 -> showString "OpCompositeExtract"
+    82 -> showString "OpCompositeInsert"
+    83 -> showString "OpCopyObject"
+    84 -> showString "OpTranspose"
+    86 -> showString "OpSampledImage"
+    87 -> showString "OpImageSampleImplicitLod"
+    88 -> showString "OpImageSampleExplicitLod"
+    89 -> showString "OpImageSampleDrefImplicitLod"
+    90 -> showString "OpImageSampleDrefExplicitLod"
+    91 -> showString "OpImageSampleProjImplicitLod"
+    92 -> showString "OpImageSampleProjExplicitLod"
+    93 -> showString "OpImageSampleProjDrefImplicitLod"
+    94 -> showString "OpImageSampleProjDrefExplicitLod"
+    95 -> showString "OpImageFetch"
+    96 -> showString "OpImageGather"
+    97 -> showString "OpImageDrefGather"
+    98 -> showString "OpImageRead"
+    99 -> showString "OpImageWrite"
+    100 -> showString "OpImage"
+    101 -> showString "OpImageQueryFormat"
+    102 -> showString "OpImageQueryOrder"
+    103 -> showString "OpImageQuerySizeLod"
+    104 -> showString "OpImageQuerySize"
+    105 -> showString "OpImageQueryLod"
+    106 -> showString "OpImageQueryLevels"
+    107 -> showString "OpImageQuerySamples"
+    109 -> showString "OpConvertFToU"
+    110 -> showString "OpConvertFToS"
+    111 -> showString "OpConvertSToF"
+    112 -> showString "OpConvertUToF"
+    113 -> showString "OpUConvert"
+    114 -> showString "OpSConvert"
+    115 -> showString "OpFConvert"
+    116 -> showString "OpQuantizeToF16"
+    117 -> showString "OpConvertPtrToU"
+    118 -> showString "OpSatConvertSToU"
+    119 -> showString "OpSatConvertUToS"
+    120 -> showString "OpConvertUToPtr"
+    121 -> showString "OpPtrCastToGeneric"
+    122 -> showString "OpGenericCastToPtr"
+    123 -> showString "OpGenericCastToPtrExplicit"
+    124 -> showString "OpBitcast"
+    126 -> showString "OpSNegate"
+    127 -> showString "OpFNegate"
+    128 -> showString "OpIAdd"
+    129 -> showString "OpFAdd"
+    130 -> showString "OpISub"
+    131 -> showString "OpFSub"
+    132 -> showString "OpIMul"
+    133 -> showString "OpFMul"
+    134 -> showString "OpUDiv"
+    135 -> showString "OpSDiv"
+    136 -> showString "OpFDiv"
+    137 -> showString "OpUMod"
+    138 -> showString "OpSRem"
+    139 -> showString "OpSMod"
+    140 -> showString "OpFRem"
+    141 -> showString "OpFMod"
+    142 -> showString "OpVectorTimesScalar"
+    143 -> showString "OpMatrixTimesScalar"
+    144 -> showString "OpVectorTimesMatrix"
+    145 -> showString "OpMatrixTimesVector"
+    146 -> showString "OpMatrixTimesMatrix"
+    147 -> showString "OpOuterProduct"
+    148 -> showString "OpDot"
+    149 -> showString "OpIAddCarry"
+    150 -> showString "OpISubBorrow"
+    151 -> showString "OpUMulExtended"
+    152 -> showString "OpSMulExtended"
+    154 -> showString "OpAny"
+    155 -> showString "OpAll"
+    156 -> showString "OpIsNan"
+    157 -> showString "OpIsInf"
+    158 -> showString "OpIsFinite"
+    159 -> showString "OpIsNormal"
+    160 -> showString "OpSignBitSet"
+    161 -> showString "OpLessOrGreater"
+    162 -> showString "OpOrdered"
+    163 -> showString "OpUnordered"
+    164 -> showString "OpLogicalEqual"
+    165 -> showString "OpLogicalNotEqual"
+    166 -> showString "OpLogicalOr"
+    167 -> showString "OpLogicalAnd"
+    168 -> showString "OpLogicalNot"
+    169 -> showString "OpSelect"
+    170 -> showString "OpIEqual"
+    171 -> showString "OpINotEqual"
+    172 -> showString "OpUGreaterThan"
+    173 -> showString "OpSGreaterThan"
+    174 -> showString "OpUGreaterThanEqual"
+    175 -> showString "OpSGreaterThanEqual"
+    176 -> showString "OpULessThan"
+    177 -> showString "OpSLessThan"
+    178 -> showString "OpULessThanEqual"
+    179 -> showString "OpSLessThanEqual"
+    180 -> showString "OpFOrdEqual"
+    181 -> showString "OpFUnordEqual"
+    182 -> showString "OpFOrdNotEqual"
+    183 -> showString "OpFUnordNotEqual"
+    184 -> showString "OpFOrdLessThan"
+    185 -> showString "OpFUnordLessThan"
+    186 -> showString "OpFOrdGreaterThan"
+    187 -> showString "OpFUnordGreaterThan"
+    188 -> showString "OpFOrdLessThanEqual"
+    189 -> showString "OpFUnordLessThanEqual"
+    190 -> showString "OpFOrdGreaterThanEqual"
+    191 -> showString "OpFUnordGreaterThanEqual"
+    194 -> showString "OpShiftRightLogical"
+    195 -> showString "OpShiftRightArithmetic"
+    196 -> showString "OpShiftLeftLogical"
+    197 -> showString "OpBitwiseOr"
+    198 -> showString "OpBitwiseXor"
+    199 -> showString "OpBitwiseAnd"
+    200 -> showString "OpNot"
+    201 -> showString "OpBitFieldInsert"
+    202 -> showString "OpBitFieldSExtract"
+    203 -> showString "OpBitFieldUExtract"
+    204 -> showString "OpBitReverse"
+    205 -> showString "OpBitCount"
+    207 -> showString "OpDPdx"
+    208 -> showString "OpDPdy"
+    209 -> showString "OpFwidth"
+    210 -> showString "OpDPdxFine"
+    211 -> showString "OpDPdyFine"
+    212 -> showString "OpFwidthFine"
+    213 -> showString "OpDPdxCoarse"
+    214 -> showString "OpDPdyCoarse"
+    215 -> showString "OpFwidthCoarse"
+    218 -> showString "OpEmitVertex"
+    219 -> showString "OpEndPrimitive"
+    220 -> showString "OpEmitStreamVertex"
+    221 -> showString "OpEndStreamPrimitive"
+    224 -> showString "OpControlBarrier"
+    225 -> showString "OpMemoryBarrier"
+    227 -> showString "OpAtomicLoad"
+    228 -> showString "OpAtomicStore"
+    229 -> showString "OpAtomicExchange"
+    230 -> showString "OpAtomicCompareExchange"
+    231 -> showString "OpAtomicCompareExchangeWeak"
+    232 -> showString "OpAtomicIIncrement"
+    233 -> showString "OpAtomicIDecrement"
+    234 -> showString "OpAtomicIAdd"
+    235 -> showString "OpAtomicISub"
+    236 -> showString "OpAtomicSMin"
+    237 -> showString "OpAtomicUMin"
+    238 -> showString "OpAtomicSMax"
+    239 -> showString "OpAtomicUMax"
+    240 -> showString "OpAtomicAnd"
+    241 -> showString "OpAtomicOr"
+    242 -> showString "OpAtomicXor"
+    245 -> showString "OpPhi"
+    246 -> showString "OpLoopMerge"
+    247 -> showString "OpSelectionMerge"
+    248 -> showString "OpLabel"
+    249 -> showString "OpBranch"
+    250 -> showString "OpBranchConditional"
+    251 -> showString "OpSwitch"
+    252 -> showString "OpKill"
+    253 -> showString "OpReturn"
+    254 -> showString "OpReturnValue"
+    255 -> showString "OpUnreachable"
+    256 -> showString "OpLifetimeStart"
+    257 -> showString "OpLifetimeStop"
+    259 -> showString "OpGroupAsyncCopy"
+    260 -> showString "OpGroupWaitEvents"
+    261 -> showString "OpGroupAll"
+    262 -> showString "OpGroupAny"
+    263 -> showString "OpGroupBroadcast"
+    264 -> showString "OpGroupIAdd"
+    265 -> showString "OpGroupFAdd"
+    266 -> showString "OpGroupFMin"
+    267 -> showString "OpGroupUMin"
+    268 -> showString "OpGroupSMin"
+    269 -> showString "OpGroupFMax"
+    270 -> showString "OpGroupUMax"
+    271 -> showString "OpGroupSMax"
+    274 -> showString "OpReadPipe"
+    275 -> showString "OpWritePipe"
+    276 -> showString "OpReservedReadPipe"
+    277 -> showString "OpReservedWritePipe"
+    278 -> showString "OpReserveReadPipePackets"
+    279 -> showString "OpReserveWritePipePackets"
+    280 -> showString "OpCommitReadPipe"
+    281 -> showString "OpCommitWritePipe"
+    282 -> showString "OpIsValidReserveId"
+    283 -> showString "OpGetNumPipePackets"
+    284 -> showString "OpGetMaxPipePackets"
+    285 -> showString "OpGroupReserveReadPipePackets"
+    286 -> showString "OpGroupReserveWritePipePackets"
+    287 -> showString "OpGroupCommitReadPipe"
+    288 -> showString "OpGroupCommitWritePipe"
+    291 -> showString "OpEnqueueMarker"
+    292 -> showString "OpEnqueueKernel"
+    293 -> showString "OpGetKernelNDrangeSubGroupCount"
+    294 -> showString "OpGetKernelNDrangeMaxSubGroupSize"
+    295 -> showString "OpGetKernelWorkGroupSize"
+    296 -> showString "OpGetKernelPreferredWorkGroupSizeMultiple"
+    297 -> showString "OpRetainEvent"
+    298 -> showString "OpReleaseEvent"
+    299 -> showString "OpCreateUserEvent"
+    300 -> showString "OpIsValidEvent"
+    301 -> showString "OpSetUserEventStatus"
+    302 -> showString "OpCaptureEventProfilingInfo"
+    303 -> showString "OpGetDefaultQueue"
+    304 -> showString "OpBuildNDRange"
+    305 -> showString "OpImageSparseSampleImplicitLod"
+    306 -> showString "OpImageSparseSampleExplicitLod"
+    307 -> showString "OpImageSparseSampleDrefImplicitLod"
+    308 -> showString "OpImageSparseSampleDrefExplicitLod"
+    309 -> showString "OpImageSparseSampleProjImplicitLod"
+    310 -> showString "OpImageSparseSampleProjExplicitLod"
+    311 -> showString "OpImageSparseSampleProjDrefImplicitLod"
+    312 -> showString "OpImageSparseSampleProjDrefExplicitLod"
+    313 -> showString "OpImageSparseFetch"
+    314 -> showString "OpImageSparseGather"
+    315 -> showString "OpImageSparseDrefGather"
+    316 -> showString "OpImageSparseTexelsResident"
+    317 -> showString "OpNoLine"
+    318 -> showString "OpAtomicFlagTestAndSet"
+    319 -> showString "OpAtomicFlagClear"
+    320 -> showString "OpImageSparseRead"
+    321 -> showString "OpSizeOf"
+    322 -> showString "OpTypePipeStorage"
+    323 -> showString "OpConstantPipeStorage"
+    324 -> showString "OpCreatePipeFromPipeStorage"
+    325 -> showString "OpGetKernelLocalSizeForSubgroupCount"
+    326 -> showString "OpGetKernelMaxNumSubgroups"
+    327 -> showString "OpTypeNamedBarrier"
+    328 -> showString "OpNamedBarrierInitialize"
+    329 -> showString "OpMemoryNamedBarrier"
+    330 -> showString "OpModuleProcessed"
+    331 -> showString "OpExecutionModeId"
+    332 -> showString "OpDecorateId"
+    333 -> showString "OpGroupNonUniformElect"
+    334 -> showString "OpGroupNonUniformAll"
+    335 -> showString "OpGroupNonUniformAny"
+    336 -> showString "OpGroupNonUniformAllEqual"
+    337 -> showString "OpGroupNonUniformBroadcast"
+    338 -> showString "OpGroupNonUniformBroadcastFirst"
+    339 -> showString "OpGroupNonUniformBallot"
+    340 -> showString "OpGroupNonUniformInverseBallot"
+    341 -> showString "OpGroupNonUniformBallotBitExtract"
+    342 -> showString "OpGroupNonUniformBallotBitCount"
+    343 -> showString "OpGroupNonUniformBallotFindLSB"
+    344 -> showString "OpGroupNonUniformBallotFindMSB"
+    345 -> showString "OpGroupNonUniformShuffle"
+    346 -> showString "OpGroupNonUniformShuffleXor"
+    347 -> showString "OpGroupNonUniformShuffleUp"
+    348 -> showString "OpGroupNonUniformShuffleDown"
+    349 -> showString "OpGroupNonUniformIAdd"
+    350 -> showString "OpGroupNonUniformFAdd"
+    351 -> showString "OpGroupNonUniformIMul"
+    352 -> showString "OpGroupNonUniformFMul"
+    353 -> showString "OpGroupNonUniformSMin"
+    354 -> showString "OpGroupNonUniformUMin"
+    355 -> showString "OpGroupNonUniformFMin"
+    356 -> showString "OpGroupNonUniformSMax"
+    357 -> showString "OpGroupNonUniformUMax"
+    358 -> showString "OpGroupNonUniformFMax"
+    359 -> showString "OpGroupNonUniformBitwiseAnd"
+    360 -> showString "OpGroupNonUniformBitwiseOr"
+    361 -> showString "OpGroupNonUniformBitwiseXor"
+    362 -> showString "OpGroupNonUniformLogicalAnd"
+    363 -> showString "OpGroupNonUniformLogicalOr"
+    364 -> showString "OpGroupNonUniformLogicalXor"
+    365 -> showString "OpGroupNonUniformQuadBroadcast"
+    366 -> showString "OpGroupNonUniformQuadSwap"
+    400 -> showString "OpCopyLogical"
+    401 -> showString "OpPtrEqual"
+    402 -> showString "OpPtrNotEqual"
+    403 -> showString "OpPtrDiff"
+    4160 -> showString "OpColorAttachmentReadEXT"
+    4161 -> showString "OpDepthAttachmentReadEXT"
+    4162 -> showString "OpStencilAttachmentReadEXT"
+    4416 -> showString "OpTerminateInvocation"
+    4421 -> showString "OpSubgroupBallotKHR"
+    4422 -> showString "OpSubgroupFirstInvocationKHR"
+    4428 -> showString "OpSubgroupAllKHR"
+    4429 -> showString "OpSubgroupAnyKHR"
+    4430 -> showString "OpSubgroupAllEqualKHR"
+    4431 -> showString "OpGroupNonUniformRotateKHR"
+    4432 -> showString "OpSubgroupReadInvocationKHR"
+    4433 -> showString "OpExtInstWithForwardRefsKHR"
+    4445 -> showString "OpTraceRayKHR"
+    4446 -> showString "OpExecuteCallableKHR"
+    4447 -> showString "OpConvertUToAccelerationStructureKHR"
+    4448 -> showString "OpIgnoreIntersectionKHR"
+    4449 -> showString "OpTerminateRayKHR"
+    4450 -> showString "OpSDot"
+    4451 -> showString "OpUDot"
+    4452 -> showString "OpSUDot"
+    4453 -> showString "OpSDotAccSat"
+    4454 -> showString "OpUDotAccSat"
+    4455 -> showString "OpSUDotAccSat"
+    4456 -> showString "OpTypeCooperativeMatrixKHR"
+    4457 -> showString "OpCooperativeMatrixLoadKHR"
+    4458 -> showString "OpCooperativeMatrixStoreKHR"
+    4459 -> showString "OpCooperativeMatrixMulAddKHR"
+    4460 -> showString "OpCooperativeMatrixLengthKHR"
+    4461 -> showString "OpConstantCompositeReplicateEXT"
+    4462 -> showString "OpSpecConstantCompositeReplicateEXT"
+    4463 -> showString "OpCompositeConstructReplicateEXT"
+    4472 -> showString "OpTypeRayQueryKHR"
+    4473 -> showString "OpRayQueryInitializeKHR"
+    4474 -> showString "OpRayQueryTerminateKHR"
+    4475 -> showString "OpRayQueryGenerateIntersectionKHR"
+    4476 -> showString "OpRayQueryConfirmIntersectionKHR"
+    4477 -> showString "OpRayQueryProceedKHR"
+    4479 -> showString "OpRayQueryGetIntersectionTypeKHR"
+    4480 -> showString "OpImageSampleWeightedQCOM"
+    4481 -> showString "OpImageBoxFilterQCOM"
+    4482 -> showString "OpImageBlockMatchSSDQCOM"
+    4483 -> showString "OpImageBlockMatchSADQCOM"
+    4500 -> showString "OpImageBlockMatchWindowSSDQCOM"
+    4501 -> showString "OpImageBlockMatchWindowSADQCOM"
+    4502 -> showString "OpImageBlockMatchGatherSSDQCOM"
+    4503 -> showString "OpImageBlockMatchGatherSADQCOM"
+    5000 -> showString "OpGroupIAddNonUniformAMD"
+    5001 -> showString "OpGroupFAddNonUniformAMD"
+    5002 -> showString "OpGroupFMinNonUniformAMD"
+    5003 -> showString "OpGroupUMinNonUniformAMD"
+    5004 -> showString "OpGroupSMinNonUniformAMD"
+    5005 -> showString "OpGroupFMaxNonUniformAMD"
+    5006 -> showString "OpGroupUMaxNonUniformAMD"
+    5007 -> showString "OpGroupSMaxNonUniformAMD"
+    5011 -> showString "OpFragmentMaskFetchAMD"
+    5012 -> showString "OpFragmentFetchAMD"
+    5056 -> showString "OpReadClockKHR"
+    5075 -> showString "OpFinalizeNodePayloadsAMDX"
+    5078 -> showString "OpFinishWritingNodePayloadAMDX"
+    5090 -> showString "OpInitializeNodePayloadsAMDX"
+    5110 -> showString "OpGroupNonUniformQuadAllKHR"
+    5111 -> showString "OpGroupNonUniformQuadAnyKHR"
+    5249 -> showString "OpHitObjectRecordHitMotionNV"
+    5250 -> showString "OpHitObjectRecordHitWithIndexMotionNV"
+    5251 -> showString "OpHitObjectRecordMissMotionNV"
+    5252 -> showString "OpHitObjectGetWorldToObjectNV"
+    5253 -> showString "OpHitObjectGetObjectToWorldNV"
+    5254 -> showString "OpHitObjectGetObjectRayDirectionNV"
+    5255 -> showString "OpHitObjectGetObjectRayOriginNV"
+    5256 -> showString "OpHitObjectTraceRayMotionNV"
+    5257 -> showString "OpHitObjectGetShaderRecordBufferHandleNV"
+    5258 -> showString "OpHitObjectGetShaderBindingTableRecordIndexNV"
+    5259 -> showString "OpHitObjectRecordEmptyNV"
+    5260 -> showString "OpHitObjectTraceRayNV"
+    5261 -> showString "OpHitObjectRecordHitNV"
+    5262 -> showString "OpHitObjectRecordHitWithIndexNV"
+    5263 -> showString "OpHitObjectRecordMissNV"
+    5264 -> showString "OpHitObjectExecuteShaderNV"
+    5265 -> showString "OpHitObjectGetCurrentTimeNV"
+    5266 -> showString "OpHitObjectGetAttributesNV"
+    5267 -> showString "OpHitObjectGetHitKindNV"
+    5268 -> showString "OpHitObjectGetPrimitiveIndexNV"
+    5269 -> showString "OpHitObjectGetGeometryIndexNV"
+    5270 -> showString "OpHitObjectGetInstanceIdNV"
+    5271 -> showString "OpHitObjectGetInstanceCustomIndexNV"
+    5272 -> showString "OpHitObjectGetWorldRayDirectionNV"
+    5273 -> showString "OpHitObjectGetWorldRayOriginNV"
+    5274 -> showString "OpHitObjectGetRayTMaxNV"
+    5275 -> showString "OpHitObjectGetRayTMinNV"
+    5276 -> showString "OpHitObjectIsEmptyNV"
+    5277 -> showString "OpHitObjectIsHitNV"
+    5278 -> showString "OpHitObjectIsMissNV"
+    5279 -> showString "OpReorderThreadWithHitObjectNV"
+    5280 -> showString "OpReorderThreadWithHintNV"
+    5281 -> showString "OpTypeHitObjectNV"
+    5283 -> showString "OpImageSampleFootprintNV"
+    5294 -> showString "OpEmitMeshTasksEXT"
+    5295 -> showString "OpSetMeshOutputsEXT"
+    5296 -> showString "OpGroupNonUniformPartitionNV"
+    5299 -> showString "OpWritePackedPrimitiveIndices4x8NV"
+    5300 -> showString "OpFetchMicroTriangleVertexPositionNV"
+    5301 -> showString "OpFetchMicroTriangleVertexBarycentricNV"
+    5334 -> showString "OpReportIntersectionKHR"
+    5335 -> showString "OpIgnoreIntersectionNV"
+    5336 -> showString "OpTerminateRayNV"
+    5337 -> showString "OpTraceNV"
+    5338 -> showString "OpTraceMotionNV"
+    5339 -> showString "OpTraceRayMotionNV"
+    5340 -> showString "OpRayQueryGetIntersectionTriangleVertexPositionsKHR"
+    5341 -> showString "OpTypeAccelerationStructureKHR"
+    5344 -> showString "OpExecuteCallableNV"
+    5358 -> showString "OpTypeCooperativeMatrixNV"
+    5359 -> showString "OpCooperativeMatrixLoadNV"
+    5360 -> showString "OpCooperativeMatrixStoreNV"
+    5361 -> showString "OpCooperativeMatrixMulAddNV"
+    5362 -> showString "OpCooperativeMatrixLengthNV"
+    5364 -> showString "OpBeginInvocationInterlockEXT"
+    5365 -> showString "OpEndInvocationInterlockEXT"
+    5380 -> showString "OpDemoteToHelperInvocation"
+    5381 -> showString "OpIsHelperInvocationEXT"
+    5391 -> showString "OpConvertUToImageNV"
+    5392 -> showString "OpConvertUToSamplerNV"
+    5393 -> showString "OpConvertImageToUNV"
+    5394 -> showString "OpConvertSamplerToUNV"
+    5395 -> showString "OpConvertUToSampledImageNV"
+    5396 -> showString "OpConvertSampledImageToUNV"
+    5397 -> showString "OpSamplerImageAddressingModeNV"
+    5398 -> showString "OpRawAccessChainNV"
+    5571 -> showString "OpSubgroupShuffleINTEL"
+    5572 -> showString "OpSubgroupShuffleDownINTEL"
+    5573 -> showString "OpSubgroupShuffleUpINTEL"
+    5574 -> showString "OpSubgroupShuffleXorINTEL"
+    5575 -> showString "OpSubgroupBlockReadINTEL"
+    5576 -> showString "OpSubgroupBlockWriteINTEL"
+    5577 -> showString "OpSubgroupImageBlockReadINTEL"
+    5578 -> showString "OpSubgroupImageBlockWriteINTEL"
+    5580 -> showString "OpSubgroupImageMediaBlockReadINTEL"
+    5581 -> showString "OpSubgroupImageMediaBlockWriteINTEL"
+    5585 -> showString "OpUCountLeadingZerosINTEL"
+    5586 -> showString "OpUCountTrailingZerosINTEL"
+    5587 -> showString "OpAbsISubINTEL"
+    5588 -> showString "OpAbsUSubINTEL"
+    5589 -> showString "OpIAddSatINTEL"
+    5590 -> showString "OpUAddSatINTEL"
+    5591 -> showString "OpIAverageINTEL"
+    5592 -> showString "OpUAverageINTEL"
+    5593 -> showString "OpIAverageRoundedINTEL"
+    5594 -> showString "OpUAverageRoundedINTEL"
+    5595 -> showString "OpISubSatINTEL"
+    5596 -> showString "OpUSubSatINTEL"
+    5597 -> showString "OpIMul32x16INTEL"
+    5598 -> showString "OpUMul32x16INTEL"
+    5600 -> showString "OpConstantFunctionPointerINTEL"
+    5601 -> showString "OpFunctionPointerCallINTEL"
+    5609 -> showString "OpAsmTargetINTEL"
+    5610 -> showString "OpAsmINTEL"
+    5611 -> showString "OpAsmCallINTEL"
+    5614 -> showString "OpAtomicFMinEXT"
+    5615 -> showString "OpAtomicFMaxEXT"
+    5630 -> showString "OpAssumeTrueKHR"
+    5631 -> showString "OpExpectKHR"
+    5632 -> showString "OpDecorateString"
+    5633 -> showString "OpMemberDecorateString"
+    5699 -> showString "OpVmeImageINTEL"
+    5700 -> showString "OpTypeVmeImageINTEL"
+    5701 -> showString "OpTypeAvcImePayloadINTEL"
+    5702 -> showString "OpTypeAvcRefPayloadINTEL"
+    5703 -> showString "OpTypeAvcSicPayloadINTEL"
+    5704 -> showString "OpTypeAvcMcePayloadINTEL"
+    5705 -> showString "OpTypeAvcMceResultINTEL"
+    5706 -> showString "OpTypeAvcImeResultINTEL"
+    5707 -> showString "OpTypeAvcImeResultSingleReferenceStreamoutINTEL"
+    5708 -> showString "OpTypeAvcImeResultDualReferenceStreamoutINTEL"
+    5709 -> showString "OpTypeAvcImeSingleReferenceStreaminINTEL"
+    5710 -> showString "OpTypeAvcImeDualReferenceStreaminINTEL"
+    5711 -> showString "OpTypeAvcRefResultINTEL"
+    5712 -> showString "OpTypeAvcSicResultINTEL"
+    5713 -> showString "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL"
+    5714 -> showString "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL"
+    5715 -> showString "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL"
+    5716 -> showString "OpSubgroupAvcMceSetInterShapePenaltyINTEL"
+    5717 -> showString "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL"
+    5718 -> showString "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL"
+    5719 -> showString "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL"
+    5720 -> showString "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL"
+    5721 -> showString "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL"
+    5722 -> showString "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL"
+    5723 -> showString "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL"
+    5724 -> showString "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL"
+    5725 -> showString "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL"
+    5726 -> showString "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL"
+    5727 -> showString "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL"
+    5728 -> showString "OpSubgroupAvcMceSetAcOnlyHaarINTEL"
+    5729 -> showString "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL"
+    5730 -> showString "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL"
+    5731 -> showString "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL"
+    5732 -> showString "OpSubgroupAvcMceConvertToImePayloadINTEL"
+    5733 -> showString "OpSubgroupAvcMceConvertToImeResultINTEL"
+    5734 -> showString "OpSubgroupAvcMceConvertToRefPayloadINTEL"
+    5735 -> showString "OpSubgroupAvcMceConvertToRefResultINTEL"
+    5736 -> showString "OpSubgroupAvcMceConvertToSicPayloadINTEL"
+    5737 -> showString "OpSubgroupAvcMceConvertToSicResultINTEL"
+    5738 -> showString "OpSubgroupAvcMceGetMotionVectorsINTEL"
+    5739 -> showString "OpSubgroupAvcMceGetInterDistortionsINTEL"
+    5740 -> showString "OpSubgroupAvcMceGetBestInterDistortionsINTEL"
+    5741 -> showString "OpSubgroupAvcMceGetInterMajorShapeINTEL"
+    5742 -> showString "OpSubgroupAvcMceGetInterMinorShapeINTEL"
+    5743 -> showString "OpSubgroupAvcMceGetInterDirectionsINTEL"
+    5744 -> showString "OpSubgroupAvcMceGetInterMotionVectorCountINTEL"
+    5745 -> showString "OpSubgroupAvcMceGetInterReferenceIdsINTEL"
+    5746 -> showString "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL"
+    5747 -> showString "OpSubgroupAvcImeInitializeINTEL"
+    5748 -> showString "OpSubgroupAvcImeSetSingleReferenceINTEL"
+    5749 -> showString "OpSubgroupAvcImeSetDualReferenceINTEL"
+    5750 -> showString "OpSubgroupAvcImeRefWindowSizeINTEL"
+    5751 -> showString "OpSubgroupAvcImeAdjustRefOffsetINTEL"
+    5752 -> showString "OpSubgroupAvcImeConvertToMcePayloadINTEL"
+    5753 -> showString "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL"
+    5754 -> showString "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL"
+    5755 -> showString "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL"
+    5756 -> showString "OpSubgroupAvcImeSetWeightedSadINTEL"
+    5757 -> showString "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL"
+    5758 -> showString "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL"
+    5759 -> showString "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL"
+    5760 -> showString "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL"
+    5761 -> showString "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL"
+    5762 -> showString "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL"
+    5763 -> showString "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL"
+    5764 -> showString "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL"
+    5765 -> showString "OpSubgroupAvcImeConvertToMceResultINTEL"
+    5766 -> showString "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL"
+    5767 -> showString "OpSubgroupAvcImeGetDualReferenceStreaminINTEL"
+    5768 -> showString "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL"
+    5769 -> showString "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL"
+    5770 -> showString "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL"
+    5771 -> showString "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL"
+    5772 -> showString "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL"
+    5773 -> showString "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL"
+    5774 -> showString "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL"
+    5775 -> showString "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL"
+    5776 -> showString "OpSubgroupAvcImeGetBorderReachedINTEL"
+    5777 -> showString "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL"
+    5778 -> showString "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL"
+    5779 -> showString "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL"
+    5780 -> showString "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL"
+    5781 -> showString "OpSubgroupAvcFmeInitializeINTEL"
+    5782 -> showString "OpSubgroupAvcBmeInitializeINTEL"
+    5783 -> showString "OpSubgroupAvcRefConvertToMcePayloadINTEL"
+    5784 -> showString "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL"
+    5785 -> showString "OpSubgroupAvcRefSetBilinearFilterEnableINTEL"
+    5786 -> showString "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL"
+    5787 -> showString "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL"
+    5788 -> showString "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL"
+    5789 -> showString "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL"
+    5790 -> showString "OpSubgroupAvcRefConvertToMceResultINTEL"
+    5791 -> showString "OpSubgroupAvcSicInitializeINTEL"
+    5792 -> showString "OpSubgroupAvcSicConfigureSkcINTEL"
+    5793 -> showString "OpSubgroupAvcSicConfigureIpeLumaINTEL"
+    5794 -> showString "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL"
+    5795 -> showString "OpSubgroupAvcSicGetMotionVectorMaskINTEL"
+    5796 -> showString "OpSubgroupAvcSicConvertToMcePayloadINTEL"
+    5797 -> showString "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL"
+    5798 -> showString "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL"
+    5799 -> showString "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL"
+    5800 -> showString "OpSubgroupAvcSicSetBilinearFilterEnableINTEL"
+    5801 -> showString "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL"
+    5802 -> showString "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL"
+    5803 -> showString "OpSubgroupAvcSicEvaluateIpeINTEL"
+    5804 -> showString "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL"
+    5805 -> showString "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL"
+    5806 -> showString "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL"
+    5807 -> showString "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL"
+    5808 -> showString "OpSubgroupAvcSicConvertToMceResultINTEL"
+    5809 -> showString "OpSubgroupAvcSicGetIpeLumaShapeINTEL"
+    5810 -> showString "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL"
+    5811 -> showString "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL"
+    5812 -> showString "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL"
+    5813 -> showString "OpSubgroupAvcSicGetIpeChromaModeINTEL"
+    5814 -> showString "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL"
+    5815 -> showString "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL"
+    5816 -> showString "OpSubgroupAvcSicGetInterRawSadsINTEL"
+    5818 -> showString "OpVariableLengthArrayINTEL"
+    5819 -> showString "OpSaveMemoryINTEL"
+    5820 -> showString "OpRestoreMemoryINTEL"
+    5840 -> showString "OpArbitraryFloatSinCosPiINTEL"
+    5841 -> showString "OpArbitraryFloatCastINTEL"
+    5842 -> showString "OpArbitraryFloatCastFromIntINTEL"
+    5843 -> showString "OpArbitraryFloatCastToIntINTEL"
+    5846 -> showString "OpArbitraryFloatAddINTEL"
+    5847 -> showString "OpArbitraryFloatSubINTEL"
+    5848 -> showString "OpArbitraryFloatMulINTEL"
+    5849 -> showString "OpArbitraryFloatDivINTEL"
+    5850 -> showString "OpArbitraryFloatGTINTEL"
+    5851 -> showString "OpArbitraryFloatGEINTEL"
+    5852 -> showString "OpArbitraryFloatLTINTEL"
+    5853 -> showString "OpArbitraryFloatLEINTEL"
+    5854 -> showString "OpArbitraryFloatEQINTEL"
+    5855 -> showString "OpArbitraryFloatRecipINTEL"
+    5856 -> showString "OpArbitraryFloatRSqrtINTEL"
+    5857 -> showString "OpArbitraryFloatCbrtINTEL"
+    5858 -> showString "OpArbitraryFloatHypotINTEL"
+    5859 -> showString "OpArbitraryFloatSqrtINTEL"
+    5860 -> showString "OpArbitraryFloatLogINTEL"
+    5861 -> showString "OpArbitraryFloatLog2INTEL"
+    5862 -> showString "OpArbitraryFloatLog10INTEL"
+    5863 -> showString "OpArbitraryFloatLog1pINTEL"
+    5864 -> showString "OpArbitraryFloatExpINTEL"
+    5865 -> showString "OpArbitraryFloatExp2INTEL"
+    5866 -> showString "OpArbitraryFloatExp10INTEL"
+    5867 -> showString "OpArbitraryFloatExpm1INTEL"
+    5868 -> showString "OpArbitraryFloatSinINTEL"
+    5869 -> showString "OpArbitraryFloatCosINTEL"
+    5870 -> showString "OpArbitraryFloatSinCosINTEL"
+    5871 -> showString "OpArbitraryFloatSinPiINTEL"
+    5872 -> showString "OpArbitraryFloatCosPiINTEL"
+    5873 -> showString "OpArbitraryFloatASinINTEL"
+    5874 -> showString "OpArbitraryFloatASinPiINTEL"
+    5875 -> showString "OpArbitraryFloatACosINTEL"
+    5876 -> showString "OpArbitraryFloatACosPiINTEL"
+    5877 -> showString "OpArbitraryFloatATanINTEL"
+    5878 -> showString "OpArbitraryFloatATanPiINTEL"
+    5879 -> showString "OpArbitraryFloatATan2INTEL"
+    5880 -> showString "OpArbitraryFloatPowINTEL"
+    5881 -> showString "OpArbitraryFloatPowRINTEL"
+    5882 -> showString "OpArbitraryFloatPowNINTEL"
+    5887 -> showString "OpLoopControlINTEL"
+    5911 -> showString "OpAliasDomainDeclINTEL"
+    5912 -> showString "OpAliasScopeDeclINTEL"
+    5913 -> showString "OpAliasScopeListDeclINTEL"
+    5923 -> showString "OpFixedSqrtINTEL"
+    5924 -> showString "OpFixedRecipINTEL"
+    5925 -> showString "OpFixedRsqrtINTEL"
+    5926 -> showString "OpFixedSinINTEL"
+    5927 -> showString "OpFixedCosINTEL"
+    5928 -> showString "OpFixedSinCosINTEL"
+    5929 -> showString "OpFixedSinPiINTEL"
+    5930 -> showString "OpFixedCosPiINTEL"
+    5931 -> showString "OpFixedSinCosPiINTEL"
+    5932 -> showString "OpFixedLogINTEL"
+    5933 -> showString "OpFixedExpINTEL"
+    5934 -> showString "OpPtrCastToCrossWorkgroupINTEL"
+    5938 -> showString "OpCrossWorkgroupCastToPtrINTEL"
+    5946 -> showString "OpReadPipeBlockingINTEL"
+    5947 -> showString "OpWritePipeBlockingINTEL"
+    5949 -> showString "OpFPGARegINTEL"
+    6016 -> showString "OpRayQueryGetRayTMinKHR"
+    6017 -> showString "OpRayQueryGetRayFlagsKHR"
+    6018 -> showString "OpRayQueryGetIntersectionTKHR"
+    6019 -> showString "OpRayQueryGetIntersectionInstanceCustomIndexKHR"
+    6020 -> showString "OpRayQueryGetIntersectionInstanceIdKHR"
+    6021 -> showString "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR"
+    6022 -> showString "OpRayQueryGetIntersectionGeometryIndexKHR"
+    6023 -> showString "OpRayQueryGetIntersectionPrimitiveIndexKHR"
+    6024 -> showString "OpRayQueryGetIntersectionBarycentricsKHR"
+    6025 -> showString "OpRayQueryGetIntersectionFrontFaceKHR"
+    6026 -> showString "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR"
+    6027 -> showString "OpRayQueryGetIntersectionObjectRayDirectionKHR"
+    6028 -> showString "OpRayQueryGetIntersectionObjectRayOriginKHR"
+    6029 -> showString "OpRayQueryGetWorldRayDirectionKHR"
+    6030 -> showString "OpRayQueryGetWorldRayOriginKHR"
+    6031 -> showString "OpRayQueryGetIntersectionObjectToWorldKHR"
+    6032 -> showString "OpRayQueryGetIntersectionWorldToObjectKHR"
+    6035 -> showString "OpAtomicFAddEXT"
+    6086 -> showString "OpTypeBufferSurfaceINTEL"
+    6090 -> showString "OpTypeStructContinuedINTEL"
+    6091 -> showString "OpConstantCompositeContinuedINTEL"
+    6092 -> showString "OpSpecConstantCompositeContinuedINTEL"
+    6096 -> showString "OpCompositeConstructContinuedINTEL"
+    6116 -> showString "OpConvertFToBF16INTEL"
+    6117 -> showString "OpConvertBF16ToFINTEL"
+    6142 -> showString "OpControlBarrierArriveINTEL"
+    6143 -> showString "OpControlBarrierWaitINTEL"
+    6401 -> showString "OpGroupIMulKHR"
+    6402 -> showString "OpGroupFMulKHR"
+    6403 -> showString "OpGroupBitwiseAndKHR"
+    6404 -> showString "OpGroupBitwiseOrKHR"
+    6405 -> showString "OpGroupBitwiseXorKHR"
+    6406 -> showString "OpGroupLogicalAndKHR"
+    6407 -> showString "OpGroupLogicalOrKHR"
+    6408 -> showString "OpGroupLogicalXorKHR"
+    6428 -> showString "OpMaskedGatherINTEL"
+    6429 -> showString "OpMaskedScatterINTEL"
+    x -> showParen (p > 10) $ showString "Op " . showsPrec (p + 1) x
+
+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 OpColorAttachmentReadEXT :: Op
+pattern OpColorAttachmentReadEXT = Op 4160
+
+pattern OpDepthAttachmentReadEXT :: Op
+pattern OpDepthAttachmentReadEXT = Op 4161
+
+pattern OpStencilAttachmentReadEXT :: Op
+pattern OpStencilAttachmentReadEXT = Op 4162
+
+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 OpExtInstWithForwardRefsKHR :: Op
+pattern OpExtInstWithForwardRefsKHR = Op 4433
+
+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 OpTypeCooperativeMatrixKHR :: Op
+pattern OpTypeCooperativeMatrixKHR = Op 4456
+
+pattern OpCooperativeMatrixLoadKHR :: Op
+pattern OpCooperativeMatrixLoadKHR = Op 4457
+
+pattern OpCooperativeMatrixStoreKHR :: Op
+pattern OpCooperativeMatrixStoreKHR = Op 4458
+
+pattern OpCooperativeMatrixMulAddKHR :: Op
+pattern OpCooperativeMatrixMulAddKHR = Op 4459
+
+pattern OpCooperativeMatrixLengthKHR :: Op
+pattern OpCooperativeMatrixLengthKHR = Op 4460
+
+pattern OpConstantCompositeReplicateEXT :: Op
+pattern OpConstantCompositeReplicateEXT = Op 4461
+
+pattern OpSpecConstantCompositeReplicateEXT :: Op
+pattern OpSpecConstantCompositeReplicateEXT = Op 4462
+
+pattern OpCompositeConstructReplicateEXT :: Op
+pattern OpCompositeConstructReplicateEXT = Op 4463
+
+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 OpImageSampleWeightedQCOM :: Op
+pattern OpImageSampleWeightedQCOM = Op 4480
+
+pattern OpImageBoxFilterQCOM :: Op
+pattern OpImageBoxFilterQCOM = Op 4481
+
+pattern OpImageBlockMatchSSDQCOM :: Op
+pattern OpImageBlockMatchSSDQCOM = Op 4482
+
+pattern OpImageBlockMatchSADQCOM :: Op
+pattern OpImageBlockMatchSADQCOM = Op 4483
+
+pattern OpImageBlockMatchWindowSSDQCOM :: Op
+pattern OpImageBlockMatchWindowSSDQCOM = Op 4500
+
+pattern OpImageBlockMatchWindowSADQCOM :: Op
+pattern OpImageBlockMatchWindowSADQCOM = Op 4501
+
+pattern OpImageBlockMatchGatherSSDQCOM :: Op
+pattern OpImageBlockMatchGatherSSDQCOM = Op 4502
+
+pattern OpImageBlockMatchGatherSADQCOM :: Op
+pattern OpImageBlockMatchGatherSADQCOM = Op 4503
+
+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 OpFinalizeNodePayloadsAMDX :: Op
+pattern OpFinalizeNodePayloadsAMDX = Op 5075
+
+pattern OpFinishWritingNodePayloadAMDX :: Op
+pattern OpFinishWritingNodePayloadAMDX = Op 5078
+
+pattern OpInitializeNodePayloadsAMDX :: Op
+pattern OpInitializeNodePayloadsAMDX = Op 5090
+
+pattern OpGroupNonUniformQuadAllKHR :: Op
+pattern OpGroupNonUniformQuadAllKHR = Op 5110
+
+pattern OpGroupNonUniformQuadAnyKHR :: Op
+pattern OpGroupNonUniformQuadAnyKHR = Op 5111
+
+pattern OpHitObjectRecordHitMotionNV :: Op
+pattern OpHitObjectRecordHitMotionNV = Op 5249
+
+pattern OpHitObjectRecordHitWithIndexMotionNV :: Op
+pattern OpHitObjectRecordHitWithIndexMotionNV = Op 5250
+
+pattern OpHitObjectRecordMissMotionNV :: Op
+pattern OpHitObjectRecordMissMotionNV = Op 5251
+
+pattern OpHitObjectGetWorldToObjectNV :: Op
+pattern OpHitObjectGetWorldToObjectNV = Op 5252
+
+pattern OpHitObjectGetObjectToWorldNV :: Op
+pattern OpHitObjectGetObjectToWorldNV = Op 5253
+
+pattern OpHitObjectGetObjectRayDirectionNV :: Op
+pattern OpHitObjectGetObjectRayDirectionNV = Op 5254
+
+pattern OpHitObjectGetObjectRayOriginNV :: Op
+pattern OpHitObjectGetObjectRayOriginNV = Op 5255
+
+pattern OpHitObjectTraceRayMotionNV :: Op
+pattern OpHitObjectTraceRayMotionNV = Op 5256
+
+pattern OpHitObjectGetShaderRecordBufferHandleNV :: Op
+pattern OpHitObjectGetShaderRecordBufferHandleNV = Op 5257
+
+pattern OpHitObjectGetShaderBindingTableRecordIndexNV :: Op
+pattern OpHitObjectGetShaderBindingTableRecordIndexNV = Op 5258
+
+pattern OpHitObjectRecordEmptyNV :: Op
+pattern OpHitObjectRecordEmptyNV = Op 5259
+
+pattern OpHitObjectTraceRayNV :: Op
+pattern OpHitObjectTraceRayNV = Op 5260
+
+pattern OpHitObjectRecordHitNV :: Op
+pattern OpHitObjectRecordHitNV = Op 5261
+
+pattern OpHitObjectRecordHitWithIndexNV :: Op
+pattern OpHitObjectRecordHitWithIndexNV = Op 5262
+
+pattern OpHitObjectRecordMissNV :: Op
+pattern OpHitObjectRecordMissNV = Op 5263
+
+pattern OpHitObjectExecuteShaderNV :: Op
+pattern OpHitObjectExecuteShaderNV = Op 5264
+
+pattern OpHitObjectGetCurrentTimeNV :: Op
+pattern OpHitObjectGetCurrentTimeNV = Op 5265
+
+pattern OpHitObjectGetAttributesNV :: Op
+pattern OpHitObjectGetAttributesNV = Op 5266
+
+pattern OpHitObjectGetHitKindNV :: Op
+pattern OpHitObjectGetHitKindNV = Op 5267
+
+pattern OpHitObjectGetPrimitiveIndexNV :: Op
+pattern OpHitObjectGetPrimitiveIndexNV = Op 5268
+
+pattern OpHitObjectGetGeometryIndexNV :: Op
+pattern OpHitObjectGetGeometryIndexNV = Op 5269
+
+pattern OpHitObjectGetInstanceIdNV :: Op
+pattern OpHitObjectGetInstanceIdNV = Op 5270
+
+pattern OpHitObjectGetInstanceCustomIndexNV :: Op
+pattern OpHitObjectGetInstanceCustomIndexNV = Op 5271
+
+pattern OpHitObjectGetWorldRayDirectionNV :: Op
+pattern OpHitObjectGetWorldRayDirectionNV = Op 5272
+
+pattern OpHitObjectGetWorldRayOriginNV :: Op
+pattern OpHitObjectGetWorldRayOriginNV = Op 5273
+
+pattern OpHitObjectGetRayTMaxNV :: Op
+pattern OpHitObjectGetRayTMaxNV = Op 5274
+
+pattern OpHitObjectGetRayTMinNV :: Op
+pattern OpHitObjectGetRayTMinNV = Op 5275
+
+pattern OpHitObjectIsEmptyNV :: Op
+pattern OpHitObjectIsEmptyNV = Op 5276
+
+pattern OpHitObjectIsHitNV :: Op
+pattern OpHitObjectIsHitNV = Op 5277
+
+pattern OpHitObjectIsMissNV :: Op
+pattern OpHitObjectIsMissNV = Op 5278
+
+pattern OpReorderThreadWithHitObjectNV :: Op
+pattern OpReorderThreadWithHitObjectNV = Op 5279
+
+pattern OpReorderThreadWithHintNV :: Op
+pattern OpReorderThreadWithHintNV = Op 5280
+
+pattern OpTypeHitObjectNV :: Op
+pattern OpTypeHitObjectNV = Op 5281
+
+pattern OpImageSampleFootprintNV :: Op
+pattern OpImageSampleFootprintNV = Op 5283
+
+pattern OpEmitMeshTasksEXT :: Op
+pattern OpEmitMeshTasksEXT = Op 5294
+
+pattern OpSetMeshOutputsEXT :: Op
+pattern OpSetMeshOutputsEXT = Op 5295
+
+pattern OpGroupNonUniformPartitionNV :: Op
+pattern OpGroupNonUniformPartitionNV = Op 5296
+
+pattern OpWritePackedPrimitiveIndices4x8NV :: Op
+pattern OpWritePackedPrimitiveIndices4x8NV = Op 5299
+
+pattern OpFetchMicroTriangleVertexPositionNV :: Op
+pattern OpFetchMicroTriangleVertexPositionNV = Op 5300
+
+pattern OpFetchMicroTriangleVertexBarycentricNV :: Op
+pattern OpFetchMicroTriangleVertexBarycentricNV = Op 5301
+
+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 OpRayQueryGetIntersectionTriangleVertexPositionsKHR :: Op
+pattern OpRayQueryGetIntersectionTriangleVertexPositionsKHR = Op 5340
+
+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 OpRawAccessChainNV :: Op
+pattern OpRawAccessChainNV = Op 5398
+
+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 OpCompositeConstructContinuedINTEL :: Op
+pattern OpCompositeConstructContinuedINTEL = Op 6096
+
+pattern OpConvertFToBF16INTEL :: Op
+pattern OpConvertFToBF16INTEL = Op 6116
+
+pattern OpConvertBF16ToFINTEL :: Op
+pattern OpConvertBF16ToFINTEL = Op 6117
+
+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 OpMaskedGatherINTEL :: Op
+pattern OpMaskedGatherINTEL = Op 6428
+
+pattern OpMaskedScatterINTEL :: Op
+pattern OpMaskedScatterINTEL = Op 6429
diff --git a/src/Data/SpirV/Enum/OverflowModes.hs b/src/Data/SpirV/Enum/OverflowModes.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/OverflowModes.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.OverflowModes where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype OverflowModes = OverflowModes Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show OverflowModes where
+  showsPrec p (OverflowModes v) = case v of
+    0 -> showString "WRAP"
+    1 -> showString "SAT"
+    2 -> showString "SAT_ZERO"
+    3 -> showString "SAT_SYM"
+    x -> showParen (p > 10) $ showString "OverflowModes " . showsPrec (p + 1) x
+
+pattern WRAP :: OverflowModes
+pattern WRAP = OverflowModes 0
+
+pattern SAT :: OverflowModes
+pattern SAT = OverflowModes 1
+
+pattern SAT_ZERO :: OverflowModes
+pattern SAT_ZERO = OverflowModes 2
+
+pattern SAT_SYM :: OverflowModes
+pattern SAT_SYM = OverflowModes 3
diff --git a/src/Data/SpirV/Enum/PackedVectorFormat.hs b/src/Data/SpirV/Enum/PackedVectorFormat.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/PackedVectorFormat.hs
@@ -0,0 +1,23 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.PackedVectorFormat where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype PackedVectorFormat = PackedVectorFormat Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show PackedVectorFormat where
+  showsPrec p (PackedVectorFormat v) = case v of
+    0 -> showString "PackedVectorFormat4x8Bit"
+    x -> showParen (p > 10) $ showString "PackedVectorFormat " . showsPrec (p + 1) x
+
+pattern PackedVectorFormat4x8Bit :: PackedVectorFormat
+pattern PackedVectorFormat4x8Bit = PackedVectorFormat 0
+
+pattern PackedVectorFormat4x8BitKHR :: PackedVectorFormat
+pattern PackedVectorFormat4x8BitKHR = PackedVectorFormat 0
diff --git a/src/Data/SpirV/Enum/QuantizationModes.hs b/src/Data/SpirV/Enum/QuantizationModes.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/QuantizationModes.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.QuantizationModes where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype QuantizationModes = QuantizationModes Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show QuantizationModes where
+  showsPrec p (QuantizationModes v) = case v of
+    0 -> showString "TRN"
+    1 -> showString "TRN_ZERO"
+    2 -> showString "RND"
+    3 -> showString "RND_ZERO"
+    4 -> showString "RND_INF"
+    5 -> showString "RND_MIN_INF"
+    6 -> showString "RND_CONV"
+    7 -> showString "RND_CONV_ODD"
+    x -> showParen (p > 10) $ showString "QuantizationModes " . showsPrec (p + 1) x
+
+pattern TRN :: QuantizationModes
+pattern TRN = QuantizationModes 0
+
+pattern TRN_ZERO :: QuantizationModes
+pattern TRN_ZERO = QuantizationModes 1
+
+pattern RND :: QuantizationModes
+pattern RND = QuantizationModes 2
+
+pattern RND_ZERO :: QuantizationModes
+pattern RND_ZERO = QuantizationModes 3
+
+pattern RND_INF :: QuantizationModes
+pattern RND_INF = QuantizationModes 4
+
+pattern RND_MIN_INF :: QuantizationModes
+pattern RND_MIN_INF = QuantizationModes 5
+
+pattern RND_CONV :: QuantizationModes
+pattern RND_CONV = QuantizationModes 6
+
+pattern RND_CONV_ODD :: QuantizationModes
+pattern RND_CONV_ODD = QuantizationModes 7
diff --git a/src/Data/SpirV/Enum/RawAccessChainOperands.hs b/src/Data/SpirV/Enum/RawAccessChainOperands.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/RawAccessChainOperands.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.RawAccessChainOperands where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type RawAccessChainOperands = RawAccessChainOperandsBits
+
+newtype RawAccessChainOperandsBits = RawAccessChainOperandsBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup RawAccessChainOperands where
+  (RawAccessChainOperandsBits a) <> (RawAccessChainOperandsBits b) = RawAccessChainOperandsBits (a .|. b)
+
+instance Monoid RawAccessChainOperands where
+  mempty = RawAccessChainOperandsBits 0
+
+pattern RobustnessPerComponentNV :: RawAccessChainOperandsBits
+pattern RobustnessPerComponentNV = RawAccessChainOperandsBits 0x00000001
+
+pattern RobustnessPerElementNV :: RawAccessChainOperandsBits
+pattern RobustnessPerElementNV = RawAccessChainOperandsBits 0x00000002
diff --git a/src/Data/SpirV/Enum/RayFlags.hs b/src/Data/SpirV/Enum/RayFlags.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/RayFlags.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.RayFlags where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type RayFlags = RayFlagsBits
+
+newtype RayFlagsBits = RayFlagsBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup RayFlags where
+  (RayFlagsBits a) <> (RayFlagsBits b) = RayFlagsBits (a .|. b)
+
+instance Monoid RayFlags where
+  mempty = RayFlagsBits 0
+
+pattern OpaqueKHR :: RayFlagsBits
+pattern OpaqueKHR = RayFlagsBits 0x00000001
+
+pattern NoOpaqueKHR :: RayFlagsBits
+pattern NoOpaqueKHR = RayFlagsBits 0x00000002
+
+pattern TerminateOnFirstHitKHR :: RayFlagsBits
+pattern TerminateOnFirstHitKHR = RayFlagsBits 0x00000004
+
+pattern SkipClosestHitShaderKHR :: RayFlagsBits
+pattern SkipClosestHitShaderKHR = RayFlagsBits 0x00000008
+
+pattern CullBackFacingTrianglesKHR :: RayFlagsBits
+pattern CullBackFacingTrianglesKHR = RayFlagsBits 0x00000010
+
+pattern CullFrontFacingTrianglesKHR :: RayFlagsBits
+pattern CullFrontFacingTrianglesKHR = RayFlagsBits 0x00000020
+
+pattern CullOpaqueKHR :: RayFlagsBits
+pattern CullOpaqueKHR = RayFlagsBits 0x00000040
+
+pattern CullNoOpaqueKHR :: RayFlagsBits
+pattern CullNoOpaqueKHR = RayFlagsBits 0x00000080
+
+pattern SkipTrianglesKHR :: RayFlagsBits
+pattern SkipTrianglesKHR = RayFlagsBits 0x00000100
+
+pattern SkipAABBsKHR :: RayFlagsBits
+pattern SkipAABBsKHR = RayFlagsBits 0x00000200
+
+pattern ForceOpacityMicromap2StateEXT :: RayFlagsBits
+pattern ForceOpacityMicromap2StateEXT = RayFlagsBits 0x00000400
diff --git a/src/Data/SpirV/Enum/RayQueryCandidateIntersectionType.hs b/src/Data/SpirV/Enum/RayQueryCandidateIntersectionType.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/RayQueryCandidateIntersectionType.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.RayQueryCandidateIntersectionType where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype RayQueryCandidateIntersectionType = RayQueryCandidateIntersectionType Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show RayQueryCandidateIntersectionType where
+  showsPrec p (RayQueryCandidateIntersectionType v) = case v of
+    0 -> showString "RayQueryCandidateIntersectionTriangleKHR"
+    1 -> showString "RayQueryCandidateIntersectionAABBKHR"
+    x -> showParen (p > 10) $ showString "RayQueryCandidateIntersectionType " . showsPrec (p + 1) x
+
+pattern RayQueryCandidateIntersectionTriangleKHR :: RayQueryCandidateIntersectionType
+pattern RayQueryCandidateIntersectionTriangleKHR = RayQueryCandidateIntersectionType 0
+
+pattern RayQueryCandidateIntersectionAABBKHR :: RayQueryCandidateIntersectionType
+pattern RayQueryCandidateIntersectionAABBKHR = RayQueryCandidateIntersectionType 1
diff --git a/src/Data/SpirV/Enum/RayQueryCommittedIntersectionType.hs b/src/Data/SpirV/Enum/RayQueryCommittedIntersectionType.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/RayQueryCommittedIntersectionType.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.RayQueryCommittedIntersectionType where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype RayQueryCommittedIntersectionType = RayQueryCommittedIntersectionType Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show RayQueryCommittedIntersectionType where
+  showsPrec p (RayQueryCommittedIntersectionType v) = case v of
+    0 -> showString "RayQueryCommittedIntersectionNoneKHR"
+    1 -> showString "RayQueryCommittedIntersectionTriangleKHR"
+    2 -> showString "RayQueryCommittedIntersectionGeneratedKHR"
+    x -> showParen (p > 10) $ showString "RayQueryCommittedIntersectionType " . showsPrec (p + 1) x
+
+pattern RayQueryCommittedIntersectionNoneKHR :: RayQueryCommittedIntersectionType
+pattern RayQueryCommittedIntersectionNoneKHR = RayQueryCommittedIntersectionType 0
+
+pattern RayQueryCommittedIntersectionTriangleKHR :: RayQueryCommittedIntersectionType
+pattern RayQueryCommittedIntersectionTriangleKHR = RayQueryCommittedIntersectionType 1
+
+pattern RayQueryCommittedIntersectionGeneratedKHR :: RayQueryCommittedIntersectionType
+pattern RayQueryCommittedIntersectionGeneratedKHR = RayQueryCommittedIntersectionType 2
diff --git a/src/Data/SpirV/Enum/RayQueryIntersection.hs b/src/Data/SpirV/Enum/RayQueryIntersection.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/RayQueryIntersection.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.RayQueryIntersection where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype RayQueryIntersection = RayQueryIntersection Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show RayQueryIntersection where
+  showsPrec p (RayQueryIntersection v) = case v of
+    0 -> showString "RayQueryCandidateIntersectionKHR"
+    1 -> showString "RayQueryCommittedIntersectionKHR"
+    x -> showParen (p > 10) $ showString "RayQueryIntersection " . showsPrec (p + 1) x
+
+pattern RayQueryCandidateIntersectionKHR :: RayQueryIntersection
+pattern RayQueryCandidateIntersectionKHR = RayQueryIntersection 0
+
+pattern RayQueryCommittedIntersectionKHR :: RayQueryIntersection
+pattern RayQueryCommittedIntersectionKHR = RayQueryIntersection 1
diff --git a/src/Data/SpirV/Enum/SamplerAddressingMode.hs b/src/Data/SpirV/Enum/SamplerAddressingMode.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/SamplerAddressingMode.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.SamplerAddressingMode where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype SamplerAddressingMode = SamplerAddressingMode Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show SamplerAddressingMode where
+  showsPrec p (SamplerAddressingMode v) = case v of
+    0 -> showString "None"
+    1 -> showString "ClampToEdge"
+    2 -> showString "Clamp"
+    3 -> showString "Repeat"
+    4 -> showString "RepeatMirrored"
+    x -> showParen (p > 10) $ showString "SamplerAddressingMode " . showsPrec (p + 1) x
+
+pattern None :: SamplerAddressingMode
+pattern None = SamplerAddressingMode 0
+
+pattern ClampToEdge :: SamplerAddressingMode
+pattern ClampToEdge = SamplerAddressingMode 1
+
+pattern Clamp :: SamplerAddressingMode
+pattern Clamp = SamplerAddressingMode 2
+
+pattern Repeat :: SamplerAddressingMode
+pattern Repeat = SamplerAddressingMode 3
+
+pattern RepeatMirrored :: SamplerAddressingMode
+pattern RepeatMirrored = SamplerAddressingMode 4
diff --git a/src/Data/SpirV/Enum/SamplerFilterMode.hs b/src/Data/SpirV/Enum/SamplerFilterMode.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/SamplerFilterMode.hs
@@ -0,0 +1,24 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.SamplerFilterMode where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype SamplerFilterMode = SamplerFilterMode Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show SamplerFilterMode where
+  showsPrec p (SamplerFilterMode v) = case v of
+    0 -> showString "Nearest"
+    1 -> showString "Linear"
+    x -> showParen (p > 10) $ showString "SamplerFilterMode " . showsPrec (p + 1) x
+
+pattern Nearest :: SamplerFilterMode
+pattern Nearest = SamplerFilterMode 0
+
+pattern Linear :: SamplerFilterMode
+pattern Linear = SamplerFilterMode 1
diff --git a/src/Data/SpirV/Enum/Scope.hs b/src/Data/SpirV/Enum/Scope.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/Scope.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.Scope where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype Scope = Scope Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show Scope where
+  showsPrec p (Scope v) = case v of
+    0 -> showString "CrossDevice"
+    1 -> showString "Device"
+    2 -> showString "Workgroup"
+    3 -> showString "Subgroup"
+    4 -> showString "Invocation"
+    5 -> showString "QueueFamily"
+    6 -> showString "ShaderCallKHR"
+    x -> showParen (p > 10) $ showString "Scope " . showsPrec (p + 1) x
+
+pattern CrossDevice :: Scope
+pattern CrossDevice = Scope 0
+
+pattern Device :: Scope
+pattern Device = Scope 1
+
+pattern Workgroup :: Scope
+pattern Workgroup = Scope 2
+
+pattern Subgroup :: Scope
+pattern Subgroup = Scope 3
+
+pattern Invocation :: Scope
+pattern Invocation = Scope 4
+
+pattern QueueFamily :: Scope
+pattern QueueFamily = Scope 5
+
+pattern QueueFamilyKHR :: Scope
+pattern QueueFamilyKHR = Scope 5
+
+pattern ShaderCallKHR :: Scope
+pattern ShaderCallKHR = Scope 6
diff --git a/src/Data/SpirV/Enum/SelectionControl.hs b/src/Data/SpirV/Enum/SelectionControl.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/SelectionControl.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.SelectionControl where
+
+import Data.Bits (Bits, FiniteBits, (.|.))
+import Data.Word (Word32)
+import Foreign.Storable (Storable)
+
+type SelectionControl = SelectionControlBits
+
+newtype SelectionControlBits = SelectionControlBits Word32
+  deriving newtype (Eq, Ord, Storable, Bits, FiniteBits)
+
+instance Semigroup SelectionControl where
+  (SelectionControlBits a) <> (SelectionControlBits b) = SelectionControlBits (a .|. b)
+
+instance Monoid SelectionControl where
+  mempty = SelectionControlBits 0
+
+pattern Flatten :: SelectionControlBits
+pattern Flatten = SelectionControlBits 0x00000001
+
+pattern DontFlatten :: SelectionControlBits
+pattern DontFlatten = SelectionControlBits 0x00000002
diff --git a/src/Data/SpirV/Enum/SourceLanguage.hs b/src/Data/SpirV/Enum/SourceLanguage.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/SourceLanguage.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.SourceLanguage where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype SourceLanguage = SourceLanguage Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show SourceLanguage where
+  showsPrec p (SourceLanguage v) = case v of
+    0 -> showString "Unknown"
+    1 -> showString "ESSL"
+    2 -> showString "GLSL"
+    3 -> showString "OpenCL_C"
+    4 -> showString "OpenCL_CPP"
+    5 -> showString "HLSL"
+    6 -> showString "CPP_for_OpenCL"
+    7 -> showString "SYCL"
+    8 -> showString "HERO_C"
+    9 -> showString "NZSL"
+    10 -> showString "WGSL"
+    11 -> showString "Slang"
+    12 -> showString "Zig"
+    x -> showParen (p > 10) $ showString "SourceLanguage " . showsPrec (p + 1) x
+
+pattern Unknown :: SourceLanguage
+pattern Unknown = SourceLanguage 0
+
+pattern ESSL :: SourceLanguage
+pattern ESSL = SourceLanguage 1
+
+pattern GLSL :: SourceLanguage
+pattern GLSL = SourceLanguage 2
+
+pattern OpenCL_C :: SourceLanguage
+pattern OpenCL_C = SourceLanguage 3
+
+pattern OpenCL_CPP :: SourceLanguage
+pattern OpenCL_CPP = SourceLanguage 4
+
+pattern HLSL :: SourceLanguage
+pattern HLSL = SourceLanguage 5
+
+pattern CPP_for_OpenCL :: SourceLanguage
+pattern CPP_for_OpenCL = SourceLanguage 6
+
+pattern SYCL :: SourceLanguage
+pattern SYCL = SourceLanguage 7
+
+pattern HERO_C :: SourceLanguage
+pattern HERO_C = SourceLanguage 8
+
+pattern NZSL :: SourceLanguage
+pattern NZSL = SourceLanguage 9
+
+pattern WGSL :: SourceLanguage
+pattern WGSL = SourceLanguage 10
+
+pattern Slang :: SourceLanguage
+pattern Slang = SourceLanguage 11
+
+pattern Zig :: SourceLanguage
+pattern Zig = SourceLanguage 12
diff --git a/src/Data/SpirV/Enum/StorageClass.hs b/src/Data/SpirV/Enum/StorageClass.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/StorageClass.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.StorageClass where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype StorageClass = StorageClass Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show StorageClass where
+  showsPrec p (StorageClass v) = case v of
+    0 -> showString "UniformConstant"
+    1 -> showString "Input"
+    2 -> showString "Uniform"
+    3 -> showString "Output"
+    4 -> showString "Workgroup"
+    5 -> showString "CrossWorkgroup"
+    6 -> showString "Private"
+    7 -> showString "Function"
+    8 -> showString "Generic"
+    9 -> showString "PushConstant"
+    10 -> showString "AtomicCounter"
+    11 -> showString "Image"
+    12 -> showString "StorageBuffer"
+    4172 -> showString "TileImageEXT"
+    5068 -> showString "NodePayloadAMDX"
+    5076 -> showString "NodeOutputPayloadAMDX"
+    5328 -> showString "CallableDataKHR"
+    5329 -> showString "IncomingCallableDataKHR"
+    5338 -> showString "RayPayloadKHR"
+    5339 -> showString "HitAttributeKHR"
+    5342 -> showString "IncomingRayPayloadKHR"
+    5343 -> showString "ShaderRecordBufferKHR"
+    5349 -> showString "PhysicalStorageBuffer"
+    5385 -> showString "HitObjectAttributeNV"
+    5402 -> showString "TaskPayloadWorkgroupEXT"
+    5605 -> showString "CodeSectionINTEL"
+    5936 -> showString "DeviceOnlyINTEL"
+    5937 -> showString "HostOnlyINTEL"
+    x -> showParen (p > 10) $ showString "StorageClass " . showsPrec (p + 1) x
+
+pattern UniformConstant :: StorageClass
+pattern UniformConstant = StorageClass 0
+
+pattern Input :: StorageClass
+pattern Input = StorageClass 1
+
+pattern Uniform :: StorageClass
+pattern Uniform = StorageClass 2
+
+pattern Output :: StorageClass
+pattern Output = StorageClass 3
+
+pattern Workgroup :: StorageClass
+pattern Workgroup = StorageClass 4
+
+pattern CrossWorkgroup :: StorageClass
+pattern CrossWorkgroup = StorageClass 5
+
+pattern Private :: StorageClass
+pattern Private = StorageClass 6
+
+pattern Function :: StorageClass
+pattern Function = StorageClass 7
+
+pattern Generic :: StorageClass
+pattern Generic = StorageClass 8
+
+pattern PushConstant :: StorageClass
+pattern PushConstant = StorageClass 9
+
+pattern AtomicCounter :: StorageClass
+pattern AtomicCounter = StorageClass 10
+
+pattern Image :: StorageClass
+pattern Image = StorageClass 11
+
+pattern StorageBuffer :: StorageClass
+pattern StorageBuffer = StorageClass 12
+
+pattern TileImageEXT :: StorageClass
+pattern TileImageEXT = StorageClass 4172
+
+pattern NodePayloadAMDX :: StorageClass
+pattern NodePayloadAMDX = StorageClass 5068
+
+pattern NodeOutputPayloadAMDX :: StorageClass
+pattern NodeOutputPayloadAMDX = StorageClass 5076
+
+pattern CallableDataKHR :: StorageClass
+pattern CallableDataKHR = StorageClass 5328
+
+pattern CallableDataNV :: StorageClass
+pattern CallableDataNV = StorageClass 5328
+
+pattern IncomingCallableDataKHR :: StorageClass
+pattern IncomingCallableDataKHR = StorageClass 5329
+
+pattern IncomingCallableDataNV :: StorageClass
+pattern IncomingCallableDataNV = StorageClass 5329
+
+pattern RayPayloadKHR :: StorageClass
+pattern RayPayloadKHR = StorageClass 5338
+
+pattern RayPayloadNV :: StorageClass
+pattern RayPayloadNV = StorageClass 5338
+
+pattern HitAttributeKHR :: StorageClass
+pattern HitAttributeKHR = StorageClass 5339
+
+pattern HitAttributeNV :: StorageClass
+pattern HitAttributeNV = StorageClass 5339
+
+pattern IncomingRayPayloadKHR :: StorageClass
+pattern IncomingRayPayloadKHR = StorageClass 5342
+
+pattern IncomingRayPayloadNV :: StorageClass
+pattern IncomingRayPayloadNV = StorageClass 5342
+
+pattern ShaderRecordBufferKHR :: StorageClass
+pattern ShaderRecordBufferKHR = StorageClass 5343
+
+pattern ShaderRecordBufferNV :: StorageClass
+pattern ShaderRecordBufferNV = StorageClass 5343
+
+pattern PhysicalStorageBuffer :: StorageClass
+pattern PhysicalStorageBuffer = StorageClass 5349
+
+pattern PhysicalStorageBufferEXT :: StorageClass
+pattern PhysicalStorageBufferEXT = StorageClass 5349
+
+pattern HitObjectAttributeNV :: StorageClass
+pattern HitObjectAttributeNV = StorageClass 5385
+
+pattern TaskPayloadWorkgroupEXT :: StorageClass
+pattern TaskPayloadWorkgroupEXT = StorageClass 5402
+
+pattern CodeSectionINTEL :: StorageClass
+pattern CodeSectionINTEL = StorageClass 5605
+
+pattern DeviceOnlyINTEL :: StorageClass
+pattern DeviceOnlyINTEL = StorageClass 5936
+
+pattern HostOnlyINTEL :: StorageClass
+pattern HostOnlyINTEL = StorageClass 5937
diff --git a/src/Data/SpirV/Enum/StoreCacheControl.hs b/src/Data/SpirV/Enum/StoreCacheControl.hs
new file mode 100644
--- /dev/null
+++ b/src/Data/SpirV/Enum/StoreCacheControl.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE DerivingStrategies #-}
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE TypeSynonymInstances #-}
+
+module Data.SpirV.Enum.StoreCacheControl where
+
+import Data.Int (Int32)
+import Foreign.Storable (Storable)
+
+newtype StoreCacheControl = StoreCacheControl Int32
+  deriving newtype (Eq, Ord, Storable)
+
+instance Show StoreCacheControl where
+  showsPrec p (StoreCacheControl v) = case v of
+    0 -> showString "UncachedINTEL"
+    1 -> showString "WriteThroughINTEL"
+    2 -> showString "WriteBackINTEL"
+    3 -> showString "StreamingINTEL"
+    x -> showParen (p > 10) $ showString "StoreCacheControl " . showsPrec (p + 1) x
+
+pattern UncachedINTEL :: StoreCacheControl
+pattern UncachedINTEL = StoreCacheControl 0
+
+pattern WriteThroughINTEL :: StoreCacheControl
+pattern WriteThroughINTEL = StoreCacheControl 1
+
+pattern WriteBackINTEL :: StoreCacheControl
+pattern WriteBackINTEL = StoreCacheControl 2
+
+pattern StreamingINTEL :: StoreCacheControl
+pattern StreamingINTEL = StoreCacheControl 3
