packages feed

spirv-reflect-ffi 0.3 → 0.4

raw patch · 6 files changed

+10445/−5066 lines, 6 filesdep ~basedep ~spirv-enumdep ~spirv-reflect-typesPVP ok

version bump matches the API change (PVP)

Dependency ranges changed: base, spirv-enum, spirv-reflect-types

API changes (from Hackage documentation)

+ Data.SpirV.Reflect.FFI.Internal: inflateBlockVariableCached :: IORef [(BlockVariablePtr, Maybe BlockVariable)] -> BlockVariablePtr -> IO BlockVariable
+ Data.SpirV.Reflect.FFI.Internal: inflateTypeDescriptionCached :: IORef [(TypeDescriptionPtr, Maybe TypeDescription)] -> TypeDescriptionPtr -> IO TypeDescription
- Data.SpirV.Reflect.FFI: data () => Module
+ Data.SpirV.Reflect.FFI: data Module
- Data.SpirV.Reflect.FFI.Internal: inflateFlags32 :: forall a b. (Integral a, Coercible Word32 b) => IO a -> IO b
+ Data.SpirV.Reflect.FFI.Internal: inflateFlags32 :: (Integral a, Coercible Word32 b) => IO a -> IO b
- Data.SpirV.Reflect.FFI.Internal: type ArrayTraitsPtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type ArrayTraitsPtr = Ptr ()
- Data.SpirV.Reflect.FFI.Internal: type BlockVariablePtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type BlockVariablePtr = Ptr ()
- Data.SpirV.Reflect.FFI.Internal: type DescriptorBindingPtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type DescriptorBindingPtr = Ptr ()
- Data.SpirV.Reflect.FFI.Internal: type DescriptorSetPtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type DescriptorSetPtr = Ptr ()
- Data.SpirV.Reflect.FFI.Internal: type ImageTraitsPtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type ImageTraitsPtr = Ptr ()
- Data.SpirV.Reflect.FFI.Internal: type InterfaceVariablePtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type InterfaceVariablePtr = Ptr ()
- Data.SpirV.Reflect.FFI.Internal: type NumericTraitsPtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type NumericTraitsPtr = Ptr ()
- Data.SpirV.Reflect.FFI.Internal: type ShaderModulePtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type ShaderModulePtr = Ptr ()
- Data.SpirV.Reflect.FFI.Internal: type TypeDescriptionPtr = Ptr (())
+ Data.SpirV.Reflect.FFI.Internal: type TypeDescriptionPtr = Ptr ()

Files

ChangeLog.md view
@@ -1,5 +1,17 @@ # Changelog for spirv-reflect-ffi +## [0.4] - 2026-06-23++* **Breaking:** minimum GHC raised to 9.2 (`base >= 4.16`).+* Updated cbits to `vulkan-sdk-1.4.350`.+* Updates for `spirv-reflect-types-0.4`.+* Load specialization constant `default_value` and `type_description`.+* Break cycles when inflating recursive `TypeDescription`/`BlockVariable`+  (`buffer_reference`/`PhysicalStorageBuffer`), which previously failed to terminate.+* Fix interface variable `built_in` sentinel (`0xFFFFFFFF` now decodes to `Nothing`).++[0.4]: https://gitlab.com/dpwiz/spirv-reflect/-/tree/v0.4-ffi+ ## [0.3] - 2024-09-30  * Update cbits to `vulkan-sdk-1.3.290`.
cbits/include/spirv/unified1/spirv.h view
@@ -1,4890 +1,10072 @@ /*-** Copyright (c) 2014-2020 The Khronos Group Inc.-**-** Permission is hereby granted, free of charge, to any person obtaining a copy-** of this software and/or associated documentation files (the "Materials"),-** to deal in the Materials without restriction, including without limitation-** the rights to use, copy, modify, merge, publish, distribute, sublicense,-** and/or sell copies of the Materials, and to permit persons to whom the-** Materials are furnished to do so, subject to the following conditions:-**-** The above copyright notice and this permission notice shall be included in-** all copies or substantial portions of the Materials.-**-** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS-** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND-** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/-**-** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS-** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,-** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL-** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER-** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING-** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS-** IN THE MATERIALS.-*/--/*-** This header is automatically generated by the same tool that creates-** the Binary Section of the SPIR-V specification.-*/--/*-** Enumeration tokens for SPIR-V, in various styles:-**   C, C++, C++11, JSON, Lua, Python, C#, D, Beef-**-** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL-** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL-** - C++11 will use enum classes in the spv namespace, e.g.:-*spv::SourceLanguage::GLSL-** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL-** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']-** - C# will use enum classes in the Specification class located in the "Spv"-*namespace,-**     e.g.: Spv.Specification.SourceLanguage.GLSL-** - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL-** - Beef will use enum classes in the Specification class located in the "Spv"-*namespace,-**     e.g.: Spv.Specification.SourceLanguage.GLSL-**-** Some tokens act like mask values, which can be OR'd together,-** while others are mutually exclusive.  The mask-like ones have-** "Mask" in their name, and a parallel enum that has the shift-** amount (1 << x) for each corresponding enumerant.-*/--#ifndef spirv_H-#define spirv_H--typedef unsigned int SpvId;--#define SPV_VERSION 0x10600-#define SPV_REVISION 1--static const unsigned int SpvMagicNumber = 0x07230203;-static const unsigned int SpvVersion = 0x00010600;-static const unsigned int SpvRevision = 1;-static const unsigned int SpvOpCodeMask = 0xffff;-static const unsigned int SpvWordCountShift = 16;--typedef enum SpvSourceLanguage_ {-  SpvSourceLanguageUnknown = 0,-  SpvSourceLanguageESSL = 1,-  SpvSourceLanguageGLSL = 2,-  SpvSourceLanguageOpenCL_C = 3,-  SpvSourceLanguageOpenCL_CPP = 4,-  SpvSourceLanguageHLSL = 5,-  SpvSourceLanguageCPP_for_OpenCL = 6,-  SpvSourceLanguageSYCL = 7,-  SpvSourceLanguageHERO_C = 8,-  SpvSourceLanguageNZSL = 9,-  SpvSourceLanguageMax = 0x7fffffff,-} SpvSourceLanguage;--typedef enum SpvExecutionModel_ {-  SpvExecutionModelVertex = 0,-  SpvExecutionModelTessellationControl = 1,-  SpvExecutionModelTessellationEvaluation = 2,-  SpvExecutionModelGeometry = 3,-  SpvExecutionModelFragment = 4,-  SpvExecutionModelGLCompute = 5,-  SpvExecutionModelKernel = 6,-  SpvExecutionModelTaskNV = 5267,-  SpvExecutionModelMeshNV = 5268,-  SpvExecutionModelRayGenerationKHR = 5313,-  SpvExecutionModelRayGenerationNV = 5313,-  SpvExecutionModelIntersectionKHR = 5314,-  SpvExecutionModelIntersectionNV = 5314,-  SpvExecutionModelAnyHitKHR = 5315,-  SpvExecutionModelAnyHitNV = 5315,-  SpvExecutionModelClosestHitKHR = 5316,-  SpvExecutionModelClosestHitNV = 5316,-  SpvExecutionModelMissKHR = 5317,-  SpvExecutionModelMissNV = 5317,-  SpvExecutionModelCallableKHR = 5318,-  SpvExecutionModelCallableNV = 5318,-  SpvExecutionModelTaskEXT = 5364,-  SpvExecutionModelMeshEXT = 5365,-  SpvExecutionModelMax = 0x7fffffff,-} SpvExecutionModel;--typedef enum SpvAddressingModel_ {-  SpvAddressingModelLogical = 0,-  SpvAddressingModelPhysical32 = 1,-  SpvAddressingModelPhysical64 = 2,-  SpvAddressingModelPhysicalStorageBuffer64 = 5348,-  SpvAddressingModelPhysicalStorageBuffer64EXT = 5348,-  SpvAddressingModelMax = 0x7fffffff,-} SpvAddressingModel;--typedef enum SpvMemoryModel_ {-  SpvMemoryModelSimple = 0,-  SpvMemoryModelGLSL450 = 1,-  SpvMemoryModelOpenCL = 2,-  SpvMemoryModelVulkan = 3,-  SpvMemoryModelVulkanKHR = 3,-  SpvMemoryModelMax = 0x7fffffff,-} SpvMemoryModel;--typedef enum SpvExecutionMode_ {-  SpvExecutionModeInvocations = 0,-  SpvExecutionModeSpacingEqual = 1,-  SpvExecutionModeSpacingFractionalEven = 2,-  SpvExecutionModeSpacingFractionalOdd = 3,-  SpvExecutionModeVertexOrderCw = 4,-  SpvExecutionModeVertexOrderCcw = 5,-  SpvExecutionModePixelCenterInteger = 6,-  SpvExecutionModeOriginUpperLeft = 7,-  SpvExecutionModeOriginLowerLeft = 8,-  SpvExecutionModeEarlyFragmentTests = 9,-  SpvExecutionModePointMode = 10,-  SpvExecutionModeXfb = 11,-  SpvExecutionModeDepthReplacing = 12,-  SpvExecutionModeDepthGreater = 14,-  SpvExecutionModeDepthLess = 15,-  SpvExecutionModeDepthUnchanged = 16,-  SpvExecutionModeLocalSize = 17,-  SpvExecutionModeLocalSizeHint = 18,-  SpvExecutionModeInputPoints = 19,-  SpvExecutionModeInputLines = 20,-  SpvExecutionModeInputLinesAdjacency = 21,-  SpvExecutionModeTriangles = 22,-  SpvExecutionModeInputTrianglesAdjacency = 23,-  SpvExecutionModeQuads = 24,-  SpvExecutionModeIsolines = 25,-  SpvExecutionModeOutputVertices = 26,-  SpvExecutionModeOutputPoints = 27,-  SpvExecutionModeOutputLineStrip = 28,-  SpvExecutionModeOutputTriangleStrip = 29,-  SpvExecutionModeVecTypeHint = 30,-  SpvExecutionModeContractionOff = 31,-  SpvExecutionModeInitializer = 33,-  SpvExecutionModeFinalizer = 34,-  SpvExecutionModeSubgroupSize = 35,-  SpvExecutionModeSubgroupsPerWorkgroup = 36,-  SpvExecutionModeSubgroupsPerWorkgroupId = 37,-  SpvExecutionModeLocalSizeId = 38,-  SpvExecutionModeLocalSizeHintId = 39,-  SpvExecutionModeNonCoherentColorAttachmentReadEXT = 4169,-  SpvExecutionModeNonCoherentDepthAttachmentReadEXT = 4170,-  SpvExecutionModeNonCoherentStencilAttachmentReadEXT = 4171,-  SpvExecutionModeSubgroupUniformControlFlowKHR = 4421,-  SpvExecutionModePostDepthCoverage = 4446,-  SpvExecutionModeDenormPreserve = 4459,-  SpvExecutionModeDenormFlushToZero = 4460,-  SpvExecutionModeSignedZeroInfNanPreserve = 4461,-  SpvExecutionModeRoundingModeRTE = 4462,-  SpvExecutionModeRoundingModeRTZ = 4463,-  SpvExecutionModeEarlyAndLateFragmentTestsAMD = 5017,-  SpvExecutionModeStencilRefReplacingEXT = 5027,-  SpvExecutionModeStencilRefUnchangedFrontAMD = 5079,-  SpvExecutionModeStencilRefGreaterFrontAMD = 5080,-  SpvExecutionModeStencilRefLessFrontAMD = 5081,-  SpvExecutionModeStencilRefUnchangedBackAMD = 5082,-  SpvExecutionModeStencilRefGreaterBackAMD = 5083,-  SpvExecutionModeStencilRefLessBackAMD = 5084,-  SpvExecutionModeOutputLinesEXT = 5269,-  SpvExecutionModeOutputLinesNV = 5269,-  SpvExecutionModeOutputPrimitivesEXT = 5270,-  SpvExecutionModeOutputPrimitivesNV = 5270,-  SpvExecutionModeDerivativeGroupQuadsNV = 5289,-  SpvExecutionModeDerivativeGroupLinearNV = 5290,-  SpvExecutionModeOutputTrianglesEXT = 5298,-  SpvExecutionModeOutputTrianglesNV = 5298,-  SpvExecutionModePixelInterlockOrderedEXT = 5366,-  SpvExecutionModePixelInterlockUnorderedEXT = 5367,-  SpvExecutionModeSampleInterlockOrderedEXT = 5368,-  SpvExecutionModeSampleInterlockUnorderedEXT = 5369,-  SpvExecutionModeShadingRateInterlockOrderedEXT = 5370,-  SpvExecutionModeShadingRateInterlockUnorderedEXT = 5371,-  SpvExecutionModeSharedLocalMemorySizeINTEL = 5618,-  SpvExecutionModeRoundingModeRTPINTEL = 5620,-  SpvExecutionModeRoundingModeRTNINTEL = 5621,-  SpvExecutionModeFloatingPointModeALTINTEL = 5622,-  SpvExecutionModeFloatingPointModeIEEEINTEL = 5623,-  SpvExecutionModeMaxWorkgroupSizeINTEL = 5893,-  SpvExecutionModeMaxWorkDimINTEL = 5894,-  SpvExecutionModeNoGlobalOffsetINTEL = 5895,-  SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,-  SpvExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,-  SpvExecutionModeStreamingInterfaceINTEL = 6154,-  SpvExecutionModeRegisterMapInterfaceINTEL = 6160,-  SpvExecutionModeNamedBarrierCountINTEL = 6417,-  SpvExecutionModeMax = 0x7fffffff,-} SpvExecutionMode;--typedef enum SpvStorageClass_ {-  SpvStorageClassUniformConstant = 0,-  SpvStorageClassInput = 1,-  SpvStorageClassUniform = 2,-  SpvStorageClassOutput = 3,-  SpvStorageClassWorkgroup = 4,-  SpvStorageClassCrossWorkgroup = 5,-  SpvStorageClassPrivate = 6,-  SpvStorageClassFunction = 7,-  SpvStorageClassGeneric = 8,-  SpvStorageClassPushConstant = 9,-  SpvStorageClassAtomicCounter = 10,-  SpvStorageClassImage = 11,-  SpvStorageClassStorageBuffer = 12,-  SpvStorageClassTileImageEXT = 4172,-  SpvStorageClassCallableDataKHR = 5328,-  SpvStorageClassCallableDataNV = 5328,-  SpvStorageClassIncomingCallableDataKHR = 5329,-  SpvStorageClassIncomingCallableDataNV = 5329,-  SpvStorageClassRayPayloadKHR = 5338,-  SpvStorageClassRayPayloadNV = 5338,-  SpvStorageClassHitAttributeKHR = 5339,-  SpvStorageClassHitAttributeNV = 5339,-  SpvStorageClassIncomingRayPayloadKHR = 5342,-  SpvStorageClassIncomingRayPayloadNV = 5342,-  SpvStorageClassShaderRecordBufferKHR = 5343,-  SpvStorageClassShaderRecordBufferNV = 5343,-  SpvStorageClassPhysicalStorageBuffer = 5349,-  SpvStorageClassPhysicalStorageBufferEXT = 5349,-  SpvStorageClassHitObjectAttributeNV = 5385,-  SpvStorageClassTaskPayloadWorkgroupEXT = 5402,-  SpvStorageClassCodeSectionINTEL = 5605,-  SpvStorageClassDeviceOnlyINTEL = 5936,-  SpvStorageClassHostOnlyINTEL = 5937,-  SpvStorageClassMax = 0x7fffffff,-} SpvStorageClass;--typedef enum SpvDim_ {-  SpvDim1D = 0,-  SpvDim2D = 1,-  SpvDim3D = 2,-  SpvDimCube = 3,-  SpvDimRect = 4,-  SpvDimBuffer = 5,-  SpvDimSubpassData = 6,-  SpvDimTileImageDataEXT = 4173,-  SpvDimMax = 0x7fffffff,-} SpvDim;--typedef enum SpvSamplerAddressingMode_ {-  SpvSamplerAddressingModeNone = 0,-  SpvSamplerAddressingModeClampToEdge = 1,-  SpvSamplerAddressingModeClamp = 2,-  SpvSamplerAddressingModeRepeat = 3,-  SpvSamplerAddressingModeRepeatMirrored = 4,-  SpvSamplerAddressingModeMax = 0x7fffffff,-} SpvSamplerAddressingMode;--typedef enum SpvSamplerFilterMode_ {-  SpvSamplerFilterModeNearest = 0,-  SpvSamplerFilterModeLinear = 1,-  SpvSamplerFilterModeMax = 0x7fffffff,-} SpvSamplerFilterMode;--typedef enum SpvImageFormat_ {-  SpvImageFormatUnknown = 0,-  SpvImageFormatRgba32f = 1,-  SpvImageFormatRgba16f = 2,-  SpvImageFormatR32f = 3,-  SpvImageFormatRgba8 = 4,-  SpvImageFormatRgba8Snorm = 5,-  SpvImageFormatRg32f = 6,-  SpvImageFormatRg16f = 7,-  SpvImageFormatR11fG11fB10f = 8,-  SpvImageFormatR16f = 9,-  SpvImageFormatRgba16 = 10,-  SpvImageFormatRgb10A2 = 11,-  SpvImageFormatRg16 = 12,-  SpvImageFormatRg8 = 13,-  SpvImageFormatR16 = 14,-  SpvImageFormatR8 = 15,-  SpvImageFormatRgba16Snorm = 16,-  SpvImageFormatRg16Snorm = 17,-  SpvImageFormatRg8Snorm = 18,-  SpvImageFormatR16Snorm = 19,-  SpvImageFormatR8Snorm = 20,-  SpvImageFormatRgba32i = 21,-  SpvImageFormatRgba16i = 22,-  SpvImageFormatRgba8i = 23,-  SpvImageFormatR32i = 24,-  SpvImageFormatRg32i = 25,-  SpvImageFormatRg16i = 26,-  SpvImageFormatRg8i = 27,-  SpvImageFormatR16i = 28,-  SpvImageFormatR8i = 29,-  SpvImageFormatRgba32ui = 30,-  SpvImageFormatRgba16ui = 31,-  SpvImageFormatRgba8ui = 32,-  SpvImageFormatR32ui = 33,-  SpvImageFormatRgb10a2ui = 34,-  SpvImageFormatRg32ui = 35,-  SpvImageFormatRg16ui = 36,-  SpvImageFormatRg8ui = 37,-  SpvImageFormatR16ui = 38,-  SpvImageFormatR8ui = 39,-  SpvImageFormatR64ui = 40,-  SpvImageFormatR64i = 41,-  SpvImageFormatMax = 0x7fffffff,-} SpvImageFormat;--typedef enum SpvImageChannelOrder_ {-  SpvImageChannelOrderR = 0,-  SpvImageChannelOrderA = 1,-  SpvImageChannelOrderRG = 2,-  SpvImageChannelOrderRA = 3,-  SpvImageChannelOrderRGB = 4,-  SpvImageChannelOrderRGBA = 5,-  SpvImageChannelOrderBGRA = 6,-  SpvImageChannelOrderARGB = 7,-  SpvImageChannelOrderIntensity = 8,-  SpvImageChannelOrderLuminance = 9,-  SpvImageChannelOrderRx = 10,-  SpvImageChannelOrderRGx = 11,-  SpvImageChannelOrderRGBx = 12,-  SpvImageChannelOrderDepth = 13,-  SpvImageChannelOrderDepthStencil = 14,-  SpvImageChannelOrdersRGB = 15,-  SpvImageChannelOrdersRGBx = 16,-  SpvImageChannelOrdersRGBA = 17,-  SpvImageChannelOrdersBGRA = 18,-  SpvImageChannelOrderABGR = 19,-  SpvImageChannelOrderMax = 0x7fffffff,-} SpvImageChannelOrder;--typedef enum SpvImageChannelDataType_ {-  SpvImageChannelDataTypeSnormInt8 = 0,-  SpvImageChannelDataTypeSnormInt16 = 1,-  SpvImageChannelDataTypeUnormInt8 = 2,-  SpvImageChannelDataTypeUnormInt16 = 3,-  SpvImageChannelDataTypeUnormShort565 = 4,-  SpvImageChannelDataTypeUnormShort555 = 5,-  SpvImageChannelDataTypeUnormInt101010 = 6,-  SpvImageChannelDataTypeSignedInt8 = 7,-  SpvImageChannelDataTypeSignedInt16 = 8,-  SpvImageChannelDataTypeSignedInt32 = 9,-  SpvImageChannelDataTypeUnsignedInt8 = 10,-  SpvImageChannelDataTypeUnsignedInt16 = 11,-  SpvImageChannelDataTypeUnsignedInt32 = 12,-  SpvImageChannelDataTypeHalfFloat = 13,-  SpvImageChannelDataTypeFloat = 14,-  SpvImageChannelDataTypeUnormInt24 = 15,-  SpvImageChannelDataTypeUnormInt101010_2 = 16,-  SpvImageChannelDataTypeUnsignedIntRaw10EXT = 19,-  SpvImageChannelDataTypeUnsignedIntRaw12EXT = 20,-  SpvImageChannelDataTypeMax = 0x7fffffff,-} SpvImageChannelDataType;--typedef enum SpvImageOperandsShift_ {-  SpvImageOperandsBiasShift = 0,-  SpvImageOperandsLodShift = 1,-  SpvImageOperandsGradShift = 2,-  SpvImageOperandsConstOffsetShift = 3,-  SpvImageOperandsOffsetShift = 4,-  SpvImageOperandsConstOffsetsShift = 5,-  SpvImageOperandsSampleShift = 6,-  SpvImageOperandsMinLodShift = 7,-  SpvImageOperandsMakeTexelAvailableShift = 8,-  SpvImageOperandsMakeTexelAvailableKHRShift = 8,-  SpvImageOperandsMakeTexelVisibleShift = 9,-  SpvImageOperandsMakeTexelVisibleKHRShift = 9,-  SpvImageOperandsNonPrivateTexelShift = 10,-  SpvImageOperandsNonPrivateTexelKHRShift = 10,-  SpvImageOperandsVolatileTexelShift = 11,-  SpvImageOperandsVolatileTexelKHRShift = 11,-  SpvImageOperandsSignExtendShift = 12,-  SpvImageOperandsZeroExtendShift = 13,-  SpvImageOperandsNontemporalShift = 14,-  SpvImageOperandsOffsetsShift = 16,-  SpvImageOperandsMax = 0x7fffffff,-} SpvImageOperandsShift;--typedef enum SpvImageOperandsMask_ {-  SpvImageOperandsMaskNone = 0,-  SpvImageOperandsBiasMask = 0x00000001,-  SpvImageOperandsLodMask = 0x00000002,-  SpvImageOperandsGradMask = 0x00000004,-  SpvImageOperandsConstOffsetMask = 0x00000008,-  SpvImageOperandsOffsetMask = 0x00000010,-  SpvImageOperandsConstOffsetsMask = 0x00000020,-  SpvImageOperandsSampleMask = 0x00000040,-  SpvImageOperandsMinLodMask = 0x00000080,-  SpvImageOperandsMakeTexelAvailableMask = 0x00000100,-  SpvImageOperandsMakeTexelAvailableKHRMask = 0x00000100,-  SpvImageOperandsMakeTexelVisibleMask = 0x00000200,-  SpvImageOperandsMakeTexelVisibleKHRMask = 0x00000200,-  SpvImageOperandsNonPrivateTexelMask = 0x00000400,-  SpvImageOperandsNonPrivateTexelKHRMask = 0x00000400,-  SpvImageOperandsVolatileTexelMask = 0x00000800,-  SpvImageOperandsVolatileTexelKHRMask = 0x00000800,-  SpvImageOperandsSignExtendMask = 0x00001000,-  SpvImageOperandsZeroExtendMask = 0x00002000,-  SpvImageOperandsNontemporalMask = 0x00004000,-  SpvImageOperandsOffsetsMask = 0x00010000,-} SpvImageOperandsMask;--typedef enum SpvFPFastMathModeShift_ {-  SpvFPFastMathModeNotNaNShift = 0,-  SpvFPFastMathModeNotInfShift = 1,-  SpvFPFastMathModeNSZShift = 2,-  SpvFPFastMathModeAllowRecipShift = 3,-  SpvFPFastMathModeFastShift = 4,-  SpvFPFastMathModeAllowContractFastINTELShift = 16,-  SpvFPFastMathModeAllowReassocINTELShift = 17,-  SpvFPFastMathModeMax = 0x7fffffff,-} SpvFPFastMathModeShift;--typedef enum SpvFPFastMathModeMask_ {-  SpvFPFastMathModeMaskNone = 0,-  SpvFPFastMathModeNotNaNMask = 0x00000001,-  SpvFPFastMathModeNotInfMask = 0x00000002,-  SpvFPFastMathModeNSZMask = 0x00000004,-  SpvFPFastMathModeAllowRecipMask = 0x00000008,-  SpvFPFastMathModeFastMask = 0x00000010,-  SpvFPFastMathModeAllowContractFastINTELMask = 0x00010000,-  SpvFPFastMathModeAllowReassocINTELMask = 0x00020000,-} SpvFPFastMathModeMask;--typedef enum SpvFPRoundingMode_ {-  SpvFPRoundingModeRTE = 0,-  SpvFPRoundingModeRTZ = 1,-  SpvFPRoundingModeRTP = 2,-  SpvFPRoundingModeRTN = 3,-  SpvFPRoundingModeMax = 0x7fffffff,-} SpvFPRoundingMode;--typedef enum SpvLinkageType_ {-  SpvLinkageTypeExport = 0,-  SpvLinkageTypeImport = 1,-  SpvLinkageTypeLinkOnceODR = 2,-  SpvLinkageTypeMax = 0x7fffffff,-} SpvLinkageType;--typedef enum SpvAccessQualifier_ {-  SpvAccessQualifierReadOnly = 0,-  SpvAccessQualifierWriteOnly = 1,-  SpvAccessQualifierReadWrite = 2,-  SpvAccessQualifierMax = 0x7fffffff,-} SpvAccessQualifier;--typedef enum SpvFunctionParameterAttribute_ {-  SpvFunctionParameterAttributeZext = 0,-  SpvFunctionParameterAttributeSext = 1,-  SpvFunctionParameterAttributeByVal = 2,-  SpvFunctionParameterAttributeSret = 3,-  SpvFunctionParameterAttributeNoAlias = 4,-  SpvFunctionParameterAttributeNoCapture = 5,-  SpvFunctionParameterAttributeNoWrite = 6,-  SpvFunctionParameterAttributeNoReadWrite = 7,-  SpvFunctionParameterAttributeRuntimeAlignedINTEL = 5940,-  SpvFunctionParameterAttributeMax = 0x7fffffff,-} SpvFunctionParameterAttribute;--typedef enum SpvDecoration_ {-  SpvDecorationRelaxedPrecision = 0,-  SpvDecorationSpecId = 1,-  SpvDecorationBlock = 2,-  SpvDecorationBufferBlock = 3,-  SpvDecorationRowMajor = 4,-  SpvDecorationColMajor = 5,-  SpvDecorationArrayStride = 6,-  SpvDecorationMatrixStride = 7,-  SpvDecorationGLSLShared = 8,-  SpvDecorationGLSLPacked = 9,-  SpvDecorationCPacked = 10,-  SpvDecorationBuiltIn = 11,-  SpvDecorationNoPerspective = 13,-  SpvDecorationFlat = 14,-  SpvDecorationPatch = 15,-  SpvDecorationCentroid = 16,-  SpvDecorationSample = 17,-  SpvDecorationInvariant = 18,-  SpvDecorationRestrict = 19,-  SpvDecorationAliased = 20,-  SpvDecorationVolatile = 21,-  SpvDecorationConstant = 22,-  SpvDecorationCoherent = 23,-  SpvDecorationNonWritable = 24,-  SpvDecorationNonReadable = 25,-  SpvDecorationUniform = 26,-  SpvDecorationUniformId = 27,-  SpvDecorationSaturatedConversion = 28,-  SpvDecorationStream = 29,-  SpvDecorationLocation = 30,-  SpvDecorationComponent = 31,-  SpvDecorationIndex = 32,-  SpvDecorationBinding = 33,-  SpvDecorationDescriptorSet = 34,-  SpvDecorationOffset = 35,-  SpvDecorationXfbBuffer = 36,-  SpvDecorationXfbStride = 37,-  SpvDecorationFuncParamAttr = 38,-  SpvDecorationFPRoundingMode = 39,-  SpvDecorationFPFastMathMode = 40,-  SpvDecorationLinkageAttributes = 41,-  SpvDecorationNoContraction = 42,-  SpvDecorationInputAttachmentIndex = 43,-  SpvDecorationAlignment = 44,-  SpvDecorationMaxByteOffset = 45,-  SpvDecorationAlignmentId = 46,-  SpvDecorationMaxByteOffsetId = 47,-  SpvDecorationNoSignedWrap = 4469,-  SpvDecorationNoUnsignedWrap = 4470,-  SpvDecorationWeightTextureQCOM = 4487,-  SpvDecorationBlockMatchTextureQCOM = 4488,-  SpvDecorationExplicitInterpAMD = 4999,-  SpvDecorationOverrideCoverageNV = 5248,-  SpvDecorationPassthroughNV = 5250,-  SpvDecorationViewportRelativeNV = 5252,-  SpvDecorationSecondaryViewportRelativeNV = 5256,-  SpvDecorationPerPrimitiveEXT = 5271,-  SpvDecorationPerPrimitiveNV = 5271,-  SpvDecorationPerViewNV = 5272,-  SpvDecorationPerTaskNV = 5273,-  SpvDecorationPerVertexKHR = 5285,-  SpvDecorationPerVertexNV = 5285,-  SpvDecorationNonUniform = 5300,-  SpvDecorationNonUniformEXT = 5300,-  SpvDecorationRestrictPointer = 5355,-  SpvDecorationRestrictPointerEXT = 5355,-  SpvDecorationAliasedPointer = 5356,-  SpvDecorationAliasedPointerEXT = 5356,-  SpvDecorationHitObjectShaderRecordBufferNV = 5386,-  SpvDecorationBindlessSamplerNV = 5398,-  SpvDecorationBindlessImageNV = 5399,-  SpvDecorationBoundSamplerNV = 5400,-  SpvDecorationBoundImageNV = 5401,-  SpvDecorationSIMTCallINTEL = 5599,-  SpvDecorationReferencedIndirectlyINTEL = 5602,-  SpvDecorationClobberINTEL = 5607,-  SpvDecorationSideEffectsINTEL = 5608,-  SpvDecorationVectorComputeVariableINTEL = 5624,-  SpvDecorationFuncParamIOKindINTEL = 5625,-  SpvDecorationVectorComputeFunctionINTEL = 5626,-  SpvDecorationStackCallINTEL = 5627,-  SpvDecorationGlobalVariableOffsetINTEL = 5628,-  SpvDecorationCounterBuffer = 5634,-  SpvDecorationHlslCounterBufferGOOGLE = 5634,-  SpvDecorationHlslSemanticGOOGLE = 5635,-  SpvDecorationUserSemantic = 5635,-  SpvDecorationUserTypeGOOGLE = 5636,-  SpvDecorationFunctionRoundingModeINTEL = 5822,-  SpvDecorationFunctionDenormModeINTEL = 5823,-  SpvDecorationRegisterINTEL = 5825,-  SpvDecorationMemoryINTEL = 5826,-  SpvDecorationNumbanksINTEL = 5827,-  SpvDecorationBankwidthINTEL = 5828,-  SpvDecorationMaxPrivateCopiesINTEL = 5829,-  SpvDecorationSinglepumpINTEL = 5830,-  SpvDecorationDoublepumpINTEL = 5831,-  SpvDecorationMaxReplicatesINTEL = 5832,-  SpvDecorationSimpleDualPortINTEL = 5833,-  SpvDecorationMergeINTEL = 5834,-  SpvDecorationBankBitsINTEL = 5835,-  SpvDecorationForcePow2DepthINTEL = 5836,-  SpvDecorationBurstCoalesceINTEL = 5899,-  SpvDecorationCacheSizeINTEL = 5900,-  SpvDecorationDontStaticallyCoalesceINTEL = 5901,-  SpvDecorationPrefetchINTEL = 5902,-  SpvDecorationStallEnableINTEL = 5905,-  SpvDecorationFuseLoopsInFunctionINTEL = 5907,-  SpvDecorationMathOpDSPModeINTEL = 5909,-  SpvDecorationAliasScopeINTEL = 5914,-  SpvDecorationNoAliasINTEL = 5915,-  SpvDecorationInitiationIntervalINTEL = 5917,-  SpvDecorationMaxConcurrencyINTEL = 5918,-  SpvDecorationPipelineEnableINTEL = 5919,-  SpvDecorationBufferLocationINTEL = 5921,-  SpvDecorationIOPipeStorageINTEL = 5944,-  SpvDecorationFunctionFloatingPointModeINTEL = 6080,-  SpvDecorationSingleElementVectorINTEL = 6085,-  SpvDecorationVectorComputeCallableFunctionINTEL = 6087,-  SpvDecorationMediaBlockIOINTEL = 6140,-  SpvDecorationLatencyControlLabelINTEL = 6172,-  SpvDecorationLatencyControlConstraintINTEL = 6173,-  SpvDecorationConduitKernelArgumentINTEL = 6175,-  SpvDecorationRegisterMapKernelArgumentINTEL = 6176,-  SpvDecorationMMHostInterfaceAddressWidthINTEL = 6177,-  SpvDecorationMMHostInterfaceDataWidthINTEL = 6178,-  SpvDecorationMMHostInterfaceLatencyINTEL = 6179,-  SpvDecorationMMHostInterfaceReadWriteModeINTEL = 6180,-  SpvDecorationMMHostInterfaceMaxBurstINTEL = 6181,-  SpvDecorationMMHostInterfaceWaitRequestINTEL = 6182,-  SpvDecorationStableKernelArgumentINTEL = 6183,-  SpvDecorationMax = 0x7fffffff,-} SpvDecoration;--typedef enum SpvBuiltIn_ {-  SpvBuiltInPosition = 0,-  SpvBuiltInPointSize = 1,-  SpvBuiltInClipDistance = 3,-  SpvBuiltInCullDistance = 4,-  SpvBuiltInVertexId = 5,-  SpvBuiltInInstanceId = 6,-  SpvBuiltInPrimitiveId = 7,-  SpvBuiltInInvocationId = 8,-  SpvBuiltInLayer = 9,-  SpvBuiltInViewportIndex = 10,-  SpvBuiltInTessLevelOuter = 11,-  SpvBuiltInTessLevelInner = 12,-  SpvBuiltInTessCoord = 13,-  SpvBuiltInPatchVertices = 14,-  SpvBuiltInFragCoord = 15,-  SpvBuiltInPointCoord = 16,-  SpvBuiltInFrontFacing = 17,-  SpvBuiltInSampleId = 18,-  SpvBuiltInSamplePosition = 19,-  SpvBuiltInSampleMask = 20,-  SpvBuiltInFragDepth = 22,-  SpvBuiltInHelperInvocation = 23,-  SpvBuiltInNumWorkgroups = 24,-  SpvBuiltInWorkgroupSize = 25,-  SpvBuiltInWorkgroupId = 26,-  SpvBuiltInLocalInvocationId = 27,-  SpvBuiltInGlobalInvocationId = 28,-  SpvBuiltInLocalInvocationIndex = 29,-  SpvBuiltInWorkDim = 30,-  SpvBuiltInGlobalSize = 31,-  SpvBuiltInEnqueuedWorkgroupSize = 32,-  SpvBuiltInGlobalOffset = 33,-  SpvBuiltInGlobalLinearId = 34,-  SpvBuiltInSubgroupSize = 36,-  SpvBuiltInSubgroupMaxSize = 37,-  SpvBuiltInNumSubgroups = 38,-  SpvBuiltInNumEnqueuedSubgroups = 39,-  SpvBuiltInSubgroupId = 40,-  SpvBuiltInSubgroupLocalInvocationId = 41,-  SpvBuiltInVertexIndex = 42,-  SpvBuiltInInstanceIndex = 43,-  SpvBuiltInCoreIDARM = 4160,-  SpvBuiltInCoreCountARM = 4161,-  SpvBuiltInCoreMaxIDARM = 4162,-  SpvBuiltInWarpIDARM = 4163,-  SpvBuiltInWarpMaxIDARM = 4164,-  SpvBuiltInSubgroupEqMask = 4416,-  SpvBuiltInSubgroupEqMaskKHR = 4416,-  SpvBuiltInSubgroupGeMask = 4417,-  SpvBuiltInSubgroupGeMaskKHR = 4417,-  SpvBuiltInSubgroupGtMask = 4418,-  SpvBuiltInSubgroupGtMaskKHR = 4418,-  SpvBuiltInSubgroupLeMask = 4419,-  SpvBuiltInSubgroupLeMaskKHR = 4419,-  SpvBuiltInSubgroupLtMask = 4420,-  SpvBuiltInSubgroupLtMaskKHR = 4420,-  SpvBuiltInBaseVertex = 4424,-  SpvBuiltInBaseInstance = 4425,-  SpvBuiltInDrawIndex = 4426,-  SpvBuiltInPrimitiveShadingRateKHR = 4432,-  SpvBuiltInDeviceIndex = 4438,-  SpvBuiltInViewIndex = 4440,-  SpvBuiltInShadingRateKHR = 4444,-  SpvBuiltInBaryCoordNoPerspAMD = 4992,-  SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,-  SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,-  SpvBuiltInBaryCoordSmoothAMD = 4995,-  SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,-  SpvBuiltInBaryCoordSmoothSampleAMD = 4997,-  SpvBuiltInBaryCoordPullModelAMD = 4998,-  SpvBuiltInFragStencilRefEXT = 5014,-  SpvBuiltInViewportMaskNV = 5253,-  SpvBuiltInSecondaryPositionNV = 5257,-  SpvBuiltInSecondaryViewportMaskNV = 5258,-  SpvBuiltInPositionPerViewNV = 5261,-  SpvBuiltInViewportMaskPerViewNV = 5262,-  SpvBuiltInFullyCoveredEXT = 5264,-  SpvBuiltInTaskCountNV = 5274,-  SpvBuiltInPrimitiveCountNV = 5275,-  SpvBuiltInPrimitiveIndicesNV = 5276,-  SpvBuiltInClipDistancePerViewNV = 5277,-  SpvBuiltInCullDistancePerViewNV = 5278,-  SpvBuiltInLayerPerViewNV = 5279,-  SpvBuiltInMeshViewCountNV = 5280,-  SpvBuiltInMeshViewIndicesNV = 5281,-  SpvBuiltInBaryCoordKHR = 5286,-  SpvBuiltInBaryCoordNV = 5286,-  SpvBuiltInBaryCoordNoPerspKHR = 5287,-  SpvBuiltInBaryCoordNoPerspNV = 5287,-  SpvBuiltInFragSizeEXT = 5292,-  SpvBuiltInFragmentSizeNV = 5292,-  SpvBuiltInFragInvocationCountEXT = 5293,-  SpvBuiltInInvocationsPerPixelNV = 5293,-  SpvBuiltInPrimitivePointIndicesEXT = 5294,-  SpvBuiltInPrimitiveLineIndicesEXT = 5295,-  SpvBuiltInPrimitiveTriangleIndicesEXT = 5296,-  SpvBuiltInCullPrimitiveEXT = 5299,-  SpvBuiltInLaunchIdKHR = 5319,-  SpvBuiltInLaunchIdNV = 5319,-  SpvBuiltInLaunchSizeKHR = 5320,-  SpvBuiltInLaunchSizeNV = 5320,-  SpvBuiltInWorldRayOriginKHR = 5321,-  SpvBuiltInWorldRayOriginNV = 5321,-  SpvBuiltInWorldRayDirectionKHR = 5322,-  SpvBuiltInWorldRayDirectionNV = 5322,-  SpvBuiltInObjectRayOriginKHR = 5323,-  SpvBuiltInObjectRayOriginNV = 5323,-  SpvBuiltInObjectRayDirectionKHR = 5324,-  SpvBuiltInObjectRayDirectionNV = 5324,-  SpvBuiltInRayTminKHR = 5325,-  SpvBuiltInRayTminNV = 5325,-  SpvBuiltInRayTmaxKHR = 5326,-  SpvBuiltInRayTmaxNV = 5326,-  SpvBuiltInInstanceCustomIndexKHR = 5327,-  SpvBuiltInInstanceCustomIndexNV = 5327,-  SpvBuiltInObjectToWorldKHR = 5330,-  SpvBuiltInObjectToWorldNV = 5330,-  SpvBuiltInWorldToObjectKHR = 5331,-  SpvBuiltInWorldToObjectNV = 5331,-  SpvBuiltInHitTNV = 5332,-  SpvBuiltInHitKindKHR = 5333,-  SpvBuiltInHitKindNV = 5333,-  SpvBuiltInCurrentRayTimeNV = 5334,-  SpvBuiltInHitTriangleVertexPositionsKHR = 5335,-  SpvBuiltInIncomingRayFlagsKHR = 5351,-  SpvBuiltInIncomingRayFlagsNV = 5351,-  SpvBuiltInRayGeometryIndexKHR = 5352,-  SpvBuiltInWarpsPerSMNV = 5374,-  SpvBuiltInSMCountNV = 5375,-  SpvBuiltInWarpIDNV = 5376,-  SpvBuiltInSMIDNV = 5377,-  SpvBuiltInCullMaskKHR = 6021,-  SpvBuiltInMax = 0x7fffffff,-} SpvBuiltIn;--typedef enum SpvSelectionControlShift_ {-  SpvSelectionControlFlattenShift = 0,-  SpvSelectionControlDontFlattenShift = 1,-  SpvSelectionControlMax = 0x7fffffff,-} SpvSelectionControlShift;--typedef enum SpvSelectionControlMask_ {-  SpvSelectionControlMaskNone = 0,-  SpvSelectionControlFlattenMask = 0x00000001,-  SpvSelectionControlDontFlattenMask = 0x00000002,-} SpvSelectionControlMask;--typedef enum SpvLoopControlShift_ {-  SpvLoopControlUnrollShift = 0,-  SpvLoopControlDontUnrollShift = 1,-  SpvLoopControlDependencyInfiniteShift = 2,-  SpvLoopControlDependencyLengthShift = 3,-  SpvLoopControlMinIterationsShift = 4,-  SpvLoopControlMaxIterationsShift = 5,-  SpvLoopControlIterationMultipleShift = 6,-  SpvLoopControlPeelCountShift = 7,-  SpvLoopControlPartialCountShift = 8,-  SpvLoopControlInitiationIntervalINTELShift = 16,-  SpvLoopControlMaxConcurrencyINTELShift = 17,-  SpvLoopControlDependencyArrayINTELShift = 18,-  SpvLoopControlPipelineEnableINTELShift = 19,-  SpvLoopControlLoopCoalesceINTELShift = 20,-  SpvLoopControlMaxInterleavingINTELShift = 21,-  SpvLoopControlSpeculatedIterationsINTELShift = 22,-  SpvLoopControlNoFusionINTELShift = 23,-  SpvLoopControlLoopCountINTELShift = 24,-  SpvLoopControlMaxReinvocationDelayINTELShift = 25,-  SpvLoopControlMax = 0x7fffffff,-} SpvLoopControlShift;--typedef enum SpvLoopControlMask_ {-  SpvLoopControlMaskNone = 0,-  SpvLoopControlUnrollMask = 0x00000001,-  SpvLoopControlDontUnrollMask = 0x00000002,-  SpvLoopControlDependencyInfiniteMask = 0x00000004,-  SpvLoopControlDependencyLengthMask = 0x00000008,-  SpvLoopControlMinIterationsMask = 0x00000010,-  SpvLoopControlMaxIterationsMask = 0x00000020,-  SpvLoopControlIterationMultipleMask = 0x00000040,-  SpvLoopControlPeelCountMask = 0x00000080,-  SpvLoopControlPartialCountMask = 0x00000100,-  SpvLoopControlInitiationIntervalINTELMask = 0x00010000,-  SpvLoopControlMaxConcurrencyINTELMask = 0x00020000,-  SpvLoopControlDependencyArrayINTELMask = 0x00040000,-  SpvLoopControlPipelineEnableINTELMask = 0x00080000,-  SpvLoopControlLoopCoalesceINTELMask = 0x00100000,-  SpvLoopControlMaxInterleavingINTELMask = 0x00200000,-  SpvLoopControlSpeculatedIterationsINTELMask = 0x00400000,-  SpvLoopControlNoFusionINTELMask = 0x00800000,-  SpvLoopControlLoopCountINTELMask = 0x01000000,-  SpvLoopControlMaxReinvocationDelayINTELMask = 0x02000000,-} SpvLoopControlMask;--typedef enum SpvFunctionControlShift_ {-  SpvFunctionControlInlineShift = 0,-  SpvFunctionControlDontInlineShift = 1,-  SpvFunctionControlPureShift = 2,-  SpvFunctionControlConstShift = 3,-  SpvFunctionControlOptNoneINTELShift = 16,-  SpvFunctionControlMax = 0x7fffffff,-} SpvFunctionControlShift;--typedef enum SpvFunctionControlMask_ {-  SpvFunctionControlMaskNone = 0,-  SpvFunctionControlInlineMask = 0x00000001,-  SpvFunctionControlDontInlineMask = 0x00000002,-  SpvFunctionControlPureMask = 0x00000004,-  SpvFunctionControlConstMask = 0x00000008,-  SpvFunctionControlOptNoneINTELMask = 0x00010000,-} SpvFunctionControlMask;--typedef enum SpvMemorySemanticsShift_ {-  SpvMemorySemanticsAcquireShift = 1,-  SpvMemorySemanticsReleaseShift = 2,-  SpvMemorySemanticsAcquireReleaseShift = 3,-  SpvMemorySemanticsSequentiallyConsistentShift = 4,-  SpvMemorySemanticsUniformMemoryShift = 6,-  SpvMemorySemanticsSubgroupMemoryShift = 7,-  SpvMemorySemanticsWorkgroupMemoryShift = 8,-  SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,-  SpvMemorySemanticsAtomicCounterMemoryShift = 10,-  SpvMemorySemanticsImageMemoryShift = 11,-  SpvMemorySemanticsOutputMemoryShift = 12,-  SpvMemorySemanticsOutputMemoryKHRShift = 12,-  SpvMemorySemanticsMakeAvailableShift = 13,-  SpvMemorySemanticsMakeAvailableKHRShift = 13,-  SpvMemorySemanticsMakeVisibleShift = 14,-  SpvMemorySemanticsMakeVisibleKHRShift = 14,-  SpvMemorySemanticsVolatileShift = 15,-  SpvMemorySemanticsMax = 0x7fffffff,-} SpvMemorySemanticsShift;--typedef enum SpvMemorySemanticsMask_ {-  SpvMemorySemanticsMaskNone = 0,-  SpvMemorySemanticsAcquireMask = 0x00000002,-  SpvMemorySemanticsReleaseMask = 0x00000004,-  SpvMemorySemanticsAcquireReleaseMask = 0x00000008,-  SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,-  SpvMemorySemanticsUniformMemoryMask = 0x00000040,-  SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,-  SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,-  SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,-  SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,-  SpvMemorySemanticsImageMemoryMask = 0x00000800,-  SpvMemorySemanticsOutputMemoryMask = 0x00001000,-  SpvMemorySemanticsOutputMemoryKHRMask = 0x00001000,-  SpvMemorySemanticsMakeAvailableMask = 0x00002000,-  SpvMemorySemanticsMakeAvailableKHRMask = 0x00002000,-  SpvMemorySemanticsMakeVisibleMask = 0x00004000,-  SpvMemorySemanticsMakeVisibleKHRMask = 0x00004000,-  SpvMemorySemanticsVolatileMask = 0x00008000,-} SpvMemorySemanticsMask;--typedef enum SpvMemoryAccessShift_ {-  SpvMemoryAccessVolatileShift = 0,-  SpvMemoryAccessAlignedShift = 1,-  SpvMemoryAccessNontemporalShift = 2,-  SpvMemoryAccessMakePointerAvailableShift = 3,-  SpvMemoryAccessMakePointerAvailableKHRShift = 3,-  SpvMemoryAccessMakePointerVisibleShift = 4,-  SpvMemoryAccessMakePointerVisibleKHRShift = 4,-  SpvMemoryAccessNonPrivatePointerShift = 5,-  SpvMemoryAccessNonPrivatePointerKHRShift = 5,-  SpvMemoryAccessAliasScopeINTELMaskShift = 16,-  SpvMemoryAccessNoAliasINTELMaskShift = 17,-  SpvMemoryAccessMax = 0x7fffffff,-} SpvMemoryAccessShift;--typedef enum SpvMemoryAccessMask_ {-  SpvMemoryAccessMaskNone = 0,-  SpvMemoryAccessVolatileMask = 0x00000001,-  SpvMemoryAccessAlignedMask = 0x00000002,-  SpvMemoryAccessNontemporalMask = 0x00000004,-  SpvMemoryAccessMakePointerAvailableMask = 0x00000008,-  SpvMemoryAccessMakePointerAvailableKHRMask = 0x00000008,-  SpvMemoryAccessMakePointerVisibleMask = 0x00000010,-  SpvMemoryAccessMakePointerVisibleKHRMask = 0x00000010,-  SpvMemoryAccessNonPrivatePointerMask = 0x00000020,-  SpvMemoryAccessNonPrivatePointerKHRMask = 0x00000020,-  SpvMemoryAccessAliasScopeINTELMaskMask = 0x00010000,-  SpvMemoryAccessNoAliasINTELMaskMask = 0x00020000,-} SpvMemoryAccessMask;--typedef enum SpvScope_ {-  SpvScopeCrossDevice = 0,-  SpvScopeDevice = 1,-  SpvScopeWorkgroup = 2,-  SpvScopeSubgroup = 3,-  SpvScopeInvocation = 4,-  SpvScopeQueueFamily = 5,-  SpvScopeQueueFamilyKHR = 5,-  SpvScopeShaderCallKHR = 6,-  SpvScopeMax = 0x7fffffff,-} SpvScope;--typedef enum SpvGroupOperation_ {-  SpvGroupOperationReduce = 0,-  SpvGroupOperationInclusiveScan = 1,-  SpvGroupOperationExclusiveScan = 2,-  SpvGroupOperationClusteredReduce = 3,-  SpvGroupOperationPartitionedReduceNV = 6,-  SpvGroupOperationPartitionedInclusiveScanNV = 7,-  SpvGroupOperationPartitionedExclusiveScanNV = 8,-  SpvGroupOperationMax = 0x7fffffff,-} SpvGroupOperation;--typedef enum SpvKernelEnqueueFlags_ {-  SpvKernelEnqueueFlagsNoWait = 0,-  SpvKernelEnqueueFlagsWaitKernel = 1,-  SpvKernelEnqueueFlagsWaitWorkGroup = 2,-  SpvKernelEnqueueFlagsMax = 0x7fffffff,-} SpvKernelEnqueueFlags;--typedef enum SpvKernelProfilingInfoShift_ {-  SpvKernelProfilingInfoCmdExecTimeShift = 0,-  SpvKernelProfilingInfoMax = 0x7fffffff,-} SpvKernelProfilingInfoShift;--typedef enum SpvKernelProfilingInfoMask_ {-  SpvKernelProfilingInfoMaskNone = 0,-  SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,-} SpvKernelProfilingInfoMask;--typedef enum SpvCapability_ {-  SpvCapabilityMatrix = 0,-  SpvCapabilityShader = 1,-  SpvCapabilityGeometry = 2,-  SpvCapabilityTessellation = 3,-  SpvCapabilityAddresses = 4,-  SpvCapabilityLinkage = 5,-  SpvCapabilityKernel = 6,-  SpvCapabilityVector16 = 7,-  SpvCapabilityFloat16Buffer = 8,-  SpvCapabilityFloat16 = 9,-  SpvCapabilityFloat64 = 10,-  SpvCapabilityInt64 = 11,-  SpvCapabilityInt64Atomics = 12,-  SpvCapabilityImageBasic = 13,-  SpvCapabilityImageReadWrite = 14,-  SpvCapabilityImageMipmap = 15,-  SpvCapabilityPipes = 17,-  SpvCapabilityGroups = 18,-  SpvCapabilityDeviceEnqueue = 19,-  SpvCapabilityLiteralSampler = 20,-  SpvCapabilityAtomicStorage = 21,-  SpvCapabilityInt16 = 22,-  SpvCapabilityTessellationPointSize = 23,-  SpvCapabilityGeometryPointSize = 24,-  SpvCapabilityImageGatherExtended = 25,-  SpvCapabilityStorageImageMultisample = 27,-  SpvCapabilityUniformBufferArrayDynamicIndexing = 28,-  SpvCapabilitySampledImageArrayDynamicIndexing = 29,-  SpvCapabilityStorageBufferArrayDynamicIndexing = 30,-  SpvCapabilityStorageImageArrayDynamicIndexing = 31,-  SpvCapabilityClipDistance = 32,-  SpvCapabilityCullDistance = 33,-  SpvCapabilityImageCubeArray = 34,-  SpvCapabilitySampleRateShading = 35,-  SpvCapabilityImageRect = 36,-  SpvCapabilitySampledRect = 37,-  SpvCapabilityGenericPointer = 38,-  SpvCapabilityInt8 = 39,-  SpvCapabilityInputAttachment = 40,-  SpvCapabilitySparseResidency = 41,-  SpvCapabilityMinLod = 42,-  SpvCapabilitySampled1D = 43,-  SpvCapabilityImage1D = 44,-  SpvCapabilitySampledCubeArray = 45,-  SpvCapabilitySampledBuffer = 46,-  SpvCapabilityImageBuffer = 47,-  SpvCapabilityImageMSArray = 48,-  SpvCapabilityStorageImageExtendedFormats = 49,-  SpvCapabilityImageQuery = 50,-  SpvCapabilityDerivativeControl = 51,-  SpvCapabilityInterpolationFunction = 52,-  SpvCapabilityTransformFeedback = 53,-  SpvCapabilityGeometryStreams = 54,-  SpvCapabilityStorageImageReadWithoutFormat = 55,-  SpvCapabilityStorageImageWriteWithoutFormat = 56,-  SpvCapabilityMultiViewport = 57,-  SpvCapabilitySubgroupDispatch = 58,-  SpvCapabilityNamedBarrier = 59,-  SpvCapabilityPipeStorage = 60,-  SpvCapabilityGroupNonUniform = 61,-  SpvCapabilityGroupNonUniformVote = 62,-  SpvCapabilityGroupNonUniformArithmetic = 63,-  SpvCapabilityGroupNonUniformBallot = 64,-  SpvCapabilityGroupNonUniformShuffle = 65,-  SpvCapabilityGroupNonUniformShuffleRelative = 66,-  SpvCapabilityGroupNonUniformClustered = 67,-  SpvCapabilityGroupNonUniformQuad = 68,-  SpvCapabilityShaderLayer = 69,-  SpvCapabilityShaderViewportIndex = 70,-  SpvCapabilityUniformDecoration = 71,-  SpvCapabilityCoreBuiltinsARM = 4165,-  SpvCapabilityTileImageColorReadAccessEXT = 4166,-  SpvCapabilityTileImageDepthReadAccessEXT = 4167,-  SpvCapabilityTileImageStencilReadAccessEXT = 4168,-  SpvCapabilityFragmentShadingRateKHR = 4422,-  SpvCapabilitySubgroupBallotKHR = 4423,-  SpvCapabilityDrawParameters = 4427,-  SpvCapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,-  SpvCapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,-  SpvCapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,-  SpvCapabilitySubgroupVoteKHR = 4431,-  SpvCapabilityStorageBuffer16BitAccess = 4433,-  SpvCapabilityStorageUniformBufferBlock16 = 4433,-  SpvCapabilityStorageUniform16 = 4434,-  SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,-  SpvCapabilityStoragePushConstant16 = 4435,-  SpvCapabilityStorageInputOutput16 = 4436,-  SpvCapabilityDeviceGroup = 4437,-  SpvCapabilityMultiView = 4439,-  SpvCapabilityVariablePointersStorageBuffer = 4441,-  SpvCapabilityVariablePointers = 4442,-  SpvCapabilityAtomicStorageOps = 4445,-  SpvCapabilitySampleMaskPostDepthCoverage = 4447,-  SpvCapabilityStorageBuffer8BitAccess = 4448,-  SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,-  SpvCapabilityStoragePushConstant8 = 4450,-  SpvCapabilityDenormPreserve = 4464,-  SpvCapabilityDenormFlushToZero = 4465,-  SpvCapabilitySignedZeroInfNanPreserve = 4466,-  SpvCapabilityRoundingModeRTE = 4467,-  SpvCapabilityRoundingModeRTZ = 4468,-  SpvCapabilityRayQueryProvisionalKHR = 4471,-  SpvCapabilityRayQueryKHR = 4472,-  SpvCapabilityRayTraversalPrimitiveCullingKHR = 4478,-  SpvCapabilityRayTracingKHR = 4479,-  SpvCapabilityTextureSampleWeightedQCOM = 4484,-  SpvCapabilityTextureBoxFilterQCOM = 4485,-  SpvCapabilityTextureBlockMatchQCOM = 4486,-  SpvCapabilityFloat16ImageAMD = 5008,-  SpvCapabilityImageGatherBiasLodAMD = 5009,-  SpvCapabilityFragmentMaskAMD = 5010,-  SpvCapabilityStencilExportEXT = 5013,-  SpvCapabilityImageReadWriteLodAMD = 5015,-  SpvCapabilityInt64ImageEXT = 5016,-  SpvCapabilityShaderClockKHR = 5055,-  SpvCapabilitySampleMaskOverrideCoverageNV = 5249,-  SpvCapabilityGeometryShaderPassthroughNV = 5251,-  SpvCapabilityShaderViewportIndexLayerEXT = 5254,-  SpvCapabilityShaderViewportIndexLayerNV = 5254,-  SpvCapabilityShaderViewportMaskNV = 5255,-  SpvCapabilityShaderStereoViewNV = 5259,-  SpvCapabilityPerViewAttributesNV = 5260,-  SpvCapabilityFragmentFullyCoveredEXT = 5265,-  SpvCapabilityMeshShadingNV = 5266,-  SpvCapabilityImageFootprintNV = 5282,-  SpvCapabilityMeshShadingEXT = 5283,-  SpvCapabilityFragmentBarycentricKHR = 5284,-  SpvCapabilityFragmentBarycentricNV = 5284,-  SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,-  SpvCapabilityFragmentDensityEXT = 5291,-  SpvCapabilityShadingRateNV = 5291,-  SpvCapabilityGroupNonUniformPartitionedNV = 5297,-  SpvCapabilityShaderNonUniform = 5301,-  SpvCapabilityShaderNonUniformEXT = 5301,-  SpvCapabilityRuntimeDescriptorArray = 5302,-  SpvCapabilityRuntimeDescriptorArrayEXT = 5302,-  SpvCapabilityInputAttachmentArrayDynamicIndexing = 5303,-  SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,-  SpvCapabilityUniformTexelBufferArrayDynamicIndexing = 5304,-  SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,-  SpvCapabilityStorageTexelBufferArrayDynamicIndexing = 5305,-  SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,-  SpvCapabilityUniformBufferArrayNonUniformIndexing = 5306,-  SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,-  SpvCapabilitySampledImageArrayNonUniformIndexing = 5307,-  SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,-  SpvCapabilityStorageBufferArrayNonUniformIndexing = 5308,-  SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,-  SpvCapabilityStorageImageArrayNonUniformIndexing = 5309,-  SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,-  SpvCapabilityInputAttachmentArrayNonUniformIndexing = 5310,-  SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,-  SpvCapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,-  SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,-  SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,-  SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,-  SpvCapabilityRayTracingPositionFetchKHR = 5336,-  SpvCapabilityRayTracingNV = 5340,-  SpvCapabilityRayTracingMotionBlurNV = 5341,-  SpvCapabilityVulkanMemoryModel = 5345,-  SpvCapabilityVulkanMemoryModelKHR = 5345,-  SpvCapabilityVulkanMemoryModelDeviceScope = 5346,-  SpvCapabilityVulkanMemoryModelDeviceScopeKHR = 5346,-  SpvCapabilityPhysicalStorageBufferAddresses = 5347,-  SpvCapabilityPhysicalStorageBufferAddressesEXT = 5347,-  SpvCapabilityComputeDerivativeGroupLinearNV = 5350,-  SpvCapabilityRayTracingProvisionalKHR = 5353,-  SpvCapabilityCooperativeMatrixNV = 5357,-  SpvCapabilityFragmentShaderSampleInterlockEXT = 5363,-  SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,-  SpvCapabilityShaderSMBuiltinsNV = 5373,-  SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,-  SpvCapabilityDemoteToHelperInvocation = 5379,-  SpvCapabilityDemoteToHelperInvocationEXT = 5379,-  SpvCapabilityRayTracingOpacityMicromapEXT = 5381,-  SpvCapabilityShaderInvocationReorderNV = 5383,-  SpvCapabilityBindlessTextureNV = 5390,-  SpvCapabilityRayQueryPositionFetchKHR = 5391,-  SpvCapabilitySubgroupShuffleINTEL = 5568,-  SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,-  SpvCapabilitySubgroupImageBlockIOINTEL = 5570,-  SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,-  SpvCapabilityRoundToInfinityINTEL = 5582,-  SpvCapabilityFloatingPointModeINTEL = 5583,-  SpvCapabilityIntegerFunctions2INTEL = 5584,-  SpvCapabilityFunctionPointersINTEL = 5603,-  SpvCapabilityIndirectReferencesINTEL = 5604,-  SpvCapabilityAsmINTEL = 5606,-  SpvCapabilityAtomicFloat32MinMaxEXT = 5612,-  SpvCapabilityAtomicFloat64MinMaxEXT = 5613,-  SpvCapabilityAtomicFloat16MinMaxEXT = 5616,-  SpvCapabilityVectorComputeINTEL = 5617,-  SpvCapabilityVectorAnyINTEL = 5619,-  SpvCapabilityExpectAssumeKHR = 5629,-  SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,-  SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,-  SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,-  SpvCapabilityVariableLengthArrayINTEL = 5817,-  SpvCapabilityFunctionFloatControlINTEL = 5821,-  SpvCapabilityFPGAMemoryAttributesINTEL = 5824,-  SpvCapabilityFPFastMathModeINTEL = 5837,-  SpvCapabilityArbitraryPrecisionIntegersINTEL = 5844,-  SpvCapabilityArbitraryPrecisionFloatingPointINTEL = 5845,-  SpvCapabilityUnstructuredLoopControlsINTEL = 5886,-  SpvCapabilityFPGALoopControlsINTEL = 5888,-  SpvCapabilityKernelAttributesINTEL = 5892,-  SpvCapabilityFPGAKernelAttributesINTEL = 5897,-  SpvCapabilityFPGAMemoryAccessesINTEL = 5898,-  SpvCapabilityFPGAClusterAttributesINTEL = 5904,-  SpvCapabilityLoopFuseINTEL = 5906,-  SpvCapabilityFPGADSPControlINTEL = 5908,-  SpvCapabilityMemoryAccessAliasingINTEL = 5910,-  SpvCapabilityFPGAInvocationPipeliningAttributesINTEL = 5916,-  SpvCapabilityFPGABufferLocationINTEL = 5920,-  SpvCapabilityArbitraryPrecisionFixedPointINTEL = 5922,-  SpvCapabilityUSMStorageClassesINTEL = 5935,-  SpvCapabilityRuntimeAlignedAttributeINTEL = 5939,-  SpvCapabilityIOPipesINTEL = 5943,-  SpvCapabilityBlockingPipesINTEL = 5945,-  SpvCapabilityFPGARegINTEL = 5948,-  SpvCapabilityDotProductInputAll = 6016,-  SpvCapabilityDotProductInputAllKHR = 6016,-  SpvCapabilityDotProductInput4x8Bit = 6017,-  SpvCapabilityDotProductInput4x8BitKHR = 6017,-  SpvCapabilityDotProductInput4x8BitPacked = 6018,-  SpvCapabilityDotProductInput4x8BitPackedKHR = 6018,-  SpvCapabilityDotProduct = 6019,-  SpvCapabilityDotProductKHR = 6019,-  SpvCapabilityRayCullMaskKHR = 6020,-  SpvCapabilityCooperativeMatrixKHR = 6022,-  SpvCapabilityBitInstructions = 6025,-  SpvCapabilityGroupNonUniformRotateKHR = 6026,-  SpvCapabilityAtomicFloat32AddEXT = 6033,-  SpvCapabilityAtomicFloat64AddEXT = 6034,-  SpvCapabilityLongConstantCompositeINTEL = 6089,-  SpvCapabilityOptNoneINTEL = 6094,-  SpvCapabilityAtomicFloat16AddEXT = 6095,-  SpvCapabilityDebugInfoModuleINTEL = 6114,-  SpvCapabilityBFloat16ConversionINTEL = 6115,-  SpvCapabilitySplitBarrierINTEL = 6141,-  SpvCapabilityFPGAKernelAttributesv2INTEL = 6161,-  SpvCapabilityFPGALatencyControlINTEL = 6171,-  SpvCapabilityFPGAArgumentInterfacesINTEL = 6174,-  SpvCapabilityGroupUniformArithmeticKHR = 6400,-  SpvCapabilityMax = 0x7fffffff,-} SpvCapability;--typedef enum SpvRayFlagsShift_ {-  SpvRayFlagsOpaqueKHRShift = 0,-  SpvRayFlagsNoOpaqueKHRShift = 1,-  SpvRayFlagsTerminateOnFirstHitKHRShift = 2,-  SpvRayFlagsSkipClosestHitShaderKHRShift = 3,-  SpvRayFlagsCullBackFacingTrianglesKHRShift = 4,-  SpvRayFlagsCullFrontFacingTrianglesKHRShift = 5,-  SpvRayFlagsCullOpaqueKHRShift = 6,-  SpvRayFlagsCullNoOpaqueKHRShift = 7,-  SpvRayFlagsSkipTrianglesKHRShift = 8,-  SpvRayFlagsSkipAABBsKHRShift = 9,-  SpvRayFlagsForceOpacityMicromap2StateEXTShift = 10,-  SpvRayFlagsMax = 0x7fffffff,-} SpvRayFlagsShift;--typedef enum SpvRayFlagsMask_ {-  SpvRayFlagsMaskNone = 0,-  SpvRayFlagsOpaqueKHRMask = 0x00000001,-  SpvRayFlagsNoOpaqueKHRMask = 0x00000002,-  SpvRayFlagsTerminateOnFirstHitKHRMask = 0x00000004,-  SpvRayFlagsSkipClosestHitShaderKHRMask = 0x00000008,-  SpvRayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,-  SpvRayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,-  SpvRayFlagsCullOpaqueKHRMask = 0x00000040,-  SpvRayFlagsCullNoOpaqueKHRMask = 0x00000080,-  SpvRayFlagsSkipTrianglesKHRMask = 0x00000100,-  SpvRayFlagsSkipAABBsKHRMask = 0x00000200,-  SpvRayFlagsForceOpacityMicromap2StateEXTMask = 0x00000400,-} SpvRayFlagsMask;--typedef enum SpvRayQueryIntersection_ {-  SpvRayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,-  SpvRayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,-  SpvRayQueryIntersectionMax = 0x7fffffff,-} SpvRayQueryIntersection;--typedef enum SpvRayQueryCommittedIntersectionType_ {-  SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,-  SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR =-      1,-  SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR =-      2,-  SpvRayQueryCommittedIntersectionTypeMax = 0x7fffffff,-} SpvRayQueryCommittedIntersectionType;--typedef enum SpvRayQueryCandidateIntersectionType_ {-  SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR =-      0,-  SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,-  SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff,-} SpvRayQueryCandidateIntersectionType;--typedef enum SpvFragmentShadingRateShift_ {-  SpvFragmentShadingRateVertical2PixelsShift = 0,-  SpvFragmentShadingRateVertical4PixelsShift = 1,-  SpvFragmentShadingRateHorizontal2PixelsShift = 2,-  SpvFragmentShadingRateHorizontal4PixelsShift = 3,-  SpvFragmentShadingRateMax = 0x7fffffff,-} SpvFragmentShadingRateShift;--typedef enum SpvFragmentShadingRateMask_ {-  SpvFragmentShadingRateMaskNone = 0,-  SpvFragmentShadingRateVertical2PixelsMask = 0x00000001,-  SpvFragmentShadingRateVertical4PixelsMask = 0x00000002,-  SpvFragmentShadingRateHorizontal2PixelsMask = 0x00000004,-  SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,-} SpvFragmentShadingRateMask;--typedef enum SpvFPDenormMode_ {-  SpvFPDenormModePreserve = 0,-  SpvFPDenormModeFlushToZero = 1,-  SpvFPDenormModeMax = 0x7fffffff,-} SpvFPDenormMode;--typedef enum SpvFPOperationMode_ {-  SpvFPOperationModeIEEE = 0,-  SpvFPOperationModeALT = 1,-  SpvFPOperationModeMax = 0x7fffffff,-} SpvFPOperationMode;--typedef enum SpvQuantizationModes_ {-  SpvQuantizationModesTRN = 0,-  SpvQuantizationModesTRN_ZERO = 1,-  SpvQuantizationModesRND = 2,-  SpvQuantizationModesRND_ZERO = 3,-  SpvQuantizationModesRND_INF = 4,-  SpvQuantizationModesRND_MIN_INF = 5,-  SpvQuantizationModesRND_CONV = 6,-  SpvQuantizationModesRND_CONV_ODD = 7,-  SpvQuantizationModesMax = 0x7fffffff,-} SpvQuantizationModes;--typedef enum SpvOverflowModes_ {-  SpvOverflowModesWRAP = 0,-  SpvOverflowModesSAT = 1,-  SpvOverflowModesSAT_ZERO = 2,-  SpvOverflowModesSAT_SYM = 3,-  SpvOverflowModesMax = 0x7fffffff,-} SpvOverflowModes;--typedef enum SpvPackedVectorFormat_ {-  SpvPackedVectorFormatPackedVectorFormat4x8Bit = 0,-  SpvPackedVectorFormatPackedVectorFormat4x8BitKHR = 0,-  SpvPackedVectorFormatMax = 0x7fffffff,-} SpvPackedVectorFormat;--typedef enum SpvCooperativeMatrixOperandsShift_ {-  SpvCooperativeMatrixOperandsMatrixASignedComponentsShift = 0,-  SpvCooperativeMatrixOperandsMatrixBSignedComponentsShift = 1,-  SpvCooperativeMatrixOperandsMatrixCSignedComponentsShift = 2,-  SpvCooperativeMatrixOperandsMatrixResultSignedComponentsShift = 3,-  SpvCooperativeMatrixOperandsSaturatingAccumulationShift = 4,-  SpvCooperativeMatrixOperandsMax = 0x7fffffff,-} SpvCooperativeMatrixOperandsShift;--typedef enum SpvCooperativeMatrixOperandsMask_ {-  SpvCooperativeMatrixOperandsMaskNone = 0,-  SpvCooperativeMatrixOperandsMatrixASignedComponentsMask = 0x00000001,-  SpvCooperativeMatrixOperandsMatrixBSignedComponentsMask = 0x00000002,-  SpvCooperativeMatrixOperandsMatrixCSignedComponentsMask = 0x00000004,-  SpvCooperativeMatrixOperandsMatrixResultSignedComponentsMask = 0x00000008,-  SpvCooperativeMatrixOperandsSaturatingAccumulationMask = 0x00000010,-} SpvCooperativeMatrixOperandsMask;--typedef enum SpvCooperativeMatrixLayout_ {-  SpvCooperativeMatrixLayoutRowMajorKHR = 0,-  SpvCooperativeMatrixLayoutColumnMajorKHR = 1,-  SpvCooperativeMatrixLayoutMax = 0x7fffffff,-} SpvCooperativeMatrixLayout;--typedef enum SpvCooperativeMatrixUse_ {-  SpvCooperativeMatrixUseMatrixAKHR = 0,-  SpvCooperativeMatrixUseMatrixBKHR = 1,-  SpvCooperativeMatrixUseMatrixAccumulatorKHR = 2,-  SpvCooperativeMatrixUseMax = 0x7fffffff,-} SpvCooperativeMatrixUse;--typedef enum SpvOp_ {-  SpvOpNop = 0,-  SpvOpUndef = 1,-  SpvOpSourceContinued = 2,-  SpvOpSource = 3,-  SpvOpSourceExtension = 4,-  SpvOpName = 5,-  SpvOpMemberName = 6,-  SpvOpString = 7,-  SpvOpLine = 8,-  SpvOpExtension = 10,-  SpvOpExtInstImport = 11,-  SpvOpExtInst = 12,-  SpvOpMemoryModel = 14,-  SpvOpEntryPoint = 15,-  SpvOpExecutionMode = 16,-  SpvOpCapability = 17,-  SpvOpTypeVoid = 19,-  SpvOpTypeBool = 20,-  SpvOpTypeInt = 21,-  SpvOpTypeFloat = 22,-  SpvOpTypeVector = 23,-  SpvOpTypeMatrix = 24,-  SpvOpTypeImage = 25,-  SpvOpTypeSampler = 26,-  SpvOpTypeSampledImage = 27,-  SpvOpTypeArray = 28,-  SpvOpTypeRuntimeArray = 29,-  SpvOpTypeStruct = 30,-  SpvOpTypeOpaque = 31,-  SpvOpTypePointer = 32,-  SpvOpTypeFunction = 33,-  SpvOpTypeEvent = 34,-  SpvOpTypeDeviceEvent = 35,-  SpvOpTypeReserveId = 36,-  SpvOpTypeQueue = 37,-  SpvOpTypePipe = 38,-  SpvOpTypeForwardPointer = 39,-  SpvOpConstantTrue = 41,-  SpvOpConstantFalse = 42,-  SpvOpConstant = 43,-  SpvOpConstantComposite = 44,-  SpvOpConstantSampler = 45,-  SpvOpConstantNull = 46,-  SpvOpSpecConstantTrue = 48,-  SpvOpSpecConstantFalse = 49,-  SpvOpSpecConstant = 50,-  SpvOpSpecConstantComposite = 51,-  SpvOpSpecConstantOp = 52,-  SpvOpFunction = 54,-  SpvOpFunctionParameter = 55,-  SpvOpFunctionEnd = 56,-  SpvOpFunctionCall = 57,-  SpvOpVariable = 59,-  SpvOpImageTexelPointer = 60,-  SpvOpLoad = 61,-  SpvOpStore = 62,-  SpvOpCopyMemory = 63,-  SpvOpCopyMemorySized = 64,-  SpvOpAccessChain = 65,-  SpvOpInBoundsAccessChain = 66,-  SpvOpPtrAccessChain = 67,-  SpvOpArrayLength = 68,-  SpvOpGenericPtrMemSemantics = 69,-  SpvOpInBoundsPtrAccessChain = 70,-  SpvOpDecorate = 71,-  SpvOpMemberDecorate = 72,-  SpvOpDecorationGroup = 73,-  SpvOpGroupDecorate = 74,-  SpvOpGroupMemberDecorate = 75,-  SpvOpVectorExtractDynamic = 77,-  SpvOpVectorInsertDynamic = 78,-  SpvOpVectorShuffle = 79,-  SpvOpCompositeConstruct = 80,-  SpvOpCompositeExtract = 81,-  SpvOpCompositeInsert = 82,-  SpvOpCopyObject = 83,-  SpvOpTranspose = 84,-  SpvOpSampledImage = 86,-  SpvOpImageSampleImplicitLod = 87,-  SpvOpImageSampleExplicitLod = 88,-  SpvOpImageSampleDrefImplicitLod = 89,-  SpvOpImageSampleDrefExplicitLod = 90,-  SpvOpImageSampleProjImplicitLod = 91,-  SpvOpImageSampleProjExplicitLod = 92,-  SpvOpImageSampleProjDrefImplicitLod = 93,-  SpvOpImageSampleProjDrefExplicitLod = 94,-  SpvOpImageFetch = 95,-  SpvOpImageGather = 96,-  SpvOpImageDrefGather = 97,-  SpvOpImageRead = 98,-  SpvOpImageWrite = 99,-  SpvOpImage = 100,-  SpvOpImageQueryFormat = 101,-  SpvOpImageQueryOrder = 102,-  SpvOpImageQuerySizeLod = 103,-  SpvOpImageQuerySize = 104,-  SpvOpImageQueryLod = 105,-  SpvOpImageQueryLevels = 106,-  SpvOpImageQuerySamples = 107,-  SpvOpConvertFToU = 109,-  SpvOpConvertFToS = 110,-  SpvOpConvertSToF = 111,-  SpvOpConvertUToF = 112,-  SpvOpUConvert = 113,-  SpvOpSConvert = 114,-  SpvOpFConvert = 115,-  SpvOpQuantizeToF16 = 116,-  SpvOpConvertPtrToU = 117,-  SpvOpSatConvertSToU = 118,-  SpvOpSatConvertUToS = 119,-  SpvOpConvertUToPtr = 120,-  SpvOpPtrCastToGeneric = 121,-  SpvOpGenericCastToPtr = 122,-  SpvOpGenericCastToPtrExplicit = 123,-  SpvOpBitcast = 124,-  SpvOpSNegate = 126,-  SpvOpFNegate = 127,-  SpvOpIAdd = 128,-  SpvOpFAdd = 129,-  SpvOpISub = 130,-  SpvOpFSub = 131,-  SpvOpIMul = 132,-  SpvOpFMul = 133,-  SpvOpUDiv = 134,-  SpvOpSDiv = 135,-  SpvOpFDiv = 136,-  SpvOpUMod = 137,-  SpvOpSRem = 138,-  SpvOpSMod = 139,-  SpvOpFRem = 140,-  SpvOpFMod = 141,-  SpvOpVectorTimesScalar = 142,-  SpvOpMatrixTimesScalar = 143,-  SpvOpVectorTimesMatrix = 144,-  SpvOpMatrixTimesVector = 145,-  SpvOpMatrixTimesMatrix = 146,-  SpvOpOuterProduct = 147,-  SpvOpDot = 148,-  SpvOpIAddCarry = 149,-  SpvOpISubBorrow = 150,-  SpvOpUMulExtended = 151,-  SpvOpSMulExtended = 152,-  SpvOpAny = 154,-  SpvOpAll = 155,-  SpvOpIsNan = 156,-  SpvOpIsInf = 157,-  SpvOpIsFinite = 158,-  SpvOpIsNormal = 159,-  SpvOpSignBitSet = 160,-  SpvOpLessOrGreater = 161,-  SpvOpOrdered = 162,-  SpvOpUnordered = 163,-  SpvOpLogicalEqual = 164,-  SpvOpLogicalNotEqual = 165,-  SpvOpLogicalOr = 166,-  SpvOpLogicalAnd = 167,-  SpvOpLogicalNot = 168,-  SpvOpSelect = 169,-  SpvOpIEqual = 170,-  SpvOpINotEqual = 171,-  SpvOpUGreaterThan = 172,-  SpvOpSGreaterThan = 173,-  SpvOpUGreaterThanEqual = 174,-  SpvOpSGreaterThanEqual = 175,-  SpvOpULessThan = 176,-  SpvOpSLessThan = 177,-  SpvOpULessThanEqual = 178,-  SpvOpSLessThanEqual = 179,-  SpvOpFOrdEqual = 180,-  SpvOpFUnordEqual = 181,-  SpvOpFOrdNotEqual = 182,-  SpvOpFUnordNotEqual = 183,-  SpvOpFOrdLessThan = 184,-  SpvOpFUnordLessThan = 185,-  SpvOpFOrdGreaterThan = 186,-  SpvOpFUnordGreaterThan = 187,-  SpvOpFOrdLessThanEqual = 188,-  SpvOpFUnordLessThanEqual = 189,-  SpvOpFOrdGreaterThanEqual = 190,-  SpvOpFUnordGreaterThanEqual = 191,-  SpvOpShiftRightLogical = 194,-  SpvOpShiftRightArithmetic = 195,-  SpvOpShiftLeftLogical = 196,-  SpvOpBitwiseOr = 197,-  SpvOpBitwiseXor = 198,-  SpvOpBitwiseAnd = 199,-  SpvOpNot = 200,-  SpvOpBitFieldInsert = 201,-  SpvOpBitFieldSExtract = 202,-  SpvOpBitFieldUExtract = 203,-  SpvOpBitReverse = 204,-  SpvOpBitCount = 205,-  SpvOpDPdx = 207,-  SpvOpDPdy = 208,-  SpvOpFwidth = 209,-  SpvOpDPdxFine = 210,-  SpvOpDPdyFine = 211,-  SpvOpFwidthFine = 212,-  SpvOpDPdxCoarse = 213,-  SpvOpDPdyCoarse = 214,-  SpvOpFwidthCoarse = 215,-  SpvOpEmitVertex = 218,-  SpvOpEndPrimitive = 219,-  SpvOpEmitStreamVertex = 220,-  SpvOpEndStreamPrimitive = 221,-  SpvOpControlBarrier = 224,-  SpvOpMemoryBarrier = 225,-  SpvOpAtomicLoad = 227,-  SpvOpAtomicStore = 228,-  SpvOpAtomicExchange = 229,-  SpvOpAtomicCompareExchange = 230,-  SpvOpAtomicCompareExchangeWeak = 231,-  SpvOpAtomicIIncrement = 232,-  SpvOpAtomicIDecrement = 233,-  SpvOpAtomicIAdd = 234,-  SpvOpAtomicISub = 235,-  SpvOpAtomicSMin = 236,-  SpvOpAtomicUMin = 237,-  SpvOpAtomicSMax = 238,-  SpvOpAtomicUMax = 239,-  SpvOpAtomicAnd = 240,-  SpvOpAtomicOr = 241,-  SpvOpAtomicXor = 242,-  SpvOpPhi = 245,-  SpvOpLoopMerge = 246,-  SpvOpSelectionMerge = 247,-  SpvOpLabel = 248,-  SpvOpBranch = 249,-  SpvOpBranchConditional = 250,-  SpvOpSwitch = 251,-  SpvOpKill = 252,-  SpvOpReturn = 253,-  SpvOpReturnValue = 254,-  SpvOpUnreachable = 255,-  SpvOpLifetimeStart = 256,-  SpvOpLifetimeStop = 257,-  SpvOpGroupAsyncCopy = 259,-  SpvOpGroupWaitEvents = 260,-  SpvOpGroupAll = 261,-  SpvOpGroupAny = 262,-  SpvOpGroupBroadcast = 263,-  SpvOpGroupIAdd = 264,-  SpvOpGroupFAdd = 265,-  SpvOpGroupFMin = 266,-  SpvOpGroupUMin = 267,-  SpvOpGroupSMin = 268,-  SpvOpGroupFMax = 269,-  SpvOpGroupUMax = 270,-  SpvOpGroupSMax = 271,-  SpvOpReadPipe = 274,-  SpvOpWritePipe = 275,-  SpvOpReservedReadPipe = 276,-  SpvOpReservedWritePipe = 277,-  SpvOpReserveReadPipePackets = 278,-  SpvOpReserveWritePipePackets = 279,-  SpvOpCommitReadPipe = 280,-  SpvOpCommitWritePipe = 281,-  SpvOpIsValidReserveId = 282,-  SpvOpGetNumPipePackets = 283,-  SpvOpGetMaxPipePackets = 284,-  SpvOpGroupReserveReadPipePackets = 285,-  SpvOpGroupReserveWritePipePackets = 286,-  SpvOpGroupCommitReadPipe = 287,-  SpvOpGroupCommitWritePipe = 288,-  SpvOpEnqueueMarker = 291,-  SpvOpEnqueueKernel = 292,-  SpvOpGetKernelNDrangeSubGroupCount = 293,-  SpvOpGetKernelNDrangeMaxSubGroupSize = 294,-  SpvOpGetKernelWorkGroupSize = 295,-  SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,-  SpvOpRetainEvent = 297,-  SpvOpReleaseEvent = 298,-  SpvOpCreateUserEvent = 299,-  SpvOpIsValidEvent = 300,-  SpvOpSetUserEventStatus = 301,-  SpvOpCaptureEventProfilingInfo = 302,-  SpvOpGetDefaultQueue = 303,-  SpvOpBuildNDRange = 304,-  SpvOpImageSparseSampleImplicitLod = 305,-  SpvOpImageSparseSampleExplicitLod = 306,-  SpvOpImageSparseSampleDrefImplicitLod = 307,-  SpvOpImageSparseSampleDrefExplicitLod = 308,-  SpvOpImageSparseSampleProjImplicitLod = 309,-  SpvOpImageSparseSampleProjExplicitLod = 310,-  SpvOpImageSparseSampleProjDrefImplicitLod = 311,-  SpvOpImageSparseSampleProjDrefExplicitLod = 312,-  SpvOpImageSparseFetch = 313,-  SpvOpImageSparseGather = 314,-  SpvOpImageSparseDrefGather = 315,-  SpvOpImageSparseTexelsResident = 316,-  SpvOpNoLine = 317,-  SpvOpAtomicFlagTestAndSet = 318,-  SpvOpAtomicFlagClear = 319,-  SpvOpImageSparseRead = 320,-  SpvOpSizeOf = 321,-  SpvOpTypePipeStorage = 322,-  SpvOpConstantPipeStorage = 323,-  SpvOpCreatePipeFromPipeStorage = 324,-  SpvOpGetKernelLocalSizeForSubgroupCount = 325,-  SpvOpGetKernelMaxNumSubgroups = 326,-  SpvOpTypeNamedBarrier = 327,-  SpvOpNamedBarrierInitialize = 328,-  SpvOpMemoryNamedBarrier = 329,-  SpvOpModuleProcessed = 330,-  SpvOpExecutionModeId = 331,-  SpvOpDecorateId = 332,-  SpvOpGroupNonUniformElect = 333,-  SpvOpGroupNonUniformAll = 334,-  SpvOpGroupNonUniformAny = 335,-  SpvOpGroupNonUniformAllEqual = 336,-  SpvOpGroupNonUniformBroadcast = 337,-  SpvOpGroupNonUniformBroadcastFirst = 338,-  SpvOpGroupNonUniformBallot = 339,-  SpvOpGroupNonUniformInverseBallot = 340,-  SpvOpGroupNonUniformBallotBitExtract = 341,-  SpvOpGroupNonUniformBallotBitCount = 342,-  SpvOpGroupNonUniformBallotFindLSB = 343,-  SpvOpGroupNonUniformBallotFindMSB = 344,-  SpvOpGroupNonUniformShuffle = 345,-  SpvOpGroupNonUniformShuffleXor = 346,-  SpvOpGroupNonUniformShuffleUp = 347,-  SpvOpGroupNonUniformShuffleDown = 348,-  SpvOpGroupNonUniformIAdd = 349,-  SpvOpGroupNonUniformFAdd = 350,-  SpvOpGroupNonUniformIMul = 351,-  SpvOpGroupNonUniformFMul = 352,-  SpvOpGroupNonUniformSMin = 353,-  SpvOpGroupNonUniformUMin = 354,-  SpvOpGroupNonUniformFMin = 355,-  SpvOpGroupNonUniformSMax = 356,-  SpvOpGroupNonUniformUMax = 357,-  SpvOpGroupNonUniformFMax = 358,-  SpvOpGroupNonUniformBitwiseAnd = 359,-  SpvOpGroupNonUniformBitwiseOr = 360,-  SpvOpGroupNonUniformBitwiseXor = 361,-  SpvOpGroupNonUniformLogicalAnd = 362,-  SpvOpGroupNonUniformLogicalOr = 363,-  SpvOpGroupNonUniformLogicalXor = 364,-  SpvOpGroupNonUniformQuadBroadcast = 365,-  SpvOpGroupNonUniformQuadSwap = 366,-  SpvOpCopyLogical = 400,-  SpvOpPtrEqual = 401,-  SpvOpPtrNotEqual = 402,-  SpvOpPtrDiff = 403,-  SpvOpColorAttachmentReadEXT = 4160,-  SpvOpDepthAttachmentReadEXT = 4161,-  SpvOpStencilAttachmentReadEXT = 4162,-  SpvOpTerminateInvocation = 4416,-  SpvOpSubgroupBallotKHR = 4421,-  SpvOpSubgroupFirstInvocationKHR = 4422,-  SpvOpSubgroupAllKHR = 4428,-  SpvOpSubgroupAnyKHR = 4429,-  SpvOpSubgroupAllEqualKHR = 4430,-  SpvOpGroupNonUniformRotateKHR = 4431,-  SpvOpSubgroupReadInvocationKHR = 4432,-  SpvOpTraceRayKHR = 4445,-  SpvOpExecuteCallableKHR = 4446,-  SpvOpConvertUToAccelerationStructureKHR = 4447,-  SpvOpIgnoreIntersectionKHR = 4448,-  SpvOpTerminateRayKHR = 4449,-  SpvOpSDot = 4450,-  SpvOpSDotKHR = 4450,-  SpvOpUDot = 4451,-  SpvOpUDotKHR = 4451,-  SpvOpSUDot = 4452,-  SpvOpSUDotKHR = 4452,-  SpvOpSDotAccSat = 4453,-  SpvOpSDotAccSatKHR = 4453,-  SpvOpUDotAccSat = 4454,-  SpvOpUDotAccSatKHR = 4454,-  SpvOpSUDotAccSat = 4455,-  SpvOpSUDotAccSatKHR = 4455,-  SpvOpTypeCooperativeMatrixKHR = 4456,-  SpvOpCooperativeMatrixLoadKHR = 4457,-  SpvOpCooperativeMatrixStoreKHR = 4458,-  SpvOpCooperativeMatrixMulAddKHR = 4459,-  SpvOpCooperativeMatrixLengthKHR = 4460,-  SpvOpTypeRayQueryKHR = 4472,-  SpvOpRayQueryInitializeKHR = 4473,-  SpvOpRayQueryTerminateKHR = 4474,-  SpvOpRayQueryGenerateIntersectionKHR = 4475,-  SpvOpRayQueryConfirmIntersectionKHR = 4476,-  SpvOpRayQueryProceedKHR = 4477,-  SpvOpRayQueryGetIntersectionTypeKHR = 4479,-  SpvOpImageSampleWeightedQCOM = 4480,-  SpvOpImageBoxFilterQCOM = 4481,-  SpvOpImageBlockMatchSSDQCOM = 4482,-  SpvOpImageBlockMatchSADQCOM = 4483,-  SpvOpGroupIAddNonUniformAMD = 5000,-  SpvOpGroupFAddNonUniformAMD = 5001,-  SpvOpGroupFMinNonUniformAMD = 5002,-  SpvOpGroupUMinNonUniformAMD = 5003,-  SpvOpGroupSMinNonUniformAMD = 5004,-  SpvOpGroupFMaxNonUniformAMD = 5005,-  SpvOpGroupUMaxNonUniformAMD = 5006,-  SpvOpGroupSMaxNonUniformAMD = 5007,-  SpvOpFragmentMaskFetchAMD = 5011,-  SpvOpFragmentFetchAMD = 5012,-  SpvOpReadClockKHR = 5056,-  SpvOpHitObjectRecordHitMotionNV = 5249,-  SpvOpHitObjectRecordHitWithIndexMotionNV = 5250,-  SpvOpHitObjectRecordMissMotionNV = 5251,-  SpvOpHitObjectGetWorldToObjectNV = 5252,-  SpvOpHitObjectGetObjectToWorldNV = 5253,-  SpvOpHitObjectGetObjectRayDirectionNV = 5254,-  SpvOpHitObjectGetObjectRayOriginNV = 5255,-  SpvOpHitObjectTraceRayMotionNV = 5256,-  SpvOpHitObjectGetShaderRecordBufferHandleNV = 5257,-  SpvOpHitObjectGetShaderBindingTableRecordIndexNV = 5258,-  SpvOpHitObjectRecordEmptyNV = 5259,-  SpvOpHitObjectTraceRayNV = 5260,-  SpvOpHitObjectRecordHitNV = 5261,-  SpvOpHitObjectRecordHitWithIndexNV = 5262,-  SpvOpHitObjectRecordMissNV = 5263,-  SpvOpHitObjectExecuteShaderNV = 5264,-  SpvOpHitObjectGetCurrentTimeNV = 5265,-  SpvOpHitObjectGetAttributesNV = 5266,-  SpvOpHitObjectGetHitKindNV = 5267,-  SpvOpHitObjectGetPrimitiveIndexNV = 5268,-  SpvOpHitObjectGetGeometryIndexNV = 5269,-  SpvOpHitObjectGetInstanceIdNV = 5270,-  SpvOpHitObjectGetInstanceCustomIndexNV = 5271,-  SpvOpHitObjectGetWorldRayDirectionNV = 5272,-  SpvOpHitObjectGetWorldRayOriginNV = 5273,-  SpvOpHitObjectGetRayTMaxNV = 5274,-  SpvOpHitObjectGetRayTMinNV = 5275,-  SpvOpHitObjectIsEmptyNV = 5276,-  SpvOpHitObjectIsHitNV = 5277,-  SpvOpHitObjectIsMissNV = 5278,-  SpvOpReorderThreadWithHitObjectNV = 5279,-  SpvOpReorderThreadWithHintNV = 5280,-  SpvOpTypeHitObjectNV = 5281,-  SpvOpImageSampleFootprintNV = 5283,-  SpvOpEmitMeshTasksEXT = 5294,-  SpvOpSetMeshOutputsEXT = 5295,-  SpvOpGroupNonUniformPartitionNV = 5296,-  SpvOpWritePackedPrimitiveIndices4x8NV = 5299,-  SpvOpReportIntersectionKHR = 5334,-  SpvOpReportIntersectionNV = 5334,-  SpvOpIgnoreIntersectionNV = 5335,-  SpvOpTerminateRayNV = 5336,-  SpvOpTraceNV = 5337,-  SpvOpTraceMotionNV = 5338,-  SpvOpTraceRayMotionNV = 5339,-  SpvOpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,-  SpvOpTypeAccelerationStructureKHR = 5341,-  SpvOpTypeAccelerationStructureNV = 5341,-  SpvOpExecuteCallableNV = 5344,-  SpvOpTypeCooperativeMatrixNV = 5358,-  SpvOpCooperativeMatrixLoadNV = 5359,-  SpvOpCooperativeMatrixStoreNV = 5360,-  SpvOpCooperativeMatrixMulAddNV = 5361,-  SpvOpCooperativeMatrixLengthNV = 5362,-  SpvOpBeginInvocationInterlockEXT = 5364,-  SpvOpEndInvocationInterlockEXT = 5365,-  SpvOpDemoteToHelperInvocation = 5380,-  SpvOpDemoteToHelperInvocationEXT = 5380,-  SpvOpIsHelperInvocationEXT = 5381,-  SpvOpConvertUToImageNV = 5391,-  SpvOpConvertUToSamplerNV = 5392,-  SpvOpConvertImageToUNV = 5393,-  SpvOpConvertSamplerToUNV = 5394,-  SpvOpConvertUToSampledImageNV = 5395,-  SpvOpConvertSampledImageToUNV = 5396,-  SpvOpSamplerImageAddressingModeNV = 5397,-  SpvOpSubgroupShuffleINTEL = 5571,-  SpvOpSubgroupShuffleDownINTEL = 5572,-  SpvOpSubgroupShuffleUpINTEL = 5573,-  SpvOpSubgroupShuffleXorINTEL = 5574,-  SpvOpSubgroupBlockReadINTEL = 5575,-  SpvOpSubgroupBlockWriteINTEL = 5576,-  SpvOpSubgroupImageBlockReadINTEL = 5577,-  SpvOpSubgroupImageBlockWriteINTEL = 5578,-  SpvOpSubgroupImageMediaBlockReadINTEL = 5580,-  SpvOpSubgroupImageMediaBlockWriteINTEL = 5581,-  SpvOpUCountLeadingZerosINTEL = 5585,-  SpvOpUCountTrailingZerosINTEL = 5586,-  SpvOpAbsISubINTEL = 5587,-  SpvOpAbsUSubINTEL = 5588,-  SpvOpIAddSatINTEL = 5589,-  SpvOpUAddSatINTEL = 5590,-  SpvOpIAverageINTEL = 5591,-  SpvOpUAverageINTEL = 5592,-  SpvOpIAverageRoundedINTEL = 5593,-  SpvOpUAverageRoundedINTEL = 5594,-  SpvOpISubSatINTEL = 5595,-  SpvOpUSubSatINTEL = 5596,-  SpvOpIMul32x16INTEL = 5597,-  SpvOpUMul32x16INTEL = 5598,-  SpvOpConstantFunctionPointerINTEL = 5600,-  SpvOpFunctionPointerCallINTEL = 5601,-  SpvOpAsmTargetINTEL = 5609,-  SpvOpAsmINTEL = 5610,-  SpvOpAsmCallINTEL = 5611,-  SpvOpAtomicFMinEXT = 5614,-  SpvOpAtomicFMaxEXT = 5615,-  SpvOpAssumeTrueKHR = 5630,-  SpvOpExpectKHR = 5631,-  SpvOpDecorateString = 5632,-  SpvOpDecorateStringGOOGLE = 5632,-  SpvOpMemberDecorateString = 5633,-  SpvOpMemberDecorateStringGOOGLE = 5633,-  SpvOpVmeImageINTEL = 5699,-  SpvOpTypeVmeImageINTEL = 5700,-  SpvOpTypeAvcImePayloadINTEL = 5701,-  SpvOpTypeAvcRefPayloadINTEL = 5702,-  SpvOpTypeAvcSicPayloadINTEL = 5703,-  SpvOpTypeAvcMcePayloadINTEL = 5704,-  SpvOpTypeAvcMceResultINTEL = 5705,-  SpvOpTypeAvcImeResultINTEL = 5706,-  SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,-  SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,-  SpvOpTypeAvcImeSingleReferenceStreaminINTEL = 5709,-  SpvOpTypeAvcImeDualReferenceStreaminINTEL = 5710,-  SpvOpTypeAvcRefResultINTEL = 5711,-  SpvOpTypeAvcSicResultINTEL = 5712,-  SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,-  SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,-  SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,-  SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,-  SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,-  SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,-  SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,-  SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,-  SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,-  SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,-  SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,-  SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,-  SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,-  SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,-  SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,-  SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,-  SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,-  SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,-  SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,-  SpvOpSubgroupAvcMceConvertToImePayloadINTEL = 5732,-  SpvOpSubgroupAvcMceConvertToImeResultINTEL = 5733,-  SpvOpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,-  SpvOpSubgroupAvcMceConvertToRefResultINTEL = 5735,-  SpvOpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,-  SpvOpSubgroupAvcMceConvertToSicResultINTEL = 5737,-  SpvOpSubgroupAvcMceGetMotionVectorsINTEL = 5738,-  SpvOpSubgroupAvcMceGetInterDistortionsINTEL = 5739,-  SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,-  SpvOpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,-  SpvOpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,-  SpvOpSubgroupAvcMceGetInterDirectionsINTEL = 5743,-  SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,-  SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,-  SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,-  SpvOpSubgroupAvcImeInitializeINTEL = 5747,-  SpvOpSubgroupAvcImeSetSingleReferenceINTEL = 5748,-  SpvOpSubgroupAvcImeSetDualReferenceINTEL = 5749,-  SpvOpSubgroupAvcImeRefWindowSizeINTEL = 5750,-  SpvOpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,-  SpvOpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,-  SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,-  SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,-  SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,-  SpvOpSubgroupAvcImeSetWeightedSadINTEL = 5756,-  SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,-  SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,-  SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,-  SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,-  SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,-  SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,-  SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,-  SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,-  SpvOpSubgroupAvcImeConvertToMceResultINTEL = 5765,-  SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,-  SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,-  SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,-  SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,-  SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL =-      5770,-  SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL =-      5771,-  SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL =-      5772,-  SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL =-      5773,-  SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,-  SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL =-      5775,-  SpvOpSubgroupAvcImeGetBorderReachedINTEL = 5776,-  SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,-  SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,-  SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,-  SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,-  SpvOpSubgroupAvcFmeInitializeINTEL = 5781,-  SpvOpSubgroupAvcBmeInitializeINTEL = 5782,-  SpvOpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,-  SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,-  SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,-  SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,-  SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,-  SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,-  SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,-  SpvOpSubgroupAvcRefConvertToMceResultINTEL = 5790,-  SpvOpSubgroupAvcSicInitializeINTEL = 5791,-  SpvOpSubgroupAvcSicConfigureSkcINTEL = 5792,-  SpvOpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,-  SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,-  SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,-  SpvOpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,-  SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,-  SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,-  SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,-  SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,-  SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,-  SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,-  SpvOpSubgroupAvcSicEvaluateIpeINTEL = 5803,-  SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,-  SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,-  SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,-  SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,-  SpvOpSubgroupAvcSicConvertToMceResultINTEL = 5808,-  SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,-  SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,-  SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,-  SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,-  SpvOpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,-  SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,-  SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,-  SpvOpSubgroupAvcSicGetInterRawSadsINTEL = 5816,-  SpvOpVariableLengthArrayINTEL = 5818,-  SpvOpSaveMemoryINTEL = 5819,-  SpvOpRestoreMemoryINTEL = 5820,-  SpvOpArbitraryFloatSinCosPiINTEL = 5840,-  SpvOpArbitraryFloatCastINTEL = 5841,-  SpvOpArbitraryFloatCastFromIntINTEL = 5842,-  SpvOpArbitraryFloatCastToIntINTEL = 5843,-  SpvOpArbitraryFloatAddINTEL = 5846,-  SpvOpArbitraryFloatSubINTEL = 5847,-  SpvOpArbitraryFloatMulINTEL = 5848,-  SpvOpArbitraryFloatDivINTEL = 5849,-  SpvOpArbitraryFloatGTINTEL = 5850,-  SpvOpArbitraryFloatGEINTEL = 5851,-  SpvOpArbitraryFloatLTINTEL = 5852,-  SpvOpArbitraryFloatLEINTEL = 5853,-  SpvOpArbitraryFloatEQINTEL = 5854,-  SpvOpArbitraryFloatRecipINTEL = 5855,-  SpvOpArbitraryFloatRSqrtINTEL = 5856,-  SpvOpArbitraryFloatCbrtINTEL = 5857,-  SpvOpArbitraryFloatHypotINTEL = 5858,-  SpvOpArbitraryFloatSqrtINTEL = 5859,-  SpvOpArbitraryFloatLogINTEL = 5860,-  SpvOpArbitraryFloatLog2INTEL = 5861,-  SpvOpArbitraryFloatLog10INTEL = 5862,-  SpvOpArbitraryFloatLog1pINTEL = 5863,-  SpvOpArbitraryFloatExpINTEL = 5864,-  SpvOpArbitraryFloatExp2INTEL = 5865,-  SpvOpArbitraryFloatExp10INTEL = 5866,-  SpvOpArbitraryFloatExpm1INTEL = 5867,-  SpvOpArbitraryFloatSinINTEL = 5868,-  SpvOpArbitraryFloatCosINTEL = 5869,-  SpvOpArbitraryFloatSinCosINTEL = 5870,-  SpvOpArbitraryFloatSinPiINTEL = 5871,-  SpvOpArbitraryFloatCosPiINTEL = 5872,-  SpvOpArbitraryFloatASinINTEL = 5873,-  SpvOpArbitraryFloatASinPiINTEL = 5874,-  SpvOpArbitraryFloatACosINTEL = 5875,-  SpvOpArbitraryFloatACosPiINTEL = 5876,-  SpvOpArbitraryFloatATanINTEL = 5877,-  SpvOpArbitraryFloatATanPiINTEL = 5878,-  SpvOpArbitraryFloatATan2INTEL = 5879,-  SpvOpArbitraryFloatPowINTEL = 5880,-  SpvOpArbitraryFloatPowRINTEL = 5881,-  SpvOpArbitraryFloatPowNINTEL = 5882,-  SpvOpLoopControlINTEL = 5887,-  SpvOpAliasDomainDeclINTEL = 5911,-  SpvOpAliasScopeDeclINTEL = 5912,-  SpvOpAliasScopeListDeclINTEL = 5913,-  SpvOpFixedSqrtINTEL = 5923,-  SpvOpFixedRecipINTEL = 5924,-  SpvOpFixedRsqrtINTEL = 5925,-  SpvOpFixedSinINTEL = 5926,-  SpvOpFixedCosINTEL = 5927,-  SpvOpFixedSinCosINTEL = 5928,-  SpvOpFixedSinPiINTEL = 5929,-  SpvOpFixedCosPiINTEL = 5930,-  SpvOpFixedSinCosPiINTEL = 5931,-  SpvOpFixedLogINTEL = 5932,-  SpvOpFixedExpINTEL = 5933,-  SpvOpPtrCastToCrossWorkgroupINTEL = 5934,-  SpvOpCrossWorkgroupCastToPtrINTEL = 5938,-  SpvOpReadPipeBlockingINTEL = 5946,-  SpvOpWritePipeBlockingINTEL = 5947,-  SpvOpFPGARegINTEL = 5949,-  SpvOpRayQueryGetRayTMinKHR = 6016,-  SpvOpRayQueryGetRayFlagsKHR = 6017,-  SpvOpRayQueryGetIntersectionTKHR = 6018,-  SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,-  SpvOpRayQueryGetIntersectionInstanceIdKHR = 6020,-  SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,-  SpvOpRayQueryGetIntersectionGeometryIndexKHR = 6022,-  SpvOpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,-  SpvOpRayQueryGetIntersectionBarycentricsKHR = 6024,-  SpvOpRayQueryGetIntersectionFrontFaceKHR = 6025,-  SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,-  SpvOpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,-  SpvOpRayQueryGetIntersectionObjectRayOriginKHR = 6028,-  SpvOpRayQueryGetWorldRayDirectionKHR = 6029,-  SpvOpRayQueryGetWorldRayOriginKHR = 6030,-  SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,-  SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,-  SpvOpAtomicFAddEXT = 6035,-  SpvOpTypeBufferSurfaceINTEL = 6086,-  SpvOpTypeStructContinuedINTEL = 6090,-  SpvOpConstantCompositeContinuedINTEL = 6091,-  SpvOpSpecConstantCompositeContinuedINTEL = 6092,-  SpvOpConvertFToBF16INTEL = 6116,-  SpvOpConvertBF16ToFINTEL = 6117,-  SpvOpControlBarrierArriveINTEL = 6142,-  SpvOpControlBarrierWaitINTEL = 6143,-  SpvOpGroupIMulKHR = 6401,-  SpvOpGroupFMulKHR = 6402,-  SpvOpGroupBitwiseAndKHR = 6403,-  SpvOpGroupBitwiseOrKHR = 6404,-  SpvOpGroupBitwiseXorKHR = 6405,-  SpvOpGroupLogicalAndKHR = 6406,-  SpvOpGroupLogicalOrKHR = 6407,-  SpvOpGroupLogicalXorKHR = 6408,-  SpvOpMax = 0x7fffffff,-} SpvOp;--#ifdef SPV_ENABLE_UTILITY_CODE-#ifndef __cplusplus-#include <stdbool.h>-#endif-inline void SpvHasResultAndType(SpvOp opcode, bool* hasResult,-                                bool* hasResultType) {-  *hasResult = *hasResultType = false;-  switch (opcode) {-    default: /* unknown opcode */-      break;-    case SpvOpNop:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpUndef:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSourceContinued:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSource:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSourceExtension:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpName:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpMemberName:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpString:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpLine:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpExtension:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpExtInstImport:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpExtInst:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpMemoryModel:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpEntryPoint:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpExecutionMode:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpCapability:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpTypeVoid:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeBool:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeInt:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeFloat:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeVector:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeMatrix:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeImage:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeSampler:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeSampledImage:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeArray:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeRuntimeArray:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeStruct:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeOpaque:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypePointer:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeFunction:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeEvent:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeDeviceEvent:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeReserveId:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeQueue:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypePipe:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeForwardPointer:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpConstantTrue:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConstantFalse:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConstant:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConstantComposite:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConstantSampler:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConstantNull:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSpecConstantTrue:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSpecConstantFalse:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSpecConstant:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSpecConstantComposite:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSpecConstantOp:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFunction:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFunctionParameter:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFunctionEnd:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpFunctionCall:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpVariable:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageTexelPointer:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLoad:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpStore:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpCopyMemory:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpCopyMemorySized:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpAccessChain:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpInBoundsAccessChain:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpPtrAccessChain:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArrayLength:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGenericPtrMemSemantics:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpInBoundsPtrAccessChain:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDecorate:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpMemberDecorate:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpDecorationGroup:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpGroupDecorate:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpGroupMemberDecorate:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpVectorExtractDynamic:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpVectorInsertDynamic:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpVectorShuffle:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCompositeConstruct:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCompositeExtract:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCompositeInsert:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCopyObject:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTranspose:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSampledImage:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleImplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleExplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleDrefImplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleDrefExplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleProjImplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleProjExplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleProjDrefImplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleProjDrefExplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageFetch:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageGather:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageDrefGather:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageRead:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageWrite:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpImage:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageQueryFormat:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageQueryOrder:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageQuerySizeLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageQuerySize:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageQueryLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageQueryLevels:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageQuerySamples:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertFToU:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertFToS:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertSToF:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertUToF:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUConvert:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSConvert:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFConvert:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpQuantizeToF16:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertPtrToU:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSatConvertSToU:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSatConvertUToS:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertUToPtr:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpPtrCastToGeneric:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGenericCastToPtr:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGenericCastToPtrExplicit:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitcast:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSNegate:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFNegate:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIAdd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFAdd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpISub:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFSub:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIMul:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFMul:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUDiv:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSDiv:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFDiv:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUMod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSRem:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSMod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFRem:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFMod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpVectorTimesScalar:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpMatrixTimesScalar:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpVectorTimesMatrix:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpMatrixTimesVector:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpMatrixTimesMatrix:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpOuterProduct:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDot:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIAddCarry:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpISubBorrow:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUMulExtended:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSMulExtended:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAny:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAll:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIsNan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIsInf:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIsFinite:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIsNormal:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSignBitSet:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLessOrGreater:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpOrdered:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUnordered:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLogicalEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLogicalNotEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLogicalOr:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLogicalAnd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLogicalNot:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSelect:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpINotEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUGreaterThan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSGreaterThan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUGreaterThanEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSGreaterThanEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpULessThan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSLessThan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpULessThanEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSLessThanEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFOrdEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFUnordEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFOrdNotEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFUnordNotEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFOrdLessThan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFUnordLessThan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFOrdGreaterThan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFUnordGreaterThan:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFOrdLessThanEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFUnordLessThanEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFOrdGreaterThanEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFUnordGreaterThanEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpShiftRightLogical:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpShiftRightArithmetic:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpShiftLeftLogical:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitwiseOr:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitwiseXor:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitwiseAnd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpNot:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitFieldInsert:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitFieldSExtract:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitFieldUExtract:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitReverse:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBitCount:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDPdx:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDPdy:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFwidth:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDPdxFine:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDPdyFine:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFwidthFine:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDPdxCoarse:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDPdyCoarse:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFwidthCoarse:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpEmitVertex:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpEndPrimitive:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpEmitStreamVertex:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpEndStreamPrimitive:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpControlBarrier:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpMemoryBarrier:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpAtomicLoad:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicStore:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpAtomicExchange:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicCompareExchange:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicCompareExchangeWeak:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicIIncrement:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicIDecrement:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicIAdd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicISub:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicSMin:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicUMin:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicSMax:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicUMax:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicAnd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicOr:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicXor:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpPhi:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLoopMerge:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSelectionMerge:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpLabel:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpBranch:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpBranchConditional:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSwitch:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpKill:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpReturn:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpReturnValue:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpUnreachable:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpLifetimeStart:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpLifetimeStop:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpGroupAsyncCopy:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupWaitEvents:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpGroupAll:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupAny:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupBroadcast:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupIAdd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupFAdd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupFMin:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupUMin:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupSMin:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupFMax:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupUMax:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupSMax:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpReadPipe:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpWritePipe:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpReservedReadPipe:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpReservedWritePipe:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpReserveReadPipePackets:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpReserveWritePipePackets:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCommitReadPipe:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpCommitWritePipe:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpIsValidReserveId:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGetNumPipePackets:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGetMaxPipePackets:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupReserveReadPipePackets:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupReserveWritePipePackets:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupCommitReadPipe:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpGroupCommitWritePipe:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpEnqueueMarker:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpEnqueueKernel:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGetKernelNDrangeSubGroupCount:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGetKernelNDrangeMaxSubGroupSize:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGetKernelWorkGroupSize:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGetKernelPreferredWorkGroupSizeMultiple:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRetainEvent:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpReleaseEvent:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpCreateUserEvent:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIsValidEvent:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSetUserEventStatus:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpCaptureEventProfilingInfo:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpGetDefaultQueue:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBuildNDRange:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseSampleImplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseSampleExplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseSampleDrefImplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseSampleDrefExplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseSampleProjImplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseSampleProjExplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseSampleProjDrefImplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseSampleProjDrefExplicitLod:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseFetch:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseGather:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseDrefGather:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSparseTexelsResident:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpNoLine:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpAtomicFlagTestAndSet:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicFlagClear:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpImageSparseRead:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSizeOf:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTypePipeStorage:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpConstantPipeStorage:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCreatePipeFromPipeStorage:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGetKernelLocalSizeForSubgroupCount:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGetKernelMaxNumSubgroups:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTypeNamedBarrier:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpNamedBarrierInitialize:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpMemoryNamedBarrier:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpModuleProcessed:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpExecutionModeId:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpDecorateId:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpGroupNonUniformElect:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformAll:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformAny:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformAllEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBroadcast:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBroadcastFirst:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBallot:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformInverseBallot:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBallotBitExtract:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBallotBitCount:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBallotFindLSB:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBallotFindMSB:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformShuffle:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformShuffleXor:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformShuffleUp:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformShuffleDown:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformIAdd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformFAdd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformIMul:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformFMul:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformSMin:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformUMin:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformFMin:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformSMax:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformUMax:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformFMax:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBitwiseAnd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBitwiseOr:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformBitwiseXor:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformLogicalAnd:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformLogicalOr:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformLogicalXor:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformQuadBroadcast:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformQuadSwap:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCopyLogical:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpPtrEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpPtrNotEqual:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpPtrDiff:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpColorAttachmentReadEXT:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDepthAttachmentReadEXT:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpStencilAttachmentReadEXT:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTerminateInvocation:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSubgroupBallotKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupFirstInvocationKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAllKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAnyKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAllEqualKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupNonUniformRotateKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupReadInvocationKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTraceRayKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpExecuteCallableKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpConvertUToAccelerationStructureKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIgnoreIntersectionKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpTerminateRayKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSDot:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUDot:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSUDot:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSDotAccSat:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUDotAccSat:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSUDotAccSat:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTypeCooperativeMatrixKHR:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpCooperativeMatrixLoadKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCooperativeMatrixStoreKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpCooperativeMatrixMulAddKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCooperativeMatrixLengthKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTypeRayQueryKHR:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpRayQueryInitializeKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpRayQueryTerminateKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpRayQueryGenerateIntersectionKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpRayQueryConfirmIntersectionKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpRayQueryProceedKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionTypeKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageSampleWeightedQCOM:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageBoxFilterQCOM:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageBlockMatchSSDQCOM:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpImageBlockMatchSADQCOM:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupIAddNonUniformAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupFAddNonUniformAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupFMinNonUniformAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupUMinNonUniformAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupSMinNonUniformAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupFMaxNonUniformAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupUMaxNonUniformAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupSMaxNonUniformAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFragmentMaskFetchAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFragmentFetchAMD:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpReadClockKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectRecordHitMotionNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectRecordHitWithIndexMotionNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectRecordMissMotionNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectGetWorldToObjectNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetObjectToWorldNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetObjectRayDirectionNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetObjectRayOriginNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectTraceRayMotionNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectGetShaderRecordBufferHandleNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetShaderBindingTableRecordIndexNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectRecordEmptyNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectTraceRayNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectRecordHitNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectRecordHitWithIndexNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectRecordMissNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectExecuteShaderNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectGetCurrentTimeNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetAttributesNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpHitObjectGetHitKindNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetPrimitiveIndexNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetGeometryIndexNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetInstanceIdNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetInstanceCustomIndexNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetWorldRayDirectionNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetWorldRayOriginNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetRayTMaxNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectGetRayTMinNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectIsEmptyNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectIsHitNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpHitObjectIsMissNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpReorderThreadWithHitObjectNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpReorderThreadWithHintNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpTypeHitObjectNV:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpImageSampleFootprintNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpEmitMeshTasksEXT:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSetMeshOutputsEXT:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpGroupNonUniformPartitionNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpWritePackedPrimitiveIndices4x8NV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpReportIntersectionNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIgnoreIntersectionNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpTerminateRayNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpTraceNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpTraceMotionNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpTraceRayMotionNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpRayQueryGetIntersectionTriangleVertexPositionsKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTypeAccelerationStructureNV:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpExecuteCallableNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpTypeCooperativeMatrixNV:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpCooperativeMatrixLoadNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCooperativeMatrixStoreNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpCooperativeMatrixMulAddNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCooperativeMatrixLengthNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpBeginInvocationInterlockEXT:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpEndInvocationInterlockEXT:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpDemoteToHelperInvocation:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpIsHelperInvocationEXT:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertUToImageNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertUToSamplerNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertImageToUNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertSamplerToUNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertUToSampledImageNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertSampledImageToUNV:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSamplerImageAddressingModeNV:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSubgroupShuffleINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupShuffleDownINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupShuffleUpINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupShuffleXorINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupBlockReadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupBlockWriteINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSubgroupImageBlockReadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupImageBlockWriteINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSubgroupImageMediaBlockReadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupImageMediaBlockWriteINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpUCountLeadingZerosINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUCountTrailingZerosINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAbsISubINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAbsUSubINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIAddSatINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUAddSatINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIAverageINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUAverageINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIAverageRoundedINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUAverageRoundedINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpISubSatINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUSubSatINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpIMul32x16INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpUMul32x16INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConstantFunctionPointerINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFunctionPointerCallINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAsmTargetINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAsmINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAsmCallINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicFMinEXT:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicFMaxEXT:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAssumeTrueKHR:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpExpectKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpDecorateString:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpMemberDecorateString:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpVmeImageINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTypeVmeImageINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcImePayloadINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcRefPayloadINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcSicPayloadINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcMcePayloadINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcMceResultINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcImeResultINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcImeSingleReferenceStreaminINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcImeDualReferenceStreaminINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcRefResultINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeAvcSicResultINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceConvertToImePayloadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceConvertToImeResultINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceConvertToRefResultINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceConvertToSicResultINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetMotionVectorsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetInterDistortionsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetInterDirectionsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeInitializeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeSetSingleReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeSetDualReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeRefWindowSizeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeSetWeightedSadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeConvertToMceResultINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetBorderReachedINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcFmeInitializeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcBmeInitializeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcRefConvertToMceResultINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicInitializeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicConfigureSkcINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicEvaluateIpeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicConvertToMceResultINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSubgroupAvcSicGetInterRawSadsINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpVariableLengthArrayINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpSaveMemoryINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRestoreMemoryINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpArbitraryFloatSinCosPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatCastINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatCastFromIntINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatCastToIntINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatAddINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatSubINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatMulINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatDivINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatGTINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatGEINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatLTINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatLEINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatEQINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatRecipINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatRSqrtINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatCbrtINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatHypotINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatSqrtINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatLogINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatLog2INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatLog10INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatLog1pINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatExpINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatExp2INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatExp10INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatExpm1INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatSinINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatCosINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatSinCosINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatSinPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatCosPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatASinINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatASinPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatACosINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatACosPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatATanINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatATanPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatATan2INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatPowINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatPowRINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpArbitraryFloatPowNINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpLoopControlINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpAliasDomainDeclINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpAliasScopeDeclINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpAliasScopeListDeclINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpFixedSqrtINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedRecipINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedRsqrtINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedSinINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedCosINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedSinCosINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedSinPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedCosPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedSinCosPiINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedLogINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFixedExpINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpPtrCastToCrossWorkgroupINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpCrossWorkgroupCastToPtrINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpReadPipeBlockingINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpWritePipeBlockingINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpFPGARegINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetRayTMinKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetRayFlagsKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionTKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionInstanceIdKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionGeometryIndexKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionBarycentricsKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionFrontFaceKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionObjectRayOriginKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetWorldRayDirectionKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetWorldRayOriginKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionObjectToWorldKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpRayQueryGetIntersectionWorldToObjectKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpAtomicFAddEXT:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpTypeBufferSurfaceINTEL:-      *hasResult = true;-      *hasResultType = false;-      break;-    case SpvOpTypeStructContinuedINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpConstantCompositeContinuedINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpSpecConstantCompositeContinuedINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpConvertFToBF16INTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpConvertBF16ToFINTEL:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpControlBarrierArriveINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpControlBarrierWaitINTEL:-      *hasResult = false;-      *hasResultType = false;-      break;-    case SpvOpGroupIMulKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupFMulKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupBitwiseAndKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupBitwiseOrKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupBitwiseXorKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupLogicalAndKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupLogicalOrKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-    case SpvOpGroupLogicalXorKHR:-      *hasResult = true;-      *hasResultType = true;-      break;-  }-}+** Copyright: 2014-2024 The Khronos Group Inc.+** License: MIT+**+** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS+** KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS+** SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT+** https://www.khronos.org/registry/+*/++/*+** This header is automatically generated by the same tool that creates+** the Binary Section of the SPIR-V specification.+*/++/*+** Enumeration tokens for SPIR-V, in various styles:+**   C, C++, C++11, JSON, Lua, Python, C#, D, Beef+**+** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL+** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL+** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL+** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL+** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']+** - C# will use enum classes in the Specification class located in the "Spv" namespace,+**     e.g.: Spv.Specification.SourceLanguage.GLSL+** - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL+** - Beef will use enum classes in the Specification class located in the "Spv" namespace,+**     e.g.: Spv.Specification.SourceLanguage.GLSL+**+** Some tokens act like mask values, which can be OR'd together,+** while others are mutually exclusive.  The mask-like ones have+** "Mask" in their name, and a parallel enum that has the shift+** amount (1 << x) for each corresponding enumerant.+*/++#ifndef spirv_H+#define spirv_H++typedef unsigned int SpvId;++#define SPV_VERSION 0x10600+#define SPV_REVISION 1++static const unsigned int SpvMagicNumber = 0x07230203;+static const unsigned int SpvVersion = 0x00010600;+static const unsigned int SpvRevision = 1;+static const unsigned int SpvOpCodeMask = 0xffff;+static const unsigned int SpvWordCountShift = 16;++typedef enum SpvSourceLanguage_ {+  SpvSourceLanguageUnknown = 0,+  SpvSourceLanguageESSL = 1,+  SpvSourceLanguageGLSL = 2,+  SpvSourceLanguageOpenCL_C = 3,+  SpvSourceLanguageOpenCL_CPP = 4,+  SpvSourceLanguageHLSL = 5,+  SpvSourceLanguageCPP_for_OpenCL = 6,+  SpvSourceLanguageSYCL = 7,+  SpvSourceLanguageHERO_C = 8,+  SpvSourceLanguageNZSL = 9,+  SpvSourceLanguageWGSL = 10,+  SpvSourceLanguageSlang = 11,+  SpvSourceLanguageZig = 12,+  SpvSourceLanguageRust = 13,+  SpvSourceLanguageMax = 0x7fffffff,+} SpvSourceLanguage;++typedef enum SpvExecutionModel_ {+  SpvExecutionModelVertex = 0,+  SpvExecutionModelTessellationControl = 1,+  SpvExecutionModelTessellationEvaluation = 2,+  SpvExecutionModelGeometry = 3,+  SpvExecutionModelFragment = 4,+  SpvExecutionModelGLCompute = 5,+  SpvExecutionModelKernel = 6,+  SpvExecutionModelTaskNV = 5267,+  SpvExecutionModelMeshNV = 5268,+  SpvExecutionModelRayGenerationKHR = 5313,+  SpvExecutionModelRayGenerationNV = 5313,+  SpvExecutionModelIntersectionKHR = 5314,+  SpvExecutionModelIntersectionNV = 5314,+  SpvExecutionModelAnyHitKHR = 5315,+  SpvExecutionModelAnyHitNV = 5315,+  SpvExecutionModelClosestHitKHR = 5316,+  SpvExecutionModelClosestHitNV = 5316,+  SpvExecutionModelMissKHR = 5317,+  SpvExecutionModelMissNV = 5317,+  SpvExecutionModelCallableKHR = 5318,+  SpvExecutionModelCallableNV = 5318,+  SpvExecutionModelTaskEXT = 5364,+  SpvExecutionModelMeshEXT = 5365,+  SpvExecutionModelMax = 0x7fffffff,+} SpvExecutionModel;++typedef enum SpvAddressingModel_ {+  SpvAddressingModelLogical = 0,+  SpvAddressingModelPhysical32 = 1,+  SpvAddressingModelPhysical64 = 2,+  SpvAddressingModelPhysicalStorageBuffer64 = 5348,+  SpvAddressingModelPhysicalStorageBuffer64EXT = 5348,+  SpvAddressingModelMax = 0x7fffffff,+} SpvAddressingModel;++typedef enum SpvMemoryModel_ {+  SpvMemoryModelSimple = 0,+  SpvMemoryModelGLSL450 = 1,+  SpvMemoryModelOpenCL = 2,+  SpvMemoryModelVulkan = 3,+  SpvMemoryModelVulkanKHR = 3,+  SpvMemoryModelMax = 0x7fffffff,+} SpvMemoryModel;++typedef enum SpvExecutionMode_ {+  SpvExecutionModeInvocations = 0,+  SpvExecutionModeSpacingEqual = 1,+  SpvExecutionModeSpacingFractionalEven = 2,+  SpvExecutionModeSpacingFractionalOdd = 3,+  SpvExecutionModeVertexOrderCw = 4,+  SpvExecutionModeVertexOrderCcw = 5,+  SpvExecutionModePixelCenterInteger = 6,+  SpvExecutionModeOriginUpperLeft = 7,+  SpvExecutionModeOriginLowerLeft = 8,+  SpvExecutionModeEarlyFragmentTests = 9,+  SpvExecutionModePointMode = 10,+  SpvExecutionModeXfb = 11,+  SpvExecutionModeDepthReplacing = 12,+  SpvExecutionModeDepthGreater = 14,+  SpvExecutionModeDepthLess = 15,+  SpvExecutionModeDepthUnchanged = 16,+  SpvExecutionModeLocalSize = 17,+  SpvExecutionModeLocalSizeHint = 18,+  SpvExecutionModeInputPoints = 19,+  SpvExecutionModeInputLines = 20,+  SpvExecutionModeInputLinesAdjacency = 21,+  SpvExecutionModeTriangles = 22,+  SpvExecutionModeInputTrianglesAdjacency = 23,+  SpvExecutionModeQuads = 24,+  SpvExecutionModeIsolines = 25,+  SpvExecutionModeOutputVertices = 26,+  SpvExecutionModeOutputPoints = 27,+  SpvExecutionModeOutputLineStrip = 28,+  SpvExecutionModeOutputTriangleStrip = 29,+  SpvExecutionModeVecTypeHint = 30,+  SpvExecutionModeContractionOff = 31,+  SpvExecutionModeInitializer = 33,+  SpvExecutionModeFinalizer = 34,+  SpvExecutionModeSubgroupSize = 35,+  SpvExecutionModeSubgroupsPerWorkgroup = 36,+  SpvExecutionModeSubgroupsPerWorkgroupId = 37,+  SpvExecutionModeLocalSizeId = 38,+  SpvExecutionModeLocalSizeHintId = 39,+  SpvExecutionModeNonCoherentColorAttachmentReadEXT = 4169,+  SpvExecutionModeNonCoherentDepthAttachmentReadEXT = 4170,+  SpvExecutionModeNonCoherentStencilAttachmentReadEXT = 4171,+  SpvExecutionModeSubgroupUniformControlFlowKHR = 4421,+  SpvExecutionModePostDepthCoverage = 4446,+  SpvExecutionModeDenormPreserve = 4459,+  SpvExecutionModeDenormFlushToZero = 4460,+  SpvExecutionModeSignedZeroInfNanPreserve = 4461,+  SpvExecutionModeRoundingModeRTE = 4462,+  SpvExecutionModeRoundingModeRTZ = 4463,+  SpvExecutionModeNonCoherentTileAttachmentReadQCOM = 4489,+  SpvExecutionModeTileShadingRateQCOM = 4490,+  SpvExecutionModeEarlyAndLateFragmentTestsAMD = 5017,+  SpvExecutionModeStencilRefReplacingEXT = 5027,+  SpvExecutionModeCoalescingAMDX = 5069,+  SpvExecutionModeIsApiEntryAMDX = 5070,+  SpvExecutionModeMaxNodeRecursionAMDX = 5071,+  SpvExecutionModeStaticNumWorkgroupsAMDX = 5072,+  SpvExecutionModeShaderIndexAMDX = 5073,+  SpvExecutionModeMaxNumWorkgroupsAMDX = 5077,+  SpvExecutionModeStencilRefUnchangedFrontAMD = 5079,+  SpvExecutionModeStencilRefGreaterFrontAMD = 5080,+  SpvExecutionModeStencilRefLessFrontAMD = 5081,+  SpvExecutionModeStencilRefUnchangedBackAMD = 5082,+  SpvExecutionModeStencilRefGreaterBackAMD = 5083,+  SpvExecutionModeStencilRefLessBackAMD = 5084,+  SpvExecutionModeQuadDerivativesKHR = 5088,+  SpvExecutionModeRequireFullQuadsKHR = 5089,+  SpvExecutionModeSharesInputWithAMDX = 5102,+  SpvExecutionModeArithmeticPoisonKHR = 5157,+  SpvExecutionModeOutputLinesEXT = 5269,+  SpvExecutionModeOutputLinesNV = 5269,+  SpvExecutionModeOutputPrimitivesEXT = 5270,+  SpvExecutionModeOutputPrimitivesNV = 5270,+  SpvExecutionModeDerivativeGroupQuadsKHR = 5289,+  SpvExecutionModeDerivativeGroupQuadsNV = 5289,+  SpvExecutionModeDerivativeGroupLinearKHR = 5290,+  SpvExecutionModeDerivativeGroupLinearNV = 5290,+  SpvExecutionModeOutputTrianglesEXT = 5298,+  SpvExecutionModeOutputTrianglesNV = 5298,+  SpvExecutionModePixelInterlockOrderedEXT = 5366,+  SpvExecutionModePixelInterlockUnorderedEXT = 5367,+  SpvExecutionModeSampleInterlockOrderedEXT = 5368,+  SpvExecutionModeSampleInterlockUnorderedEXT = 5369,+  SpvExecutionModeShadingRateInterlockOrderedEXT = 5370,+  SpvExecutionModeShadingRateInterlockUnorderedEXT = 5371,+  SpvExecutionModeShader64BitIndexingEXT = 5427,+  SpvExecutionModeSharedLocalMemorySizeINTEL = 5618,+  SpvExecutionModeRoundingModeRTPINTEL = 5620,+  SpvExecutionModeRoundingModeRTNINTEL = 5621,+  SpvExecutionModeFloatingPointModeALTINTEL = 5622,+  SpvExecutionModeFloatingPointModeIEEEINTEL = 5623,+  SpvExecutionModeMaxWorkgroupSizeINTEL = 5893,+  SpvExecutionModeMaxWorkDimINTEL = 5894,+  SpvExecutionModeNoGlobalOffsetINTEL = 5895,+  SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,+  SpvExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,+  SpvExecutionModeMaximallyReconvergesKHR = 6023,+  SpvExecutionModeFPFastMathDefault = 6028,+  SpvExecutionModeStreamingInterfaceINTEL = 6154,+  SpvExecutionModeRegisterMapInterfaceINTEL = 6160,+  SpvExecutionModeNamedBarrierCountINTEL = 6417,+  SpvExecutionModeMaximumRegistersINTEL = 6461,+  SpvExecutionModeMaximumRegistersIdINTEL = 6462,+  SpvExecutionModeNamedMaximumRegistersINTEL = 6463,+  SpvExecutionModeMax = 0x7fffffff,+} SpvExecutionMode;++typedef enum SpvStorageClass_ {+  SpvStorageClassUniformConstant = 0,+  SpvStorageClassInput = 1,+  SpvStorageClassUniform = 2,+  SpvStorageClassOutput = 3,+  SpvStorageClassWorkgroup = 4,+  SpvStorageClassCrossWorkgroup = 5,+  SpvStorageClassPrivate = 6,+  SpvStorageClassFunction = 7,+  SpvStorageClassGeneric = 8,+  SpvStorageClassPushConstant = 9,+  SpvStorageClassAtomicCounter = 10,+  SpvStorageClassImage = 11,+  SpvStorageClassStorageBuffer = 12,+  SpvStorageClassTileImageEXT = 4172,+  SpvStorageClassTileAttachmentQCOM = 4491,+  SpvStorageClassNodePayloadAMDX = 5068,+  SpvStorageClassCallableDataKHR = 5328,+  SpvStorageClassCallableDataNV = 5328,+  SpvStorageClassIncomingCallableDataKHR = 5329,+  SpvStorageClassIncomingCallableDataNV = 5329,+  SpvStorageClassRayPayloadKHR = 5338,+  SpvStorageClassRayPayloadNV = 5338,+  SpvStorageClassHitAttributeKHR = 5339,+  SpvStorageClassHitAttributeNV = 5339,+  SpvStorageClassIncomingRayPayloadKHR = 5342,+  SpvStorageClassIncomingRayPayloadNV = 5342,+  SpvStorageClassShaderRecordBufferKHR = 5343,+  SpvStorageClassShaderRecordBufferNV = 5343,+  SpvStorageClassPhysicalStorageBuffer = 5349,+  SpvStorageClassPhysicalStorageBufferEXT = 5349,+  SpvStorageClassHitObjectAttributeNV = 5385,+  SpvStorageClassTaskPayloadWorkgroupEXT = 5402,+  SpvStorageClassHitObjectAttributeEXT = 5411,+  SpvStorageClassCodeSectionINTEL = 5605,+  SpvStorageClassDeviceOnlyALTERA = 5936,+  SpvStorageClassDeviceOnlyINTEL = 5936,+  SpvStorageClassHostOnlyALTERA = 5937,+  SpvStorageClassHostOnlyINTEL = 5937,+  SpvStorageClassMax = 0x7fffffff,+} SpvStorageClass;++typedef enum SpvDim_ {+  SpvDim1D = 0,+  SpvDim2D = 1,+  SpvDim3D = 2,+  SpvDimCube = 3,+  SpvDimRect = 4,+  SpvDimBuffer = 5,+  SpvDimSubpassData = 6,+  SpvDimTileImageDataEXT = 4173,+  SpvDimMax = 0x7fffffff,+} SpvDim;++typedef enum SpvSamplerAddressingMode_ {+  SpvSamplerAddressingModeNone = 0,+  SpvSamplerAddressingModeClampToEdge = 1,+  SpvSamplerAddressingModeClamp = 2,+  SpvSamplerAddressingModeRepeat = 3,+  SpvSamplerAddressingModeRepeatMirrored = 4,+  SpvSamplerAddressingModeMax = 0x7fffffff,+} SpvSamplerAddressingMode;++typedef enum SpvSamplerFilterMode_ {+  SpvSamplerFilterModeNearest = 0,+  SpvSamplerFilterModeLinear = 1,+  SpvSamplerFilterModeMax = 0x7fffffff,+} SpvSamplerFilterMode;++typedef enum SpvImageFormat_ {+  SpvImageFormatUnknown = 0,+  SpvImageFormatRgba32f = 1,+  SpvImageFormatRgba16f = 2,+  SpvImageFormatR32f = 3,+  SpvImageFormatRgba8 = 4,+  SpvImageFormatRgba8Snorm = 5,+  SpvImageFormatRg32f = 6,+  SpvImageFormatRg16f = 7,+  SpvImageFormatR11fG11fB10f = 8,+  SpvImageFormatR16f = 9,+  SpvImageFormatRgba16 = 10,+  SpvImageFormatRgb10A2 = 11,+  SpvImageFormatRg16 = 12,+  SpvImageFormatRg8 = 13,+  SpvImageFormatR16 = 14,+  SpvImageFormatR8 = 15,+  SpvImageFormatRgba16Snorm = 16,+  SpvImageFormatRg16Snorm = 17,+  SpvImageFormatRg8Snorm = 18,+  SpvImageFormatR16Snorm = 19,+  SpvImageFormatR8Snorm = 20,+  SpvImageFormatRgba32i = 21,+  SpvImageFormatRgba16i = 22,+  SpvImageFormatRgba8i = 23,+  SpvImageFormatR32i = 24,+  SpvImageFormatRg32i = 25,+  SpvImageFormatRg16i = 26,+  SpvImageFormatRg8i = 27,+  SpvImageFormatR16i = 28,+  SpvImageFormatR8i = 29,+  SpvImageFormatRgba32ui = 30,+  SpvImageFormatRgba16ui = 31,+  SpvImageFormatRgba8ui = 32,+  SpvImageFormatR32ui = 33,+  SpvImageFormatRgb10a2ui = 34,+  SpvImageFormatRg32ui = 35,+  SpvImageFormatRg16ui = 36,+  SpvImageFormatRg8ui = 37,+  SpvImageFormatR16ui = 38,+  SpvImageFormatR8ui = 39,+  SpvImageFormatR64ui = 40,+  SpvImageFormatR64i = 41,+  SpvImageFormatMax = 0x7fffffff,+} SpvImageFormat;++typedef enum SpvImageChannelOrder_ {+  SpvImageChannelOrderR = 0,+  SpvImageChannelOrderA = 1,+  SpvImageChannelOrderRG = 2,+  SpvImageChannelOrderRA = 3,+  SpvImageChannelOrderRGB = 4,+  SpvImageChannelOrderRGBA = 5,+  SpvImageChannelOrderBGRA = 6,+  SpvImageChannelOrderARGB = 7,+  SpvImageChannelOrderIntensity = 8,+  SpvImageChannelOrderLuminance = 9,+  SpvImageChannelOrderRx = 10,+  SpvImageChannelOrderRGx = 11,+  SpvImageChannelOrderRGBx = 12,+  SpvImageChannelOrderDepth = 13,+  SpvImageChannelOrderDepthStencil = 14,+  SpvImageChannelOrdersRGB = 15,+  SpvImageChannelOrdersRGBx = 16,+  SpvImageChannelOrdersRGBA = 17,+  SpvImageChannelOrdersBGRA = 18,+  SpvImageChannelOrderABGR = 19,+  SpvImageChannelOrderMax = 0x7fffffff,+} SpvImageChannelOrder;++typedef enum SpvImageChannelDataType_ {+  SpvImageChannelDataTypeSnormInt8 = 0,+  SpvImageChannelDataTypeSnormInt16 = 1,+  SpvImageChannelDataTypeUnormInt8 = 2,+  SpvImageChannelDataTypeUnormInt16 = 3,+  SpvImageChannelDataTypeUnormShort565 = 4,+  SpvImageChannelDataTypeUnormShort555 = 5,+  SpvImageChannelDataTypeUnormInt101010 = 6,+  SpvImageChannelDataTypeSignedInt8 = 7,+  SpvImageChannelDataTypeSignedInt16 = 8,+  SpvImageChannelDataTypeSignedInt32 = 9,+  SpvImageChannelDataTypeUnsignedInt8 = 10,+  SpvImageChannelDataTypeUnsignedInt16 = 11,+  SpvImageChannelDataTypeUnsignedInt32 = 12,+  SpvImageChannelDataTypeHalfFloat = 13,+  SpvImageChannelDataTypeFloat = 14,+  SpvImageChannelDataTypeUnormInt24 = 15,+  SpvImageChannelDataTypeUnormInt101010_2 = 16,+  SpvImageChannelDataTypeUnormInt10X6EXT = 17,+  SpvImageChannelDataTypeUnsignedIntRaw10EXT = 19,+  SpvImageChannelDataTypeUnsignedIntRaw12EXT = 20,+  SpvImageChannelDataTypeUnormInt2_101010EXT = 21,+  SpvImageChannelDataTypeUnsignedInt10X6EXT = 22,+  SpvImageChannelDataTypeUnsignedInt12X4EXT = 23,+  SpvImageChannelDataTypeUnsignedInt14X2EXT = 24,+  SpvImageChannelDataTypeUnormInt12X4EXT = 25,+  SpvImageChannelDataTypeUnormInt14X2EXT = 26,+  SpvImageChannelDataTypeMax = 0x7fffffff,+} SpvImageChannelDataType;++typedef enum SpvImageOperandsShift_ {+  SpvImageOperandsBiasShift = 0,+  SpvImageOperandsLodShift = 1,+  SpvImageOperandsGradShift = 2,+  SpvImageOperandsConstOffsetShift = 3,+  SpvImageOperandsOffsetShift = 4,+  SpvImageOperandsConstOffsetsShift = 5,+  SpvImageOperandsSampleShift = 6,+  SpvImageOperandsMinLodShift = 7,+  SpvImageOperandsMakeTexelAvailableShift = 8,+  SpvImageOperandsMakeTexelAvailableKHRShift = 8,+  SpvImageOperandsMakeTexelVisibleShift = 9,+  SpvImageOperandsMakeTexelVisibleKHRShift = 9,+  SpvImageOperandsNonPrivateTexelShift = 10,+  SpvImageOperandsNonPrivateTexelKHRShift = 10,+  SpvImageOperandsVolatileTexelShift = 11,+  SpvImageOperandsVolatileTexelKHRShift = 11,+  SpvImageOperandsSignExtendShift = 12,+  SpvImageOperandsZeroExtendShift = 13,+  SpvImageOperandsNontemporalShift = 14,+  SpvImageOperandsOffsetsShift = 16,+  SpvImageOperandsMax = 0x7fffffff,+} SpvImageOperandsShift;++typedef enum SpvImageOperandsMask_ {+  SpvImageOperandsMaskNone = 0,+  SpvImageOperandsBiasMask = 0x00000001,+  SpvImageOperandsLodMask = 0x00000002,+  SpvImageOperandsGradMask = 0x00000004,+  SpvImageOperandsConstOffsetMask = 0x00000008,+  SpvImageOperandsOffsetMask = 0x00000010,+  SpvImageOperandsConstOffsetsMask = 0x00000020,+  SpvImageOperandsSampleMask = 0x00000040,+  SpvImageOperandsMinLodMask = 0x00000080,+  SpvImageOperandsMakeTexelAvailableMask = 0x00000100,+  SpvImageOperandsMakeTexelAvailableKHRMask = 0x00000100,+  SpvImageOperandsMakeTexelVisibleMask = 0x00000200,+  SpvImageOperandsMakeTexelVisibleKHRMask = 0x00000200,+  SpvImageOperandsNonPrivateTexelMask = 0x00000400,+  SpvImageOperandsNonPrivateTexelKHRMask = 0x00000400,+  SpvImageOperandsVolatileTexelMask = 0x00000800,+  SpvImageOperandsVolatileTexelKHRMask = 0x00000800,+  SpvImageOperandsSignExtendMask = 0x00001000,+  SpvImageOperandsZeroExtendMask = 0x00002000,+  SpvImageOperandsNontemporalMask = 0x00004000,+  SpvImageOperandsOffsetsMask = 0x00010000,+} SpvImageOperandsMask;++typedef enum SpvFPFastMathModeShift_ {+  SpvFPFastMathModeNotNaNShift = 0,+  SpvFPFastMathModeNotInfShift = 1,+  SpvFPFastMathModeNSZShift = 2,+  SpvFPFastMathModeAllowRecipShift = 3,+  SpvFPFastMathModeFastShift = 4,+  SpvFPFastMathModeAllowContractShift = 16,+  SpvFPFastMathModeAllowContractFastINTELShift = 16,+  SpvFPFastMathModeAllowReassocShift = 17,+  SpvFPFastMathModeAllowReassocINTELShift = 17,+  SpvFPFastMathModeAllowTransformShift = 18,+  SpvFPFastMathModeMax = 0x7fffffff,+} SpvFPFastMathModeShift;++typedef enum SpvFPFastMathModeMask_ {+  SpvFPFastMathModeMaskNone = 0,+  SpvFPFastMathModeNotNaNMask = 0x00000001,+  SpvFPFastMathModeNotInfMask = 0x00000002,+  SpvFPFastMathModeNSZMask = 0x00000004,+  SpvFPFastMathModeAllowRecipMask = 0x00000008,+  SpvFPFastMathModeFastMask = 0x00000010,+  SpvFPFastMathModeAllowContractMask = 0x00010000,+  SpvFPFastMathModeAllowContractFastINTELMask = 0x00010000,+  SpvFPFastMathModeAllowReassocMask = 0x00020000,+  SpvFPFastMathModeAllowReassocINTELMask = 0x00020000,+  SpvFPFastMathModeAllowTransformMask = 0x00040000,+} SpvFPFastMathModeMask;++typedef enum SpvFPRoundingMode_ {+  SpvFPRoundingModeRTE = 0,+  SpvFPRoundingModeRTZ = 1,+  SpvFPRoundingModeRTP = 2,+  SpvFPRoundingModeRTN = 3,+  SpvFPRoundingModeMax = 0x7fffffff,+} SpvFPRoundingMode;++typedef enum SpvLinkageType_ {+  SpvLinkageTypeExport = 0,+  SpvLinkageTypeImport = 1,+  SpvLinkageTypeLinkOnceODR = 2,+  SpvLinkageTypeMax = 0x7fffffff,+} SpvLinkageType;++typedef enum SpvAccessQualifier_ {+  SpvAccessQualifierReadOnly = 0,+  SpvAccessQualifierWriteOnly = 1,+  SpvAccessQualifierReadWrite = 2,+  SpvAccessQualifierMax = 0x7fffffff,+} SpvAccessQualifier;++typedef enum SpvFunctionParameterAttribute_ {+  SpvFunctionParameterAttributeZext = 0,+  SpvFunctionParameterAttributeSext = 1,+  SpvFunctionParameterAttributeByVal = 2,+  SpvFunctionParameterAttributeSret = 3,+  SpvFunctionParameterAttributeNoAlias = 4,+  SpvFunctionParameterAttributeNoCapture = 5,+  SpvFunctionParameterAttributeNoWrite = 6,+  SpvFunctionParameterAttributeNoReadWrite = 7,+  SpvFunctionParameterAttributeRuntimeAlignedALTERA = 5940,+  SpvFunctionParameterAttributeRuntimeAlignedINTEL = 5940,+  SpvFunctionParameterAttributeMax = 0x7fffffff,+} SpvFunctionParameterAttribute;++typedef enum SpvDecoration_ {+  SpvDecorationRelaxedPrecision = 0,+  SpvDecorationSpecId = 1,+  SpvDecorationBlock = 2,+  SpvDecorationBufferBlock = 3,+  SpvDecorationRowMajor = 4,+  SpvDecorationColMajor = 5,+  SpvDecorationArrayStride = 6,+  SpvDecorationMatrixStride = 7,+  SpvDecorationGLSLShared = 8,+  SpvDecorationGLSLPacked = 9,+  SpvDecorationCPacked = 10,+  SpvDecorationBuiltIn = 11,+  SpvDecorationNoPerspective = 13,+  SpvDecorationFlat = 14,+  SpvDecorationPatch = 15,+  SpvDecorationCentroid = 16,+  SpvDecorationSample = 17,+  SpvDecorationInvariant = 18,+  SpvDecorationRestrict = 19,+  SpvDecorationAliased = 20,+  SpvDecorationVolatile = 21,+  SpvDecorationConstant = 22,+  SpvDecorationCoherent = 23,+  SpvDecorationNonWritable = 24,+  SpvDecorationNonReadable = 25,+  SpvDecorationUniform = 26,+  SpvDecorationUniformId = 27,+  SpvDecorationSaturatedConversion = 28,+  SpvDecorationStream = 29,+  SpvDecorationLocation = 30,+  SpvDecorationComponent = 31,+  SpvDecorationIndex = 32,+  SpvDecorationBinding = 33,+  SpvDecorationDescriptorSet = 34,+  SpvDecorationOffset = 35,+  SpvDecorationXfbBuffer = 36,+  SpvDecorationXfbStride = 37,+  SpvDecorationFuncParamAttr = 38,+  SpvDecorationFPRoundingMode = 39,+  SpvDecorationFPFastMathMode = 40,+  SpvDecorationLinkageAttributes = 41,+  SpvDecorationNoContraction = 42,+  SpvDecorationInputAttachmentIndex = 43,+  SpvDecorationAlignment = 44,+  SpvDecorationMaxByteOffset = 45,+  SpvDecorationAlignmentId = 46,+  SpvDecorationMaxByteOffsetId = 47,+  SpvDecorationSaturatedToLargestFloat8NormalConversionEXT = 4216,+  SpvDecorationNoSignedWrap = 4469,+  SpvDecorationNoUnsignedWrap = 4470,+  SpvDecorationWeightTextureQCOM = 4487,+  SpvDecorationBlockMatchTextureQCOM = 4488,+  SpvDecorationBlockMatchSamplerQCOM = 4499,+  SpvDecorationExplicitInterpAMD = 4999,+  SpvDecorationNodeSharesPayloadLimitsWithAMDX = 5019,+  SpvDecorationNodeMaxPayloadsAMDX = 5020,+  SpvDecorationTrackFinishWritingAMDX = 5078,+  SpvDecorationPayloadNodeNameAMDX = 5091,+  SpvDecorationPayloadNodeBaseIndexAMDX = 5098,+  SpvDecorationPayloadNodeSparseArrayAMDX = 5099,+  SpvDecorationPayloadNodeArraySizeAMDX = 5100,+  SpvDecorationPayloadDispatchIndirectAMDX = 5105,+  SpvDecorationArrayStrideIdEXT = 5124,+  SpvDecorationOffsetIdEXT = 5125,+  SpvDecorationUTFEncodedKHR = 5145,+  SpvDecorationOverrideCoverageNV = 5248,+  SpvDecorationPassthroughNV = 5250,+  SpvDecorationViewportRelativeNV = 5252,+  SpvDecorationSecondaryViewportRelativeNV = 5256,+  SpvDecorationPerPrimitiveEXT = 5271,+  SpvDecorationPerPrimitiveNV = 5271,+  SpvDecorationPerViewNV = 5272,+  SpvDecorationPerTaskNV = 5273,+  SpvDecorationPerVertexKHR = 5285,+  SpvDecorationPerVertexNV = 5285,+  SpvDecorationNonUniform = 5300,+  SpvDecorationNonUniformEXT = 5300,+  SpvDecorationRestrictPointer = 5355,+  SpvDecorationRestrictPointerEXT = 5355,+  SpvDecorationAliasedPointer = 5356,+  SpvDecorationAliasedPointerEXT = 5356,+  SpvDecorationMemberOffsetNV = 5358,+  SpvDecorationHitObjectShaderRecordBufferNV = 5386,+  SpvDecorationHitObjectShaderRecordBufferEXT = 5389,+  SpvDecorationBankNV = 5397,+  SpvDecorationBindlessSamplerNV = 5398,+  SpvDecorationBindlessImageNV = 5399,+  SpvDecorationBoundSamplerNV = 5400,+  SpvDecorationBoundImageNV = 5401,+  SpvDecorationSIMTCallINTEL = 5599,+  SpvDecorationReferencedIndirectlyINTEL = 5602,+  SpvDecorationClobberINTEL = 5607,+  SpvDecorationSideEffectsINTEL = 5608,+  SpvDecorationVectorComputeVariableINTEL = 5624,+  SpvDecorationFuncParamIOKindINTEL = 5625,+  SpvDecorationVectorComputeFunctionINTEL = 5626,+  SpvDecorationStackCallINTEL = 5627,+  SpvDecorationGlobalVariableOffsetINTEL = 5628,+  SpvDecorationCounterBuffer = 5634,+  SpvDecorationHlslCounterBufferGOOGLE = 5634,+  SpvDecorationHlslSemanticGOOGLE = 5635,+  SpvDecorationUserSemantic = 5635,+  SpvDecorationUserTypeGOOGLE = 5636,+  SpvDecorationFunctionRoundingModeINTEL = 5822,+  SpvDecorationFunctionDenormModeINTEL = 5823,+  SpvDecorationRegisterALTERA = 5825,+  SpvDecorationRegisterINTEL = 5825,+  SpvDecorationMemoryALTERA = 5826,+  SpvDecorationMemoryINTEL = 5826,+  SpvDecorationNumbanksALTERA = 5827,+  SpvDecorationNumbanksINTEL = 5827,+  SpvDecorationBankwidthALTERA = 5828,+  SpvDecorationBankwidthINTEL = 5828,+  SpvDecorationMaxPrivateCopiesALTERA = 5829,+  SpvDecorationMaxPrivateCopiesINTEL = 5829,+  SpvDecorationSinglepumpALTERA = 5830,+  SpvDecorationSinglepumpINTEL = 5830,+  SpvDecorationDoublepumpALTERA = 5831,+  SpvDecorationDoublepumpINTEL = 5831,+  SpvDecorationMaxReplicatesALTERA = 5832,+  SpvDecorationMaxReplicatesINTEL = 5832,+  SpvDecorationSimpleDualPortALTERA = 5833,+  SpvDecorationSimpleDualPortINTEL = 5833,+  SpvDecorationMergeALTERA = 5834,+  SpvDecorationMergeINTEL = 5834,+  SpvDecorationBankBitsALTERA = 5835,+  SpvDecorationBankBitsINTEL = 5835,+  SpvDecorationForcePow2DepthALTERA = 5836,+  SpvDecorationForcePow2DepthINTEL = 5836,+  SpvDecorationStridesizeALTERA = 5883,+  SpvDecorationStridesizeINTEL = 5883,+  SpvDecorationWordsizeALTERA = 5884,+  SpvDecorationWordsizeINTEL = 5884,+  SpvDecorationTrueDualPortALTERA = 5885,+  SpvDecorationTrueDualPortINTEL = 5885,+  SpvDecorationBurstCoalesceALTERA = 5899,+  SpvDecorationBurstCoalesceINTEL = 5899,+  SpvDecorationCacheSizeALTERA = 5900,+  SpvDecorationCacheSizeINTEL = 5900,+  SpvDecorationDontStaticallyCoalesceALTERA = 5901,+  SpvDecorationDontStaticallyCoalesceINTEL = 5901,+  SpvDecorationPrefetchALTERA = 5902,+  SpvDecorationPrefetchINTEL = 5902,+  SpvDecorationStallEnableALTERA = 5905,+  SpvDecorationStallEnableINTEL = 5905,+  SpvDecorationFuseLoopsInFunctionALTERA = 5907,+  SpvDecorationFuseLoopsInFunctionINTEL = 5907,+  SpvDecorationMathOpDSPModeALTERA = 5909,+  SpvDecorationMathOpDSPModeINTEL = 5909,+  SpvDecorationAliasScopeINTEL = 5914,+  SpvDecorationNoAliasINTEL = 5915,+  SpvDecorationInitiationIntervalALTERA = 5917,+  SpvDecorationInitiationIntervalINTEL = 5917,+  SpvDecorationMaxConcurrencyALTERA = 5918,+  SpvDecorationMaxConcurrencyINTEL = 5918,+  SpvDecorationPipelineEnableALTERA = 5919,+  SpvDecorationPipelineEnableINTEL = 5919,+  SpvDecorationBufferLocationALTERA = 5921,+  SpvDecorationBufferLocationINTEL = 5921,+  SpvDecorationIOPipeStorageALTERA = 5944,+  SpvDecorationIOPipeStorageINTEL = 5944,+  SpvDecorationFunctionFloatingPointModeINTEL = 6080,+  SpvDecorationSingleElementVectorINTEL = 6085,+  SpvDecorationVectorComputeCallableFunctionINTEL = 6087,+  SpvDecorationMediaBlockIOINTEL = 6140,+  SpvDecorationStallFreeALTERA = 6151,+  SpvDecorationStallFreeINTEL = 6151,+  SpvDecorationFPMaxErrorDecorationINTEL = 6170,+  SpvDecorationLatencyControlLabelALTERA = 6172,+  SpvDecorationLatencyControlLabelINTEL = 6172,+  SpvDecorationLatencyControlConstraintALTERA = 6173,+  SpvDecorationLatencyControlConstraintINTEL = 6173,+  SpvDecorationConduitKernelArgumentALTERA = 6175,+  SpvDecorationConduitKernelArgumentINTEL = 6175,+  SpvDecorationRegisterMapKernelArgumentALTERA = 6176,+  SpvDecorationRegisterMapKernelArgumentINTEL = 6176,+  SpvDecorationMMHostInterfaceAddressWidthALTERA = 6177,+  SpvDecorationMMHostInterfaceAddressWidthINTEL = 6177,+  SpvDecorationMMHostInterfaceDataWidthALTERA = 6178,+  SpvDecorationMMHostInterfaceDataWidthINTEL = 6178,+  SpvDecorationMMHostInterfaceLatencyALTERA = 6179,+  SpvDecorationMMHostInterfaceLatencyINTEL = 6179,+  SpvDecorationMMHostInterfaceReadWriteModeALTERA = 6180,+  SpvDecorationMMHostInterfaceReadWriteModeINTEL = 6180,+  SpvDecorationMMHostInterfaceMaxBurstALTERA = 6181,+  SpvDecorationMMHostInterfaceMaxBurstINTEL = 6181,+  SpvDecorationMMHostInterfaceWaitRequestALTERA = 6182,+  SpvDecorationMMHostInterfaceWaitRequestINTEL = 6182,+  SpvDecorationStableKernelArgumentALTERA = 6183,+  SpvDecorationStableKernelArgumentINTEL = 6183,+  SpvDecorationHostAccessINTEL = 6188,+  SpvDecorationInitModeALTERA = 6190,+  SpvDecorationInitModeINTEL = 6190,+  SpvDecorationImplementInRegisterMapALTERA = 6191,+  SpvDecorationImplementInRegisterMapINTEL = 6191,+  SpvDecorationConditionalINTEL = 6247,+  SpvDecorationCacheControlLoadINTEL = 6442,+  SpvDecorationCacheControlStoreINTEL = 6443,+  SpvDecorationMax = 0x7fffffff,+} SpvDecoration;++typedef enum SpvBuiltIn_ {+  SpvBuiltInPosition = 0,+  SpvBuiltInPointSize = 1,+  SpvBuiltInClipDistance = 3,+  SpvBuiltInCullDistance = 4,+  SpvBuiltInVertexId = 5,+  SpvBuiltInInstanceId = 6,+  SpvBuiltInPrimitiveId = 7,+  SpvBuiltInInvocationId = 8,+  SpvBuiltInLayer = 9,+  SpvBuiltInViewportIndex = 10,+  SpvBuiltInTessLevelOuter = 11,+  SpvBuiltInTessLevelInner = 12,+  SpvBuiltInTessCoord = 13,+  SpvBuiltInPatchVertices = 14,+  SpvBuiltInFragCoord = 15,+  SpvBuiltInPointCoord = 16,+  SpvBuiltInFrontFacing = 17,+  SpvBuiltInSampleId = 18,+  SpvBuiltInSamplePosition = 19,+  SpvBuiltInSampleMask = 20,+  SpvBuiltInFragDepth = 22,+  SpvBuiltInHelperInvocation = 23,+  SpvBuiltInNumWorkgroups = 24,+  SpvBuiltInWorkgroupSize = 25,+  SpvBuiltInWorkgroupId = 26,+  SpvBuiltInLocalInvocationId = 27,+  SpvBuiltInGlobalInvocationId = 28,+  SpvBuiltInLocalInvocationIndex = 29,+  SpvBuiltInWorkDim = 30,+  SpvBuiltInGlobalSize = 31,+  SpvBuiltInEnqueuedWorkgroupSize = 32,+  SpvBuiltInGlobalOffset = 33,+  SpvBuiltInGlobalLinearId = 34,+  SpvBuiltInSubgroupSize = 36,+  SpvBuiltInSubgroupMaxSize = 37,+  SpvBuiltInNumSubgroups = 38,+  SpvBuiltInNumEnqueuedSubgroups = 39,+  SpvBuiltInSubgroupId = 40,+  SpvBuiltInSubgroupLocalInvocationId = 41,+  SpvBuiltInVertexIndex = 42,+  SpvBuiltInInstanceIndex = 43,+  SpvBuiltInCoreIDARM = 4160,+  SpvBuiltInCoreCountARM = 4161,+  SpvBuiltInCoreMaxIDARM = 4162,+  SpvBuiltInWarpIDARM = 4163,+  SpvBuiltInWarpMaxIDARM = 4164,+  SpvBuiltInSubgroupEqMask = 4416,+  SpvBuiltInSubgroupEqMaskKHR = 4416,+  SpvBuiltInSubgroupGeMask = 4417,+  SpvBuiltInSubgroupGeMaskKHR = 4417,+  SpvBuiltInSubgroupGtMask = 4418,+  SpvBuiltInSubgroupGtMaskKHR = 4418,+  SpvBuiltInSubgroupLeMask = 4419,+  SpvBuiltInSubgroupLeMaskKHR = 4419,+  SpvBuiltInSubgroupLtMask = 4420,+  SpvBuiltInSubgroupLtMaskKHR = 4420,+  SpvBuiltInBaseVertex = 4424,+  SpvBuiltInBaseInstance = 4425,+  SpvBuiltInDrawIndex = 4426,+  SpvBuiltInPrimitiveShadingRateKHR = 4432,+  SpvBuiltInDeviceIndex = 4438,+  SpvBuiltInViewIndex = 4440,+  SpvBuiltInShadingRateKHR = 4444,+  SpvBuiltInTileOffsetQCOM = 4492,+  SpvBuiltInTileDimensionQCOM = 4493,+  SpvBuiltInTileApronSizeQCOM = 4494,+  SpvBuiltInBaryCoordNoPerspAMD = 4992,+  SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,+  SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,+  SpvBuiltInBaryCoordSmoothAMD = 4995,+  SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,+  SpvBuiltInBaryCoordSmoothSampleAMD = 4997,+  SpvBuiltInBaryCoordPullModelAMD = 4998,+  SpvBuiltInFragStencilRefEXT = 5014,+  SpvBuiltInRemainingRecursionLevelsAMDX = 5021,+  SpvBuiltInShaderIndexAMDX = 5073,+  SpvBuiltInSamplerHeapEXT = 5122,+  SpvBuiltInResourceHeapEXT = 5123,+  SpvBuiltInViewportMaskNV = 5253,+  SpvBuiltInSecondaryPositionNV = 5257,+  SpvBuiltInSecondaryViewportMaskNV = 5258,+  SpvBuiltInPositionPerViewNV = 5261,+  SpvBuiltInViewportMaskPerViewNV = 5262,+  SpvBuiltInFullyCoveredEXT = 5264,+  SpvBuiltInTaskCountNV = 5274,+  SpvBuiltInPrimitiveCountNV = 5275,+  SpvBuiltInPrimitiveIndicesNV = 5276,+  SpvBuiltInClipDistancePerViewNV = 5277,+  SpvBuiltInCullDistancePerViewNV = 5278,+  SpvBuiltInLayerPerViewNV = 5279,+  SpvBuiltInMeshViewCountNV = 5280,+  SpvBuiltInMeshViewIndicesNV = 5281,+  SpvBuiltInBaryCoordKHR = 5286,+  SpvBuiltInBaryCoordNV = 5286,+  SpvBuiltInBaryCoordNoPerspKHR = 5287,+  SpvBuiltInBaryCoordNoPerspNV = 5287,+  SpvBuiltInFragSizeEXT = 5292,+  SpvBuiltInFragmentSizeNV = 5292,+  SpvBuiltInFragInvocationCountEXT = 5293,+  SpvBuiltInInvocationsPerPixelNV = 5293,+  SpvBuiltInPrimitivePointIndicesEXT = 5294,+  SpvBuiltInPrimitiveLineIndicesEXT = 5295,+  SpvBuiltInPrimitiveTriangleIndicesEXT = 5296,+  SpvBuiltInCullPrimitiveEXT = 5299,+  SpvBuiltInLaunchIdKHR = 5319,+  SpvBuiltInLaunchIdNV = 5319,+  SpvBuiltInLaunchSizeKHR = 5320,+  SpvBuiltInLaunchSizeNV = 5320,+  SpvBuiltInWorldRayOriginKHR = 5321,+  SpvBuiltInWorldRayOriginNV = 5321,+  SpvBuiltInWorldRayDirectionKHR = 5322,+  SpvBuiltInWorldRayDirectionNV = 5322,+  SpvBuiltInObjectRayOriginKHR = 5323,+  SpvBuiltInObjectRayOriginNV = 5323,+  SpvBuiltInObjectRayDirectionKHR = 5324,+  SpvBuiltInObjectRayDirectionNV = 5324,+  SpvBuiltInRayTminKHR = 5325,+  SpvBuiltInRayTminNV = 5325,+  SpvBuiltInRayTmaxKHR = 5326,+  SpvBuiltInRayTmaxNV = 5326,+  SpvBuiltInInstanceCustomIndexKHR = 5327,+  SpvBuiltInInstanceCustomIndexNV = 5327,+  SpvBuiltInObjectToWorldKHR = 5330,+  SpvBuiltInObjectToWorldNV = 5330,+  SpvBuiltInWorldToObjectKHR = 5331,+  SpvBuiltInWorldToObjectNV = 5331,+  SpvBuiltInHitTNV = 5332,+  SpvBuiltInHitKindKHR = 5333,+  SpvBuiltInHitKindNV = 5333,+  SpvBuiltInCurrentRayTimeNV = 5334,+  SpvBuiltInHitTriangleVertexPositionsKHR = 5335,+  SpvBuiltInHitMicroTriangleVertexPositionsNV = 5337,+  SpvBuiltInHitMicroTriangleVertexBarycentricsNV = 5344,+  SpvBuiltInIncomingRayFlagsKHR = 5351,+  SpvBuiltInIncomingRayFlagsNV = 5351,+  SpvBuiltInRayGeometryIndexKHR = 5352,+  SpvBuiltInHitIsSphereNV = 5359,+  SpvBuiltInHitIsLSSNV = 5360,+  SpvBuiltInHitSpherePositionNV = 5361,+  SpvBuiltInWarpsPerSMNV = 5374,+  SpvBuiltInSMCountNV = 5375,+  SpvBuiltInWarpIDNV = 5376,+  SpvBuiltInSMIDNV = 5377,+  SpvBuiltInHitLSSPositionsNV = 5396,+  SpvBuiltInHitKindFrontFacingMicroTriangleNV = 5405,+  SpvBuiltInHitKindBackFacingMicroTriangleNV = 5406,+  SpvBuiltInHitSphereRadiusNV = 5420,+  SpvBuiltInHitLSSRadiiNV = 5421,+  SpvBuiltInClusterIDNV = 5436,+  SpvBuiltInCullMaskKHR = 6021,+  SpvBuiltInMax = 0x7fffffff,+} SpvBuiltIn;++typedef enum SpvSelectionControlShift_ {+  SpvSelectionControlFlattenShift = 0,+  SpvSelectionControlDontFlattenShift = 1,+  SpvSelectionControlMax = 0x7fffffff,+} SpvSelectionControlShift;++typedef enum SpvSelectionControlMask_ {+  SpvSelectionControlMaskNone = 0,+  SpvSelectionControlFlattenMask = 0x00000001,+  SpvSelectionControlDontFlattenMask = 0x00000002,+} SpvSelectionControlMask;++typedef enum SpvLoopControlShift_ {+  SpvLoopControlUnrollShift = 0,+  SpvLoopControlDontUnrollShift = 1,+  SpvLoopControlDependencyInfiniteShift = 2,+  SpvLoopControlDependencyLengthShift = 3,+  SpvLoopControlMinIterationsShift = 4,+  SpvLoopControlMaxIterationsShift = 5,+  SpvLoopControlIterationMultipleShift = 6,+  SpvLoopControlPeelCountShift = 7,+  SpvLoopControlPartialCountShift = 8,+  SpvLoopControlInitiationIntervalALTERAShift = 16,+  SpvLoopControlInitiationIntervalINTELShift = 16,+  SpvLoopControlMaxConcurrencyALTERAShift = 17,+  SpvLoopControlMaxConcurrencyINTELShift = 17,+  SpvLoopControlDependencyArrayALTERAShift = 18,+  SpvLoopControlDependencyArrayINTELShift = 18,+  SpvLoopControlPipelineEnableALTERAShift = 19,+  SpvLoopControlPipelineEnableINTELShift = 19,+  SpvLoopControlLoopCoalesceALTERAShift = 20,+  SpvLoopControlLoopCoalesceINTELShift = 20,+  SpvLoopControlMaxInterleavingALTERAShift = 21,+  SpvLoopControlMaxInterleavingINTELShift = 21,+  SpvLoopControlSpeculatedIterationsALTERAShift = 22,+  SpvLoopControlSpeculatedIterationsINTELShift = 22,+  SpvLoopControlNoFusionALTERAShift = 23,+  SpvLoopControlNoFusionINTELShift = 23,+  SpvLoopControlLoopCountALTERAShift = 24,+  SpvLoopControlLoopCountINTELShift = 24,+  SpvLoopControlMaxReinvocationDelayALTERAShift = 25,+  SpvLoopControlMaxReinvocationDelayINTELShift = 25,+  SpvLoopControlMax = 0x7fffffff,+} SpvLoopControlShift;++typedef enum SpvLoopControlMask_ {+  SpvLoopControlMaskNone = 0,+  SpvLoopControlUnrollMask = 0x00000001,+  SpvLoopControlDontUnrollMask = 0x00000002,+  SpvLoopControlDependencyInfiniteMask = 0x00000004,+  SpvLoopControlDependencyLengthMask = 0x00000008,+  SpvLoopControlMinIterationsMask = 0x00000010,+  SpvLoopControlMaxIterationsMask = 0x00000020,+  SpvLoopControlIterationMultipleMask = 0x00000040,+  SpvLoopControlPeelCountMask = 0x00000080,+  SpvLoopControlPartialCountMask = 0x00000100,+  SpvLoopControlInitiationIntervalALTERAMask = 0x00010000,+  SpvLoopControlInitiationIntervalINTELMask = 0x00010000,+  SpvLoopControlMaxConcurrencyALTERAMask = 0x00020000,+  SpvLoopControlMaxConcurrencyINTELMask = 0x00020000,+  SpvLoopControlDependencyArrayALTERAMask = 0x00040000,+  SpvLoopControlDependencyArrayINTELMask = 0x00040000,+  SpvLoopControlPipelineEnableALTERAMask = 0x00080000,+  SpvLoopControlPipelineEnableINTELMask = 0x00080000,+  SpvLoopControlLoopCoalesceALTERAMask = 0x00100000,+  SpvLoopControlLoopCoalesceINTELMask = 0x00100000,+  SpvLoopControlMaxInterleavingALTERAMask = 0x00200000,+  SpvLoopControlMaxInterleavingINTELMask = 0x00200000,+  SpvLoopControlSpeculatedIterationsALTERAMask = 0x00400000,+  SpvLoopControlSpeculatedIterationsINTELMask = 0x00400000,+  SpvLoopControlNoFusionALTERAMask = 0x00800000,+  SpvLoopControlNoFusionINTELMask = 0x00800000,+  SpvLoopControlLoopCountALTERAMask = 0x01000000,+  SpvLoopControlLoopCountINTELMask = 0x01000000,+  SpvLoopControlMaxReinvocationDelayALTERAMask = 0x02000000,+  SpvLoopControlMaxReinvocationDelayINTELMask = 0x02000000,+} SpvLoopControlMask;++typedef enum SpvFunctionControlShift_ {+  SpvFunctionControlInlineShift = 0,+  SpvFunctionControlDontInlineShift = 1,+  SpvFunctionControlPureShift = 2,+  SpvFunctionControlConstShift = 3,+  SpvFunctionControlOptNoneEXTShift = 16,+  SpvFunctionControlOptNoneINTELShift = 16,+  SpvFunctionControlMax = 0x7fffffff,+} SpvFunctionControlShift;++typedef enum SpvFunctionControlMask_ {+  SpvFunctionControlMaskNone = 0,+  SpvFunctionControlInlineMask = 0x00000001,+  SpvFunctionControlDontInlineMask = 0x00000002,+  SpvFunctionControlPureMask = 0x00000004,+  SpvFunctionControlConstMask = 0x00000008,+  SpvFunctionControlOptNoneEXTMask = 0x00010000,+  SpvFunctionControlOptNoneINTELMask = 0x00010000,+} SpvFunctionControlMask;++typedef enum SpvMemorySemanticsShift_ {+  SpvMemorySemanticsAcquireShift = 1,+  SpvMemorySemanticsReleaseShift = 2,+  SpvMemorySemanticsAcquireReleaseShift = 3,+  SpvMemorySemanticsSequentiallyConsistentShift = 4,+  SpvMemorySemanticsUniformMemoryShift = 6,+  SpvMemorySemanticsSubgroupMemoryShift = 7,+  SpvMemorySemanticsWorkgroupMemoryShift = 8,+  SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,+  SpvMemorySemanticsAtomicCounterMemoryShift = 10,+  SpvMemorySemanticsImageMemoryShift = 11,+  SpvMemorySemanticsOutputMemoryShift = 12,+  SpvMemorySemanticsOutputMemoryKHRShift = 12,+  SpvMemorySemanticsMakeAvailableShift = 13,+  SpvMemorySemanticsMakeAvailableKHRShift = 13,+  SpvMemorySemanticsMakeVisibleShift = 14,+  SpvMemorySemanticsMakeVisibleKHRShift = 14,+  SpvMemorySemanticsVolatileShift = 15,+  SpvMemorySemanticsMax = 0x7fffffff,+} SpvMemorySemanticsShift;++typedef enum SpvMemorySemanticsMask_ {+  SpvMemorySemanticsMaskNone = 0,+  SpvMemorySemanticsAcquireMask = 0x00000002,+  SpvMemorySemanticsReleaseMask = 0x00000004,+  SpvMemorySemanticsAcquireReleaseMask = 0x00000008,+  SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,+  SpvMemorySemanticsUniformMemoryMask = 0x00000040,+  SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,+  SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,+  SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,+  SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,+  SpvMemorySemanticsImageMemoryMask = 0x00000800,+  SpvMemorySemanticsOutputMemoryMask = 0x00001000,+  SpvMemorySemanticsOutputMemoryKHRMask = 0x00001000,+  SpvMemorySemanticsMakeAvailableMask = 0x00002000,+  SpvMemorySemanticsMakeAvailableKHRMask = 0x00002000,+  SpvMemorySemanticsMakeVisibleMask = 0x00004000,+  SpvMemorySemanticsMakeVisibleKHRMask = 0x00004000,+  SpvMemorySemanticsVolatileMask = 0x00008000,+} SpvMemorySemanticsMask;++typedef enum SpvMemoryAccessShift_ {+  SpvMemoryAccessVolatileShift = 0,+  SpvMemoryAccessAlignedShift = 1,+  SpvMemoryAccessNontemporalShift = 2,+  SpvMemoryAccessMakePointerAvailableShift = 3,+  SpvMemoryAccessMakePointerAvailableKHRShift = 3,+  SpvMemoryAccessMakePointerVisibleShift = 4,+  SpvMemoryAccessMakePointerVisibleKHRShift = 4,+  SpvMemoryAccessNonPrivatePointerShift = 5,+  SpvMemoryAccessNonPrivatePointerKHRShift = 5,+  SpvMemoryAccessAliasScopeINTELMaskShift = 16,+  SpvMemoryAccessNoAliasINTELMaskShift = 17,+  SpvMemoryAccessMax = 0x7fffffff,+} SpvMemoryAccessShift;++typedef enum SpvMemoryAccessMask_ {+  SpvMemoryAccessMaskNone = 0,+  SpvMemoryAccessVolatileMask = 0x00000001,+  SpvMemoryAccessAlignedMask = 0x00000002,+  SpvMemoryAccessNontemporalMask = 0x00000004,+  SpvMemoryAccessMakePointerAvailableMask = 0x00000008,+  SpvMemoryAccessMakePointerAvailableKHRMask = 0x00000008,+  SpvMemoryAccessMakePointerVisibleMask = 0x00000010,+  SpvMemoryAccessMakePointerVisibleKHRMask = 0x00000010,+  SpvMemoryAccessNonPrivatePointerMask = 0x00000020,+  SpvMemoryAccessNonPrivatePointerKHRMask = 0x00000020,+  SpvMemoryAccessAliasScopeINTELMaskMask = 0x00010000,+  SpvMemoryAccessNoAliasINTELMaskMask = 0x00020000,+} SpvMemoryAccessMask;++typedef enum SpvScope_ {+  SpvScopeCrossDevice = 0,+  SpvScopeDevice = 1,+  SpvScopeWorkgroup = 2,+  SpvScopeSubgroup = 3,+  SpvScopeInvocation = 4,+  SpvScopeQueueFamily = 5,+  SpvScopeQueueFamilyKHR = 5,+  SpvScopeShaderCallKHR = 6,+  SpvScopeMax = 0x7fffffff,+} SpvScope;++typedef enum SpvGroupOperation_ {+  SpvGroupOperationReduce = 0,+  SpvGroupOperationInclusiveScan = 1,+  SpvGroupOperationExclusiveScan = 2,+  SpvGroupOperationClusteredReduce = 3,+  SpvGroupOperationPartitionedReduceEXT = 6,+  SpvGroupOperationPartitionedReduceNV = 6,+  SpvGroupOperationPartitionedInclusiveScanEXT = 7,+  SpvGroupOperationPartitionedInclusiveScanNV = 7,+  SpvGroupOperationPartitionedExclusiveScanEXT = 8,+  SpvGroupOperationPartitionedExclusiveScanNV = 8,+  SpvGroupOperationMax = 0x7fffffff,+} SpvGroupOperation;++typedef enum SpvKernelEnqueueFlags_ {+  SpvKernelEnqueueFlagsNoWait = 0,+  SpvKernelEnqueueFlagsWaitKernel = 1,+  SpvKernelEnqueueFlagsWaitWorkGroup = 2,+  SpvKernelEnqueueFlagsMax = 0x7fffffff,+} SpvKernelEnqueueFlags;++typedef enum SpvKernelProfilingInfoShift_ {+  SpvKernelProfilingInfoCmdExecTimeShift = 0,+  SpvKernelProfilingInfoMax = 0x7fffffff,+} SpvKernelProfilingInfoShift;++typedef enum SpvKernelProfilingInfoMask_ {+  SpvKernelProfilingInfoMaskNone = 0,+  SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,+} SpvKernelProfilingInfoMask;++typedef enum SpvCapability_ {+  SpvCapabilityMatrix = 0,+  SpvCapabilityShader = 1,+  SpvCapabilityGeometry = 2,+  SpvCapabilityTessellation = 3,+  SpvCapabilityAddresses = 4,+  SpvCapabilityLinkage = 5,+  SpvCapabilityKernel = 6,+  SpvCapabilityVector16 = 7,+  SpvCapabilityFloat16Buffer = 8,+  SpvCapabilityFloat16 = 9,+  SpvCapabilityFloat64 = 10,+  SpvCapabilityInt64 = 11,+  SpvCapabilityInt64Atomics = 12,+  SpvCapabilityImageBasic = 13,+  SpvCapabilityImageReadWrite = 14,+  SpvCapabilityImageMipmap = 15,+  SpvCapabilityPipes = 17,+  SpvCapabilityGroups = 18,+  SpvCapabilityDeviceEnqueue = 19,+  SpvCapabilityLiteralSampler = 20,+  SpvCapabilityAtomicStorage = 21,+  SpvCapabilityInt16 = 22,+  SpvCapabilityTessellationPointSize = 23,+  SpvCapabilityGeometryPointSize = 24,+  SpvCapabilityImageGatherExtended = 25,+  SpvCapabilityStorageImageMultisample = 27,+  SpvCapabilityUniformBufferArrayDynamicIndexing = 28,+  SpvCapabilitySampledImageArrayDynamicIndexing = 29,+  SpvCapabilityStorageBufferArrayDynamicIndexing = 30,+  SpvCapabilityStorageImageArrayDynamicIndexing = 31,+  SpvCapabilityClipDistance = 32,+  SpvCapabilityCullDistance = 33,+  SpvCapabilityImageCubeArray = 34,+  SpvCapabilitySampleRateShading = 35,+  SpvCapabilityImageRect = 36,+  SpvCapabilitySampledRect = 37,+  SpvCapabilityGenericPointer = 38,+  SpvCapabilityInt8 = 39,+  SpvCapabilityInputAttachment = 40,+  SpvCapabilitySparseResidency = 41,+  SpvCapabilityMinLod = 42,+  SpvCapabilitySampled1D = 43,+  SpvCapabilityImage1D = 44,+  SpvCapabilitySampledCubeArray = 45,+  SpvCapabilitySampledBuffer = 46,+  SpvCapabilityImageBuffer = 47,+  SpvCapabilityImageMSArray = 48,+  SpvCapabilityStorageImageExtendedFormats = 49,+  SpvCapabilityImageQuery = 50,+  SpvCapabilityDerivativeControl = 51,+  SpvCapabilityInterpolationFunction = 52,+  SpvCapabilityTransformFeedback = 53,+  SpvCapabilityGeometryStreams = 54,+  SpvCapabilityStorageImageReadWithoutFormat = 55,+  SpvCapabilityStorageImageWriteWithoutFormat = 56,+  SpvCapabilityMultiViewport = 57,+  SpvCapabilitySubgroupDispatch = 58,+  SpvCapabilityNamedBarrier = 59,+  SpvCapabilityPipeStorage = 60,+  SpvCapabilityGroupNonUniform = 61,+  SpvCapabilityGroupNonUniformVote = 62,+  SpvCapabilityGroupNonUniformArithmetic = 63,+  SpvCapabilityGroupNonUniformBallot = 64,+  SpvCapabilityGroupNonUniformShuffle = 65,+  SpvCapabilityGroupNonUniformShuffleRelative = 66,+  SpvCapabilityGroupNonUniformClustered = 67,+  SpvCapabilityGroupNonUniformQuad = 68,+  SpvCapabilityShaderLayer = 69,+  SpvCapabilityShaderViewportIndex = 70,+  SpvCapabilityUniformDecoration = 71,+  SpvCapabilityCoreBuiltinsARM = 4165,+  SpvCapabilityTileImageColorReadAccessEXT = 4166,+  SpvCapabilityTileImageDepthReadAccessEXT = 4167,+  SpvCapabilityTileImageStencilReadAccessEXT = 4168,+  SpvCapabilityTensorsARM = 4174,+  SpvCapabilityStorageTensorArrayDynamicIndexingARM = 4175,+  SpvCapabilityStorageTensorArrayNonUniformIndexingARM = 4176,+  SpvCapabilityGraphARM = 4191,+  SpvCapabilityCooperativeMatrixLayoutsARM = 4201,+  SpvCapabilityFloat8EXT = 4212,+  SpvCapabilityFloat8CooperativeMatrixEXT = 4213,+  SpvCapabilityFragmentShadingRateKHR = 4422,+  SpvCapabilitySubgroupBallotKHR = 4423,+  SpvCapabilityDrawParameters = 4427,+  SpvCapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,+  SpvCapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,+  SpvCapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,+  SpvCapabilitySubgroupVoteKHR = 4431,+  SpvCapabilityStorageBuffer16BitAccess = 4433,+  SpvCapabilityStorageUniformBufferBlock16 = 4433,+  SpvCapabilityStorageUniform16 = 4434,+  SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,+  SpvCapabilityStoragePushConstant16 = 4435,+  SpvCapabilityStorageInputOutput16 = 4436,+  SpvCapabilityDeviceGroup = 4437,+  SpvCapabilityMultiView = 4439,+  SpvCapabilityVariablePointersStorageBuffer = 4441,+  SpvCapabilityVariablePointers = 4442,+  SpvCapabilityAtomicStorageOps = 4445,+  SpvCapabilitySampleMaskPostDepthCoverage = 4447,+  SpvCapabilityStorageBuffer8BitAccess = 4448,+  SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,+  SpvCapabilityStoragePushConstant8 = 4450,+  SpvCapabilityDenormPreserve = 4464,+  SpvCapabilityDenormFlushToZero = 4465,+  SpvCapabilitySignedZeroInfNanPreserve = 4466,+  SpvCapabilityRoundingModeRTE = 4467,+  SpvCapabilityRoundingModeRTZ = 4468,+  SpvCapabilityRayQueryProvisionalKHR = 4471,+  SpvCapabilityRayQueryKHR = 4472,+  SpvCapabilityUntypedPointersKHR = 4473,+  SpvCapabilityRayTraversalPrimitiveCullingKHR = 4478,+  SpvCapabilityRayTracingKHR = 4479,+  SpvCapabilityTextureSampleWeightedQCOM = 4484,+  SpvCapabilityTextureBoxFilterQCOM = 4485,+  SpvCapabilityTextureBlockMatchQCOM = 4486,+  SpvCapabilityTileShadingQCOM = 4495,+  SpvCapabilityCooperativeMatrixConversionQCOM = 4496,+  SpvCapabilityTextureBlockMatch2QCOM = 4498,+  SpvCapabilityFloat16ImageAMD = 5008,+  SpvCapabilityImageGatherBiasLodAMD = 5009,+  SpvCapabilityFragmentMaskAMD = 5010,+  SpvCapabilityStencilExportEXT = 5013,+  SpvCapabilityImageReadWriteLodAMD = 5015,+  SpvCapabilityInt64ImageEXT = 5016,+  SpvCapabilityShaderClockKHR = 5055,+  SpvCapabilityShaderEnqueueAMDX = 5067,+  SpvCapabilityQuadControlKHR = 5087,+  SpvCapabilityInt4TypeINTEL = 5112,+  SpvCapabilityInt4CooperativeMatrixINTEL = 5114,+  SpvCapabilityBFloat16TypeKHR = 5116,+  SpvCapabilityBFloat16DotProductKHR = 5117,+  SpvCapabilityBFloat16CooperativeMatrixKHR = 5118,+  SpvCapabilityAbortKHR = 5120,+  SpvCapabilityDescriptorHeapEXT = 5128,+  SpvCapabilityConstantDataKHR = 5146,+  SpvCapabilityPoisonFreezeKHR = 5156,+  SpvCapabilitySampleMaskOverrideCoverageNV = 5249,+  SpvCapabilityGeometryShaderPassthroughNV = 5251,+  SpvCapabilityShaderViewportIndexLayerEXT = 5254,+  SpvCapabilityShaderViewportIndexLayerNV = 5254,+  SpvCapabilityShaderViewportMaskNV = 5255,+  SpvCapabilityShaderStereoViewNV = 5259,+  SpvCapabilityPerViewAttributesNV = 5260,+  SpvCapabilityFragmentFullyCoveredEXT = 5265,+  SpvCapabilityMeshShadingNV = 5266,+  SpvCapabilityImageFootprintNV = 5282,+  SpvCapabilityMeshShadingEXT = 5283,+  SpvCapabilityFragmentBarycentricKHR = 5284,+  SpvCapabilityFragmentBarycentricNV = 5284,+  SpvCapabilityComputeDerivativeGroupQuadsKHR = 5288,+  SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,+  SpvCapabilityFragmentDensityEXT = 5291,+  SpvCapabilityShadingRateNV = 5291,+  SpvCapabilityGroupNonUniformPartitionedEXT = 5297,+  SpvCapabilityGroupNonUniformPartitionedNV = 5297,+  SpvCapabilityShaderNonUniform = 5301,+  SpvCapabilityShaderNonUniformEXT = 5301,+  SpvCapabilityRuntimeDescriptorArray = 5302,+  SpvCapabilityRuntimeDescriptorArrayEXT = 5302,+  SpvCapabilityInputAttachmentArrayDynamicIndexing = 5303,+  SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,+  SpvCapabilityUniformTexelBufferArrayDynamicIndexing = 5304,+  SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,+  SpvCapabilityStorageTexelBufferArrayDynamicIndexing = 5305,+  SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,+  SpvCapabilityUniformBufferArrayNonUniformIndexing = 5306,+  SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,+  SpvCapabilitySampledImageArrayNonUniformIndexing = 5307,+  SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,+  SpvCapabilityStorageBufferArrayNonUniformIndexing = 5308,+  SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,+  SpvCapabilityStorageImageArrayNonUniformIndexing = 5309,+  SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,+  SpvCapabilityInputAttachmentArrayNonUniformIndexing = 5310,+  SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,+  SpvCapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,+  SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,+  SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,+  SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,+  SpvCapabilityRayTracingPositionFetchKHR = 5336,+  SpvCapabilityRayTracingNV = 5340,+  SpvCapabilityRayTracingMotionBlurNV = 5341,+  SpvCapabilityVulkanMemoryModel = 5345,+  SpvCapabilityVulkanMemoryModelKHR = 5345,+  SpvCapabilityVulkanMemoryModelDeviceScope = 5346,+  SpvCapabilityVulkanMemoryModelDeviceScopeKHR = 5346,+  SpvCapabilityPhysicalStorageBufferAddresses = 5347,+  SpvCapabilityPhysicalStorageBufferAddressesEXT = 5347,+  SpvCapabilityComputeDerivativeGroupLinearKHR = 5350,+  SpvCapabilityComputeDerivativeGroupLinearNV = 5350,+  SpvCapabilityRayTracingProvisionalKHR = 5353,+  SpvCapabilityCooperativeMatrixNV = 5357,+  SpvCapabilityFragmentShaderSampleInterlockEXT = 5363,+  SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,+  SpvCapabilityShaderSMBuiltinsNV = 5373,+  SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,+  SpvCapabilityDemoteToHelperInvocation = 5379,+  SpvCapabilityDemoteToHelperInvocationEXT = 5379,+  SpvCapabilityDisplacementMicromapNV = 5380,+  SpvCapabilityRayTracingOpacityMicromapEXT = 5381,+  SpvCapabilityShaderInvocationReorderNV = 5383,+  SpvCapabilityShaderInvocationReorderEXT = 5388,+  SpvCapabilityBindlessTextureNV = 5390,+  SpvCapabilityRayQueryPositionFetchKHR = 5391,+  SpvCapabilityCooperativeVectorNV = 5394,+  SpvCapabilityAtomicFloat16VectorNV = 5404,+  SpvCapabilityRayTracingDisplacementMicromapNV = 5409,+  SpvCapabilityRawAccessChainsNV = 5414,+  SpvCapabilityRayTracingSpheresGeometryNV = 5418,+  SpvCapabilityRayTracingLinearSweptSpheresGeometryNV = 5419,+  SpvCapabilityPushConstantBanksNV = 5423,+  SpvCapabilityLongVectorEXT = 5425,+  SpvCapabilityShader64BitIndexingEXT = 5426,+  SpvCapabilityCooperativeMatrixReductionsNV = 5430,+  SpvCapabilityCooperativeMatrixConversionsNV = 5431,+  SpvCapabilityCooperativeMatrixPerElementOperationsNV = 5432,+  SpvCapabilityCooperativeMatrixTensorAddressingNV = 5433,+  SpvCapabilityCooperativeMatrixBlockLoadsNV = 5434,+  SpvCapabilityCooperativeVectorTrainingNV = 5435,+  SpvCapabilityRayTracingClusterAccelerationStructureNV = 5437,+  SpvCapabilityTensorAddressingNV = 5439,+  SpvCapabilitySubgroupShuffleINTEL = 5568,+  SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,+  SpvCapabilitySubgroupImageBlockIOINTEL = 5570,+  SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,+  SpvCapabilityRoundToInfinityINTEL = 5582,+  SpvCapabilityFloatingPointModeINTEL = 5583,+  SpvCapabilityIntegerFunctions2INTEL = 5584,+  SpvCapabilityFunctionPointersINTEL = 5603,+  SpvCapabilityIndirectReferencesINTEL = 5604,+  SpvCapabilityAsmINTEL = 5606,+  SpvCapabilityAtomicFloat32MinMaxEXT = 5612,+  SpvCapabilityAtomicFloat64MinMaxEXT = 5613,+  SpvCapabilityAtomicFloat16MinMaxEXT = 5616,+  SpvCapabilityVectorComputeINTEL = 5617,+  SpvCapabilityVectorAnyINTEL = 5619,+  SpvCapabilityExpectAssumeKHR = 5629,+  SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,+  SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,+  SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,+  SpvCapabilityVariableLengthArrayINTEL = 5817,+  SpvCapabilityFunctionFloatControlINTEL = 5821,+  SpvCapabilityFPGAMemoryAttributesALTERA = 5824,+  SpvCapabilityFPGAMemoryAttributesINTEL = 5824,+  SpvCapabilityFPFastMathModeINTEL = 5837,+  SpvCapabilityArbitraryPrecisionIntegersALTERA = 5844,+  SpvCapabilityArbitraryPrecisionIntegersINTEL = 5844,+  SpvCapabilityArbitraryPrecisionFloatingPointALTERA = 5845,+  SpvCapabilityArbitraryPrecisionFloatingPointINTEL = 5845,+  SpvCapabilityUnstructuredLoopControlsINTEL = 5886,+  SpvCapabilityFPGALoopControlsALTERA = 5888,+  SpvCapabilityFPGALoopControlsINTEL = 5888,+  SpvCapabilityKernelAttributesINTEL = 5892,+  SpvCapabilityFPGAKernelAttributesINTEL = 5897,+  SpvCapabilityFPGAMemoryAccessesALTERA = 5898,+  SpvCapabilityFPGAMemoryAccessesINTEL = 5898,+  SpvCapabilityFPGAClusterAttributesALTERA = 5904,+  SpvCapabilityFPGAClusterAttributesINTEL = 5904,+  SpvCapabilityLoopFuseALTERA = 5906,+  SpvCapabilityLoopFuseINTEL = 5906,+  SpvCapabilityFPGADSPControlALTERA = 5908,+  SpvCapabilityFPGADSPControlINTEL = 5908,+  SpvCapabilityMemoryAccessAliasingINTEL = 5910,+  SpvCapabilityFPGAInvocationPipeliningAttributesALTERA = 5916,+  SpvCapabilityFPGAInvocationPipeliningAttributesINTEL = 5916,+  SpvCapabilityFPGABufferLocationALTERA = 5920,+  SpvCapabilityFPGABufferLocationINTEL = 5920,+  SpvCapabilityArbitraryPrecisionFixedPointALTERA = 5922,+  SpvCapabilityArbitraryPrecisionFixedPointINTEL = 5922,+  SpvCapabilityUSMStorageClassesALTERA = 5935,+  SpvCapabilityUSMStorageClassesINTEL = 5935,+  SpvCapabilityRuntimeAlignedAttributeALTERA = 5939,+  SpvCapabilityRuntimeAlignedAttributeINTEL = 5939,+  SpvCapabilityIOPipesALTERA = 5943,+  SpvCapabilityIOPipesINTEL = 5943,+  SpvCapabilityBlockingPipesALTERA = 5945,+  SpvCapabilityBlockingPipesINTEL = 5945,+  SpvCapabilityFPGARegALTERA = 5948,+  SpvCapabilityFPGARegINTEL = 5948,+  SpvCapabilityDotProductInputAll = 6016,+  SpvCapabilityDotProductInputAllKHR = 6016,+  SpvCapabilityDotProductInput4x8Bit = 6017,+  SpvCapabilityDotProductInput4x8BitKHR = 6017,+  SpvCapabilityDotProductInput4x8BitPacked = 6018,+  SpvCapabilityDotProductInput4x8BitPackedKHR = 6018,+  SpvCapabilityDotProduct = 6019,+  SpvCapabilityDotProductKHR = 6019,+  SpvCapabilityRayCullMaskKHR = 6020,+  SpvCapabilityCooperativeMatrixKHR = 6022,+  SpvCapabilityReplicatedCompositesEXT = 6024,+  SpvCapabilityBitInstructions = 6025,+  SpvCapabilityGroupNonUniformRotateKHR = 6026,+  SpvCapabilityFloatControls2 = 6029,+  SpvCapabilityFMAKHR = 6030,+  SpvCapabilityAtomicFloat32AddEXT = 6033,+  SpvCapabilityAtomicFloat64AddEXT = 6034,+  SpvCapabilityLongCompositesINTEL = 6089,+  SpvCapabilityOptNoneEXT = 6094,+  SpvCapabilityOptNoneINTEL = 6094,+  SpvCapabilityAtomicFloat16AddEXT = 6095,+  SpvCapabilityDebugInfoModuleINTEL = 6114,+  SpvCapabilityBFloat16ConversionINTEL = 6115,+  SpvCapabilitySplitBarrierINTEL = 6141,+  SpvCapabilityArithmeticFenceEXT = 6144,+  SpvCapabilityFPGAClusterAttributesV2ALTERA = 6150,+  SpvCapabilityFPGAClusterAttributesV2INTEL = 6150,+  SpvCapabilityFPGAKernelAttributesv2INTEL = 6161,+  SpvCapabilityTaskSequenceALTERA = 6162,+  SpvCapabilityTaskSequenceINTEL = 6162,+  SpvCapabilityFPMaxErrorINTEL = 6169,+  SpvCapabilityFPGALatencyControlALTERA = 6171,+  SpvCapabilityFPGALatencyControlINTEL = 6171,+  SpvCapabilityFPGAArgumentInterfacesALTERA = 6174,+  SpvCapabilityFPGAArgumentInterfacesINTEL = 6174,+  SpvCapabilityGlobalVariableHostAccessINTEL = 6187,+  SpvCapabilityGlobalVariableFPGADecorationsALTERA = 6189,+  SpvCapabilityGlobalVariableFPGADecorationsINTEL = 6189,+  SpvCapabilitySubgroupBufferPrefetchINTEL = 6220,+  SpvCapabilitySubgroup2DBlockIOINTEL = 6228,+  SpvCapabilitySubgroup2DBlockTransformINTEL = 6229,+  SpvCapabilitySubgroup2DBlockTransposeINTEL = 6230,+  SpvCapabilitySubgroupMatrixMultiplyAccumulateINTEL = 6236,+  SpvCapabilityTernaryBitwiseFunctionINTEL = 6241,+  SpvCapabilityUntypedVariableLengthArrayINTEL = 6243,+  SpvCapabilitySpecConditionalINTEL = 6245,+  SpvCapabilityFunctionVariantsINTEL = 6246,+  SpvCapabilityGroupUniformArithmeticKHR = 6400,+  SpvCapabilityTensorFloat32RoundingINTEL = 6425,+  SpvCapabilityMaskedGatherScatterINTEL = 6427,+  SpvCapabilityCacheControlsINTEL = 6441,+  SpvCapabilityRegisterLimitsINTEL = 6460,+  SpvCapabilityBindlessImagesINTEL = 6528,+  SpvCapabilityDotProductFloat16AccFloat32VALVE = 6912,+  SpvCapabilityDotProductFloat16AccFloat16VALVE = 6913,+  SpvCapabilityDotProductBFloat16AccVALVE = 6914,+  SpvCapabilityDotProductFloat8AccFloat32VALVE = 6915,+  SpvCapabilityMax = 0x7fffffff,+} SpvCapability;++typedef enum SpvRayFlagsShift_ {+  SpvRayFlagsOpaqueKHRShift = 0,+  SpvRayFlagsNoOpaqueKHRShift = 1,+  SpvRayFlagsTerminateOnFirstHitKHRShift = 2,+  SpvRayFlagsSkipClosestHitShaderKHRShift = 3,+  SpvRayFlagsCullBackFacingTrianglesKHRShift = 4,+  SpvRayFlagsCullFrontFacingTrianglesKHRShift = 5,+  SpvRayFlagsCullOpaqueKHRShift = 6,+  SpvRayFlagsCullNoOpaqueKHRShift = 7,+  SpvRayFlagsSkipBuiltinPrimitivesNVShift = 8,+  SpvRayFlagsSkipTrianglesKHRShift = 8,+  SpvRayFlagsSkipAABBsKHRShift = 9,+  SpvRayFlagsForceOpacityMicromap2StateEXTShift = 10,+  SpvRayFlagsMax = 0x7fffffff,+} SpvRayFlagsShift;++typedef enum SpvRayFlagsMask_ {+  SpvRayFlagsMaskNone = 0,+  SpvRayFlagsOpaqueKHRMask = 0x00000001,+  SpvRayFlagsNoOpaqueKHRMask = 0x00000002,+  SpvRayFlagsTerminateOnFirstHitKHRMask = 0x00000004,+  SpvRayFlagsSkipClosestHitShaderKHRMask = 0x00000008,+  SpvRayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,+  SpvRayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,+  SpvRayFlagsCullOpaqueKHRMask = 0x00000040,+  SpvRayFlagsCullNoOpaqueKHRMask = 0x00000080,+  SpvRayFlagsSkipBuiltinPrimitivesNVMask = 0x00000100,+  SpvRayFlagsSkipTrianglesKHRMask = 0x00000100,+  SpvRayFlagsSkipAABBsKHRMask = 0x00000200,+  SpvRayFlagsForceOpacityMicromap2StateEXTMask = 0x00000400,+} SpvRayFlagsMask;++typedef enum SpvRayQueryIntersection_ {+  SpvRayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,+  SpvRayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,+  SpvRayQueryIntersectionMax = 0x7fffffff,+} SpvRayQueryIntersection;++typedef enum SpvRayQueryCommittedIntersectionType_ {+  SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,+  SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,+  SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,+  SpvRayQueryCommittedIntersectionTypeMax = 0x7fffffff,+} SpvRayQueryCommittedIntersectionType;++typedef enum SpvRayQueryCandidateIntersectionType_ {+  SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,+  SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,+  SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff,+} SpvRayQueryCandidateIntersectionType;++typedef enum SpvFragmentShadingRateShift_ {+  SpvFragmentShadingRateVertical2PixelsShift = 0,+  SpvFragmentShadingRateVertical4PixelsShift = 1,+  SpvFragmentShadingRateHorizontal2PixelsShift = 2,+  SpvFragmentShadingRateHorizontal4PixelsShift = 3,+  SpvFragmentShadingRateMax = 0x7fffffff,+} SpvFragmentShadingRateShift;++typedef enum SpvFragmentShadingRateMask_ {+  SpvFragmentShadingRateMaskNone = 0,+  SpvFragmentShadingRateVertical2PixelsMask = 0x00000001,+  SpvFragmentShadingRateVertical4PixelsMask = 0x00000002,+  SpvFragmentShadingRateHorizontal2PixelsMask = 0x00000004,+  SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,+} SpvFragmentShadingRateMask;++typedef enum SpvFPDenormMode_ {+  SpvFPDenormModePreserve = 0,+  SpvFPDenormModeFlushToZero = 1,+  SpvFPDenormModeMax = 0x7fffffff,+} SpvFPDenormMode;++typedef enum SpvFPOperationMode_ {+  SpvFPOperationModeIEEE = 0,+  SpvFPOperationModeALT = 1,+  SpvFPOperationModeMax = 0x7fffffff,+} SpvFPOperationMode;++typedef enum SpvQuantizationModes_ {+  SpvQuantizationModesTRN = 0,+  SpvQuantizationModesTRN_ZERO = 1,+  SpvQuantizationModesRND = 2,+  SpvQuantizationModesRND_ZERO = 3,+  SpvQuantizationModesRND_INF = 4,+  SpvQuantizationModesRND_MIN_INF = 5,+  SpvQuantizationModesRND_CONV = 6,+  SpvQuantizationModesRND_CONV_ODD = 7,+  SpvQuantizationModesMax = 0x7fffffff,+} SpvQuantizationModes;++typedef enum SpvOverflowModes_ {+  SpvOverflowModesWRAP = 0,+  SpvOverflowModesSAT = 1,+  SpvOverflowModesSAT_ZERO = 2,+  SpvOverflowModesSAT_SYM = 3,+  SpvOverflowModesMax = 0x7fffffff,+} SpvOverflowModes;++typedef enum SpvPackedVectorFormat_ {+  SpvPackedVectorFormatPackedVectorFormat4x8Bit = 0,+  SpvPackedVectorFormatPackedVectorFormat4x8BitKHR = 0,+  SpvPackedVectorFormatMax = 0x7fffffff,+} SpvPackedVectorFormat;++typedef enum SpvCooperativeMatrixOperandsShift_ {+  SpvCooperativeMatrixOperandsMatrixASignedComponentsKHRShift = 0,+  SpvCooperativeMatrixOperandsMatrixBSignedComponentsKHRShift = 1,+  SpvCooperativeMatrixOperandsMatrixCSignedComponentsKHRShift = 2,+  SpvCooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift = 3,+  SpvCooperativeMatrixOperandsSaturatingAccumulationKHRShift = 4,+  SpvCooperativeMatrixOperandsMax = 0x7fffffff,+} SpvCooperativeMatrixOperandsShift;++typedef enum SpvCooperativeMatrixOperandsMask_ {+  SpvCooperativeMatrixOperandsMaskNone = 0,+  SpvCooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001,+  SpvCooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002,+  SpvCooperativeMatrixOperandsMatrixCSignedComponentsKHRMask = 0x00000004,+  SpvCooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask = 0x00000008,+  SpvCooperativeMatrixOperandsSaturatingAccumulationKHRMask = 0x00000010,+} SpvCooperativeMatrixOperandsMask;++typedef enum SpvCooperativeMatrixLayout_ {+  SpvCooperativeMatrixLayoutRowMajorKHR = 0,+  SpvCooperativeMatrixLayoutColumnMajorKHR = 1,+  SpvCooperativeMatrixLayoutRowBlockedInterleavedARM = 4202,+  SpvCooperativeMatrixLayoutColumnBlockedInterleavedARM = 4203,+  SpvCooperativeMatrixLayoutMax = 0x7fffffff,+} SpvCooperativeMatrixLayout;++typedef enum SpvCooperativeMatrixUse_ {+  SpvCooperativeMatrixUseMatrixAKHR = 0,+  SpvCooperativeMatrixUseMatrixBKHR = 1,+  SpvCooperativeMatrixUseMatrixAccumulatorKHR = 2,+  SpvCooperativeMatrixUseMax = 0x7fffffff,+} SpvCooperativeMatrixUse;++typedef enum SpvCooperativeMatrixReduceShift_ {+  SpvCooperativeMatrixReduceRowShift = 0,+  SpvCooperativeMatrixReduceColumnShift = 1,+  SpvCooperativeMatrixReduce2x2Shift = 2,+  SpvCooperativeMatrixReduceMax = 0x7fffffff,+} SpvCooperativeMatrixReduceShift;++typedef enum SpvCooperativeMatrixReduceMask_ {+  SpvCooperativeMatrixReduceMaskNone = 0,+  SpvCooperativeMatrixReduceRowMask = 0x00000001,+  SpvCooperativeMatrixReduceColumnMask = 0x00000002,+  SpvCooperativeMatrixReduce2x2Mask = 0x00000004,+} SpvCooperativeMatrixReduceMask;++typedef enum SpvTensorClampMode_ {+  SpvTensorClampModeUndefined = 0,+  SpvTensorClampModeConstant = 1,+  SpvTensorClampModeClampToEdge = 2,+  SpvTensorClampModeRepeat = 3,+  SpvTensorClampModeRepeatMirrored = 4,+  SpvTensorClampModeMax = 0x7fffffff,+} SpvTensorClampMode;++typedef enum SpvTensorAddressingOperandsShift_ {+  SpvTensorAddressingOperandsTensorViewShift = 0,+  SpvTensorAddressingOperandsDecodeFuncShift = 1,+  SpvTensorAddressingOperandsMax = 0x7fffffff,+} SpvTensorAddressingOperandsShift;++typedef enum SpvTensorAddressingOperandsMask_ {+  SpvTensorAddressingOperandsMaskNone = 0,+  SpvTensorAddressingOperandsTensorViewMask = 0x00000001,+  SpvTensorAddressingOperandsDecodeFuncMask = 0x00000002,+} SpvTensorAddressingOperandsMask;++typedef enum SpvTensorOperandsShift_ {+  SpvTensorOperandsNontemporalARMShift = 0,+  SpvTensorOperandsOutOfBoundsValueARMShift = 1,+  SpvTensorOperandsMakeElementAvailableARMShift = 2,+  SpvTensorOperandsMakeElementVisibleARMShift = 3,+  SpvTensorOperandsNonPrivateElementARMShift = 4,+  SpvTensorOperandsMax = 0x7fffffff,+} SpvTensorOperandsShift;++typedef enum SpvTensorOperandsMask_ {+  SpvTensorOperandsMaskNone = 0,+  SpvTensorOperandsNontemporalARMMask = 0x00000001,+  SpvTensorOperandsOutOfBoundsValueARMMask = 0x00000002,+  SpvTensorOperandsMakeElementAvailableARMMask = 0x00000004,+  SpvTensorOperandsMakeElementVisibleARMMask = 0x00000008,+  SpvTensorOperandsNonPrivateElementARMMask = 0x00000010,+} SpvTensorOperandsMask;++typedef enum SpvInitializationModeQualifier_ {+  SpvInitializationModeQualifierInitOnDeviceReprogramALTERA = 0,+  SpvInitializationModeQualifierInitOnDeviceReprogramINTEL = 0,+  SpvInitializationModeQualifierInitOnDeviceResetALTERA = 1,+  SpvInitializationModeQualifierInitOnDeviceResetINTEL = 1,+  SpvInitializationModeQualifierMax = 0x7fffffff,+} SpvInitializationModeQualifier;++typedef enum SpvHostAccessQualifier_ {+  SpvHostAccessQualifierNoneINTEL = 0,+  SpvHostAccessQualifierReadINTEL = 1,+  SpvHostAccessQualifierWriteINTEL = 2,+  SpvHostAccessQualifierReadWriteINTEL = 3,+  SpvHostAccessQualifierMax = 0x7fffffff,+} SpvHostAccessQualifier;++typedef enum SpvLoadCacheControl_ {+  SpvLoadCacheControlUncachedINTEL = 0,+  SpvLoadCacheControlCachedINTEL = 1,+  SpvLoadCacheControlStreamingINTEL = 2,+  SpvLoadCacheControlInvalidateAfterReadINTEL = 3,+  SpvLoadCacheControlConstCachedINTEL = 4,+  SpvLoadCacheControlMax = 0x7fffffff,+} SpvLoadCacheControl;++typedef enum SpvStoreCacheControl_ {+  SpvStoreCacheControlUncachedINTEL = 0,+  SpvStoreCacheControlWriteThroughINTEL = 1,+  SpvStoreCacheControlWriteBackINTEL = 2,+  SpvStoreCacheControlStreamingINTEL = 3,+  SpvStoreCacheControlMax = 0x7fffffff,+} SpvStoreCacheControl;++typedef enum SpvNamedMaximumNumberOfRegisters_ {+  SpvNamedMaximumNumberOfRegistersAutoINTEL = 0,+  SpvNamedMaximumNumberOfRegistersMax = 0x7fffffff,+} SpvNamedMaximumNumberOfRegisters;++typedef enum SpvMatrixMultiplyAccumulateOperandsShift_ {+  SpvMatrixMultiplyAccumulateOperandsMatrixASignedComponentsINTELShift = 0,+  SpvMatrixMultiplyAccumulateOperandsMatrixBSignedComponentsINTELShift = 1,+  SpvMatrixMultiplyAccumulateOperandsMatrixCBFloat16INTELShift = 2,+  SpvMatrixMultiplyAccumulateOperandsMatrixResultBFloat16INTELShift = 3,+  SpvMatrixMultiplyAccumulateOperandsMatrixAPackedInt8INTELShift = 4,+  SpvMatrixMultiplyAccumulateOperandsMatrixBPackedInt8INTELShift = 5,+  SpvMatrixMultiplyAccumulateOperandsMatrixAPackedInt4INTELShift = 6,+  SpvMatrixMultiplyAccumulateOperandsMatrixBPackedInt4INTELShift = 7,+  SpvMatrixMultiplyAccumulateOperandsMatrixATF32INTELShift = 8,+  SpvMatrixMultiplyAccumulateOperandsMatrixBTF32INTELShift = 9,+  SpvMatrixMultiplyAccumulateOperandsMatrixAPackedFloat16INTELShift = 10,+  SpvMatrixMultiplyAccumulateOperandsMatrixBPackedFloat16INTELShift = 11,+  SpvMatrixMultiplyAccumulateOperandsMatrixAPackedBFloat16INTELShift = 12,+  SpvMatrixMultiplyAccumulateOperandsMatrixBPackedBFloat16INTELShift = 13,+  SpvMatrixMultiplyAccumulateOperandsMax = 0x7fffffff,+} SpvMatrixMultiplyAccumulateOperandsShift;++typedef enum SpvMatrixMultiplyAccumulateOperandsMask_ {+  SpvMatrixMultiplyAccumulateOperandsMaskNone = 0,+  SpvMatrixMultiplyAccumulateOperandsMatrixASignedComponentsINTELMask = 0x00000001,+  SpvMatrixMultiplyAccumulateOperandsMatrixBSignedComponentsINTELMask = 0x00000002,+  SpvMatrixMultiplyAccumulateOperandsMatrixCBFloat16INTELMask = 0x00000004,+  SpvMatrixMultiplyAccumulateOperandsMatrixResultBFloat16INTELMask = 0x00000008,+  SpvMatrixMultiplyAccumulateOperandsMatrixAPackedInt8INTELMask = 0x00000010,+  SpvMatrixMultiplyAccumulateOperandsMatrixBPackedInt8INTELMask = 0x00000020,+  SpvMatrixMultiplyAccumulateOperandsMatrixAPackedInt4INTELMask = 0x00000040,+  SpvMatrixMultiplyAccumulateOperandsMatrixBPackedInt4INTELMask = 0x00000080,+  SpvMatrixMultiplyAccumulateOperandsMatrixATF32INTELMask = 0x00000100,+  SpvMatrixMultiplyAccumulateOperandsMatrixBTF32INTELMask = 0x00000200,+  SpvMatrixMultiplyAccumulateOperandsMatrixAPackedFloat16INTELMask = 0x00000400,+  SpvMatrixMultiplyAccumulateOperandsMatrixBPackedFloat16INTELMask = 0x00000800,+  SpvMatrixMultiplyAccumulateOperandsMatrixAPackedBFloat16INTELMask = 0x00001000,+  SpvMatrixMultiplyAccumulateOperandsMatrixBPackedBFloat16INTELMask = 0x00002000,+} SpvMatrixMultiplyAccumulateOperandsMask;++typedef enum SpvRawAccessChainOperandsShift_ {+  SpvRawAccessChainOperandsRobustnessPerComponentNVShift = 0,+  SpvRawAccessChainOperandsRobustnessPerElementNVShift = 1,+  SpvRawAccessChainOperandsMax = 0x7fffffff,+} SpvRawAccessChainOperandsShift;++typedef enum SpvRawAccessChainOperandsMask_ {+  SpvRawAccessChainOperandsMaskNone = 0,+  SpvRawAccessChainOperandsRobustnessPerComponentNVMask = 0x00000001,+  SpvRawAccessChainOperandsRobustnessPerElementNVMask = 0x00000002,+} SpvRawAccessChainOperandsMask;++typedef enum SpvFPEncoding_ {+  SpvFPEncodingBFloat16KHR = 0,+  SpvFPEncodingFloat8E4M3EXT = 4214,+  SpvFPEncodingFloat8E5M2EXT = 4215,+  SpvFPEncodingMax = 0x7fffffff,+} SpvFPEncoding;++typedef enum SpvCooperativeVectorMatrixLayout_ {+  SpvCooperativeVectorMatrixLayoutRowMajorNV = 0,+  SpvCooperativeVectorMatrixLayoutColumnMajorNV = 1,+  SpvCooperativeVectorMatrixLayoutInferencingOptimalNV = 2,+  SpvCooperativeVectorMatrixLayoutTrainingOptimalNV = 3,+  SpvCooperativeVectorMatrixLayoutMax = 0x7fffffff,+} SpvCooperativeVectorMatrixLayout;++typedef enum SpvComponentType_ {+  SpvComponentTypeFloat16NV = 0,+  SpvComponentTypeFloat32NV = 1,+  SpvComponentTypeFloat64NV = 2,+  SpvComponentTypeSignedInt8NV = 3,+  SpvComponentTypeSignedInt16NV = 4,+  SpvComponentTypeSignedInt32NV = 5,+  SpvComponentTypeSignedInt64NV = 6,+  SpvComponentTypeUnsignedInt8NV = 7,+  SpvComponentTypeUnsignedInt16NV = 8,+  SpvComponentTypeUnsignedInt32NV = 9,+  SpvComponentTypeUnsignedInt64NV = 10,+  SpvComponentTypeSignedInt8PackedNV = 1000491000,+  SpvComponentTypeUnsignedInt8PackedNV = 1000491001,+  SpvComponentTypeFloatE4M3NV = 1000491002,+  SpvComponentTypeFloatE5M2NV = 1000491003,+  SpvComponentTypeMax = 0x7fffffff,+} SpvComponentType;++typedef enum SpvOp_ {+  SpvOpNop = 0,+  SpvOpUndef = 1,+  SpvOpSourceContinued = 2,+  SpvOpSource = 3,+  SpvOpSourceExtension = 4,+  SpvOpName = 5,+  SpvOpMemberName = 6,+  SpvOpString = 7,+  SpvOpLine = 8,+  SpvOpExtension = 10,+  SpvOpExtInstImport = 11,+  SpvOpExtInst = 12,+  SpvOpMemoryModel = 14,+  SpvOpEntryPoint = 15,+  SpvOpExecutionMode = 16,+  SpvOpCapability = 17,+  SpvOpTypeVoid = 19,+  SpvOpTypeBool = 20,+  SpvOpTypeInt = 21,+  SpvOpTypeFloat = 22,+  SpvOpTypeVector = 23,+  SpvOpTypeMatrix = 24,+  SpvOpTypeImage = 25,+  SpvOpTypeSampler = 26,+  SpvOpTypeSampledImage = 27,+  SpvOpTypeArray = 28,+  SpvOpTypeRuntimeArray = 29,+  SpvOpTypeStruct = 30,+  SpvOpTypeOpaque = 31,+  SpvOpTypePointer = 32,+  SpvOpTypeFunction = 33,+  SpvOpTypeEvent = 34,+  SpvOpTypeDeviceEvent = 35,+  SpvOpTypeReserveId = 36,+  SpvOpTypeQueue = 37,+  SpvOpTypePipe = 38,+  SpvOpTypeForwardPointer = 39,+  SpvOpConstantTrue = 41,+  SpvOpConstantFalse = 42,+  SpvOpConstant = 43,+  SpvOpConstantComposite = 44,+  SpvOpConstantSampler = 45,+  SpvOpConstantNull = 46,+  SpvOpSpecConstantTrue = 48,+  SpvOpSpecConstantFalse = 49,+  SpvOpSpecConstant = 50,+  SpvOpSpecConstantComposite = 51,+  SpvOpSpecConstantOp = 52,+  SpvOpFunction = 54,+  SpvOpFunctionParameter = 55,+  SpvOpFunctionEnd = 56,+  SpvOpFunctionCall = 57,+  SpvOpVariable = 59,+  SpvOpImageTexelPointer = 60,+  SpvOpLoad = 61,+  SpvOpStore = 62,+  SpvOpCopyMemory = 63,+  SpvOpCopyMemorySized = 64,+  SpvOpAccessChain = 65,+  SpvOpInBoundsAccessChain = 66,+  SpvOpPtrAccessChain = 67,+  SpvOpArrayLength = 68,+  SpvOpGenericPtrMemSemantics = 69,+  SpvOpInBoundsPtrAccessChain = 70,+  SpvOpDecorate = 71,+  SpvOpMemberDecorate = 72,+  SpvOpDecorationGroup = 73,+  SpvOpGroupDecorate = 74,+  SpvOpGroupMemberDecorate = 75,+  SpvOpVectorExtractDynamic = 77,+  SpvOpVectorInsertDynamic = 78,+  SpvOpVectorShuffle = 79,+  SpvOpCompositeConstruct = 80,+  SpvOpCompositeExtract = 81,+  SpvOpCompositeInsert = 82,+  SpvOpCopyObject = 83,+  SpvOpTranspose = 84,+  SpvOpSampledImage = 86,+  SpvOpImageSampleImplicitLod = 87,+  SpvOpImageSampleExplicitLod = 88,+  SpvOpImageSampleDrefImplicitLod = 89,+  SpvOpImageSampleDrefExplicitLod = 90,+  SpvOpImageSampleProjImplicitLod = 91,+  SpvOpImageSampleProjExplicitLod = 92,+  SpvOpImageSampleProjDrefImplicitLod = 93,+  SpvOpImageSampleProjDrefExplicitLod = 94,+  SpvOpImageFetch = 95,+  SpvOpImageGather = 96,+  SpvOpImageDrefGather = 97,+  SpvOpImageRead = 98,+  SpvOpImageWrite = 99,+  SpvOpImage = 100,+  SpvOpImageQueryFormat = 101,+  SpvOpImageQueryOrder = 102,+  SpvOpImageQuerySizeLod = 103,+  SpvOpImageQuerySize = 104,+  SpvOpImageQueryLod = 105,+  SpvOpImageQueryLevels = 106,+  SpvOpImageQuerySamples = 107,+  SpvOpConvertFToU = 109,+  SpvOpConvertFToS = 110,+  SpvOpConvertSToF = 111,+  SpvOpConvertUToF = 112,+  SpvOpUConvert = 113,+  SpvOpSConvert = 114,+  SpvOpFConvert = 115,+  SpvOpQuantizeToF16 = 116,+  SpvOpConvertPtrToU = 117,+  SpvOpSatConvertSToU = 118,+  SpvOpSatConvertUToS = 119,+  SpvOpConvertUToPtr = 120,+  SpvOpPtrCastToGeneric = 121,+  SpvOpGenericCastToPtr = 122,+  SpvOpGenericCastToPtrExplicit = 123,+  SpvOpBitcast = 124,+  SpvOpSNegate = 126,+  SpvOpFNegate = 127,+  SpvOpIAdd = 128,+  SpvOpFAdd = 129,+  SpvOpISub = 130,+  SpvOpFSub = 131,+  SpvOpIMul = 132,+  SpvOpFMul = 133,+  SpvOpUDiv = 134,+  SpvOpSDiv = 135,+  SpvOpFDiv = 136,+  SpvOpUMod = 137,+  SpvOpSRem = 138,+  SpvOpSMod = 139,+  SpvOpFRem = 140,+  SpvOpFMod = 141,+  SpvOpVectorTimesScalar = 142,+  SpvOpMatrixTimesScalar = 143,+  SpvOpVectorTimesMatrix = 144,+  SpvOpMatrixTimesVector = 145,+  SpvOpMatrixTimesMatrix = 146,+  SpvOpOuterProduct = 147,+  SpvOpDot = 148,+  SpvOpIAddCarry = 149,+  SpvOpISubBorrow = 150,+  SpvOpUMulExtended = 151,+  SpvOpSMulExtended = 152,+  SpvOpAny = 154,+  SpvOpAll = 155,+  SpvOpIsNan = 156,+  SpvOpIsInf = 157,+  SpvOpIsFinite = 158,+  SpvOpIsNormal = 159,+  SpvOpSignBitSet = 160,+  SpvOpLessOrGreater = 161,+  SpvOpOrdered = 162,+  SpvOpUnordered = 163,+  SpvOpLogicalEqual = 164,+  SpvOpLogicalNotEqual = 165,+  SpvOpLogicalOr = 166,+  SpvOpLogicalAnd = 167,+  SpvOpLogicalNot = 168,+  SpvOpSelect = 169,+  SpvOpIEqual = 170,+  SpvOpINotEqual = 171,+  SpvOpUGreaterThan = 172,+  SpvOpSGreaterThan = 173,+  SpvOpUGreaterThanEqual = 174,+  SpvOpSGreaterThanEqual = 175,+  SpvOpULessThan = 176,+  SpvOpSLessThan = 177,+  SpvOpULessThanEqual = 178,+  SpvOpSLessThanEqual = 179,+  SpvOpFOrdEqual = 180,+  SpvOpFUnordEqual = 181,+  SpvOpFOrdNotEqual = 182,+  SpvOpFUnordNotEqual = 183,+  SpvOpFOrdLessThan = 184,+  SpvOpFUnordLessThan = 185,+  SpvOpFOrdGreaterThan = 186,+  SpvOpFUnordGreaterThan = 187,+  SpvOpFOrdLessThanEqual = 188,+  SpvOpFUnordLessThanEqual = 189,+  SpvOpFOrdGreaterThanEqual = 190,+  SpvOpFUnordGreaterThanEqual = 191,+  SpvOpShiftRightLogical = 194,+  SpvOpShiftRightArithmetic = 195,+  SpvOpShiftLeftLogical = 196,+  SpvOpBitwiseOr = 197,+  SpvOpBitwiseXor = 198,+  SpvOpBitwiseAnd = 199,+  SpvOpNot = 200,+  SpvOpBitFieldInsert = 201,+  SpvOpBitFieldSExtract = 202,+  SpvOpBitFieldUExtract = 203,+  SpvOpBitReverse = 204,+  SpvOpBitCount = 205,+  SpvOpDPdx = 207,+  SpvOpDPdy = 208,+  SpvOpFwidth = 209,+  SpvOpDPdxFine = 210,+  SpvOpDPdyFine = 211,+  SpvOpFwidthFine = 212,+  SpvOpDPdxCoarse = 213,+  SpvOpDPdyCoarse = 214,+  SpvOpFwidthCoarse = 215,+  SpvOpEmitVertex = 218,+  SpvOpEndPrimitive = 219,+  SpvOpEmitStreamVertex = 220,+  SpvOpEndStreamPrimitive = 221,+  SpvOpControlBarrier = 224,+  SpvOpMemoryBarrier = 225,+  SpvOpAtomicLoad = 227,+  SpvOpAtomicStore = 228,+  SpvOpAtomicExchange = 229,+  SpvOpAtomicCompareExchange = 230,+  SpvOpAtomicCompareExchangeWeak = 231,+  SpvOpAtomicIIncrement = 232,+  SpvOpAtomicIDecrement = 233,+  SpvOpAtomicIAdd = 234,+  SpvOpAtomicISub = 235,+  SpvOpAtomicSMin = 236,+  SpvOpAtomicUMin = 237,+  SpvOpAtomicSMax = 238,+  SpvOpAtomicUMax = 239,+  SpvOpAtomicAnd = 240,+  SpvOpAtomicOr = 241,+  SpvOpAtomicXor = 242,+  SpvOpPhi = 245,+  SpvOpLoopMerge = 246,+  SpvOpSelectionMerge = 247,+  SpvOpLabel = 248,+  SpvOpBranch = 249,+  SpvOpBranchConditional = 250,+  SpvOpSwitch = 251,+  SpvOpKill = 252,+  SpvOpReturn = 253,+  SpvOpReturnValue = 254,+  SpvOpUnreachable = 255,+  SpvOpLifetimeStart = 256,+  SpvOpLifetimeStop = 257,+  SpvOpGroupAsyncCopy = 259,+  SpvOpGroupWaitEvents = 260,+  SpvOpGroupAll = 261,+  SpvOpGroupAny = 262,+  SpvOpGroupBroadcast = 263,+  SpvOpGroupIAdd = 264,+  SpvOpGroupFAdd = 265,+  SpvOpGroupFMin = 266,+  SpvOpGroupUMin = 267,+  SpvOpGroupSMin = 268,+  SpvOpGroupFMax = 269,+  SpvOpGroupUMax = 270,+  SpvOpGroupSMax = 271,+  SpvOpReadPipe = 274,+  SpvOpWritePipe = 275,+  SpvOpReservedReadPipe = 276,+  SpvOpReservedWritePipe = 277,+  SpvOpReserveReadPipePackets = 278,+  SpvOpReserveWritePipePackets = 279,+  SpvOpCommitReadPipe = 280,+  SpvOpCommitWritePipe = 281,+  SpvOpIsValidReserveId = 282,+  SpvOpGetNumPipePackets = 283,+  SpvOpGetMaxPipePackets = 284,+  SpvOpGroupReserveReadPipePackets = 285,+  SpvOpGroupReserveWritePipePackets = 286,+  SpvOpGroupCommitReadPipe = 287,+  SpvOpGroupCommitWritePipe = 288,+  SpvOpEnqueueMarker = 291,+  SpvOpEnqueueKernel = 292,+  SpvOpGetKernelNDrangeSubGroupCount = 293,+  SpvOpGetKernelNDrangeMaxSubGroupSize = 294,+  SpvOpGetKernelWorkGroupSize = 295,+  SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,+  SpvOpRetainEvent = 297,+  SpvOpReleaseEvent = 298,+  SpvOpCreateUserEvent = 299,+  SpvOpIsValidEvent = 300,+  SpvOpSetUserEventStatus = 301,+  SpvOpCaptureEventProfilingInfo = 302,+  SpvOpGetDefaultQueue = 303,+  SpvOpBuildNDRange = 304,+  SpvOpImageSparseSampleImplicitLod = 305,+  SpvOpImageSparseSampleExplicitLod = 306,+  SpvOpImageSparseSampleDrefImplicitLod = 307,+  SpvOpImageSparseSampleDrefExplicitLod = 308,+  SpvOpImageSparseSampleProjImplicitLod = 309,+  SpvOpImageSparseSampleProjExplicitLod = 310,+  SpvOpImageSparseSampleProjDrefImplicitLod = 311,+  SpvOpImageSparseSampleProjDrefExplicitLod = 312,+  SpvOpImageSparseFetch = 313,+  SpvOpImageSparseGather = 314,+  SpvOpImageSparseDrefGather = 315,+  SpvOpImageSparseTexelsResident = 316,+  SpvOpNoLine = 317,+  SpvOpAtomicFlagTestAndSet = 318,+  SpvOpAtomicFlagClear = 319,+  SpvOpImageSparseRead = 320,+  SpvOpSizeOf = 321,+  SpvOpTypePipeStorage = 322,+  SpvOpConstantPipeStorage = 323,+  SpvOpCreatePipeFromPipeStorage = 324,+  SpvOpGetKernelLocalSizeForSubgroupCount = 325,+  SpvOpGetKernelMaxNumSubgroups = 326,+  SpvOpTypeNamedBarrier = 327,+  SpvOpNamedBarrierInitialize = 328,+  SpvOpMemoryNamedBarrier = 329,+  SpvOpModuleProcessed = 330,+  SpvOpExecutionModeId = 331,+  SpvOpDecorateId = 332,+  SpvOpGroupNonUniformElect = 333,+  SpvOpGroupNonUniformAll = 334,+  SpvOpGroupNonUniformAny = 335,+  SpvOpGroupNonUniformAllEqual = 336,+  SpvOpGroupNonUniformBroadcast = 337,+  SpvOpGroupNonUniformBroadcastFirst = 338,+  SpvOpGroupNonUniformBallot = 339,+  SpvOpGroupNonUniformInverseBallot = 340,+  SpvOpGroupNonUniformBallotBitExtract = 341,+  SpvOpGroupNonUniformBallotBitCount = 342,+  SpvOpGroupNonUniformBallotFindLSB = 343,+  SpvOpGroupNonUniformBallotFindMSB = 344,+  SpvOpGroupNonUniformShuffle = 345,+  SpvOpGroupNonUniformShuffleXor = 346,+  SpvOpGroupNonUniformShuffleUp = 347,+  SpvOpGroupNonUniformShuffleDown = 348,+  SpvOpGroupNonUniformIAdd = 349,+  SpvOpGroupNonUniformFAdd = 350,+  SpvOpGroupNonUniformIMul = 351,+  SpvOpGroupNonUniformFMul = 352,+  SpvOpGroupNonUniformSMin = 353,+  SpvOpGroupNonUniformUMin = 354,+  SpvOpGroupNonUniformFMin = 355,+  SpvOpGroupNonUniformSMax = 356,+  SpvOpGroupNonUniformUMax = 357,+  SpvOpGroupNonUniformFMax = 358,+  SpvOpGroupNonUniformBitwiseAnd = 359,+  SpvOpGroupNonUniformBitwiseOr = 360,+  SpvOpGroupNonUniformBitwiseXor = 361,+  SpvOpGroupNonUniformLogicalAnd = 362,+  SpvOpGroupNonUniformLogicalOr = 363,+  SpvOpGroupNonUniformLogicalXor = 364,+  SpvOpGroupNonUniformQuadBroadcast = 365,+  SpvOpGroupNonUniformQuadSwap = 366,+  SpvOpCopyLogical = 400,+  SpvOpPtrEqual = 401,+  SpvOpPtrNotEqual = 402,+  SpvOpPtrDiff = 403,+  SpvOpColorAttachmentReadEXT = 4160,+  SpvOpDepthAttachmentReadEXT = 4161,+  SpvOpStencilAttachmentReadEXT = 4162,+  SpvOpTypeTensorARM = 4163,+  SpvOpTensorReadARM = 4164,+  SpvOpTensorWriteARM = 4165,+  SpvOpTensorQuerySizeARM = 4166,+  SpvOpGraphConstantARM = 4181,+  SpvOpGraphEntryPointARM = 4182,+  SpvOpGraphARM = 4183,+  SpvOpGraphInputARM = 4184,+  SpvOpGraphSetOutputARM = 4185,+  SpvOpGraphEndARM = 4186,+  SpvOpTypeGraphARM = 4190,+  SpvOpTerminateInvocation = 4416,+  SpvOpTypeUntypedPointerKHR = 4417,+  SpvOpUntypedVariableKHR = 4418,+  SpvOpUntypedAccessChainKHR = 4419,+  SpvOpUntypedInBoundsAccessChainKHR = 4420,+  SpvOpSubgroupBallotKHR = 4421,+  SpvOpSubgroupFirstInvocationKHR = 4422,+  SpvOpUntypedPtrAccessChainKHR = 4423,+  SpvOpUntypedInBoundsPtrAccessChainKHR = 4424,+  SpvOpUntypedArrayLengthKHR = 4425,+  SpvOpUntypedPrefetchKHR = 4426,+  SpvOpFmaKHR = 4427,+  SpvOpSubgroupAllKHR = 4428,+  SpvOpSubgroupAnyKHR = 4429,+  SpvOpSubgroupAllEqualKHR = 4430,+  SpvOpGroupNonUniformRotateKHR = 4431,+  SpvOpSubgroupReadInvocationKHR = 4432,+  SpvOpExtInstWithForwardRefsKHR = 4433,+  SpvOpUntypedGroupAsyncCopyKHR = 4434,+  SpvOpTraceRayKHR = 4445,+  SpvOpExecuteCallableKHR = 4446,+  SpvOpConvertUToAccelerationStructureKHR = 4447,+  SpvOpIgnoreIntersectionKHR = 4448,+  SpvOpTerminateRayKHR = 4449,+  SpvOpSDot = 4450,+  SpvOpSDotKHR = 4450,+  SpvOpUDot = 4451,+  SpvOpUDotKHR = 4451,+  SpvOpSUDot = 4452,+  SpvOpSUDotKHR = 4452,+  SpvOpSDotAccSat = 4453,+  SpvOpSDotAccSatKHR = 4453,+  SpvOpUDotAccSat = 4454,+  SpvOpUDotAccSatKHR = 4454,+  SpvOpSUDotAccSat = 4455,+  SpvOpSUDotAccSatKHR = 4455,+  SpvOpTypeCooperativeMatrixKHR = 4456,+  SpvOpCooperativeMatrixLoadKHR = 4457,+  SpvOpCooperativeMatrixStoreKHR = 4458,+  SpvOpCooperativeMatrixMulAddKHR = 4459,+  SpvOpCooperativeMatrixLengthKHR = 4460,+  SpvOpConstantCompositeReplicateEXT = 4461,+  SpvOpSpecConstantCompositeReplicateEXT = 4462,+  SpvOpCompositeConstructReplicateEXT = 4463,+  SpvOpTypeRayQueryKHR = 4472,+  SpvOpRayQueryInitializeKHR = 4473,+  SpvOpRayQueryTerminateKHR = 4474,+  SpvOpRayQueryGenerateIntersectionKHR = 4475,+  SpvOpRayQueryConfirmIntersectionKHR = 4476,+  SpvOpRayQueryProceedKHR = 4477,+  SpvOpRayQueryGetIntersectionTypeKHR = 4479,+  SpvOpImageSampleWeightedQCOM = 4480,+  SpvOpImageBoxFilterQCOM = 4481,+  SpvOpImageBlockMatchSSDQCOM = 4482,+  SpvOpImageBlockMatchSADQCOM = 4483,+  SpvOpBitCastArrayQCOM = 4497,+  SpvOpImageBlockMatchWindowSSDQCOM = 4500,+  SpvOpImageBlockMatchWindowSADQCOM = 4501,+  SpvOpImageBlockMatchGatherSSDQCOM = 4502,+  SpvOpImageBlockMatchGatherSADQCOM = 4503,+  SpvOpCompositeConstructCoopMatQCOM = 4540,+  SpvOpCompositeExtractCoopMatQCOM = 4541,+  SpvOpExtractSubArrayQCOM = 4542,+  SpvOpGroupIAddNonUniformAMD = 5000,+  SpvOpGroupFAddNonUniformAMD = 5001,+  SpvOpGroupFMinNonUniformAMD = 5002,+  SpvOpGroupUMinNonUniformAMD = 5003,+  SpvOpGroupSMinNonUniformAMD = 5004,+  SpvOpGroupFMaxNonUniformAMD = 5005,+  SpvOpGroupUMaxNonUniformAMD = 5006,+  SpvOpGroupSMaxNonUniformAMD = 5007,+  SpvOpFragmentMaskFetchAMD = 5011,+  SpvOpFragmentFetchAMD = 5012,+  SpvOpReadClockKHR = 5056,+  SpvOpAllocateNodePayloadsAMDX = 5074,+  SpvOpEnqueueNodePayloadsAMDX = 5075,+  SpvOpTypeNodePayloadArrayAMDX = 5076,+  SpvOpFinishWritingNodePayloadAMDX = 5078,+  SpvOpNodePayloadArrayLengthAMDX = 5090,+  SpvOpIsNodePayloadValidAMDX = 5101,+  SpvOpConstantStringAMDX = 5103,+  SpvOpSpecConstantStringAMDX = 5104,+  SpvOpGroupNonUniformQuadAllKHR = 5110,+  SpvOpGroupNonUniformQuadAnyKHR = 5111,+  SpvOpTypeBufferEXT = 5115,+  SpvOpBufferPointerEXT = 5119,+  SpvOpAbortKHR = 5121,+  SpvOpUntypedImageTexelPointerEXT = 5126,+  SpvOpMemberDecorateIdEXT = 5127,+  SpvOpConstantSizeOfEXT = 5129,+  SpvOpConstantDataKHR = 5147,+  SpvOpSpecConstantDataKHR = 5148,+  SpvOpPoisonKHR = 5158,+  SpvOpFreezeKHR = 5159,+  SpvOpHitObjectRecordHitMotionNV = 5249,+  SpvOpHitObjectRecordHitWithIndexMotionNV = 5250,+  SpvOpHitObjectRecordMissMotionNV = 5251,+  SpvOpHitObjectGetWorldToObjectNV = 5252,+  SpvOpHitObjectGetObjectToWorldNV = 5253,+  SpvOpHitObjectGetObjectRayDirectionNV = 5254,+  SpvOpHitObjectGetObjectRayOriginNV = 5255,+  SpvOpHitObjectTraceRayMotionNV = 5256,+  SpvOpHitObjectGetShaderRecordBufferHandleNV = 5257,+  SpvOpHitObjectGetShaderBindingTableRecordIndexNV = 5258,+  SpvOpHitObjectRecordEmptyNV = 5259,+  SpvOpHitObjectTraceRayNV = 5260,+  SpvOpHitObjectRecordHitNV = 5261,+  SpvOpHitObjectRecordHitWithIndexNV = 5262,+  SpvOpHitObjectRecordMissNV = 5263,+  SpvOpHitObjectExecuteShaderNV = 5264,+  SpvOpHitObjectGetCurrentTimeNV = 5265,+  SpvOpHitObjectGetAttributesNV = 5266,+  SpvOpHitObjectGetHitKindNV = 5267,+  SpvOpHitObjectGetPrimitiveIndexNV = 5268,+  SpvOpHitObjectGetGeometryIndexNV = 5269,+  SpvOpHitObjectGetInstanceIdNV = 5270,+  SpvOpHitObjectGetInstanceCustomIndexNV = 5271,+  SpvOpHitObjectGetWorldRayDirectionNV = 5272,+  SpvOpHitObjectGetWorldRayOriginNV = 5273,+  SpvOpHitObjectGetRayTMaxNV = 5274,+  SpvOpHitObjectGetRayTMinNV = 5275,+  SpvOpHitObjectIsEmptyNV = 5276,+  SpvOpHitObjectIsHitNV = 5277,+  SpvOpHitObjectIsMissNV = 5278,+  SpvOpReorderThreadWithHitObjectNV = 5279,+  SpvOpReorderThreadWithHintNV = 5280,+  SpvOpTypeHitObjectNV = 5281,+  SpvOpImageSampleFootprintNV = 5283,+  SpvOpTypeCooperativeVectorNV = 5288,+  SpvOpTypeVectorIdEXT = 5288,+  SpvOpCooperativeVectorMatrixMulNV = 5289,+  SpvOpCooperativeVectorOuterProductAccumulateNV = 5290,+  SpvOpCooperativeVectorReduceSumAccumulateNV = 5291,+  SpvOpCooperativeVectorMatrixMulAddNV = 5292,+  SpvOpCooperativeMatrixConvertNV = 5293,+  SpvOpEmitMeshTasksEXT = 5294,+  SpvOpSetMeshOutputsEXT = 5295,+  SpvOpGroupNonUniformPartitionEXT = 5296,+  SpvOpGroupNonUniformPartitionNV = 5296,+  SpvOpWritePackedPrimitiveIndices4x8NV = 5299,+  SpvOpFetchMicroTriangleVertexPositionNV = 5300,+  SpvOpFetchMicroTriangleVertexBarycentricNV = 5301,+  SpvOpCooperativeVectorLoadNV = 5302,+  SpvOpCooperativeVectorStoreNV = 5303,+  SpvOpHitObjectRecordFromQueryEXT = 5304,+  SpvOpHitObjectRecordMissEXT = 5305,+  SpvOpHitObjectRecordMissMotionEXT = 5306,+  SpvOpHitObjectGetIntersectionTriangleVertexPositionsEXT = 5307,+  SpvOpHitObjectGetRayFlagsEXT = 5308,+  SpvOpHitObjectSetShaderBindingTableRecordIndexEXT = 5309,+  SpvOpHitObjectReorderExecuteShaderEXT = 5310,+  SpvOpHitObjectTraceReorderExecuteEXT = 5311,+  SpvOpHitObjectTraceMotionReorderExecuteEXT = 5312,+  SpvOpTypeHitObjectEXT = 5313,+  SpvOpReorderThreadWithHintEXT = 5314,+  SpvOpReorderThreadWithHitObjectEXT = 5315,+  SpvOpHitObjectTraceRayEXT = 5316,+  SpvOpHitObjectTraceRayMotionEXT = 5317,+  SpvOpHitObjectRecordEmptyEXT = 5318,+  SpvOpHitObjectExecuteShaderEXT = 5319,+  SpvOpHitObjectGetCurrentTimeEXT = 5320,+  SpvOpHitObjectGetAttributesEXT = 5321,+  SpvOpHitObjectGetHitKindEXT = 5322,+  SpvOpHitObjectGetPrimitiveIndexEXT = 5323,+  SpvOpHitObjectGetGeometryIndexEXT = 5324,+  SpvOpHitObjectGetInstanceIdEXT = 5325,+  SpvOpHitObjectGetInstanceCustomIndexEXT = 5326,+  SpvOpHitObjectGetObjectRayOriginEXT = 5327,+  SpvOpHitObjectGetObjectRayDirectionEXT = 5328,+  SpvOpHitObjectGetWorldRayDirectionEXT = 5329,+  SpvOpHitObjectGetWorldRayOriginEXT = 5330,+  SpvOpHitObjectGetObjectToWorldEXT = 5331,+  SpvOpHitObjectGetWorldToObjectEXT = 5332,+  SpvOpHitObjectGetRayTMaxEXT = 5333,+  SpvOpReportIntersectionKHR = 5334,+  SpvOpReportIntersectionNV = 5334,+  SpvOpIgnoreIntersectionNV = 5335,+  SpvOpTerminateRayNV = 5336,+  SpvOpTraceNV = 5337,+  SpvOpTraceMotionNV = 5338,+  SpvOpTraceRayMotionNV = 5339,+  SpvOpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,+  SpvOpTypeAccelerationStructureKHR = 5341,+  SpvOpTypeAccelerationStructureNV = 5341,+  SpvOpExecuteCallableNV = 5344,+  SpvOpRayQueryGetClusterIdNV = 5345,+  SpvOpRayQueryGetIntersectionClusterIdNV = 5345,+  SpvOpHitObjectGetClusterIdNV = 5346,+  SpvOpHitObjectGetRayTMinEXT = 5347,+  SpvOpHitObjectGetShaderBindingTableRecordIndexEXT = 5348,+  SpvOpHitObjectGetShaderRecordBufferHandleEXT = 5349,+  SpvOpHitObjectIsEmptyEXT = 5350,+  SpvOpHitObjectIsHitEXT = 5351,+  SpvOpHitObjectIsMissEXT = 5352,+  SpvOpTypeCooperativeMatrixNV = 5358,+  SpvOpCooperativeMatrixLoadNV = 5359,+  SpvOpCooperativeMatrixStoreNV = 5360,+  SpvOpCooperativeMatrixMulAddNV = 5361,+  SpvOpCooperativeMatrixLengthNV = 5362,+  SpvOpBeginInvocationInterlockEXT = 5364,+  SpvOpEndInvocationInterlockEXT = 5365,+  SpvOpCooperativeMatrixReduceNV = 5366,+  SpvOpCooperativeMatrixLoadTensorNV = 5367,+  SpvOpCooperativeMatrixStoreTensorNV = 5368,+  SpvOpCooperativeMatrixPerElementOpNV = 5369,+  SpvOpTypeTensorLayoutNV = 5370,+  SpvOpTypeTensorViewNV = 5371,+  SpvOpCreateTensorLayoutNV = 5372,+  SpvOpTensorLayoutSetDimensionNV = 5373,+  SpvOpTensorLayoutSetStrideNV = 5374,+  SpvOpTensorLayoutSliceNV = 5375,+  SpvOpTensorLayoutSetClampValueNV = 5376,+  SpvOpCreateTensorViewNV = 5377,+  SpvOpTensorViewSetDimensionNV = 5378,+  SpvOpTensorViewSetStrideNV = 5379,+  SpvOpDemoteToHelperInvocation = 5380,+  SpvOpDemoteToHelperInvocationEXT = 5380,+  SpvOpIsHelperInvocationEXT = 5381,+  SpvOpTensorViewSetClipNV = 5382,+  SpvOpTensorLayoutSetBlockSizeNV = 5384,+  SpvOpCooperativeMatrixTransposeNV = 5390,+  SpvOpConvertUToImageNV = 5391,+  SpvOpConvertUToSamplerNV = 5392,+  SpvOpConvertImageToUNV = 5393,+  SpvOpConvertSamplerToUNV = 5394,+  SpvOpConvertUToSampledImageNV = 5395,+  SpvOpConvertSampledImageToUNV = 5396,+  SpvOpSamplerImageAddressingModeNV = 5397,+  SpvOpRawAccessChainNV = 5398,+  SpvOpRayQueryGetIntersectionSpherePositionNV = 5427,+  SpvOpRayQueryGetIntersectionSphereRadiusNV = 5428,+  SpvOpRayQueryGetIntersectionLSSPositionsNV = 5429,+  SpvOpRayQueryGetIntersectionLSSRadiiNV = 5430,+  SpvOpRayQueryGetIntersectionLSSHitValueNV = 5431,+  SpvOpHitObjectGetSpherePositionNV = 5432,+  SpvOpHitObjectGetSphereRadiusNV = 5433,+  SpvOpHitObjectGetLSSPositionsNV = 5434,+  SpvOpHitObjectGetLSSRadiiNV = 5435,+  SpvOpHitObjectIsSphereHitNV = 5436,+  SpvOpHitObjectIsLSSHitNV = 5437,+  SpvOpRayQueryIsSphereHitNV = 5438,+  SpvOpRayQueryIsLSSHitNV = 5439,+  SpvOpSubgroupShuffleINTEL = 5571,+  SpvOpSubgroupShuffleDownINTEL = 5572,+  SpvOpSubgroupShuffleUpINTEL = 5573,+  SpvOpSubgroupShuffleXorINTEL = 5574,+  SpvOpSubgroupBlockReadINTEL = 5575,+  SpvOpSubgroupBlockWriteINTEL = 5576,+  SpvOpSubgroupImageBlockReadINTEL = 5577,+  SpvOpSubgroupImageBlockWriteINTEL = 5578,+  SpvOpSubgroupImageMediaBlockReadINTEL = 5580,+  SpvOpSubgroupImageMediaBlockWriteINTEL = 5581,+  SpvOpUCountLeadingZerosINTEL = 5585,+  SpvOpUCountTrailingZerosINTEL = 5586,+  SpvOpAbsISubINTEL = 5587,+  SpvOpAbsUSubINTEL = 5588,+  SpvOpIAddSatINTEL = 5589,+  SpvOpUAddSatINTEL = 5590,+  SpvOpIAverageINTEL = 5591,+  SpvOpUAverageINTEL = 5592,+  SpvOpIAverageRoundedINTEL = 5593,+  SpvOpUAverageRoundedINTEL = 5594,+  SpvOpISubSatINTEL = 5595,+  SpvOpUSubSatINTEL = 5596,+  SpvOpIMul32x16INTEL = 5597,+  SpvOpUMul32x16INTEL = 5598,+  SpvOpConstantFunctionPointerINTEL = 5600,+  SpvOpFunctionPointerCallINTEL = 5601,+  SpvOpAsmTargetINTEL = 5609,+  SpvOpAsmINTEL = 5610,+  SpvOpAsmCallINTEL = 5611,+  SpvOpAtomicFMinEXT = 5614,+  SpvOpAtomicFMaxEXT = 5615,+  SpvOpAssumeTrueKHR = 5630,+  SpvOpExpectKHR = 5631,+  SpvOpDecorateString = 5632,+  SpvOpDecorateStringGOOGLE = 5632,+  SpvOpMemberDecorateString = 5633,+  SpvOpMemberDecorateStringGOOGLE = 5633,+  SpvOpVmeImageINTEL = 5699,+  SpvOpTypeVmeImageINTEL = 5700,+  SpvOpTypeAvcImePayloadINTEL = 5701,+  SpvOpTypeAvcRefPayloadINTEL = 5702,+  SpvOpTypeAvcSicPayloadINTEL = 5703,+  SpvOpTypeAvcMcePayloadINTEL = 5704,+  SpvOpTypeAvcMceResultINTEL = 5705,+  SpvOpTypeAvcImeResultINTEL = 5706,+  SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,+  SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,+  SpvOpTypeAvcImeSingleReferenceStreaminINTEL = 5709,+  SpvOpTypeAvcImeDualReferenceStreaminINTEL = 5710,+  SpvOpTypeAvcRefResultINTEL = 5711,+  SpvOpTypeAvcSicResultINTEL = 5712,+  SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,+  SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,+  SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,+  SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,+  SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,+  SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,+  SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,+  SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,+  SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,+  SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,+  SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,+  SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,+  SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,+  SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,+  SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,+  SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,+  SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,+  SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,+  SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,+  SpvOpSubgroupAvcMceConvertToImePayloadINTEL = 5732,+  SpvOpSubgroupAvcMceConvertToImeResultINTEL = 5733,+  SpvOpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,+  SpvOpSubgroupAvcMceConvertToRefResultINTEL = 5735,+  SpvOpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,+  SpvOpSubgroupAvcMceConvertToSicResultINTEL = 5737,+  SpvOpSubgroupAvcMceGetMotionVectorsINTEL = 5738,+  SpvOpSubgroupAvcMceGetInterDistortionsINTEL = 5739,+  SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,+  SpvOpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,+  SpvOpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,+  SpvOpSubgroupAvcMceGetInterDirectionsINTEL = 5743,+  SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,+  SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,+  SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,+  SpvOpSubgroupAvcImeInitializeINTEL = 5747,+  SpvOpSubgroupAvcImeSetSingleReferenceINTEL = 5748,+  SpvOpSubgroupAvcImeSetDualReferenceINTEL = 5749,+  SpvOpSubgroupAvcImeRefWindowSizeINTEL = 5750,+  SpvOpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,+  SpvOpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,+  SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,+  SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,+  SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,+  SpvOpSubgroupAvcImeSetWeightedSadINTEL = 5756,+  SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,+  SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,+  SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,+  SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,+  SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,+  SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,+  SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,+  SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,+  SpvOpSubgroupAvcImeConvertToMceResultINTEL = 5765,+  SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,+  SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,+  SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,+  SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,+  SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,+  SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,+  SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,+  SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,+  SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,+  SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,+  SpvOpSubgroupAvcImeGetBorderReachedINTEL = 5776,+  SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,+  SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,+  SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,+  SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,+  SpvOpSubgroupAvcFmeInitializeINTEL = 5781,+  SpvOpSubgroupAvcBmeInitializeINTEL = 5782,+  SpvOpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,+  SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,+  SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,+  SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,+  SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,+  SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,+  SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,+  SpvOpSubgroupAvcRefConvertToMceResultINTEL = 5790,+  SpvOpSubgroupAvcSicInitializeINTEL = 5791,+  SpvOpSubgroupAvcSicConfigureSkcINTEL = 5792,+  SpvOpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,+  SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,+  SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,+  SpvOpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,+  SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,+  SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,+  SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,+  SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,+  SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,+  SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,+  SpvOpSubgroupAvcSicEvaluateIpeINTEL = 5803,+  SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,+  SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,+  SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,+  SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,+  SpvOpSubgroupAvcSicConvertToMceResultINTEL = 5808,+  SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,+  SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,+  SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,+  SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,+  SpvOpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,+  SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,+  SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,+  SpvOpSubgroupAvcSicGetInterRawSadsINTEL = 5816,+  SpvOpVariableLengthArrayINTEL = 5818,+  SpvOpSaveMemoryINTEL = 5819,+  SpvOpRestoreMemoryINTEL = 5820,+  SpvOpArbitraryFloatSinCosPiALTERA = 5840,+  SpvOpArbitraryFloatSinCosPiINTEL = 5840,+  SpvOpArbitraryFloatCastALTERA = 5841,+  SpvOpArbitraryFloatCastINTEL = 5841,+  SpvOpArbitraryFloatCastFromIntALTERA = 5842,+  SpvOpArbitraryFloatCastFromIntINTEL = 5842,+  SpvOpArbitraryFloatCastToIntALTERA = 5843,+  SpvOpArbitraryFloatCastToIntINTEL = 5843,+  SpvOpArbitraryFloatAddALTERA = 5846,+  SpvOpArbitraryFloatAddINTEL = 5846,+  SpvOpArbitraryFloatSubALTERA = 5847,+  SpvOpArbitraryFloatSubINTEL = 5847,+  SpvOpArbitraryFloatMulALTERA = 5848,+  SpvOpArbitraryFloatMulINTEL = 5848,+  SpvOpArbitraryFloatDivALTERA = 5849,+  SpvOpArbitraryFloatDivINTEL = 5849,+  SpvOpArbitraryFloatGTALTERA = 5850,+  SpvOpArbitraryFloatGTINTEL = 5850,+  SpvOpArbitraryFloatGEALTERA = 5851,+  SpvOpArbitraryFloatGEINTEL = 5851,+  SpvOpArbitraryFloatLTALTERA = 5852,+  SpvOpArbitraryFloatLTINTEL = 5852,+  SpvOpArbitraryFloatLEALTERA = 5853,+  SpvOpArbitraryFloatLEINTEL = 5853,+  SpvOpArbitraryFloatEQALTERA = 5854,+  SpvOpArbitraryFloatEQINTEL = 5854,+  SpvOpArbitraryFloatRecipALTERA = 5855,+  SpvOpArbitraryFloatRecipINTEL = 5855,+  SpvOpArbitraryFloatRSqrtALTERA = 5856,+  SpvOpArbitraryFloatRSqrtINTEL = 5856,+  SpvOpArbitraryFloatCbrtALTERA = 5857,+  SpvOpArbitraryFloatCbrtINTEL = 5857,+  SpvOpArbitraryFloatHypotALTERA = 5858,+  SpvOpArbitraryFloatHypotINTEL = 5858,+  SpvOpArbitraryFloatSqrtALTERA = 5859,+  SpvOpArbitraryFloatSqrtINTEL = 5859,+  SpvOpArbitraryFloatLogINTEL = 5860,+  SpvOpArbitraryFloatLog2INTEL = 5861,+  SpvOpArbitraryFloatLog10INTEL = 5862,+  SpvOpArbitraryFloatLog1pINTEL = 5863,+  SpvOpArbitraryFloatExpINTEL = 5864,+  SpvOpArbitraryFloatExp2INTEL = 5865,+  SpvOpArbitraryFloatExp10INTEL = 5866,+  SpvOpArbitraryFloatExpm1INTEL = 5867,+  SpvOpArbitraryFloatSinINTEL = 5868,+  SpvOpArbitraryFloatCosINTEL = 5869,+  SpvOpArbitraryFloatSinCosINTEL = 5870,+  SpvOpArbitraryFloatSinPiINTEL = 5871,+  SpvOpArbitraryFloatCosPiINTEL = 5872,+  SpvOpArbitraryFloatASinINTEL = 5873,+  SpvOpArbitraryFloatASinPiINTEL = 5874,+  SpvOpArbitraryFloatACosINTEL = 5875,+  SpvOpArbitraryFloatACosPiINTEL = 5876,+  SpvOpArbitraryFloatATanINTEL = 5877,+  SpvOpArbitraryFloatATanPiINTEL = 5878,+  SpvOpArbitraryFloatATan2INTEL = 5879,+  SpvOpArbitraryFloatPowINTEL = 5880,+  SpvOpArbitraryFloatPowRINTEL = 5881,+  SpvOpArbitraryFloatPowNINTEL = 5882,+  SpvOpLoopControlINTEL = 5887,+  SpvOpAliasDomainDeclINTEL = 5911,+  SpvOpAliasScopeDeclINTEL = 5912,+  SpvOpAliasScopeListDeclINTEL = 5913,+  SpvOpFixedSqrtALTERA = 5923,+  SpvOpFixedSqrtINTEL = 5923,+  SpvOpFixedRecipALTERA = 5924,+  SpvOpFixedRecipINTEL = 5924,+  SpvOpFixedRsqrtALTERA = 5925,+  SpvOpFixedRsqrtINTEL = 5925,+  SpvOpFixedSinALTERA = 5926,+  SpvOpFixedSinINTEL = 5926,+  SpvOpFixedCosALTERA = 5927,+  SpvOpFixedCosINTEL = 5927,+  SpvOpFixedSinCosALTERA = 5928,+  SpvOpFixedSinCosINTEL = 5928,+  SpvOpFixedSinPiALTERA = 5929,+  SpvOpFixedSinPiINTEL = 5929,+  SpvOpFixedCosPiALTERA = 5930,+  SpvOpFixedCosPiINTEL = 5930,+  SpvOpFixedSinCosPiALTERA = 5931,+  SpvOpFixedSinCosPiINTEL = 5931,+  SpvOpFixedLogALTERA = 5932,+  SpvOpFixedLogINTEL = 5932,+  SpvOpFixedExpALTERA = 5933,+  SpvOpFixedExpINTEL = 5933,+  SpvOpPtrCastToCrossWorkgroupALTERA = 5934,+  SpvOpPtrCastToCrossWorkgroupINTEL = 5934,+  SpvOpCrossWorkgroupCastToPtrALTERA = 5938,+  SpvOpCrossWorkgroupCastToPtrINTEL = 5938,+  SpvOpReadPipeBlockingALTERA = 5946,+  SpvOpReadPipeBlockingINTEL = 5946,+  SpvOpWritePipeBlockingALTERA = 5947,+  SpvOpWritePipeBlockingINTEL = 5947,+  SpvOpFPGARegALTERA = 5949,+  SpvOpFPGARegINTEL = 5949,+  SpvOpRayQueryGetRayTMinKHR = 6016,+  SpvOpRayQueryGetRayFlagsKHR = 6017,+  SpvOpRayQueryGetIntersectionTKHR = 6018,+  SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,+  SpvOpRayQueryGetIntersectionInstanceIdKHR = 6020,+  SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,+  SpvOpRayQueryGetIntersectionGeometryIndexKHR = 6022,+  SpvOpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,+  SpvOpRayQueryGetIntersectionBarycentricsKHR = 6024,+  SpvOpRayQueryGetIntersectionFrontFaceKHR = 6025,+  SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,+  SpvOpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,+  SpvOpRayQueryGetIntersectionObjectRayOriginKHR = 6028,+  SpvOpRayQueryGetWorldRayDirectionKHR = 6029,+  SpvOpRayQueryGetWorldRayOriginKHR = 6030,+  SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,+  SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,+  SpvOpAtomicFAddEXT = 6035,+  SpvOpTypeBufferSurfaceINTEL = 6086,+  SpvOpTypeStructContinuedINTEL = 6090,+  SpvOpConstantCompositeContinuedINTEL = 6091,+  SpvOpSpecConstantCompositeContinuedINTEL = 6092,+  SpvOpCompositeConstructContinuedINTEL = 6096,+  SpvOpConvertFToBF16INTEL = 6116,+  SpvOpConvertBF16ToFINTEL = 6117,+  SpvOpControlBarrierArriveINTEL = 6142,+  SpvOpControlBarrierWaitINTEL = 6143,+  SpvOpArithmeticFenceEXT = 6145,+  SpvOpTaskSequenceCreateALTERA = 6163,+  SpvOpTaskSequenceCreateINTEL = 6163,+  SpvOpTaskSequenceAsyncALTERA = 6164,+  SpvOpTaskSequenceAsyncINTEL = 6164,+  SpvOpTaskSequenceGetALTERA = 6165,+  SpvOpTaskSequenceGetINTEL = 6165,+  SpvOpTaskSequenceReleaseALTERA = 6166,+  SpvOpTaskSequenceReleaseINTEL = 6166,+  SpvOpTypeTaskSequenceALTERA = 6199,+  SpvOpTypeTaskSequenceINTEL = 6199,+  SpvOpSubgroupBlockPrefetchINTEL = 6221,+  SpvOpSubgroup2DBlockLoadINTEL = 6231,+  SpvOpSubgroup2DBlockLoadTransformINTEL = 6232,+  SpvOpSubgroup2DBlockLoadTransposeINTEL = 6233,+  SpvOpSubgroup2DBlockPrefetchINTEL = 6234,+  SpvOpSubgroup2DBlockStoreINTEL = 6235,+  SpvOpSubgroupMatrixMultiplyAccumulateINTEL = 6237,+  SpvOpBitwiseFunctionINTEL = 6242,+  SpvOpUntypedVariableLengthArrayINTEL = 6244,+  SpvOpConditionalExtensionINTEL = 6248,+  SpvOpConditionalEntryPointINTEL = 6249,+  SpvOpConditionalCapabilityINTEL = 6250,+  SpvOpSpecConstantTargetINTEL = 6251,+  SpvOpSpecConstantArchitectureINTEL = 6252,+  SpvOpSpecConstantCapabilitiesINTEL = 6253,+  SpvOpConditionalCopyObjectINTEL = 6254,+  SpvOpGroupIMulKHR = 6401,+  SpvOpGroupFMulKHR = 6402,+  SpvOpGroupBitwiseAndKHR = 6403,+  SpvOpGroupBitwiseOrKHR = 6404,+  SpvOpGroupBitwiseXorKHR = 6405,+  SpvOpGroupLogicalAndKHR = 6406,+  SpvOpGroupLogicalOrKHR = 6407,+  SpvOpGroupLogicalXorKHR = 6408,+  SpvOpRoundFToTF32INTEL = 6426,+  SpvOpMaskedGatherINTEL = 6428,+  SpvOpMaskedScatterINTEL = 6429,+  SpvOpConvertHandleToImageINTEL = 6529,+  SpvOpConvertHandleToSamplerINTEL = 6530,+  SpvOpConvertHandleToSampledImageINTEL = 6531,+  SpvOpFDot2MixAcc32VALVE = 6916,+  SpvOpFDot2MixAcc16VALVE = 6917,+  SpvOpFDot4MixAcc32VALVE = 6918,+  SpvOpMax = 0x7fffffff,+} SpvOp;++#ifdef SPV_ENABLE_UTILITY_CODE+#ifndef __cplusplus+#include <stdbool.h>+#endif+inline void SpvHasResultAndType(SpvOp opcode, bool* hasResult, bool* hasResultType) {+  *hasResult = *hasResultType = false;+  switch (opcode) {+    default: /* unknown opcode */+      break;+    case SpvOpNop:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpUndef:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSourceContinued:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSource:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSourceExtension:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpName:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpMemberName:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpString:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpLine:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpExtension:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpExtInstImport:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpExtInst:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpMemoryModel:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpEntryPoint:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpExecutionMode:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCapability:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTypeVoid:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeBool:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeInt:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeFloat:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeVector:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeMatrix:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeImage:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeSampler:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeSampledImage:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeArray:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeRuntimeArray:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeStruct:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeOpaque:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypePointer:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeFunction:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeEvent:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeDeviceEvent:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeReserveId:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeQueue:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypePipe:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeForwardPointer:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpConstantTrue:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstantFalse:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstant:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstantComposite:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstantSampler:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstantNull:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstantTrue:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstantFalse:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstant:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstantComposite:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstantOp:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFunction:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFunctionParameter:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFunctionEnd:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpFunctionCall:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpVariable:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageTexelPointer:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLoad:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpStore:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCopyMemory:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCopyMemorySized:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpAccessChain:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpInBoundsAccessChain:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpPtrAccessChain:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArrayLength:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGenericPtrMemSemantics:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpInBoundsPtrAccessChain:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDecorate:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpMemberDecorate:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpDecorationGroup:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpGroupDecorate:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGroupMemberDecorate:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpVectorExtractDynamic:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpVectorInsertDynamic:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpVectorShuffle:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCompositeConstruct:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCompositeExtract:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCompositeInsert:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCopyObject:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTranspose:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSampledImage:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleImplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleExplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleDrefImplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleDrefExplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleProjImplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleProjExplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleProjDrefImplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleProjDrefExplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageFetch:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageGather:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageDrefGather:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageRead:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageWrite:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpImage:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageQueryFormat:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageQueryOrder:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageQuerySizeLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageQuerySize:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageQueryLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageQueryLevels:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageQuerySamples:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertFToU:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertFToS:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertSToF:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertUToF:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUConvert:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSConvert:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFConvert:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpQuantizeToF16:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertPtrToU:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSatConvertSToU:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSatConvertUToS:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertUToPtr:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpPtrCastToGeneric:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGenericCastToPtr:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGenericCastToPtrExplicit:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitcast:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSNegate:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFNegate:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIAdd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFAdd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpISub:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFSub:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIMul:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFMul:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUDiv:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSDiv:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFDiv:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUMod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSRem:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSMod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFRem:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFMod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpVectorTimesScalar:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpMatrixTimesScalar:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpVectorTimesMatrix:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpMatrixTimesVector:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpMatrixTimesMatrix:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpOuterProduct:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDot:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIAddCarry:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpISubBorrow:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUMulExtended:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSMulExtended:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAny:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAll:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIsNan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIsInf:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIsFinite:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIsNormal:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSignBitSet:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLessOrGreater:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpOrdered:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUnordered:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLogicalEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLogicalNotEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLogicalOr:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLogicalAnd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLogicalNot:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSelect:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpINotEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUGreaterThan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSGreaterThan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUGreaterThanEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSGreaterThanEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpULessThan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSLessThan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpULessThanEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSLessThanEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFOrdEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFUnordEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFOrdNotEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFUnordNotEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFOrdLessThan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFUnordLessThan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFOrdGreaterThan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFUnordGreaterThan:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFOrdLessThanEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFUnordLessThanEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFOrdGreaterThanEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFUnordGreaterThanEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpShiftRightLogical:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpShiftRightArithmetic:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpShiftLeftLogical:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitwiseOr:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitwiseXor:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitwiseAnd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpNot:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitFieldInsert:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitFieldSExtract:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitFieldUExtract:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitReverse:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitCount:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDPdx:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDPdy:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFwidth:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDPdxFine:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDPdyFine:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFwidthFine:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDPdxCoarse:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDPdyCoarse:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFwidthCoarse:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpEmitVertex:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpEndPrimitive:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpEmitStreamVertex:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpEndStreamPrimitive:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpControlBarrier:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpMemoryBarrier:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpAtomicLoad:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicStore:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpAtomicExchange:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicCompareExchange:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicCompareExchangeWeak:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicIIncrement:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicIDecrement:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicIAdd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicISub:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicSMin:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicUMin:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicSMax:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicUMax:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicAnd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicOr:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicXor:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpPhi:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLoopMerge:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSelectionMerge:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpLabel:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpBranch:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpBranchConditional:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSwitch:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpKill:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpReturn:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpReturnValue:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpUnreachable:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpLifetimeStart:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpLifetimeStop:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGroupAsyncCopy:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupWaitEvents:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGroupAll:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupAny:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupBroadcast:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupIAdd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupFAdd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupFMin:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupUMin:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupSMin:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupFMax:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupUMax:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupSMax:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReadPipe:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpWritePipe:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReservedReadPipe:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReservedWritePipe:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReserveReadPipePackets:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReserveWritePipePackets:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCommitReadPipe:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCommitWritePipe:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpIsValidReserveId:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGetNumPipePackets:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGetMaxPipePackets:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupReserveReadPipePackets:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupReserveWritePipePackets:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupCommitReadPipe:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGroupCommitWritePipe:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpEnqueueMarker:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpEnqueueKernel:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGetKernelNDrangeSubGroupCount:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGetKernelNDrangeMaxSubGroupSize:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGetKernelWorkGroupSize:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGetKernelPreferredWorkGroupSizeMultiple:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRetainEvent:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpReleaseEvent:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCreateUserEvent:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIsValidEvent:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSetUserEventStatus:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCaptureEventProfilingInfo:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGetDefaultQueue:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBuildNDRange:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseSampleImplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseSampleExplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseSampleDrefImplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseSampleDrefExplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseSampleProjImplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseSampleProjExplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseSampleProjDrefImplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseSampleProjDrefExplicitLod:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseFetch:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseGather:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseDrefGather:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSparseTexelsResident:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpNoLine:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpAtomicFlagTestAndSet:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicFlagClear:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpImageSparseRead:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSizeOf:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypePipeStorage:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpConstantPipeStorage:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCreatePipeFromPipeStorage:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGetKernelLocalSizeForSubgroupCount:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGetKernelMaxNumSubgroups:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeNamedBarrier:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpNamedBarrierInitialize:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpMemoryNamedBarrier:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpModuleProcessed:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpExecutionModeId:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpDecorateId:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGroupNonUniformElect:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformAll:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformAny:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformAllEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBroadcast:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBroadcastFirst:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBallot:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformInverseBallot:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBallotBitExtract:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBallotBitCount:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBallotFindLSB:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBallotFindMSB:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformShuffle:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformShuffleXor:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformShuffleUp:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformShuffleDown:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformIAdd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformFAdd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformIMul:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformFMul:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformSMin:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformUMin:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformFMin:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformSMax:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformUMax:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformFMax:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBitwiseAnd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBitwiseOr:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformBitwiseXor:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformLogicalAnd:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformLogicalOr:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformLogicalXor:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformQuadBroadcast:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformQuadSwap:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCopyLogical:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpPtrEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpPtrNotEqual:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpPtrDiff:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpColorAttachmentReadEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDepthAttachmentReadEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpStencilAttachmentReadEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeTensorARM:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTensorReadARM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorWriteARM:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTensorQuerySizeARM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGraphConstantARM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGraphEntryPointARM:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGraphARM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGraphInputARM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGraphSetOutputARM:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGraphEndARM:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTypeGraphARM:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTerminateInvocation:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTypeUntypedPointerKHR:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpUntypedVariableKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUntypedAccessChainKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUntypedInBoundsAccessChainKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupBallotKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupFirstInvocationKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUntypedPtrAccessChainKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUntypedInBoundsPtrAccessChainKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUntypedArrayLengthKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUntypedPrefetchKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpFmaKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAllKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAnyKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAllEqualKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformRotateKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupReadInvocationKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpExtInstWithForwardRefsKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUntypedGroupAsyncCopyKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTraceRayKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpExecuteCallableKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpConvertUToAccelerationStructureKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIgnoreIntersectionKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTerminateRayKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSDot:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUDot:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSUDot:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSDotAccSat:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUDotAccSat:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSUDotAccSat:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeCooperativeMatrixKHR:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpCooperativeMatrixLoadKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeMatrixStoreKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCooperativeMatrixMulAddKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeMatrixLengthKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstantCompositeReplicateEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstantCompositeReplicateEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCompositeConstructReplicateEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeRayQueryKHR:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpRayQueryInitializeKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpRayQueryTerminateKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpRayQueryGenerateIntersectionKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpRayQueryConfirmIntersectionKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpRayQueryProceedKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionTypeKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageSampleWeightedQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageBoxFilterQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageBlockMatchSSDQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageBlockMatchSADQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitCastArrayQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageBlockMatchWindowSSDQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageBlockMatchWindowSADQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageBlockMatchGatherSSDQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpImageBlockMatchGatherSADQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCompositeConstructCoopMatQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCompositeExtractCoopMatQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpExtractSubArrayQCOM:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupIAddNonUniformAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupFAddNonUniformAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupFMinNonUniformAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupUMinNonUniformAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupSMinNonUniformAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupFMaxNonUniformAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupUMaxNonUniformAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupSMaxNonUniformAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFragmentMaskFetchAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFragmentFetchAMD:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReadClockKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAllocateNodePayloadsAMDX:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpEnqueueNodePayloadsAMDX:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTypeNodePayloadArrayAMDX:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpFinishWritingNodePayloadAMDX:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpNodePayloadArrayLengthAMDX:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIsNodePayloadValidAMDX:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstantStringAMDX:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpSpecConstantStringAMDX:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpGroupNonUniformQuadAllKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupNonUniformQuadAnyKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeBufferEXT:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpBufferPointerEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAbortKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpUntypedImageTexelPointerEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpMemberDecorateIdEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpConstantSizeOfEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstantDataKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstantDataKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpPoisonKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFreezeKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectRecordHitMotionNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordHitWithIndexMotionNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordMissMotionNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectGetWorldToObjectNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetObjectToWorldNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetObjectRayDirectionNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetObjectRayOriginNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectTraceRayMotionNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectGetShaderRecordBufferHandleNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetShaderBindingTableRecordIndexNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectRecordEmptyNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectTraceRayNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordHitNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordHitWithIndexNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordMissNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectExecuteShaderNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectGetCurrentTimeNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetAttributesNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectGetHitKindNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetPrimitiveIndexNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetGeometryIndexNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetInstanceIdNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetInstanceCustomIndexNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetWorldRayDirectionNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetWorldRayOriginNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetRayTMaxNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetRayTMinNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectIsEmptyNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectIsHitNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectIsMissNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReorderThreadWithHitObjectNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpReorderThreadWithHintNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTypeHitObjectNV:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpImageSampleFootprintNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeVectorIdEXT:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpCooperativeVectorMatrixMulNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeVectorOuterProductAccumulateNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCooperativeVectorReduceSumAccumulateNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCooperativeVectorMatrixMulAddNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeMatrixConvertNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpEmitMeshTasksEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSetMeshOutputsEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpGroupNonUniformPartitionEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpWritePackedPrimitiveIndices4x8NV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpFetchMicroTriangleVertexPositionNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFetchMicroTriangleVertexBarycentricNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeVectorLoadNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeVectorStoreNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordFromQueryEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordMissEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordMissMotionEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectGetIntersectionTriangleVertexPositionsEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetRayFlagsEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectSetShaderBindingTableRecordIndexEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectReorderExecuteShaderEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectTraceReorderExecuteEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectTraceMotionReorderExecuteEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTypeHitObjectEXT:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpReorderThreadWithHintEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpReorderThreadWithHitObjectEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectTraceRayEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectTraceRayMotionEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectRecordEmptyEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectExecuteShaderEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectGetCurrentTimeEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetAttributesEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpHitObjectGetHitKindEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetPrimitiveIndexEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetGeometryIndexEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetInstanceIdEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetInstanceCustomIndexEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetObjectRayOriginEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetObjectRayDirectionEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetWorldRayDirectionEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetWorldRayOriginEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetObjectToWorldEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetWorldToObjectEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetRayTMaxEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReportIntersectionKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIgnoreIntersectionNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTerminateRayNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTraceNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTraceMotionNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTraceRayMotionNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpRayQueryGetIntersectionTriangleVertexPositionsKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeAccelerationStructureKHR:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpExecuteCallableNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpRayQueryGetIntersectionClusterIdNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetClusterIdNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetRayTMinEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetShaderBindingTableRecordIndexEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetShaderRecordBufferHandleEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectIsEmptyEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectIsHitEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectIsMissEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeCooperativeMatrixNV:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpCooperativeMatrixLoadNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeMatrixStoreNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCooperativeMatrixMulAddNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeMatrixLengthNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBeginInvocationInterlockEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpEndInvocationInterlockEXT:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCooperativeMatrixReduceNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeMatrixLoadTensorNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeMatrixStoreTensorNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCooperativeMatrixPerElementOpNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeTensorLayoutNV:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeTensorViewNV:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpCreateTensorLayoutNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorLayoutSetDimensionNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorLayoutSetStrideNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorLayoutSliceNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorLayoutSetClampValueNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCreateTensorViewNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorViewSetDimensionNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorViewSetStrideNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDemoteToHelperInvocation:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpIsHelperInvocationEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorViewSetClipNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTensorLayoutSetBlockSizeNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCooperativeMatrixTransposeNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertUToImageNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertUToSamplerNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertImageToUNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertSamplerToUNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertUToSampledImageNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertSampledImageToUNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSamplerImageAddressingModeNV:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpRawAccessChainNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionSpherePositionNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionSphereRadiusNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionLSSPositionsNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionLSSRadiiNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionLSSHitValueNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetSpherePositionNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetSphereRadiusNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetLSSPositionsNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectGetLSSRadiiNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectIsSphereHitNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpHitObjectIsLSSHitNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryIsSphereHitNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryIsLSSHitNV:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupShuffleINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupShuffleDownINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupShuffleUpINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupShuffleXorINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupBlockReadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupBlockWriteINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSubgroupImageBlockReadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupImageBlockWriteINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSubgroupImageMediaBlockReadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupImageMediaBlockWriteINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpUCountLeadingZerosINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUCountTrailingZerosINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAbsISubINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAbsUSubINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIAddSatINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUAddSatINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIAverageINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUAverageINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIAverageRoundedINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUAverageRoundedINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpISubSatINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUSubSatINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpIMul32x16INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUMul32x16INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConstantFunctionPointerINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFunctionPointerCallINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAsmTargetINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpAsmINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAsmCallINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicFMinEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicFMaxEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAssumeTrueKHR:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpExpectKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpDecorateString:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpMemberDecorateString:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpVmeImageINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeVmeImageINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcImePayloadINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcRefPayloadINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcSicPayloadINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcMcePayloadINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcMceResultINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcImeResultINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcImeSingleReferenceStreaminINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcImeDualReferenceStreaminINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcRefResultINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeAvcSicResultINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceConvertToImePayloadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceConvertToImeResultINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceConvertToRefResultINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceConvertToSicResultINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetMotionVectorsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetInterDistortionsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetInterDirectionsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeInitializeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeSetSingleReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeSetDualReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeRefWindowSizeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeSetWeightedSadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeConvertToMceResultINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetBorderReachedINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcFmeInitializeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcBmeInitializeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcRefConvertToMceResultINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicInitializeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicConfigureSkcINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicEvaluateIpeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicConvertToMceResultINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSubgroupAvcSicGetInterRawSadsINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpVariableLengthArrayINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSaveMemoryINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRestoreMemoryINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpArbitraryFloatSinCosPiALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatCastALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatCastFromIntALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatCastToIntALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatAddALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatSubALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatMulALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatDivALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatGTALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatGEALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatLTALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatLEALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatEQALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatRecipALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatRSqrtALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatCbrtALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatHypotALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatSqrtALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatLogINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatLog2INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatLog10INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatLog1pINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatExpINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatExp2INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatExp10INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatExpm1INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatSinINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatCosINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatSinCosINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatSinPiINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatCosPiINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatASinINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatASinPiINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatACosINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatACosPiINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatATanINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatATanPiINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatATan2INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatPowINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatPowRINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpArbitraryFloatPowNINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpLoopControlINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpAliasDomainDeclINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpAliasScopeDeclINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpAliasScopeListDeclINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpFixedSqrtALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedRecipALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedRsqrtALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedSinALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedCosALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedSinCosALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedSinPiALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedCosPiALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedSinCosPiALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedLogALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFixedExpALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpPtrCastToCrossWorkgroupALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpCrossWorkgroupCastToPtrALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpReadPipeBlockingALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpWritePipeBlockingALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFPGARegALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetRayTMinKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetRayFlagsKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionTKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionInstanceIdKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionGeometryIndexKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionBarycentricsKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionFrontFaceKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionObjectRayOriginKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetWorldRayDirectionKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetWorldRayOriginKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionObjectToWorldKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRayQueryGetIntersectionWorldToObjectKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpAtomicFAddEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTypeBufferSurfaceINTEL:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpTypeStructContinuedINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpConstantCompositeContinuedINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSpecConstantCompositeContinuedINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpCompositeConstructContinuedINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertFToBF16INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertBF16ToFINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpControlBarrierArriveINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpControlBarrierWaitINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpArithmeticFenceEXT:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTaskSequenceCreateALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTaskSequenceAsyncALTERA:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTaskSequenceGetALTERA:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpTaskSequenceReleaseALTERA:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpTypeTaskSequenceALTERA:+      *hasResult = true;+      *hasResultType = false;+      break;+    case SpvOpSubgroupBlockPrefetchINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSubgroup2DBlockLoadINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSubgroup2DBlockLoadTransformINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSubgroup2DBlockLoadTransposeINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSubgroup2DBlockPrefetchINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSubgroup2DBlockStoreINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSubgroupMatrixMultiplyAccumulateINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpBitwiseFunctionINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpUntypedVariableLengthArrayINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConditionalExtensionINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpConditionalEntryPointINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpConditionalCapabilityINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpSpecConstantTargetINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstantArchitectureINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpSpecConstantCapabilitiesINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConditionalCopyObjectINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupIMulKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupFMulKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupBitwiseAndKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupBitwiseOrKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupBitwiseXorKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupLogicalAndKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupLogicalOrKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpGroupLogicalXorKHR:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpRoundFToTF32INTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpMaskedGatherINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpMaskedScatterINTEL:+      *hasResult = false;+      *hasResultType = false;+      break;+    case SpvOpConvertHandleToImageINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertHandleToSamplerINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpConvertHandleToSampledImageINTEL:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFDot2MixAcc32VALVE:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFDot2MixAcc16VALVE:+      *hasResult = true;+      *hasResultType = true;+      break;+    case SpvOpFDot4MixAcc32VALVE:+      *hasResult = true;+      *hasResultType = true;+      break;+  }+}+inline const char* SpvSourceLanguageToString(SpvSourceLanguage value) {+  switch (value) {+    case SpvSourceLanguageUnknown:+      return "Unknown";+    case SpvSourceLanguageESSL:+      return "ESSL";+    case SpvSourceLanguageGLSL:+      return "GLSL";+    case SpvSourceLanguageOpenCL_C:+      return "OpenCL_C";+    case SpvSourceLanguageOpenCL_CPP:+      return "OpenCL_CPP";+    case SpvSourceLanguageHLSL:+      return "HLSL";+    case SpvSourceLanguageCPP_for_OpenCL:+      return "CPP_for_OpenCL";+    case SpvSourceLanguageSYCL:+      return "SYCL";+    case SpvSourceLanguageHERO_C:+      return "HERO_C";+    case SpvSourceLanguageNZSL:+      return "NZSL";+    case SpvSourceLanguageWGSL:+      return "WGSL";+    case SpvSourceLanguageSlang:+      return "Slang";+    case SpvSourceLanguageZig:+      return "Zig";+    case SpvSourceLanguageRust:+      return "Rust";+    default:+      return "Unknown";+  }+}++inline const char* SpvExecutionModelToString(SpvExecutionModel value) {+  switch (value) {+    case SpvExecutionModelVertex:+      return "Vertex";+    case SpvExecutionModelTessellationControl:+      return "TessellationControl";+    case SpvExecutionModelTessellationEvaluation:+      return "TessellationEvaluation";+    case SpvExecutionModelGeometry:+      return "Geometry";+    case SpvExecutionModelFragment:+      return "Fragment";+    case SpvExecutionModelGLCompute:+      return "GLCompute";+    case SpvExecutionModelKernel:+      return "Kernel";+    case SpvExecutionModelTaskNV:+      return "TaskNV";+    case SpvExecutionModelMeshNV:+      return "MeshNV";+    case SpvExecutionModelRayGenerationKHR:+      return "RayGenerationKHR";+    case SpvExecutionModelIntersectionKHR:+      return "IntersectionKHR";+    case SpvExecutionModelAnyHitKHR:+      return "AnyHitKHR";+    case SpvExecutionModelClosestHitKHR:+      return "ClosestHitKHR";+    case SpvExecutionModelMissKHR:+      return "MissKHR";+    case SpvExecutionModelCallableKHR:+      return "CallableKHR";+    case SpvExecutionModelTaskEXT:+      return "TaskEXT";+    case SpvExecutionModelMeshEXT:+      return "MeshEXT";+    default:+      return "Unknown";+  }+}++inline const char* SpvAddressingModelToString(SpvAddressingModel value) {+  switch (value) {+    case SpvAddressingModelLogical:+      return "Logical";+    case SpvAddressingModelPhysical32:+      return "Physical32";+    case SpvAddressingModelPhysical64:+      return "Physical64";+    case SpvAddressingModelPhysicalStorageBuffer64:+      return "PhysicalStorageBuffer64";+    default:+      return "Unknown";+  }+}++inline const char* SpvMemoryModelToString(SpvMemoryModel value) {+  switch (value) {+    case SpvMemoryModelSimple:+      return "Simple";+    case SpvMemoryModelGLSL450:+      return "GLSL450";+    case SpvMemoryModelOpenCL:+      return "OpenCL";+    case SpvMemoryModelVulkan:+      return "Vulkan";+    default:+      return "Unknown";+  }+}++inline const char* SpvExecutionModeToString(SpvExecutionMode value) {+  switch (value) {+    case SpvExecutionModeInvocations:+      return "Invocations";+    case SpvExecutionModeSpacingEqual:+      return "SpacingEqual";+    case SpvExecutionModeSpacingFractionalEven:+      return "SpacingFractionalEven";+    case SpvExecutionModeSpacingFractionalOdd:+      return "SpacingFractionalOdd";+    case SpvExecutionModeVertexOrderCw:+      return "VertexOrderCw";+    case SpvExecutionModeVertexOrderCcw:+      return "VertexOrderCcw";+    case SpvExecutionModePixelCenterInteger:+      return "PixelCenterInteger";+    case SpvExecutionModeOriginUpperLeft:+      return "OriginUpperLeft";+    case SpvExecutionModeOriginLowerLeft:+      return "OriginLowerLeft";+    case SpvExecutionModeEarlyFragmentTests:+      return "EarlyFragmentTests";+    case SpvExecutionModePointMode:+      return "PointMode";+    case SpvExecutionModeXfb:+      return "Xfb";+    case SpvExecutionModeDepthReplacing:+      return "DepthReplacing";+    case SpvExecutionModeDepthGreater:+      return "DepthGreater";+    case SpvExecutionModeDepthLess:+      return "DepthLess";+    case SpvExecutionModeDepthUnchanged:+      return "DepthUnchanged";+    case SpvExecutionModeLocalSize:+      return "LocalSize";+    case SpvExecutionModeLocalSizeHint:+      return "LocalSizeHint";+    case SpvExecutionModeInputPoints:+      return "InputPoints";+    case SpvExecutionModeInputLines:+      return "InputLines";+    case SpvExecutionModeInputLinesAdjacency:+      return "InputLinesAdjacency";+    case SpvExecutionModeTriangles:+      return "Triangles";+    case SpvExecutionModeInputTrianglesAdjacency:+      return "InputTrianglesAdjacency";+    case SpvExecutionModeQuads:+      return "Quads";+    case SpvExecutionModeIsolines:+      return "Isolines";+    case SpvExecutionModeOutputVertices:+      return "OutputVertices";+    case SpvExecutionModeOutputPoints:+      return "OutputPoints";+    case SpvExecutionModeOutputLineStrip:+      return "OutputLineStrip";+    case SpvExecutionModeOutputTriangleStrip:+      return "OutputTriangleStrip";+    case SpvExecutionModeVecTypeHint:+      return "VecTypeHint";+    case SpvExecutionModeContractionOff:+      return "ContractionOff";+    case SpvExecutionModeInitializer:+      return "Initializer";+    case SpvExecutionModeFinalizer:+      return "Finalizer";+    case SpvExecutionModeSubgroupSize:+      return "SubgroupSize";+    case SpvExecutionModeSubgroupsPerWorkgroup:+      return "SubgroupsPerWorkgroup";+    case SpvExecutionModeSubgroupsPerWorkgroupId:+      return "SubgroupsPerWorkgroupId";+    case SpvExecutionModeLocalSizeId:+      return "LocalSizeId";+    case SpvExecutionModeLocalSizeHintId:+      return "LocalSizeHintId";+    case SpvExecutionModeNonCoherentColorAttachmentReadEXT:+      return "NonCoherentColorAttachmentReadEXT";+    case SpvExecutionModeNonCoherentDepthAttachmentReadEXT:+      return "NonCoherentDepthAttachmentReadEXT";+    case SpvExecutionModeNonCoherentStencilAttachmentReadEXT:+      return "NonCoherentStencilAttachmentReadEXT";+    case SpvExecutionModeSubgroupUniformControlFlowKHR:+      return "SubgroupUniformControlFlowKHR";+    case SpvExecutionModePostDepthCoverage:+      return "PostDepthCoverage";+    case SpvExecutionModeDenormPreserve:+      return "DenormPreserve";+    case SpvExecutionModeDenormFlushToZero:+      return "DenormFlushToZero";+    case SpvExecutionModeSignedZeroInfNanPreserve:+      return "SignedZeroInfNanPreserve";+    case SpvExecutionModeRoundingModeRTE:+      return "RoundingModeRTE";+    case SpvExecutionModeRoundingModeRTZ:+      return "RoundingModeRTZ";+    case SpvExecutionModeNonCoherentTileAttachmentReadQCOM:+      return "NonCoherentTileAttachmentReadQCOM";+    case SpvExecutionModeTileShadingRateQCOM:+      return "TileShadingRateQCOM";+    case SpvExecutionModeEarlyAndLateFragmentTestsAMD:+      return "EarlyAndLateFragmentTestsAMD";+    case SpvExecutionModeStencilRefReplacingEXT:+      return "StencilRefReplacingEXT";+    case SpvExecutionModeCoalescingAMDX:+      return "CoalescingAMDX";+    case SpvExecutionModeIsApiEntryAMDX:+      return "IsApiEntryAMDX";+    case SpvExecutionModeMaxNodeRecursionAMDX:+      return "MaxNodeRecursionAMDX";+    case SpvExecutionModeStaticNumWorkgroupsAMDX:+      return "StaticNumWorkgroupsAMDX";+    case SpvExecutionModeShaderIndexAMDX:+      return "ShaderIndexAMDX";+    case SpvExecutionModeMaxNumWorkgroupsAMDX:+      return "MaxNumWorkgroupsAMDX";+    case SpvExecutionModeStencilRefUnchangedFrontAMD:+      return "StencilRefUnchangedFrontAMD";+    case SpvExecutionModeStencilRefGreaterFrontAMD:+      return "StencilRefGreaterFrontAMD";+    case SpvExecutionModeStencilRefLessFrontAMD:+      return "StencilRefLessFrontAMD";+    case SpvExecutionModeStencilRefUnchangedBackAMD:+      return "StencilRefUnchangedBackAMD";+    case SpvExecutionModeStencilRefGreaterBackAMD:+      return "StencilRefGreaterBackAMD";+    case SpvExecutionModeStencilRefLessBackAMD:+      return "StencilRefLessBackAMD";+    case SpvExecutionModeQuadDerivativesKHR:+      return "QuadDerivativesKHR";+    case SpvExecutionModeRequireFullQuadsKHR:+      return "RequireFullQuadsKHR";+    case SpvExecutionModeSharesInputWithAMDX:+      return "SharesInputWithAMDX";+    case SpvExecutionModeArithmeticPoisonKHR:+      return "ArithmeticPoisonKHR";+    case SpvExecutionModeOutputLinesEXT:+      return "OutputLinesEXT";+    case SpvExecutionModeOutputPrimitivesEXT:+      return "OutputPrimitivesEXT";+    case SpvExecutionModeDerivativeGroupQuadsKHR:+      return "DerivativeGroupQuadsKHR";+    case SpvExecutionModeDerivativeGroupLinearKHR:+      return "DerivativeGroupLinearKHR";+    case SpvExecutionModeOutputTrianglesEXT:+      return "OutputTrianglesEXT";+    case SpvExecutionModePixelInterlockOrderedEXT:+      return "PixelInterlockOrderedEXT";+    case SpvExecutionModePixelInterlockUnorderedEXT:+      return "PixelInterlockUnorderedEXT";+    case SpvExecutionModeSampleInterlockOrderedEXT:+      return "SampleInterlockOrderedEXT";+    case SpvExecutionModeSampleInterlockUnorderedEXT:+      return "SampleInterlockUnorderedEXT";+    case SpvExecutionModeShadingRateInterlockOrderedEXT:+      return "ShadingRateInterlockOrderedEXT";+    case SpvExecutionModeShadingRateInterlockUnorderedEXT:+      return "ShadingRateInterlockUnorderedEXT";+    case SpvExecutionModeShader64BitIndexingEXT:+      return "Shader64BitIndexingEXT";+    case SpvExecutionModeSharedLocalMemorySizeINTEL:+      return "SharedLocalMemorySizeINTEL";+    case SpvExecutionModeRoundingModeRTPINTEL:+      return "RoundingModeRTPINTEL";+    case SpvExecutionModeRoundingModeRTNINTEL:+      return "RoundingModeRTNINTEL";+    case SpvExecutionModeFloatingPointModeALTINTEL:+      return "FloatingPointModeALTINTEL";+    case SpvExecutionModeFloatingPointModeIEEEINTEL:+      return "FloatingPointModeIEEEINTEL";+    case SpvExecutionModeMaxWorkgroupSizeINTEL:+      return "MaxWorkgroupSizeINTEL";+    case SpvExecutionModeMaxWorkDimINTEL:+      return "MaxWorkDimINTEL";+    case SpvExecutionModeNoGlobalOffsetINTEL:+      return "NoGlobalOffsetINTEL";+    case SpvExecutionModeNumSIMDWorkitemsINTEL:+      return "NumSIMDWorkitemsINTEL";+    case SpvExecutionModeSchedulerTargetFmaxMhzINTEL:+      return "SchedulerTargetFmaxMhzINTEL";+    case SpvExecutionModeMaximallyReconvergesKHR:+      return "MaximallyReconvergesKHR";+    case SpvExecutionModeFPFastMathDefault:+      return "FPFastMathDefault";+    case SpvExecutionModeStreamingInterfaceINTEL:+      return "StreamingInterfaceINTEL";+    case SpvExecutionModeRegisterMapInterfaceINTEL:+      return "RegisterMapInterfaceINTEL";+    case SpvExecutionModeNamedBarrierCountINTEL:+      return "NamedBarrierCountINTEL";+    case SpvExecutionModeMaximumRegistersINTEL:+      return "MaximumRegistersINTEL";+    case SpvExecutionModeMaximumRegistersIdINTEL:+      return "MaximumRegistersIdINTEL";+    case SpvExecutionModeNamedMaximumRegistersINTEL:+      return "NamedMaximumRegistersINTEL";+    default:+      return "Unknown";+  }+}++inline const char* SpvStorageClassToString(SpvStorageClass value) {+  switch (value) {+    case SpvStorageClassUniformConstant:+      return "UniformConstant";+    case SpvStorageClassInput:+      return "Input";+    case SpvStorageClassUniform:+      return "Uniform";+    case SpvStorageClassOutput:+      return "Output";+    case SpvStorageClassWorkgroup:+      return "Workgroup";+    case SpvStorageClassCrossWorkgroup:+      return "CrossWorkgroup";+    case SpvStorageClassPrivate:+      return "Private";+    case SpvStorageClassFunction:+      return "Function";+    case SpvStorageClassGeneric:+      return "Generic";+    case SpvStorageClassPushConstant:+      return "PushConstant";+    case SpvStorageClassAtomicCounter:+      return "AtomicCounter";+    case SpvStorageClassImage:+      return "Image";+    case SpvStorageClassStorageBuffer:+      return "StorageBuffer";+    case SpvStorageClassTileImageEXT:+      return "TileImageEXT";+    case SpvStorageClassTileAttachmentQCOM:+      return "TileAttachmentQCOM";+    case SpvStorageClassNodePayloadAMDX:+      return "NodePayloadAMDX";+    case SpvStorageClassCallableDataKHR:+      return "CallableDataKHR";+    case SpvStorageClassIncomingCallableDataKHR:+      return "IncomingCallableDataKHR";+    case SpvStorageClassRayPayloadKHR:+      return "RayPayloadKHR";+    case SpvStorageClassHitAttributeKHR:+      return "HitAttributeKHR";+    case SpvStorageClassIncomingRayPayloadKHR:+      return "IncomingRayPayloadKHR";+    case SpvStorageClassShaderRecordBufferKHR:+      return "ShaderRecordBufferKHR";+    case SpvStorageClassPhysicalStorageBuffer:+      return "PhysicalStorageBuffer";+    case SpvStorageClassHitObjectAttributeNV:+      return "HitObjectAttributeNV";+    case SpvStorageClassTaskPayloadWorkgroupEXT:+      return "TaskPayloadWorkgroupEXT";+    case SpvStorageClassHitObjectAttributeEXT:+      return "HitObjectAttributeEXT";+    case SpvStorageClassCodeSectionINTEL:+      return "CodeSectionINTEL";+    case SpvStorageClassDeviceOnlyALTERA:+      return "DeviceOnlyALTERA";+    case SpvStorageClassHostOnlyALTERA:+      return "HostOnlyALTERA";+    default:+      return "Unknown";+  }+}++inline const char* SpvDimToString(SpvDim value) {+  switch (value) {+    case SpvDim1D:+      return "1D";+    case SpvDim2D:+      return "2D";+    case SpvDim3D:+      return "3D";+    case SpvDimCube:+      return "Cube";+    case SpvDimRect:+      return "Rect";+    case SpvDimBuffer:+      return "Buffer";+    case SpvDimSubpassData:+      return "SubpassData";+    case SpvDimTileImageDataEXT:+      return "TileImageDataEXT";+    default:+      return "Unknown";+  }+}++inline const char* SpvSamplerAddressingModeToString(SpvSamplerAddressingMode value) {+  switch (value) {+    case SpvSamplerAddressingModeNone:+      return "None";+    case SpvSamplerAddressingModeClampToEdge:+      return "ClampToEdge";+    case SpvSamplerAddressingModeClamp:+      return "Clamp";+    case SpvSamplerAddressingModeRepeat:+      return "Repeat";+    case SpvSamplerAddressingModeRepeatMirrored:+      return "RepeatMirrored";+    default:+      return "Unknown";+  }+}++inline const char* SpvSamplerFilterModeToString(SpvSamplerFilterMode value) {+  switch (value) {+    case SpvSamplerFilterModeNearest:+      return "Nearest";+    case SpvSamplerFilterModeLinear:+      return "Linear";+    default:+      return "Unknown";+  }+}++inline const char* SpvImageFormatToString(SpvImageFormat value) {+  switch (value) {+    case SpvImageFormatUnknown:+      return "Unknown";+    case SpvImageFormatRgba32f:+      return "Rgba32f";+    case SpvImageFormatRgba16f:+      return "Rgba16f";+    case SpvImageFormatR32f:+      return "R32f";+    case SpvImageFormatRgba8:+      return "Rgba8";+    case SpvImageFormatRgba8Snorm:+      return "Rgba8Snorm";+    case SpvImageFormatRg32f:+      return "Rg32f";+    case SpvImageFormatRg16f:+      return "Rg16f";+    case SpvImageFormatR11fG11fB10f:+      return "R11fG11fB10f";+    case SpvImageFormatR16f:+      return "R16f";+    case SpvImageFormatRgba16:+      return "Rgba16";+    case SpvImageFormatRgb10A2:+      return "Rgb10A2";+    case SpvImageFormatRg16:+      return "Rg16";+    case SpvImageFormatRg8:+      return "Rg8";+    case SpvImageFormatR16:+      return "R16";+    case SpvImageFormatR8:+      return "R8";+    case SpvImageFormatRgba16Snorm:+      return "Rgba16Snorm";+    case SpvImageFormatRg16Snorm:+      return "Rg16Snorm";+    case SpvImageFormatRg8Snorm:+      return "Rg8Snorm";+    case SpvImageFormatR16Snorm:+      return "R16Snorm";+    case SpvImageFormatR8Snorm:+      return "R8Snorm";+    case SpvImageFormatRgba32i:+      return "Rgba32i";+    case SpvImageFormatRgba16i:+      return "Rgba16i";+    case SpvImageFormatRgba8i:+      return "Rgba8i";+    case SpvImageFormatR32i:+      return "R32i";+    case SpvImageFormatRg32i:+      return "Rg32i";+    case SpvImageFormatRg16i:+      return "Rg16i";+    case SpvImageFormatRg8i:+      return "Rg8i";+    case SpvImageFormatR16i:+      return "R16i";+    case SpvImageFormatR8i:+      return "R8i";+    case SpvImageFormatRgba32ui:+      return "Rgba32ui";+    case SpvImageFormatRgba16ui:+      return "Rgba16ui";+    case SpvImageFormatRgba8ui:+      return "Rgba8ui";+    case SpvImageFormatR32ui:+      return "R32ui";+    case SpvImageFormatRgb10a2ui:+      return "Rgb10a2ui";+    case SpvImageFormatRg32ui:+      return "Rg32ui";+    case SpvImageFormatRg16ui:+      return "Rg16ui";+    case SpvImageFormatRg8ui:+      return "Rg8ui";+    case SpvImageFormatR16ui:+      return "R16ui";+    case SpvImageFormatR8ui:+      return "R8ui";+    case SpvImageFormatR64ui:+      return "R64ui";+    case SpvImageFormatR64i:+      return "R64i";+    default:+      return "Unknown";+  }+}++inline const char* SpvImageChannelOrderToString(SpvImageChannelOrder value) {+  switch (value) {+    case SpvImageChannelOrderR:+      return "R";+    case SpvImageChannelOrderA:+      return "A";+    case SpvImageChannelOrderRG:+      return "RG";+    case SpvImageChannelOrderRA:+      return "RA";+    case SpvImageChannelOrderRGB:+      return "RGB";+    case SpvImageChannelOrderRGBA:+      return "RGBA";+    case SpvImageChannelOrderBGRA:+      return "BGRA";+    case SpvImageChannelOrderARGB:+      return "ARGB";+    case SpvImageChannelOrderIntensity:+      return "Intensity";+    case SpvImageChannelOrderLuminance:+      return "Luminance";+    case SpvImageChannelOrderRx:+      return "Rx";+    case SpvImageChannelOrderRGx:+      return "RGx";+    case SpvImageChannelOrderRGBx:+      return "RGBx";+    case SpvImageChannelOrderDepth:+      return "Depth";+    case SpvImageChannelOrderDepthStencil:+      return "DepthStencil";+    case SpvImageChannelOrdersRGB:+      return "sRGB";+    case SpvImageChannelOrdersRGBx:+      return "sRGBx";+    case SpvImageChannelOrdersRGBA:+      return "sRGBA";+    case SpvImageChannelOrdersBGRA:+      return "sBGRA";+    case SpvImageChannelOrderABGR:+      return "ABGR";+    default:+      return "Unknown";+  }+}++inline const char* SpvImageChannelDataTypeToString(SpvImageChannelDataType value) {+  switch (value) {+    case SpvImageChannelDataTypeSnormInt8:+      return "SnormInt8";+    case SpvImageChannelDataTypeSnormInt16:+      return "SnormInt16";+    case SpvImageChannelDataTypeUnormInt8:+      return "UnormInt8";+    case SpvImageChannelDataTypeUnormInt16:+      return "UnormInt16";+    case SpvImageChannelDataTypeUnormShort565:+      return "UnormShort565";+    case SpvImageChannelDataTypeUnormShort555:+      return "UnormShort555";+    case SpvImageChannelDataTypeUnormInt101010:+      return "UnormInt101010";+    case SpvImageChannelDataTypeSignedInt8:+      return "SignedInt8";+    case SpvImageChannelDataTypeSignedInt16:+      return "SignedInt16";+    case SpvImageChannelDataTypeSignedInt32:+      return "SignedInt32";+    case SpvImageChannelDataTypeUnsignedInt8:+      return "UnsignedInt8";+    case SpvImageChannelDataTypeUnsignedInt16:+      return "UnsignedInt16";+    case SpvImageChannelDataTypeUnsignedInt32:+      return "UnsignedInt32";+    case SpvImageChannelDataTypeHalfFloat:+      return "HalfFloat";+    case SpvImageChannelDataTypeFloat:+      return "Float";+    case SpvImageChannelDataTypeUnormInt24:+      return "UnormInt24";+    case SpvImageChannelDataTypeUnormInt101010_2:+      return "UnormInt101010_2";+    case SpvImageChannelDataTypeUnormInt10X6EXT:+      return "UnormInt10X6EXT";+    case SpvImageChannelDataTypeUnsignedIntRaw10EXT:+      return "UnsignedIntRaw10EXT";+    case SpvImageChannelDataTypeUnsignedIntRaw12EXT:+      return "UnsignedIntRaw12EXT";+    case SpvImageChannelDataTypeUnormInt2_101010EXT:+      return "UnormInt2_101010EXT";+    case SpvImageChannelDataTypeUnsignedInt10X6EXT:+      return "UnsignedInt10X6EXT";+    case SpvImageChannelDataTypeUnsignedInt12X4EXT:+      return "UnsignedInt12X4EXT";+    case SpvImageChannelDataTypeUnsignedInt14X2EXT:+      return "UnsignedInt14X2EXT";+    case SpvImageChannelDataTypeUnormInt12X4EXT:+      return "UnormInt12X4EXT";+    case SpvImageChannelDataTypeUnormInt14X2EXT:+      return "UnormInt14X2EXT";+    default:+      return "Unknown";+  }+}++inline const char* SpvFPRoundingModeToString(SpvFPRoundingMode value) {+  switch (value) {+    case SpvFPRoundingModeRTE:+      return "RTE";+    case SpvFPRoundingModeRTZ:+      return "RTZ";+    case SpvFPRoundingModeRTP:+      return "RTP";+    case SpvFPRoundingModeRTN:+      return "RTN";+    default:+      return "Unknown";+  }+}++inline const char* SpvLinkageTypeToString(SpvLinkageType value) {+  switch (value) {+    case SpvLinkageTypeExport:+      return "Export";+    case SpvLinkageTypeImport:+      return "Import";+    case SpvLinkageTypeLinkOnceODR:+      return "LinkOnceODR";+    default:+      return "Unknown";+  }+}++inline const char* SpvAccessQualifierToString(SpvAccessQualifier value) {+  switch (value) {+    case SpvAccessQualifierReadOnly:+      return "ReadOnly";+    case SpvAccessQualifierWriteOnly:+      return "WriteOnly";+    case SpvAccessQualifierReadWrite:+      return "ReadWrite";+    default:+      return "Unknown";+  }+}++inline const char* SpvFunctionParameterAttributeToString(SpvFunctionParameterAttribute value) {+  switch (value) {+    case SpvFunctionParameterAttributeZext:+      return "Zext";+    case SpvFunctionParameterAttributeSext:+      return "Sext";+    case SpvFunctionParameterAttributeByVal:+      return "ByVal";+    case SpvFunctionParameterAttributeSret:+      return "Sret";+    case SpvFunctionParameterAttributeNoAlias:+      return "NoAlias";+    case SpvFunctionParameterAttributeNoCapture:+      return "NoCapture";+    case SpvFunctionParameterAttributeNoWrite:+      return "NoWrite";+    case SpvFunctionParameterAttributeNoReadWrite:+      return "NoReadWrite";+    case SpvFunctionParameterAttributeRuntimeAlignedALTERA:+      return "RuntimeAlignedALTERA";+    default:+      return "Unknown";+  }+}++inline const char* SpvDecorationToString(SpvDecoration value) {+  switch (value) {+    case SpvDecorationRelaxedPrecision:+      return "RelaxedPrecision";+    case SpvDecorationSpecId:+      return "SpecId";+    case SpvDecorationBlock:+      return "Block";+    case SpvDecorationBufferBlock:+      return "BufferBlock";+    case SpvDecorationRowMajor:+      return "RowMajor";+    case SpvDecorationColMajor:+      return "ColMajor";+    case SpvDecorationArrayStride:+      return "ArrayStride";+    case SpvDecorationMatrixStride:+      return "MatrixStride";+    case SpvDecorationGLSLShared:+      return "GLSLShared";+    case SpvDecorationGLSLPacked:+      return "GLSLPacked";+    case SpvDecorationCPacked:+      return "CPacked";+    case SpvDecorationBuiltIn:+      return "BuiltIn";+    case SpvDecorationNoPerspective:+      return "NoPerspective";+    case SpvDecorationFlat:+      return "Flat";+    case SpvDecorationPatch:+      return "Patch";+    case SpvDecorationCentroid:+      return "Centroid";+    case SpvDecorationSample:+      return "Sample";+    case SpvDecorationInvariant:+      return "Invariant";+    case SpvDecorationRestrict:+      return "Restrict";+    case SpvDecorationAliased:+      return "Aliased";+    case SpvDecorationVolatile:+      return "Volatile";+    case SpvDecorationConstant:+      return "Constant";+    case SpvDecorationCoherent:+      return "Coherent";+    case SpvDecorationNonWritable:+      return "NonWritable";+    case SpvDecorationNonReadable:+      return "NonReadable";+    case SpvDecorationUniform:+      return "Uniform";+    case SpvDecorationUniformId:+      return "UniformId";+    case SpvDecorationSaturatedConversion:+      return "SaturatedConversion";+    case SpvDecorationStream:+      return "Stream";+    case SpvDecorationLocation:+      return "Location";+    case SpvDecorationComponent:+      return "Component";+    case SpvDecorationIndex:+      return "Index";+    case SpvDecorationBinding:+      return "Binding";+    case SpvDecorationDescriptorSet:+      return "DescriptorSet";+    case SpvDecorationOffset:+      return "Offset";+    case SpvDecorationXfbBuffer:+      return "XfbBuffer";+    case SpvDecorationXfbStride:+      return "XfbStride";+    case SpvDecorationFuncParamAttr:+      return "FuncParamAttr";+    case SpvDecorationFPRoundingMode:+      return "FPRoundingMode";+    case SpvDecorationFPFastMathMode:+      return "FPFastMathMode";+    case SpvDecorationLinkageAttributes:+      return "LinkageAttributes";+    case SpvDecorationNoContraction:+      return "NoContraction";+    case SpvDecorationInputAttachmentIndex:+      return "InputAttachmentIndex";+    case SpvDecorationAlignment:+      return "Alignment";+    case SpvDecorationMaxByteOffset:+      return "MaxByteOffset";+    case SpvDecorationAlignmentId:+      return "AlignmentId";+    case SpvDecorationMaxByteOffsetId:+      return "MaxByteOffsetId";+    case SpvDecorationSaturatedToLargestFloat8NormalConversionEXT:+      return "SaturatedToLargestFloat8NormalConversionEXT";+    case SpvDecorationNoSignedWrap:+      return "NoSignedWrap";+    case SpvDecorationNoUnsignedWrap:+      return "NoUnsignedWrap";+    case SpvDecorationWeightTextureQCOM:+      return "WeightTextureQCOM";+    case SpvDecorationBlockMatchTextureQCOM:+      return "BlockMatchTextureQCOM";+    case SpvDecorationBlockMatchSamplerQCOM:+      return "BlockMatchSamplerQCOM";+    case SpvDecorationExplicitInterpAMD:+      return "ExplicitInterpAMD";+    case SpvDecorationNodeSharesPayloadLimitsWithAMDX:+      return "NodeSharesPayloadLimitsWithAMDX";+    case SpvDecorationNodeMaxPayloadsAMDX:+      return "NodeMaxPayloadsAMDX";+    case SpvDecorationTrackFinishWritingAMDX:+      return "TrackFinishWritingAMDX";+    case SpvDecorationPayloadNodeNameAMDX:+      return "PayloadNodeNameAMDX";+    case SpvDecorationPayloadNodeBaseIndexAMDX:+      return "PayloadNodeBaseIndexAMDX";+    case SpvDecorationPayloadNodeSparseArrayAMDX:+      return "PayloadNodeSparseArrayAMDX";+    case SpvDecorationPayloadNodeArraySizeAMDX:+      return "PayloadNodeArraySizeAMDX";+    case SpvDecorationPayloadDispatchIndirectAMDX:+      return "PayloadDispatchIndirectAMDX";+    case SpvDecorationArrayStrideIdEXT:+      return "ArrayStrideIdEXT";+    case SpvDecorationOffsetIdEXT:+      return "OffsetIdEXT";+    case SpvDecorationUTFEncodedKHR:+      return "UTFEncodedKHR";+    case SpvDecorationOverrideCoverageNV:+      return "OverrideCoverageNV";+    case SpvDecorationPassthroughNV:+      return "PassthroughNV";+    case SpvDecorationViewportRelativeNV:+      return "ViewportRelativeNV";+    case SpvDecorationSecondaryViewportRelativeNV:+      return "SecondaryViewportRelativeNV";+    case SpvDecorationPerPrimitiveEXT:+      return "PerPrimitiveEXT";+    case SpvDecorationPerViewNV:+      return "PerViewNV";+    case SpvDecorationPerTaskNV:+      return "PerTaskNV";+    case SpvDecorationPerVertexKHR:+      return "PerVertexKHR";+    case SpvDecorationNonUniform:+      return "NonUniform";+    case SpvDecorationRestrictPointer:+      return "RestrictPointer";+    case SpvDecorationAliasedPointer:+      return "AliasedPointer";+    case SpvDecorationMemberOffsetNV:+      return "MemberOffsetNV";+    case SpvDecorationHitObjectShaderRecordBufferNV:+      return "HitObjectShaderRecordBufferNV";+    case SpvDecorationHitObjectShaderRecordBufferEXT:+      return "HitObjectShaderRecordBufferEXT";+    case SpvDecorationBankNV:+      return "BankNV";+    case SpvDecorationBindlessSamplerNV:+      return "BindlessSamplerNV";+    case SpvDecorationBindlessImageNV:+      return "BindlessImageNV";+    case SpvDecorationBoundSamplerNV:+      return "BoundSamplerNV";+    case SpvDecorationBoundImageNV:+      return "BoundImageNV";+    case SpvDecorationSIMTCallINTEL:+      return "SIMTCallINTEL";+    case SpvDecorationReferencedIndirectlyINTEL:+      return "ReferencedIndirectlyINTEL";+    case SpvDecorationClobberINTEL:+      return "ClobberINTEL";+    case SpvDecorationSideEffectsINTEL:+      return "SideEffectsINTEL";+    case SpvDecorationVectorComputeVariableINTEL:+      return "VectorComputeVariableINTEL";+    case SpvDecorationFuncParamIOKindINTEL:+      return "FuncParamIOKindINTEL";+    case SpvDecorationVectorComputeFunctionINTEL:+      return "VectorComputeFunctionINTEL";+    case SpvDecorationStackCallINTEL:+      return "StackCallINTEL";+    case SpvDecorationGlobalVariableOffsetINTEL:+      return "GlobalVariableOffsetINTEL";+    case SpvDecorationCounterBuffer:+      return "CounterBuffer";+    case SpvDecorationHlslSemanticGOOGLE:+      return "HlslSemanticGOOGLE";+    case SpvDecorationUserTypeGOOGLE:+      return "UserTypeGOOGLE";+    case SpvDecorationFunctionRoundingModeINTEL:+      return "FunctionRoundingModeINTEL";+    case SpvDecorationFunctionDenormModeINTEL:+      return "FunctionDenormModeINTEL";+    case SpvDecorationRegisterALTERA:+      return "RegisterALTERA";+    case SpvDecorationMemoryALTERA:+      return "MemoryALTERA";+    case SpvDecorationNumbanksALTERA:+      return "NumbanksALTERA";+    case SpvDecorationBankwidthALTERA:+      return "BankwidthALTERA";+    case SpvDecorationMaxPrivateCopiesALTERA:+      return "MaxPrivateCopiesALTERA";+    case SpvDecorationSinglepumpALTERA:+      return "SinglepumpALTERA";+    case SpvDecorationDoublepumpALTERA:+      return "DoublepumpALTERA";+    case SpvDecorationMaxReplicatesALTERA:+      return "MaxReplicatesALTERA";+    case SpvDecorationSimpleDualPortALTERA:+      return "SimpleDualPortALTERA";+    case SpvDecorationMergeALTERA:+      return "MergeALTERA";+    case SpvDecorationBankBitsALTERA:+      return "BankBitsALTERA";+    case SpvDecorationForcePow2DepthALTERA:+      return "ForcePow2DepthALTERA";+    case SpvDecorationStridesizeALTERA:+      return "StridesizeALTERA";+    case SpvDecorationWordsizeALTERA:+      return "WordsizeALTERA";+    case SpvDecorationTrueDualPortALTERA:+      return "TrueDualPortALTERA";+    case SpvDecorationBurstCoalesceALTERA:+      return "BurstCoalesceALTERA";+    case SpvDecorationCacheSizeALTERA:+      return "CacheSizeALTERA";+    case SpvDecorationDontStaticallyCoalesceALTERA:+      return "DontStaticallyCoalesceALTERA";+    case SpvDecorationPrefetchALTERA:+      return "PrefetchALTERA";+    case SpvDecorationStallEnableALTERA:+      return "StallEnableALTERA";+    case SpvDecorationFuseLoopsInFunctionALTERA:+      return "FuseLoopsInFunctionALTERA";+    case SpvDecorationMathOpDSPModeALTERA:+      return "MathOpDSPModeALTERA";+    case SpvDecorationAliasScopeINTEL:+      return "AliasScopeINTEL";+    case SpvDecorationNoAliasINTEL:+      return "NoAliasINTEL";+    case SpvDecorationInitiationIntervalALTERA:+      return "InitiationIntervalALTERA";+    case SpvDecorationMaxConcurrencyALTERA:+      return "MaxConcurrencyALTERA";+    case SpvDecorationPipelineEnableALTERA:+      return "PipelineEnableALTERA";+    case SpvDecorationBufferLocationALTERA:+      return "BufferLocationALTERA";+    case SpvDecorationIOPipeStorageALTERA:+      return "IOPipeStorageALTERA";+    case SpvDecorationFunctionFloatingPointModeINTEL:+      return "FunctionFloatingPointModeINTEL";+    case SpvDecorationSingleElementVectorINTEL:+      return "SingleElementVectorINTEL";+    case SpvDecorationVectorComputeCallableFunctionINTEL:+      return "VectorComputeCallableFunctionINTEL";+    case SpvDecorationMediaBlockIOINTEL:+      return "MediaBlockIOINTEL";+    case SpvDecorationStallFreeALTERA:+      return "StallFreeALTERA";+    case SpvDecorationFPMaxErrorDecorationINTEL:+      return "FPMaxErrorDecorationINTEL";+    case SpvDecorationLatencyControlLabelALTERA:+      return "LatencyControlLabelALTERA";+    case SpvDecorationLatencyControlConstraintALTERA:+      return "LatencyControlConstraintALTERA";+    case SpvDecorationConduitKernelArgumentALTERA:+      return "ConduitKernelArgumentALTERA";+    case SpvDecorationRegisterMapKernelArgumentALTERA:+      return "RegisterMapKernelArgumentALTERA";+    case SpvDecorationMMHostInterfaceAddressWidthALTERA:+      return "MMHostInterfaceAddressWidthALTERA";+    case SpvDecorationMMHostInterfaceDataWidthALTERA:+      return "MMHostInterfaceDataWidthALTERA";+    case SpvDecorationMMHostInterfaceLatencyALTERA:+      return "MMHostInterfaceLatencyALTERA";+    case SpvDecorationMMHostInterfaceReadWriteModeALTERA:+      return "MMHostInterfaceReadWriteModeALTERA";+    case SpvDecorationMMHostInterfaceMaxBurstALTERA:+      return "MMHostInterfaceMaxBurstALTERA";+    case SpvDecorationMMHostInterfaceWaitRequestALTERA:+      return "MMHostInterfaceWaitRequestALTERA";+    case SpvDecorationStableKernelArgumentALTERA:+      return "StableKernelArgumentALTERA";+    case SpvDecorationHostAccessINTEL:+      return "HostAccessINTEL";+    case SpvDecorationInitModeALTERA:+      return "InitModeALTERA";+    case SpvDecorationImplementInRegisterMapALTERA:+      return "ImplementInRegisterMapALTERA";+    case SpvDecorationConditionalINTEL:+      return "ConditionalINTEL";+    case SpvDecorationCacheControlLoadINTEL:+      return "CacheControlLoadINTEL";+    case SpvDecorationCacheControlStoreINTEL:+      return "CacheControlStoreINTEL";+    default:+      return "Unknown";+  }+}++inline const char* SpvBuiltInToString(SpvBuiltIn value) {+  switch (value) {+    case SpvBuiltInPosition:+      return "Position";+    case SpvBuiltInPointSize:+      return "PointSize";+    case SpvBuiltInClipDistance:+      return "ClipDistance";+    case SpvBuiltInCullDistance:+      return "CullDistance";+    case SpvBuiltInVertexId:+      return "VertexId";+    case SpvBuiltInInstanceId:+      return "InstanceId";+    case SpvBuiltInPrimitiveId:+      return "PrimitiveId";+    case SpvBuiltInInvocationId:+      return "InvocationId";+    case SpvBuiltInLayer:+      return "Layer";+    case SpvBuiltInViewportIndex:+      return "ViewportIndex";+    case SpvBuiltInTessLevelOuter:+      return "TessLevelOuter";+    case SpvBuiltInTessLevelInner:+      return "TessLevelInner";+    case SpvBuiltInTessCoord:+      return "TessCoord";+    case SpvBuiltInPatchVertices:+      return "PatchVertices";+    case SpvBuiltInFragCoord:+      return "FragCoord";+    case SpvBuiltInPointCoord:+      return "PointCoord";+    case SpvBuiltInFrontFacing:+      return "FrontFacing";+    case SpvBuiltInSampleId:+      return "SampleId";+    case SpvBuiltInSamplePosition:+      return "SamplePosition";+    case SpvBuiltInSampleMask:+      return "SampleMask";+    case SpvBuiltInFragDepth:+      return "FragDepth";+    case SpvBuiltInHelperInvocation:+      return "HelperInvocation";+    case SpvBuiltInNumWorkgroups:+      return "NumWorkgroups";+    case SpvBuiltInWorkgroupSize:+      return "WorkgroupSize";+    case SpvBuiltInWorkgroupId:+      return "WorkgroupId";+    case SpvBuiltInLocalInvocationId:+      return "LocalInvocationId";+    case SpvBuiltInGlobalInvocationId:+      return "GlobalInvocationId";+    case SpvBuiltInLocalInvocationIndex:+      return "LocalInvocationIndex";+    case SpvBuiltInWorkDim:+      return "WorkDim";+    case SpvBuiltInGlobalSize:+      return "GlobalSize";+    case SpvBuiltInEnqueuedWorkgroupSize:+      return "EnqueuedWorkgroupSize";+    case SpvBuiltInGlobalOffset:+      return "GlobalOffset";+    case SpvBuiltInGlobalLinearId:+      return "GlobalLinearId";+    case SpvBuiltInSubgroupSize:+      return "SubgroupSize";+    case SpvBuiltInSubgroupMaxSize:+      return "SubgroupMaxSize";+    case SpvBuiltInNumSubgroups:+      return "NumSubgroups";+    case SpvBuiltInNumEnqueuedSubgroups:+      return "NumEnqueuedSubgroups";+    case SpvBuiltInSubgroupId:+      return "SubgroupId";+    case SpvBuiltInSubgroupLocalInvocationId:+      return "SubgroupLocalInvocationId";+    case SpvBuiltInVertexIndex:+      return "VertexIndex";+    case SpvBuiltInInstanceIndex:+      return "InstanceIndex";+    case SpvBuiltInCoreIDARM:+      return "CoreIDARM";+    case SpvBuiltInCoreCountARM:+      return "CoreCountARM";+    case SpvBuiltInCoreMaxIDARM:+      return "CoreMaxIDARM";+    case SpvBuiltInWarpIDARM:+      return "WarpIDARM";+    case SpvBuiltInWarpMaxIDARM:+      return "WarpMaxIDARM";+    case SpvBuiltInSubgroupEqMask:+      return "SubgroupEqMask";+    case SpvBuiltInSubgroupGeMask:+      return "SubgroupGeMask";+    case SpvBuiltInSubgroupGtMask:+      return "SubgroupGtMask";+    case SpvBuiltInSubgroupLeMask:+      return "SubgroupLeMask";+    case SpvBuiltInSubgroupLtMask:+      return "SubgroupLtMask";+    case SpvBuiltInBaseVertex:+      return "BaseVertex";+    case SpvBuiltInBaseInstance:+      return "BaseInstance";+    case SpvBuiltInDrawIndex:+      return "DrawIndex";+    case SpvBuiltInPrimitiveShadingRateKHR:+      return "PrimitiveShadingRateKHR";+    case SpvBuiltInDeviceIndex:+      return "DeviceIndex";+    case SpvBuiltInViewIndex:+      return "ViewIndex";+    case SpvBuiltInShadingRateKHR:+      return "ShadingRateKHR";+    case SpvBuiltInTileOffsetQCOM:+      return "TileOffsetQCOM";+    case SpvBuiltInTileDimensionQCOM:+      return "TileDimensionQCOM";+    case SpvBuiltInTileApronSizeQCOM:+      return "TileApronSizeQCOM";+    case SpvBuiltInBaryCoordNoPerspAMD:+      return "BaryCoordNoPerspAMD";+    case SpvBuiltInBaryCoordNoPerspCentroidAMD:+      return "BaryCoordNoPerspCentroidAMD";+    case SpvBuiltInBaryCoordNoPerspSampleAMD:+      return "BaryCoordNoPerspSampleAMD";+    case SpvBuiltInBaryCoordSmoothAMD:+      return "BaryCoordSmoothAMD";+    case SpvBuiltInBaryCoordSmoothCentroidAMD:+      return "BaryCoordSmoothCentroidAMD";+    case SpvBuiltInBaryCoordSmoothSampleAMD:+      return "BaryCoordSmoothSampleAMD";+    case SpvBuiltInBaryCoordPullModelAMD:+      return "BaryCoordPullModelAMD";+    case SpvBuiltInFragStencilRefEXT:+      return "FragStencilRefEXT";+    case SpvBuiltInRemainingRecursionLevelsAMDX:+      return "RemainingRecursionLevelsAMDX";+    case SpvBuiltInShaderIndexAMDX:+      return "ShaderIndexAMDX";+    case SpvBuiltInSamplerHeapEXT:+      return "SamplerHeapEXT";+    case SpvBuiltInResourceHeapEXT:+      return "ResourceHeapEXT";+    case SpvBuiltInViewportMaskNV:+      return "ViewportMaskNV";+    case SpvBuiltInSecondaryPositionNV:+      return "SecondaryPositionNV";+    case SpvBuiltInSecondaryViewportMaskNV:+      return "SecondaryViewportMaskNV";+    case SpvBuiltInPositionPerViewNV:+      return "PositionPerViewNV";+    case SpvBuiltInViewportMaskPerViewNV:+      return "ViewportMaskPerViewNV";+    case SpvBuiltInFullyCoveredEXT:+      return "FullyCoveredEXT";+    case SpvBuiltInTaskCountNV:+      return "TaskCountNV";+    case SpvBuiltInPrimitiveCountNV:+      return "PrimitiveCountNV";+    case SpvBuiltInPrimitiveIndicesNV:+      return "PrimitiveIndicesNV";+    case SpvBuiltInClipDistancePerViewNV:+      return "ClipDistancePerViewNV";+    case SpvBuiltInCullDistancePerViewNV:+      return "CullDistancePerViewNV";+    case SpvBuiltInLayerPerViewNV:+      return "LayerPerViewNV";+    case SpvBuiltInMeshViewCountNV:+      return "MeshViewCountNV";+    case SpvBuiltInMeshViewIndicesNV:+      return "MeshViewIndicesNV";+    case SpvBuiltInBaryCoordKHR:+      return "BaryCoordKHR";+    case SpvBuiltInBaryCoordNoPerspKHR:+      return "BaryCoordNoPerspKHR";+    case SpvBuiltInFragSizeEXT:+      return "FragSizeEXT";+    case SpvBuiltInFragInvocationCountEXT:+      return "FragInvocationCountEXT";+    case SpvBuiltInPrimitivePointIndicesEXT:+      return "PrimitivePointIndicesEXT";+    case SpvBuiltInPrimitiveLineIndicesEXT:+      return "PrimitiveLineIndicesEXT";+    case SpvBuiltInPrimitiveTriangleIndicesEXT:+      return "PrimitiveTriangleIndicesEXT";+    case SpvBuiltInCullPrimitiveEXT:+      return "CullPrimitiveEXT";+    case SpvBuiltInLaunchIdKHR:+      return "LaunchIdKHR";+    case SpvBuiltInLaunchSizeKHR:+      return "LaunchSizeKHR";+    case SpvBuiltInWorldRayOriginKHR:+      return "WorldRayOriginKHR";+    case SpvBuiltInWorldRayDirectionKHR:+      return "WorldRayDirectionKHR";+    case SpvBuiltInObjectRayOriginKHR:+      return "ObjectRayOriginKHR";+    case SpvBuiltInObjectRayDirectionKHR:+      return "ObjectRayDirectionKHR";+    case SpvBuiltInRayTminKHR:+      return "RayTminKHR";+    case SpvBuiltInRayTmaxKHR:+      return "RayTmaxKHR";+    case SpvBuiltInInstanceCustomIndexKHR:+      return "InstanceCustomIndexKHR";+    case SpvBuiltInObjectToWorldKHR:+      return "ObjectToWorldKHR";+    case SpvBuiltInWorldToObjectKHR:+      return "WorldToObjectKHR";+    case SpvBuiltInHitTNV:+      return "HitTNV";+    case SpvBuiltInHitKindKHR:+      return "HitKindKHR";+    case SpvBuiltInCurrentRayTimeNV:+      return "CurrentRayTimeNV";+    case SpvBuiltInHitTriangleVertexPositionsKHR:+      return "HitTriangleVertexPositionsKHR";+    case SpvBuiltInHitMicroTriangleVertexPositionsNV:+      return "HitMicroTriangleVertexPositionsNV";+    case SpvBuiltInHitMicroTriangleVertexBarycentricsNV:+      return "HitMicroTriangleVertexBarycentricsNV";+    case SpvBuiltInIncomingRayFlagsKHR:+      return "IncomingRayFlagsKHR";+    case SpvBuiltInRayGeometryIndexKHR:+      return "RayGeometryIndexKHR";+    case SpvBuiltInHitIsSphereNV:+      return "HitIsSphereNV";+    case SpvBuiltInHitIsLSSNV:+      return "HitIsLSSNV";+    case SpvBuiltInHitSpherePositionNV:+      return "HitSpherePositionNV";+    case SpvBuiltInWarpsPerSMNV:+      return "WarpsPerSMNV";+    case SpvBuiltInSMCountNV:+      return "SMCountNV";+    case SpvBuiltInWarpIDNV:+      return "WarpIDNV";+    case SpvBuiltInSMIDNV:+      return "SMIDNV";+    case SpvBuiltInHitLSSPositionsNV:+      return "HitLSSPositionsNV";+    case SpvBuiltInHitKindFrontFacingMicroTriangleNV:+      return "HitKindFrontFacingMicroTriangleNV";+    case SpvBuiltInHitKindBackFacingMicroTriangleNV:+      return "HitKindBackFacingMicroTriangleNV";+    case SpvBuiltInHitSphereRadiusNV:+      return "HitSphereRadiusNV";+    case SpvBuiltInHitLSSRadiiNV:+      return "HitLSSRadiiNV";+    case SpvBuiltInClusterIDNV:+      return "ClusterIDNV";+    case SpvBuiltInCullMaskKHR:+      return "CullMaskKHR";+    default:+      return "Unknown";+  }+}++inline const char* SpvScopeToString(SpvScope value) {+  switch (value) {+    case SpvScopeCrossDevice:+      return "CrossDevice";+    case SpvScopeDevice:+      return "Device";+    case SpvScopeWorkgroup:+      return "Workgroup";+    case SpvScopeSubgroup:+      return "Subgroup";+    case SpvScopeInvocation:+      return "Invocation";+    case SpvScopeQueueFamily:+      return "QueueFamily";+    case SpvScopeShaderCallKHR:+      return "ShaderCallKHR";+    default:+      return "Unknown";+  }+}++inline const char* SpvGroupOperationToString(SpvGroupOperation value) {+  switch (value) {+    case SpvGroupOperationReduce:+      return "Reduce";+    case SpvGroupOperationInclusiveScan:+      return "InclusiveScan";+    case SpvGroupOperationExclusiveScan:+      return "ExclusiveScan";+    case SpvGroupOperationClusteredReduce:+      return "ClusteredReduce";+    case SpvGroupOperationPartitionedReduceEXT:+      return "PartitionedReduceEXT";+    case SpvGroupOperationPartitionedInclusiveScanEXT:+      return "PartitionedInclusiveScanEXT";+    case SpvGroupOperationPartitionedExclusiveScanEXT:+      return "PartitionedExclusiveScanEXT";+    default:+      return "Unknown";+  }+}++inline const char* SpvKernelEnqueueFlagsToString(SpvKernelEnqueueFlags value) {+  switch (value) {+    case SpvKernelEnqueueFlagsNoWait:+      return "NoWait";+    case SpvKernelEnqueueFlagsWaitKernel:+      return "WaitKernel";+    case SpvKernelEnqueueFlagsWaitWorkGroup:+      return "WaitWorkGroup";+    default:+      return "Unknown";+  }+}++inline const char* SpvCapabilityToString(SpvCapability value) {+  switch (value) {+    case SpvCapabilityMatrix:+      return "Matrix";+    case SpvCapabilityShader:+      return "Shader";+    case SpvCapabilityGeometry:+      return "Geometry";+    case SpvCapabilityTessellation:+      return "Tessellation";+    case SpvCapabilityAddresses:+      return "Addresses";+    case SpvCapabilityLinkage:+      return "Linkage";+    case SpvCapabilityKernel:+      return "Kernel";+    case SpvCapabilityVector16:+      return "Vector16";+    case SpvCapabilityFloat16Buffer:+      return "Float16Buffer";+    case SpvCapabilityFloat16:+      return "Float16";+    case SpvCapabilityFloat64:+      return "Float64";+    case SpvCapabilityInt64:+      return "Int64";+    case SpvCapabilityInt64Atomics:+      return "Int64Atomics";+    case SpvCapabilityImageBasic:+      return "ImageBasic";+    case SpvCapabilityImageReadWrite:+      return "ImageReadWrite";+    case SpvCapabilityImageMipmap:+      return "ImageMipmap";+    case SpvCapabilityPipes:+      return "Pipes";+    case SpvCapabilityGroups:+      return "Groups";+    case SpvCapabilityDeviceEnqueue:+      return "DeviceEnqueue";+    case SpvCapabilityLiteralSampler:+      return "LiteralSampler";+    case SpvCapabilityAtomicStorage:+      return "AtomicStorage";+    case SpvCapabilityInt16:+      return "Int16";+    case SpvCapabilityTessellationPointSize:+      return "TessellationPointSize";+    case SpvCapabilityGeometryPointSize:+      return "GeometryPointSize";+    case SpvCapabilityImageGatherExtended:+      return "ImageGatherExtended";+    case SpvCapabilityStorageImageMultisample:+      return "StorageImageMultisample";+    case SpvCapabilityUniformBufferArrayDynamicIndexing:+      return "UniformBufferArrayDynamicIndexing";+    case SpvCapabilitySampledImageArrayDynamicIndexing:+      return "SampledImageArrayDynamicIndexing";+    case SpvCapabilityStorageBufferArrayDynamicIndexing:+      return "StorageBufferArrayDynamicIndexing";+    case SpvCapabilityStorageImageArrayDynamicIndexing:+      return "StorageImageArrayDynamicIndexing";+    case SpvCapabilityClipDistance:+      return "ClipDistance";+    case SpvCapabilityCullDistance:+      return "CullDistance";+    case SpvCapabilityImageCubeArray:+      return "ImageCubeArray";+    case SpvCapabilitySampleRateShading:+      return "SampleRateShading";+    case SpvCapabilityImageRect:+      return "ImageRect";+    case SpvCapabilitySampledRect:+      return "SampledRect";+    case SpvCapabilityGenericPointer:+      return "GenericPointer";+    case SpvCapabilityInt8:+      return "Int8";+    case SpvCapabilityInputAttachment:+      return "InputAttachment";+    case SpvCapabilitySparseResidency:+      return "SparseResidency";+    case SpvCapabilityMinLod:+      return "MinLod";+    case SpvCapabilitySampled1D:+      return "Sampled1D";+    case SpvCapabilityImage1D:+      return "Image1D";+    case SpvCapabilitySampledCubeArray:+      return "SampledCubeArray";+    case SpvCapabilitySampledBuffer:+      return "SampledBuffer";+    case SpvCapabilityImageBuffer:+      return "ImageBuffer";+    case SpvCapabilityImageMSArray:+      return "ImageMSArray";+    case SpvCapabilityStorageImageExtendedFormats:+      return "StorageImageExtendedFormats";+    case SpvCapabilityImageQuery:+      return "ImageQuery";+    case SpvCapabilityDerivativeControl:+      return "DerivativeControl";+    case SpvCapabilityInterpolationFunction:+      return "InterpolationFunction";+    case SpvCapabilityTransformFeedback:+      return "TransformFeedback";+    case SpvCapabilityGeometryStreams:+      return "GeometryStreams";+    case SpvCapabilityStorageImageReadWithoutFormat:+      return "StorageImageReadWithoutFormat";+    case SpvCapabilityStorageImageWriteWithoutFormat:+      return "StorageImageWriteWithoutFormat";+    case SpvCapabilityMultiViewport:+      return "MultiViewport";+    case SpvCapabilitySubgroupDispatch:+      return "SubgroupDispatch";+    case SpvCapabilityNamedBarrier:+      return "NamedBarrier";+    case SpvCapabilityPipeStorage:+      return "PipeStorage";+    case SpvCapabilityGroupNonUniform:+      return "GroupNonUniform";+    case SpvCapabilityGroupNonUniformVote:+      return "GroupNonUniformVote";+    case SpvCapabilityGroupNonUniformArithmetic:+      return "GroupNonUniformArithmetic";+    case SpvCapabilityGroupNonUniformBallot:+      return "GroupNonUniformBallot";+    case SpvCapabilityGroupNonUniformShuffle:+      return "GroupNonUniformShuffle";+    case SpvCapabilityGroupNonUniformShuffleRelative:+      return "GroupNonUniformShuffleRelative";+    case SpvCapabilityGroupNonUniformClustered:+      return "GroupNonUniformClustered";+    case SpvCapabilityGroupNonUniformQuad:+      return "GroupNonUniformQuad";+    case SpvCapabilityShaderLayer:+      return "ShaderLayer";+    case SpvCapabilityShaderViewportIndex:+      return "ShaderViewportIndex";+    case SpvCapabilityUniformDecoration:+      return "UniformDecoration";+    case SpvCapabilityCoreBuiltinsARM:+      return "CoreBuiltinsARM";+    case SpvCapabilityTileImageColorReadAccessEXT:+      return "TileImageColorReadAccessEXT";+    case SpvCapabilityTileImageDepthReadAccessEXT:+      return "TileImageDepthReadAccessEXT";+    case SpvCapabilityTileImageStencilReadAccessEXT:+      return "TileImageStencilReadAccessEXT";+    case SpvCapabilityTensorsARM:+      return "TensorsARM";+    case SpvCapabilityStorageTensorArrayDynamicIndexingARM:+      return "StorageTensorArrayDynamicIndexingARM";+    case SpvCapabilityStorageTensorArrayNonUniformIndexingARM:+      return "StorageTensorArrayNonUniformIndexingARM";+    case SpvCapabilityGraphARM:+      return "GraphARM";+    case SpvCapabilityCooperativeMatrixLayoutsARM:+      return "CooperativeMatrixLayoutsARM";+    case SpvCapabilityFloat8EXT:+      return "Float8EXT";+    case SpvCapabilityFloat8CooperativeMatrixEXT:+      return "Float8CooperativeMatrixEXT";+    case SpvCapabilityFragmentShadingRateKHR:+      return "FragmentShadingRateKHR";+    case SpvCapabilitySubgroupBallotKHR:+      return "SubgroupBallotKHR";+    case SpvCapabilityDrawParameters:+      return "DrawParameters";+    case SpvCapabilityWorkgroupMemoryExplicitLayoutKHR:+      return "WorkgroupMemoryExplicitLayoutKHR";+    case SpvCapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR:+      return "WorkgroupMemoryExplicitLayout8BitAccessKHR";+    case SpvCapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR:+      return "WorkgroupMemoryExplicitLayout16BitAccessKHR";+    case SpvCapabilitySubgroupVoteKHR:+      return "SubgroupVoteKHR";+    case SpvCapabilityStorageBuffer16BitAccess:+      return "StorageBuffer16BitAccess";+    case SpvCapabilityStorageUniform16:+      return "StorageUniform16";+    case SpvCapabilityStoragePushConstant16:+      return "StoragePushConstant16";+    case SpvCapabilityStorageInputOutput16:+      return "StorageInputOutput16";+    case SpvCapabilityDeviceGroup:+      return "DeviceGroup";+    case SpvCapabilityMultiView:+      return "MultiView";+    case SpvCapabilityVariablePointersStorageBuffer:+      return "VariablePointersStorageBuffer";+    case SpvCapabilityVariablePointers:+      return "VariablePointers";+    case SpvCapabilityAtomicStorageOps:+      return "AtomicStorageOps";+    case SpvCapabilitySampleMaskPostDepthCoverage:+      return "SampleMaskPostDepthCoverage";+    case SpvCapabilityStorageBuffer8BitAccess:+      return "StorageBuffer8BitAccess";+    case SpvCapabilityUniformAndStorageBuffer8BitAccess:+      return "UniformAndStorageBuffer8BitAccess";+    case SpvCapabilityStoragePushConstant8:+      return "StoragePushConstant8";+    case SpvCapabilityDenormPreserve:+      return "DenormPreserve";+    case SpvCapabilityDenormFlushToZero:+      return "DenormFlushToZero";+    case SpvCapabilitySignedZeroInfNanPreserve:+      return "SignedZeroInfNanPreserve";+    case SpvCapabilityRoundingModeRTE:+      return "RoundingModeRTE";+    case SpvCapabilityRoundingModeRTZ:+      return "RoundingModeRTZ";+    case SpvCapabilityRayQueryProvisionalKHR:+      return "RayQueryProvisionalKHR";+    case SpvCapabilityRayQueryKHR:+      return "RayQueryKHR";+    case SpvCapabilityUntypedPointersKHR:+      return "UntypedPointersKHR";+    case SpvCapabilityRayTraversalPrimitiveCullingKHR:+      return "RayTraversalPrimitiveCullingKHR";+    case SpvCapabilityRayTracingKHR:+      return "RayTracingKHR";+    case SpvCapabilityTextureSampleWeightedQCOM:+      return "TextureSampleWeightedQCOM";+    case SpvCapabilityTextureBoxFilterQCOM:+      return "TextureBoxFilterQCOM";+    case SpvCapabilityTextureBlockMatchQCOM:+      return "TextureBlockMatchQCOM";+    case SpvCapabilityTileShadingQCOM:+      return "TileShadingQCOM";+    case SpvCapabilityCooperativeMatrixConversionQCOM:+      return "CooperativeMatrixConversionQCOM";+    case SpvCapabilityTextureBlockMatch2QCOM:+      return "TextureBlockMatch2QCOM";+    case SpvCapabilityFloat16ImageAMD:+      return "Float16ImageAMD";+    case SpvCapabilityImageGatherBiasLodAMD:+      return "ImageGatherBiasLodAMD";+    case SpvCapabilityFragmentMaskAMD:+      return "FragmentMaskAMD";+    case SpvCapabilityStencilExportEXT:+      return "StencilExportEXT";+    case SpvCapabilityImageReadWriteLodAMD:+      return "ImageReadWriteLodAMD";+    case SpvCapabilityInt64ImageEXT:+      return "Int64ImageEXT";+    case SpvCapabilityShaderClockKHR:+      return "ShaderClockKHR";+    case SpvCapabilityShaderEnqueueAMDX:+      return "ShaderEnqueueAMDX";+    case SpvCapabilityQuadControlKHR:+      return "QuadControlKHR";+    case SpvCapabilityInt4TypeINTEL:+      return "Int4TypeINTEL";+    case SpvCapabilityInt4CooperativeMatrixINTEL:+      return "Int4CooperativeMatrixINTEL";+    case SpvCapabilityBFloat16TypeKHR:+      return "BFloat16TypeKHR";+    case SpvCapabilityBFloat16DotProductKHR:+      return "BFloat16DotProductKHR";+    case SpvCapabilityBFloat16CooperativeMatrixKHR:+      return "BFloat16CooperativeMatrixKHR";+    case SpvCapabilityAbortKHR:+      return "AbortKHR";+    case SpvCapabilityDescriptorHeapEXT:+      return "DescriptorHeapEXT";+    case SpvCapabilityConstantDataKHR:+      return "ConstantDataKHR";+    case SpvCapabilityPoisonFreezeKHR:+      return "PoisonFreezeKHR";+    case SpvCapabilitySampleMaskOverrideCoverageNV:+      return "SampleMaskOverrideCoverageNV";+    case SpvCapabilityGeometryShaderPassthroughNV:+      return "GeometryShaderPassthroughNV";+    case SpvCapabilityShaderViewportIndexLayerEXT:+      return "ShaderViewportIndexLayerEXT";+    case SpvCapabilityShaderViewportMaskNV:+      return "ShaderViewportMaskNV";+    case SpvCapabilityShaderStereoViewNV:+      return "ShaderStereoViewNV";+    case SpvCapabilityPerViewAttributesNV:+      return "PerViewAttributesNV";+    case SpvCapabilityFragmentFullyCoveredEXT:+      return "FragmentFullyCoveredEXT";+    case SpvCapabilityMeshShadingNV:+      return "MeshShadingNV";+    case SpvCapabilityImageFootprintNV:+      return "ImageFootprintNV";+    case SpvCapabilityMeshShadingEXT:+      return "MeshShadingEXT";+    case SpvCapabilityFragmentBarycentricKHR:+      return "FragmentBarycentricKHR";+    case SpvCapabilityComputeDerivativeGroupQuadsKHR:+      return "ComputeDerivativeGroupQuadsKHR";+    case SpvCapabilityFragmentDensityEXT:+      return "FragmentDensityEXT";+    case SpvCapabilityGroupNonUniformPartitionedEXT:+      return "GroupNonUniformPartitionedEXT";+    case SpvCapabilityShaderNonUniform:+      return "ShaderNonUniform";+    case SpvCapabilityRuntimeDescriptorArray:+      return "RuntimeDescriptorArray";+    case SpvCapabilityInputAttachmentArrayDynamicIndexing:+      return "InputAttachmentArrayDynamicIndexing";+    case SpvCapabilityUniformTexelBufferArrayDynamicIndexing:+      return "UniformTexelBufferArrayDynamicIndexing";+    case SpvCapabilityStorageTexelBufferArrayDynamicIndexing:+      return "StorageTexelBufferArrayDynamicIndexing";+    case SpvCapabilityUniformBufferArrayNonUniformIndexing:+      return "UniformBufferArrayNonUniformIndexing";+    case SpvCapabilitySampledImageArrayNonUniformIndexing:+      return "SampledImageArrayNonUniformIndexing";+    case SpvCapabilityStorageBufferArrayNonUniformIndexing:+      return "StorageBufferArrayNonUniformIndexing";+    case SpvCapabilityStorageImageArrayNonUniformIndexing:+      return "StorageImageArrayNonUniformIndexing";+    case SpvCapabilityInputAttachmentArrayNonUniformIndexing:+      return "InputAttachmentArrayNonUniformIndexing";+    case SpvCapabilityUniformTexelBufferArrayNonUniformIndexing:+      return "UniformTexelBufferArrayNonUniformIndexing";+    case SpvCapabilityStorageTexelBufferArrayNonUniformIndexing:+      return "StorageTexelBufferArrayNonUniformIndexing";+    case SpvCapabilityRayTracingPositionFetchKHR:+      return "RayTracingPositionFetchKHR";+    case SpvCapabilityRayTracingNV:+      return "RayTracingNV";+    case SpvCapabilityRayTracingMotionBlurNV:+      return "RayTracingMotionBlurNV";+    case SpvCapabilityVulkanMemoryModel:+      return "VulkanMemoryModel";+    case SpvCapabilityVulkanMemoryModelDeviceScope:+      return "VulkanMemoryModelDeviceScope";+    case SpvCapabilityPhysicalStorageBufferAddresses:+      return "PhysicalStorageBufferAddresses";+    case SpvCapabilityComputeDerivativeGroupLinearKHR:+      return "ComputeDerivativeGroupLinearKHR";+    case SpvCapabilityRayTracingProvisionalKHR:+      return "RayTracingProvisionalKHR";+    case SpvCapabilityCooperativeMatrixNV:+      return "CooperativeMatrixNV";+    case SpvCapabilityFragmentShaderSampleInterlockEXT:+      return "FragmentShaderSampleInterlockEXT";+    case SpvCapabilityFragmentShaderShadingRateInterlockEXT:+      return "FragmentShaderShadingRateInterlockEXT";+    case SpvCapabilityShaderSMBuiltinsNV:+      return "ShaderSMBuiltinsNV";+    case SpvCapabilityFragmentShaderPixelInterlockEXT:+      return "FragmentShaderPixelInterlockEXT";+    case SpvCapabilityDemoteToHelperInvocation:+      return "DemoteToHelperInvocation";+    case SpvCapabilityDisplacementMicromapNV:+      return "DisplacementMicromapNV";+    case SpvCapabilityRayTracingOpacityMicromapEXT:+      return "RayTracingOpacityMicromapEXT";+    case SpvCapabilityShaderInvocationReorderNV:+      return "ShaderInvocationReorderNV";+    case SpvCapabilityShaderInvocationReorderEXT:+      return "ShaderInvocationReorderEXT";+    case SpvCapabilityBindlessTextureNV:+      return "BindlessTextureNV";+    case SpvCapabilityRayQueryPositionFetchKHR:+      return "RayQueryPositionFetchKHR";+    case SpvCapabilityCooperativeVectorNV:+      return "CooperativeVectorNV";+    case SpvCapabilityAtomicFloat16VectorNV:+      return "AtomicFloat16VectorNV";+    case SpvCapabilityRayTracingDisplacementMicromapNV:+      return "RayTracingDisplacementMicromapNV";+    case SpvCapabilityRawAccessChainsNV:+      return "RawAccessChainsNV";+    case SpvCapabilityRayTracingSpheresGeometryNV:+      return "RayTracingSpheresGeometryNV";+    case SpvCapabilityRayTracingLinearSweptSpheresGeometryNV:+      return "RayTracingLinearSweptSpheresGeometryNV";+    case SpvCapabilityPushConstantBanksNV:+      return "PushConstantBanksNV";+    case SpvCapabilityLongVectorEXT:+      return "LongVectorEXT";+    case SpvCapabilityShader64BitIndexingEXT:+      return "Shader64BitIndexingEXT";+    case SpvCapabilityCooperativeMatrixReductionsNV:+      return "CooperativeMatrixReductionsNV";+    case SpvCapabilityCooperativeMatrixConversionsNV:+      return "CooperativeMatrixConversionsNV";+    case SpvCapabilityCooperativeMatrixPerElementOperationsNV:+      return "CooperativeMatrixPerElementOperationsNV";+    case SpvCapabilityCooperativeMatrixTensorAddressingNV:+      return "CooperativeMatrixTensorAddressingNV";+    case SpvCapabilityCooperativeMatrixBlockLoadsNV:+      return "CooperativeMatrixBlockLoadsNV";+    case SpvCapabilityCooperativeVectorTrainingNV:+      return "CooperativeVectorTrainingNV";+    case SpvCapabilityRayTracingClusterAccelerationStructureNV:+      return "RayTracingClusterAccelerationStructureNV";+    case SpvCapabilityTensorAddressingNV:+      return "TensorAddressingNV";+    case SpvCapabilitySubgroupShuffleINTEL:+      return "SubgroupShuffleINTEL";+    case SpvCapabilitySubgroupBufferBlockIOINTEL:+      return "SubgroupBufferBlockIOINTEL";+    case SpvCapabilitySubgroupImageBlockIOINTEL:+      return "SubgroupImageBlockIOINTEL";+    case SpvCapabilitySubgroupImageMediaBlockIOINTEL:+      return "SubgroupImageMediaBlockIOINTEL";+    case SpvCapabilityRoundToInfinityINTEL:+      return "RoundToInfinityINTEL";+    case SpvCapabilityFloatingPointModeINTEL:+      return "FloatingPointModeINTEL";+    case SpvCapabilityIntegerFunctions2INTEL:+      return "IntegerFunctions2INTEL";+    case SpvCapabilityFunctionPointersINTEL:+      return "FunctionPointersINTEL";+    case SpvCapabilityIndirectReferencesINTEL:+      return "IndirectReferencesINTEL";+    case SpvCapabilityAsmINTEL:+      return "AsmINTEL";+    case SpvCapabilityAtomicFloat32MinMaxEXT:+      return "AtomicFloat32MinMaxEXT";+    case SpvCapabilityAtomicFloat64MinMaxEXT:+      return "AtomicFloat64MinMaxEXT";+    case SpvCapabilityAtomicFloat16MinMaxEXT:+      return "AtomicFloat16MinMaxEXT";+    case SpvCapabilityVectorComputeINTEL:+      return "VectorComputeINTEL";+    case SpvCapabilityVectorAnyINTEL:+      return "VectorAnyINTEL";+    case SpvCapabilityExpectAssumeKHR:+      return "ExpectAssumeKHR";+    case SpvCapabilitySubgroupAvcMotionEstimationINTEL:+      return "SubgroupAvcMotionEstimationINTEL";+    case SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL:+      return "SubgroupAvcMotionEstimationIntraINTEL";+    case SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL:+      return "SubgroupAvcMotionEstimationChromaINTEL";+    case SpvCapabilityVariableLengthArrayINTEL:+      return "VariableLengthArrayINTEL";+    case SpvCapabilityFunctionFloatControlINTEL:+      return "FunctionFloatControlINTEL";+    case SpvCapabilityFPGAMemoryAttributesALTERA:+      return "FPGAMemoryAttributesALTERA";+    case SpvCapabilityFPFastMathModeINTEL:+      return "FPFastMathModeINTEL";+    case SpvCapabilityArbitraryPrecisionIntegersALTERA:+      return "ArbitraryPrecisionIntegersALTERA";+    case SpvCapabilityArbitraryPrecisionFloatingPointALTERA:+      return "ArbitraryPrecisionFloatingPointALTERA";+    case SpvCapabilityUnstructuredLoopControlsINTEL:+      return "UnstructuredLoopControlsINTEL";+    case SpvCapabilityFPGALoopControlsALTERA:+      return "FPGALoopControlsALTERA";+    case SpvCapabilityKernelAttributesINTEL:+      return "KernelAttributesINTEL";+    case SpvCapabilityFPGAKernelAttributesINTEL:+      return "FPGAKernelAttributesINTEL";+    case SpvCapabilityFPGAMemoryAccessesALTERA:+      return "FPGAMemoryAccessesALTERA";+    case SpvCapabilityFPGAClusterAttributesALTERA:+      return "FPGAClusterAttributesALTERA";+    case SpvCapabilityLoopFuseALTERA:+      return "LoopFuseALTERA";+    case SpvCapabilityFPGADSPControlALTERA:+      return "FPGADSPControlALTERA";+    case SpvCapabilityMemoryAccessAliasingINTEL:+      return "MemoryAccessAliasingINTEL";+    case SpvCapabilityFPGAInvocationPipeliningAttributesALTERA:+      return "FPGAInvocationPipeliningAttributesALTERA";+    case SpvCapabilityFPGABufferLocationALTERA:+      return "FPGABufferLocationALTERA";+    case SpvCapabilityArbitraryPrecisionFixedPointALTERA:+      return "ArbitraryPrecisionFixedPointALTERA";+    case SpvCapabilityUSMStorageClassesALTERA:+      return "USMStorageClassesALTERA";+    case SpvCapabilityRuntimeAlignedAttributeALTERA:+      return "RuntimeAlignedAttributeALTERA";+    case SpvCapabilityIOPipesALTERA:+      return "IOPipesALTERA";+    case SpvCapabilityBlockingPipesALTERA:+      return "BlockingPipesALTERA";+    case SpvCapabilityFPGARegALTERA:+      return "FPGARegALTERA";+    case SpvCapabilityDotProductInputAll:+      return "DotProductInputAll";+    case SpvCapabilityDotProductInput4x8Bit:+      return "DotProductInput4x8Bit";+    case SpvCapabilityDotProductInput4x8BitPacked:+      return "DotProductInput4x8BitPacked";+    case SpvCapabilityDotProduct:+      return "DotProduct";+    case SpvCapabilityRayCullMaskKHR:+      return "RayCullMaskKHR";+    case SpvCapabilityCooperativeMatrixKHR:+      return "CooperativeMatrixKHR";+    case SpvCapabilityReplicatedCompositesEXT:+      return "ReplicatedCompositesEXT";+    case SpvCapabilityBitInstructions:+      return "BitInstructions";+    case SpvCapabilityGroupNonUniformRotateKHR:+      return "GroupNonUniformRotateKHR";+    case SpvCapabilityFloatControls2:+      return "FloatControls2";+    case SpvCapabilityFMAKHR:+      return "FMAKHR";+    case SpvCapabilityAtomicFloat32AddEXT:+      return "AtomicFloat32AddEXT";+    case SpvCapabilityAtomicFloat64AddEXT:+      return "AtomicFloat64AddEXT";+    case SpvCapabilityLongCompositesINTEL:+      return "LongCompositesINTEL";+    case SpvCapabilityOptNoneEXT:+      return "OptNoneEXT";+    case SpvCapabilityAtomicFloat16AddEXT:+      return "AtomicFloat16AddEXT";+    case SpvCapabilityDebugInfoModuleINTEL:+      return "DebugInfoModuleINTEL";+    case SpvCapabilityBFloat16ConversionINTEL:+      return "BFloat16ConversionINTEL";+    case SpvCapabilitySplitBarrierINTEL:+      return "SplitBarrierINTEL";+    case SpvCapabilityArithmeticFenceEXT:+      return "ArithmeticFenceEXT";+    case SpvCapabilityFPGAClusterAttributesV2ALTERA:+      return "FPGAClusterAttributesV2ALTERA";+    case SpvCapabilityFPGAKernelAttributesv2INTEL:+      return "FPGAKernelAttributesv2INTEL";+    case SpvCapabilityTaskSequenceALTERA:+      return "TaskSequenceALTERA";+    case SpvCapabilityFPMaxErrorINTEL:+      return "FPMaxErrorINTEL";+    case SpvCapabilityFPGALatencyControlALTERA:+      return "FPGALatencyControlALTERA";+    case SpvCapabilityFPGAArgumentInterfacesALTERA:+      return "FPGAArgumentInterfacesALTERA";+    case SpvCapabilityGlobalVariableHostAccessINTEL:+      return "GlobalVariableHostAccessINTEL";+    case SpvCapabilityGlobalVariableFPGADecorationsALTERA:+      return "GlobalVariableFPGADecorationsALTERA";+    case SpvCapabilitySubgroupBufferPrefetchINTEL:+      return "SubgroupBufferPrefetchINTEL";+    case SpvCapabilitySubgroup2DBlockIOINTEL:+      return "Subgroup2DBlockIOINTEL";+    case SpvCapabilitySubgroup2DBlockTransformINTEL:+      return "Subgroup2DBlockTransformINTEL";+    case SpvCapabilitySubgroup2DBlockTransposeINTEL:+      return "Subgroup2DBlockTransposeINTEL";+    case SpvCapabilitySubgroupMatrixMultiplyAccumulateINTEL:+      return "SubgroupMatrixMultiplyAccumulateINTEL";+    case SpvCapabilityTernaryBitwiseFunctionINTEL:+      return "TernaryBitwiseFunctionINTEL";+    case SpvCapabilityUntypedVariableLengthArrayINTEL:+      return "UntypedVariableLengthArrayINTEL";+    case SpvCapabilitySpecConditionalINTEL:+      return "SpecConditionalINTEL";+    case SpvCapabilityFunctionVariantsINTEL:+      return "FunctionVariantsINTEL";+    case SpvCapabilityGroupUniformArithmeticKHR:+      return "GroupUniformArithmeticKHR";+    case SpvCapabilityTensorFloat32RoundingINTEL:+      return "TensorFloat32RoundingINTEL";+    case SpvCapabilityMaskedGatherScatterINTEL:+      return "MaskedGatherScatterINTEL";+    case SpvCapabilityCacheControlsINTEL:+      return "CacheControlsINTEL";+    case SpvCapabilityRegisterLimitsINTEL:+      return "RegisterLimitsINTEL";+    case SpvCapabilityBindlessImagesINTEL:+      return "BindlessImagesINTEL";+    case SpvCapabilityDotProductFloat16AccFloat32VALVE:+      return "DotProductFloat16AccFloat32VALVE";+    case SpvCapabilityDotProductFloat16AccFloat16VALVE:+      return "DotProductFloat16AccFloat16VALVE";+    case SpvCapabilityDotProductBFloat16AccVALVE:+      return "DotProductBFloat16AccVALVE";+    case SpvCapabilityDotProductFloat8AccFloat32VALVE:+      return "DotProductFloat8AccFloat32VALVE";+    default:+      return "Unknown";+  }+}++inline const char* SpvRayQueryIntersectionToString(SpvRayQueryIntersection value) {+  switch (value) {+    case SpvRayQueryIntersectionRayQueryCandidateIntersectionKHR:+      return "RayQueryCandidateIntersectionKHR";+    case SpvRayQueryIntersectionRayQueryCommittedIntersectionKHR:+      return "RayQueryCommittedIntersectionKHR";+    default:+      return "Unknown";+  }+}++inline const char* SpvRayQueryCommittedIntersectionTypeToString(SpvRayQueryCommittedIntersectionType value) {+  switch (value) {+    case SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR:+      return "RayQueryCommittedIntersectionNoneKHR";+    case SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR:+      return "RayQueryCommittedIntersectionTriangleKHR";+    case SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR:+      return "RayQueryCommittedIntersectionGeneratedKHR";+    default:+      return "Unknown";+  }+}++inline const char* SpvRayQueryCandidateIntersectionTypeToString(SpvRayQueryCandidateIntersectionType value) {+  switch (value) {+    case SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR:+      return "RayQueryCandidateIntersectionTriangleKHR";+    case SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR:+      return "RayQueryCandidateIntersectionAABBKHR";+    default:+      return "Unknown";+  }+}++inline const char* SpvFPDenormModeToString(SpvFPDenormMode value) {+  switch (value) {+    case SpvFPDenormModePreserve:+      return "Preserve";+    case SpvFPDenormModeFlushToZero:+      return "FlushToZero";+    default:+      return "Unknown";+  }+}++inline const char* SpvFPOperationModeToString(SpvFPOperationMode value) {+  switch (value) {+    case SpvFPOperationModeIEEE:+      return "IEEE";+    case SpvFPOperationModeALT:+      return "ALT";+    default:+      return "Unknown";+  }+}++inline const char* SpvQuantizationModesToString(SpvQuantizationModes value) {+  switch (value) {+    case SpvQuantizationModesTRN:+      return "TRN";+    case SpvQuantizationModesTRN_ZERO:+      return "TRN_ZERO";+    case SpvQuantizationModesRND:+      return "RND";+    case SpvQuantizationModesRND_ZERO:+      return "RND_ZERO";+    case SpvQuantizationModesRND_INF:+      return "RND_INF";+    case SpvQuantizationModesRND_MIN_INF:+      return "RND_MIN_INF";+    case SpvQuantizationModesRND_CONV:+      return "RND_CONV";+    case SpvQuantizationModesRND_CONV_ODD:+      return "RND_CONV_ODD";+    default:+      return "Unknown";+  }+}++inline const char* SpvOverflowModesToString(SpvOverflowModes value) {+  switch (value) {+    case SpvOverflowModesWRAP:+      return "WRAP";+    case SpvOverflowModesSAT:+      return "SAT";+    case SpvOverflowModesSAT_ZERO:+      return "SAT_ZERO";+    case SpvOverflowModesSAT_SYM:+      return "SAT_SYM";+    default:+      return "Unknown";+  }+}++inline const char* SpvPackedVectorFormatToString(SpvPackedVectorFormat value) {+  switch (value) {+    case SpvPackedVectorFormatPackedVectorFormat4x8Bit:+      return "PackedVectorFormat4x8Bit";+    default:+      return "Unknown";+  }+}++inline const char* SpvCooperativeMatrixLayoutToString(SpvCooperativeMatrixLayout value) {+  switch (value) {+    case SpvCooperativeMatrixLayoutRowMajorKHR:+      return "RowMajorKHR";+    case SpvCooperativeMatrixLayoutColumnMajorKHR:+      return "ColumnMajorKHR";+    case SpvCooperativeMatrixLayoutRowBlockedInterleavedARM:+      return "RowBlockedInterleavedARM";+    case SpvCooperativeMatrixLayoutColumnBlockedInterleavedARM:+      return "ColumnBlockedInterleavedARM";+    default:+      return "Unknown";+  }+}++inline const char* SpvCooperativeMatrixUseToString(SpvCooperativeMatrixUse value) {+  switch (value) {+    case SpvCooperativeMatrixUseMatrixAKHR:+      return "MatrixAKHR";+    case SpvCooperativeMatrixUseMatrixBKHR:+      return "MatrixBKHR";+    case SpvCooperativeMatrixUseMatrixAccumulatorKHR:+      return "MatrixAccumulatorKHR";+    default:+      return "Unknown";+  }+}++inline const char* SpvTensorClampModeToString(SpvTensorClampMode value) {+  switch (value) {+    case SpvTensorClampModeUndefined:+      return "Undefined";+    case SpvTensorClampModeConstant:+      return "Constant";+    case SpvTensorClampModeClampToEdge:+      return "ClampToEdge";+    case SpvTensorClampModeRepeat:+      return "Repeat";+    case SpvTensorClampModeRepeatMirrored:+      return "RepeatMirrored";+    default:+      return "Unknown";+  }+}++inline const char* SpvInitializationModeQualifierToString(SpvInitializationModeQualifier value) {+  switch (value) {+    case SpvInitializationModeQualifierInitOnDeviceReprogramALTERA:+      return "InitOnDeviceReprogramALTERA";+    case SpvInitializationModeQualifierInitOnDeviceResetALTERA:+      return "InitOnDeviceResetALTERA";+    default:+      return "Unknown";+  }+}++inline const char* SpvHostAccessQualifierToString(SpvHostAccessQualifier value) {+  switch (value) {+    case SpvHostAccessQualifierNoneINTEL:+      return "NoneINTEL";+    case SpvHostAccessQualifierReadINTEL:+      return "ReadINTEL";+    case SpvHostAccessQualifierWriteINTEL:+      return "WriteINTEL";+    case SpvHostAccessQualifierReadWriteINTEL:+      return "ReadWriteINTEL";+    default:+      return "Unknown";+  }+}++inline const char* SpvLoadCacheControlToString(SpvLoadCacheControl value) {+  switch (value) {+    case SpvLoadCacheControlUncachedINTEL:+      return "UncachedINTEL";+    case SpvLoadCacheControlCachedINTEL:+      return "CachedINTEL";+    case SpvLoadCacheControlStreamingINTEL:+      return "StreamingINTEL";+    case SpvLoadCacheControlInvalidateAfterReadINTEL:+      return "InvalidateAfterReadINTEL";+    case SpvLoadCacheControlConstCachedINTEL:+      return "ConstCachedINTEL";+    default:+      return "Unknown";+  }+}++inline const char* SpvStoreCacheControlToString(SpvStoreCacheControl value) {+  switch (value) {+    case SpvStoreCacheControlUncachedINTEL:+      return "UncachedINTEL";+    case SpvStoreCacheControlWriteThroughINTEL:+      return "WriteThroughINTEL";+    case SpvStoreCacheControlWriteBackINTEL:+      return "WriteBackINTEL";+    case SpvStoreCacheControlStreamingINTEL:+      return "StreamingINTEL";+    default:+      return "Unknown";+  }+}++inline const char* SpvNamedMaximumNumberOfRegistersToString(SpvNamedMaximumNumberOfRegisters value) {+  switch (value) {+    case SpvNamedMaximumNumberOfRegistersAutoINTEL:+      return "AutoINTEL";+    default:+      return "Unknown";+  }+}++inline const char* SpvFPEncodingToString(SpvFPEncoding value) {+  switch (value) {+    case SpvFPEncodingBFloat16KHR:+      return "BFloat16KHR";+    case SpvFPEncodingFloat8E4M3EXT:+      return "Float8E4M3EXT";+    case SpvFPEncodingFloat8E5M2EXT:+      return "Float8E5M2EXT";+    default:+      return "Unknown";+  }+}++inline const char* SpvCooperativeVectorMatrixLayoutToString(SpvCooperativeVectorMatrixLayout value) {+  switch (value) {+    case SpvCooperativeVectorMatrixLayoutRowMajorNV:+      return "RowMajorNV";+    case SpvCooperativeVectorMatrixLayoutColumnMajorNV:+      return "ColumnMajorNV";+    case SpvCooperativeVectorMatrixLayoutInferencingOptimalNV:+      return "InferencingOptimalNV";+    case SpvCooperativeVectorMatrixLayoutTrainingOptimalNV:+      return "TrainingOptimalNV";+    default:+      return "Unknown";+  }+}++inline const char* SpvComponentTypeToString(SpvComponentType value) {+  switch (value) {+    case SpvComponentTypeFloat16NV:+      return "Float16NV";+    case SpvComponentTypeFloat32NV:+      return "Float32NV";+    case SpvComponentTypeFloat64NV:+      return "Float64NV";+    case SpvComponentTypeSignedInt8NV:+      return "SignedInt8NV";+    case SpvComponentTypeSignedInt16NV:+      return "SignedInt16NV";+    case SpvComponentTypeSignedInt32NV:+      return "SignedInt32NV";+    case SpvComponentTypeSignedInt64NV:+      return "SignedInt64NV";+    case SpvComponentTypeUnsignedInt8NV:+      return "UnsignedInt8NV";+    case SpvComponentTypeUnsignedInt16NV:+      return "UnsignedInt16NV";+    case SpvComponentTypeUnsignedInt32NV:+      return "UnsignedInt32NV";+    case SpvComponentTypeUnsignedInt64NV:+      return "UnsignedInt64NV";+    case SpvComponentTypeSignedInt8PackedNV:+      return "SignedInt8PackedNV";+    case SpvComponentTypeUnsignedInt8PackedNV:+      return "UnsignedInt8PackedNV";+    case SpvComponentTypeFloatE4M3NV:+      return "FloatE4M3NV";+    case SpvComponentTypeFloatE5M2NV:+      return "FloatE5M2NV";+    default:+      return "Unknown";+  }+}++inline const char* SpvOpToString(SpvOp value) {+  switch (value) {+    case SpvOpNop:+      return "OpNop";+    case SpvOpUndef:+      return "OpUndef";+    case SpvOpSourceContinued:+      return "OpSourceContinued";+    case SpvOpSource:+      return "OpSource";+    case SpvOpSourceExtension:+      return "OpSourceExtension";+    case SpvOpName:+      return "OpName";+    case SpvOpMemberName:+      return "OpMemberName";+    case SpvOpString:+      return "OpString";+    case SpvOpLine:+      return "OpLine";+    case SpvOpExtension:+      return "OpExtension";+    case SpvOpExtInstImport:+      return "OpExtInstImport";+    case SpvOpExtInst:+      return "OpExtInst";+    case SpvOpMemoryModel:+      return "OpMemoryModel";+    case SpvOpEntryPoint:+      return "OpEntryPoint";+    case SpvOpExecutionMode:+      return "OpExecutionMode";+    case SpvOpCapability:+      return "OpCapability";+    case SpvOpTypeVoid:+      return "OpTypeVoid";+    case SpvOpTypeBool:+      return "OpTypeBool";+    case SpvOpTypeInt:+      return "OpTypeInt";+    case SpvOpTypeFloat:+      return "OpTypeFloat";+    case SpvOpTypeVector:+      return "OpTypeVector";+    case SpvOpTypeMatrix:+      return "OpTypeMatrix";+    case SpvOpTypeImage:+      return "OpTypeImage";+    case SpvOpTypeSampler:+      return "OpTypeSampler";+    case SpvOpTypeSampledImage:+      return "OpTypeSampledImage";+    case SpvOpTypeArray:+      return "OpTypeArray";+    case SpvOpTypeRuntimeArray:+      return "OpTypeRuntimeArray";+    case SpvOpTypeStruct:+      return "OpTypeStruct";+    case SpvOpTypeOpaque:+      return "OpTypeOpaque";+    case SpvOpTypePointer:+      return "OpTypePointer";+    case SpvOpTypeFunction:+      return "OpTypeFunction";+    case SpvOpTypeEvent:+      return "OpTypeEvent";+    case SpvOpTypeDeviceEvent:+      return "OpTypeDeviceEvent";+    case SpvOpTypeReserveId:+      return "OpTypeReserveId";+    case SpvOpTypeQueue:+      return "OpTypeQueue";+    case SpvOpTypePipe:+      return "OpTypePipe";+    case SpvOpTypeForwardPointer:+      return "OpTypeForwardPointer";+    case SpvOpConstantTrue:+      return "OpConstantTrue";+    case SpvOpConstantFalse:+      return "OpConstantFalse";+    case SpvOpConstant:+      return "OpConstant";+    case SpvOpConstantComposite:+      return "OpConstantComposite";+    case SpvOpConstantSampler:+      return "OpConstantSampler";+    case SpvOpConstantNull:+      return "OpConstantNull";+    case SpvOpSpecConstantTrue:+      return "OpSpecConstantTrue";+    case SpvOpSpecConstantFalse:+      return "OpSpecConstantFalse";+    case SpvOpSpecConstant:+      return "OpSpecConstant";+    case SpvOpSpecConstantComposite:+      return "OpSpecConstantComposite";+    case SpvOpSpecConstantOp:+      return "OpSpecConstantOp";+    case SpvOpFunction:+      return "OpFunction";+    case SpvOpFunctionParameter:+      return "OpFunctionParameter";+    case SpvOpFunctionEnd:+      return "OpFunctionEnd";+    case SpvOpFunctionCall:+      return "OpFunctionCall";+    case SpvOpVariable:+      return "OpVariable";+    case SpvOpImageTexelPointer:+      return "OpImageTexelPointer";+    case SpvOpLoad:+      return "OpLoad";+    case SpvOpStore:+      return "OpStore";+    case SpvOpCopyMemory:+      return "OpCopyMemory";+    case SpvOpCopyMemorySized:+      return "OpCopyMemorySized";+    case SpvOpAccessChain:+      return "OpAccessChain";+    case SpvOpInBoundsAccessChain:+      return "OpInBoundsAccessChain";+    case SpvOpPtrAccessChain:+      return "OpPtrAccessChain";+    case SpvOpArrayLength:+      return "OpArrayLength";+    case SpvOpGenericPtrMemSemantics:+      return "OpGenericPtrMemSemantics";+    case SpvOpInBoundsPtrAccessChain:+      return "OpInBoundsPtrAccessChain";+    case SpvOpDecorate:+      return "OpDecorate";+    case SpvOpMemberDecorate:+      return "OpMemberDecorate";+    case SpvOpDecorationGroup:+      return "OpDecorationGroup";+    case SpvOpGroupDecorate:+      return "OpGroupDecorate";+    case SpvOpGroupMemberDecorate:+      return "OpGroupMemberDecorate";+    case SpvOpVectorExtractDynamic:+      return "OpVectorExtractDynamic";+    case SpvOpVectorInsertDynamic:+      return "OpVectorInsertDynamic";+    case SpvOpVectorShuffle:+      return "OpVectorShuffle";+    case SpvOpCompositeConstruct:+      return "OpCompositeConstruct";+    case SpvOpCompositeExtract:+      return "OpCompositeExtract";+    case SpvOpCompositeInsert:+      return "OpCompositeInsert";+    case SpvOpCopyObject:+      return "OpCopyObject";+    case SpvOpTranspose:+      return "OpTranspose";+    case SpvOpSampledImage:+      return "OpSampledImage";+    case SpvOpImageSampleImplicitLod:+      return "OpImageSampleImplicitLod";+    case SpvOpImageSampleExplicitLod:+      return "OpImageSampleExplicitLod";+    case SpvOpImageSampleDrefImplicitLod:+      return "OpImageSampleDrefImplicitLod";+    case SpvOpImageSampleDrefExplicitLod:+      return "OpImageSampleDrefExplicitLod";+    case SpvOpImageSampleProjImplicitLod:+      return "OpImageSampleProjImplicitLod";+    case SpvOpImageSampleProjExplicitLod:+      return "OpImageSampleProjExplicitLod";+    case SpvOpImageSampleProjDrefImplicitLod:+      return "OpImageSampleProjDrefImplicitLod";+    case SpvOpImageSampleProjDrefExplicitLod:+      return "OpImageSampleProjDrefExplicitLod";+    case SpvOpImageFetch:+      return "OpImageFetch";+    case SpvOpImageGather:+      return "OpImageGather";+    case SpvOpImageDrefGather:+      return "OpImageDrefGather";+    case SpvOpImageRead:+      return "OpImageRead";+    case SpvOpImageWrite:+      return "OpImageWrite";+    case SpvOpImage:+      return "OpImage";+    case SpvOpImageQueryFormat:+      return "OpImageQueryFormat";+    case SpvOpImageQueryOrder:+      return "OpImageQueryOrder";+    case SpvOpImageQuerySizeLod:+      return "OpImageQuerySizeLod";+    case SpvOpImageQuerySize:+      return "OpImageQuerySize";+    case SpvOpImageQueryLod:+      return "OpImageQueryLod";+    case SpvOpImageQueryLevels:+      return "OpImageQueryLevels";+    case SpvOpImageQuerySamples:+      return "OpImageQuerySamples";+    case SpvOpConvertFToU:+      return "OpConvertFToU";+    case SpvOpConvertFToS:+      return "OpConvertFToS";+    case SpvOpConvertSToF:+      return "OpConvertSToF";+    case SpvOpConvertUToF:+      return "OpConvertUToF";+    case SpvOpUConvert:+      return "OpUConvert";+    case SpvOpSConvert:+      return "OpSConvert";+    case SpvOpFConvert:+      return "OpFConvert";+    case SpvOpQuantizeToF16:+      return "OpQuantizeToF16";+    case SpvOpConvertPtrToU:+      return "OpConvertPtrToU";+    case SpvOpSatConvertSToU:+      return "OpSatConvertSToU";+    case SpvOpSatConvertUToS:+      return "OpSatConvertUToS";+    case SpvOpConvertUToPtr:+      return "OpConvertUToPtr";+    case SpvOpPtrCastToGeneric:+      return "OpPtrCastToGeneric";+    case SpvOpGenericCastToPtr:+      return "OpGenericCastToPtr";+    case SpvOpGenericCastToPtrExplicit:+      return "OpGenericCastToPtrExplicit";+    case SpvOpBitcast:+      return "OpBitcast";+    case SpvOpSNegate:+      return "OpSNegate";+    case SpvOpFNegate:+      return "OpFNegate";+    case SpvOpIAdd:+      return "OpIAdd";+    case SpvOpFAdd:+      return "OpFAdd";+    case SpvOpISub:+      return "OpISub";+    case SpvOpFSub:+      return "OpFSub";+    case SpvOpIMul:+      return "OpIMul";+    case SpvOpFMul:+      return "OpFMul";+    case SpvOpUDiv:+      return "OpUDiv";+    case SpvOpSDiv:+      return "OpSDiv";+    case SpvOpFDiv:+      return "OpFDiv";+    case SpvOpUMod:+      return "OpUMod";+    case SpvOpSRem:+      return "OpSRem";+    case SpvOpSMod:+      return "OpSMod";+    case SpvOpFRem:+      return "OpFRem";+    case SpvOpFMod:+      return "OpFMod";+    case SpvOpVectorTimesScalar:+      return "OpVectorTimesScalar";+    case SpvOpMatrixTimesScalar:+      return "OpMatrixTimesScalar";+    case SpvOpVectorTimesMatrix:+      return "OpVectorTimesMatrix";+    case SpvOpMatrixTimesVector:+      return "OpMatrixTimesVector";+    case SpvOpMatrixTimesMatrix:+      return "OpMatrixTimesMatrix";+    case SpvOpOuterProduct:+      return "OpOuterProduct";+    case SpvOpDot:+      return "OpDot";+    case SpvOpIAddCarry:+      return "OpIAddCarry";+    case SpvOpISubBorrow:+      return "OpISubBorrow";+    case SpvOpUMulExtended:+      return "OpUMulExtended";+    case SpvOpSMulExtended:+      return "OpSMulExtended";+    case SpvOpAny:+      return "OpAny";+    case SpvOpAll:+      return "OpAll";+    case SpvOpIsNan:+      return "OpIsNan";+    case SpvOpIsInf:+      return "OpIsInf";+    case SpvOpIsFinite:+      return "OpIsFinite";+    case SpvOpIsNormal:+      return "OpIsNormal";+    case SpvOpSignBitSet:+      return "OpSignBitSet";+    case SpvOpLessOrGreater:+      return "OpLessOrGreater";+    case SpvOpOrdered:+      return "OpOrdered";+    case SpvOpUnordered:+      return "OpUnordered";+    case SpvOpLogicalEqual:+      return "OpLogicalEqual";+    case SpvOpLogicalNotEqual:+      return "OpLogicalNotEqual";+    case SpvOpLogicalOr:+      return "OpLogicalOr";+    case SpvOpLogicalAnd:+      return "OpLogicalAnd";+    case SpvOpLogicalNot:+      return "OpLogicalNot";+    case SpvOpSelect:+      return "OpSelect";+    case SpvOpIEqual:+      return "OpIEqual";+    case SpvOpINotEqual:+      return "OpINotEqual";+    case SpvOpUGreaterThan:+      return "OpUGreaterThan";+    case SpvOpSGreaterThan:+      return "OpSGreaterThan";+    case SpvOpUGreaterThanEqual:+      return "OpUGreaterThanEqual";+    case SpvOpSGreaterThanEqual:+      return "OpSGreaterThanEqual";+    case SpvOpULessThan:+      return "OpULessThan";+    case SpvOpSLessThan:+      return "OpSLessThan";+    case SpvOpULessThanEqual:+      return "OpULessThanEqual";+    case SpvOpSLessThanEqual:+      return "OpSLessThanEqual";+    case SpvOpFOrdEqual:+      return "OpFOrdEqual";+    case SpvOpFUnordEqual:+      return "OpFUnordEqual";+    case SpvOpFOrdNotEqual:+      return "OpFOrdNotEqual";+    case SpvOpFUnordNotEqual:+      return "OpFUnordNotEqual";+    case SpvOpFOrdLessThan:+      return "OpFOrdLessThan";+    case SpvOpFUnordLessThan:+      return "OpFUnordLessThan";+    case SpvOpFOrdGreaterThan:+      return "OpFOrdGreaterThan";+    case SpvOpFUnordGreaterThan:+      return "OpFUnordGreaterThan";+    case SpvOpFOrdLessThanEqual:+      return "OpFOrdLessThanEqual";+    case SpvOpFUnordLessThanEqual:+      return "OpFUnordLessThanEqual";+    case SpvOpFOrdGreaterThanEqual:+      return "OpFOrdGreaterThanEqual";+    case SpvOpFUnordGreaterThanEqual:+      return "OpFUnordGreaterThanEqual";+    case SpvOpShiftRightLogical:+      return "OpShiftRightLogical";+    case SpvOpShiftRightArithmetic:+      return "OpShiftRightArithmetic";+    case SpvOpShiftLeftLogical:+      return "OpShiftLeftLogical";+    case SpvOpBitwiseOr:+      return "OpBitwiseOr";+    case SpvOpBitwiseXor:+      return "OpBitwiseXor";+    case SpvOpBitwiseAnd:+      return "OpBitwiseAnd";+    case SpvOpNot:+      return "OpNot";+    case SpvOpBitFieldInsert:+      return "OpBitFieldInsert";+    case SpvOpBitFieldSExtract:+      return "OpBitFieldSExtract";+    case SpvOpBitFieldUExtract:+      return "OpBitFieldUExtract";+    case SpvOpBitReverse:+      return "OpBitReverse";+    case SpvOpBitCount:+      return "OpBitCount";+    case SpvOpDPdx:+      return "OpDPdx";+    case SpvOpDPdy:+      return "OpDPdy";+    case SpvOpFwidth:+      return "OpFwidth";+    case SpvOpDPdxFine:+      return "OpDPdxFine";+    case SpvOpDPdyFine:+      return "OpDPdyFine";+    case SpvOpFwidthFine:+      return "OpFwidthFine";+    case SpvOpDPdxCoarse:+      return "OpDPdxCoarse";+    case SpvOpDPdyCoarse:+      return "OpDPdyCoarse";+    case SpvOpFwidthCoarse:+      return "OpFwidthCoarse";+    case SpvOpEmitVertex:+      return "OpEmitVertex";+    case SpvOpEndPrimitive:+      return "OpEndPrimitive";+    case SpvOpEmitStreamVertex:+      return "OpEmitStreamVertex";+    case SpvOpEndStreamPrimitive:+      return "OpEndStreamPrimitive";+    case SpvOpControlBarrier:+      return "OpControlBarrier";+    case SpvOpMemoryBarrier:+      return "OpMemoryBarrier";+    case SpvOpAtomicLoad:+      return "OpAtomicLoad";+    case SpvOpAtomicStore:+      return "OpAtomicStore";+    case SpvOpAtomicExchange:+      return "OpAtomicExchange";+    case SpvOpAtomicCompareExchange:+      return "OpAtomicCompareExchange";+    case SpvOpAtomicCompareExchangeWeak:+      return "OpAtomicCompareExchangeWeak";+    case SpvOpAtomicIIncrement:+      return "OpAtomicIIncrement";+    case SpvOpAtomicIDecrement:+      return "OpAtomicIDecrement";+    case SpvOpAtomicIAdd:+      return "OpAtomicIAdd";+    case SpvOpAtomicISub:+      return "OpAtomicISub";+    case SpvOpAtomicSMin:+      return "OpAtomicSMin";+    case SpvOpAtomicUMin:+      return "OpAtomicUMin";+    case SpvOpAtomicSMax:+      return "OpAtomicSMax";+    case SpvOpAtomicUMax:+      return "OpAtomicUMax";+    case SpvOpAtomicAnd:+      return "OpAtomicAnd";+    case SpvOpAtomicOr:+      return "OpAtomicOr";+    case SpvOpAtomicXor:+      return "OpAtomicXor";+    case SpvOpPhi:+      return "OpPhi";+    case SpvOpLoopMerge:+      return "OpLoopMerge";+    case SpvOpSelectionMerge:+      return "OpSelectionMerge";+    case SpvOpLabel:+      return "OpLabel";+    case SpvOpBranch:+      return "OpBranch";+    case SpvOpBranchConditional:+      return "OpBranchConditional";+    case SpvOpSwitch:+      return "OpSwitch";+    case SpvOpKill:+      return "OpKill";+    case SpvOpReturn:+      return "OpReturn";+    case SpvOpReturnValue:+      return "OpReturnValue";+    case SpvOpUnreachable:+      return "OpUnreachable";+    case SpvOpLifetimeStart:+      return "OpLifetimeStart";+    case SpvOpLifetimeStop:+      return "OpLifetimeStop";+    case SpvOpGroupAsyncCopy:+      return "OpGroupAsyncCopy";+    case SpvOpGroupWaitEvents:+      return "OpGroupWaitEvents";+    case SpvOpGroupAll:+      return "OpGroupAll";+    case SpvOpGroupAny:+      return "OpGroupAny";+    case SpvOpGroupBroadcast:+      return "OpGroupBroadcast";+    case SpvOpGroupIAdd:+      return "OpGroupIAdd";+    case SpvOpGroupFAdd:+      return "OpGroupFAdd";+    case SpvOpGroupFMin:+      return "OpGroupFMin";+    case SpvOpGroupUMin:+      return "OpGroupUMin";+    case SpvOpGroupSMin:+      return "OpGroupSMin";+    case SpvOpGroupFMax:+      return "OpGroupFMax";+    case SpvOpGroupUMax:+      return "OpGroupUMax";+    case SpvOpGroupSMax:+      return "OpGroupSMax";+    case SpvOpReadPipe:+      return "OpReadPipe";+    case SpvOpWritePipe:+      return "OpWritePipe";+    case SpvOpReservedReadPipe:+      return "OpReservedReadPipe";+    case SpvOpReservedWritePipe:+      return "OpReservedWritePipe";+    case SpvOpReserveReadPipePackets:+      return "OpReserveReadPipePackets";+    case SpvOpReserveWritePipePackets:+      return "OpReserveWritePipePackets";+    case SpvOpCommitReadPipe:+      return "OpCommitReadPipe";+    case SpvOpCommitWritePipe:+      return "OpCommitWritePipe";+    case SpvOpIsValidReserveId:+      return "OpIsValidReserveId";+    case SpvOpGetNumPipePackets:+      return "OpGetNumPipePackets";+    case SpvOpGetMaxPipePackets:+      return "OpGetMaxPipePackets";+    case SpvOpGroupReserveReadPipePackets:+      return "OpGroupReserveReadPipePackets";+    case SpvOpGroupReserveWritePipePackets:+      return "OpGroupReserveWritePipePackets";+    case SpvOpGroupCommitReadPipe:+      return "OpGroupCommitReadPipe";+    case SpvOpGroupCommitWritePipe:+      return "OpGroupCommitWritePipe";+    case SpvOpEnqueueMarker:+      return "OpEnqueueMarker";+    case SpvOpEnqueueKernel:+      return "OpEnqueueKernel";+    case SpvOpGetKernelNDrangeSubGroupCount:+      return "OpGetKernelNDrangeSubGroupCount";+    case SpvOpGetKernelNDrangeMaxSubGroupSize:+      return "OpGetKernelNDrangeMaxSubGroupSize";+    case SpvOpGetKernelWorkGroupSize:+      return "OpGetKernelWorkGroupSize";+    case SpvOpGetKernelPreferredWorkGroupSizeMultiple:+      return "OpGetKernelPreferredWorkGroupSizeMultiple";+    case SpvOpRetainEvent:+      return "OpRetainEvent";+    case SpvOpReleaseEvent:+      return "OpReleaseEvent";+    case SpvOpCreateUserEvent:+      return "OpCreateUserEvent";+    case SpvOpIsValidEvent:+      return "OpIsValidEvent";+    case SpvOpSetUserEventStatus:+      return "OpSetUserEventStatus";+    case SpvOpCaptureEventProfilingInfo:+      return "OpCaptureEventProfilingInfo";+    case SpvOpGetDefaultQueue:+      return "OpGetDefaultQueue";+    case SpvOpBuildNDRange:+      return "OpBuildNDRange";+    case SpvOpImageSparseSampleImplicitLod:+      return "OpImageSparseSampleImplicitLod";+    case SpvOpImageSparseSampleExplicitLod:+      return "OpImageSparseSampleExplicitLod";+    case SpvOpImageSparseSampleDrefImplicitLod:+      return "OpImageSparseSampleDrefImplicitLod";+    case SpvOpImageSparseSampleDrefExplicitLod:+      return "OpImageSparseSampleDrefExplicitLod";+    case SpvOpImageSparseSampleProjImplicitLod:+      return "OpImageSparseSampleProjImplicitLod";+    case SpvOpImageSparseSampleProjExplicitLod:+      return "OpImageSparseSampleProjExplicitLod";+    case SpvOpImageSparseSampleProjDrefImplicitLod:+      return "OpImageSparseSampleProjDrefImplicitLod";+    case SpvOpImageSparseSampleProjDrefExplicitLod:+      return "OpImageSparseSampleProjDrefExplicitLod";+    case SpvOpImageSparseFetch:+      return "OpImageSparseFetch";+    case SpvOpImageSparseGather:+      return "OpImageSparseGather";+    case SpvOpImageSparseDrefGather:+      return "OpImageSparseDrefGather";+    case SpvOpImageSparseTexelsResident:+      return "OpImageSparseTexelsResident";+    case SpvOpNoLine:+      return "OpNoLine";+    case SpvOpAtomicFlagTestAndSet:+      return "OpAtomicFlagTestAndSet";+    case SpvOpAtomicFlagClear:+      return "OpAtomicFlagClear";+    case SpvOpImageSparseRead:+      return "OpImageSparseRead";+    case SpvOpSizeOf:+      return "OpSizeOf";+    case SpvOpTypePipeStorage:+      return "OpTypePipeStorage";+    case SpvOpConstantPipeStorage:+      return "OpConstantPipeStorage";+    case SpvOpCreatePipeFromPipeStorage:+      return "OpCreatePipeFromPipeStorage";+    case SpvOpGetKernelLocalSizeForSubgroupCount:+      return "OpGetKernelLocalSizeForSubgroupCount";+    case SpvOpGetKernelMaxNumSubgroups:+      return "OpGetKernelMaxNumSubgroups";+    case SpvOpTypeNamedBarrier:+      return "OpTypeNamedBarrier";+    case SpvOpNamedBarrierInitialize:+      return "OpNamedBarrierInitialize";+    case SpvOpMemoryNamedBarrier:+      return "OpMemoryNamedBarrier";+    case SpvOpModuleProcessed:+      return "OpModuleProcessed";+    case SpvOpExecutionModeId:+      return "OpExecutionModeId";+    case SpvOpDecorateId:+      return "OpDecorateId";+    case SpvOpGroupNonUniformElect:+      return "OpGroupNonUniformElect";+    case SpvOpGroupNonUniformAll:+      return "OpGroupNonUniformAll";+    case SpvOpGroupNonUniformAny:+      return "OpGroupNonUniformAny";+    case SpvOpGroupNonUniformAllEqual:+      return "OpGroupNonUniformAllEqual";+    case SpvOpGroupNonUniformBroadcast:+      return "OpGroupNonUniformBroadcast";+    case SpvOpGroupNonUniformBroadcastFirst:+      return "OpGroupNonUniformBroadcastFirst";+    case SpvOpGroupNonUniformBallot:+      return "OpGroupNonUniformBallot";+    case SpvOpGroupNonUniformInverseBallot:+      return "OpGroupNonUniformInverseBallot";+    case SpvOpGroupNonUniformBallotBitExtract:+      return "OpGroupNonUniformBallotBitExtract";+    case SpvOpGroupNonUniformBallotBitCount:+      return "OpGroupNonUniformBallotBitCount";+    case SpvOpGroupNonUniformBallotFindLSB:+      return "OpGroupNonUniformBallotFindLSB";+    case SpvOpGroupNonUniformBallotFindMSB:+      return "OpGroupNonUniformBallotFindMSB";+    case SpvOpGroupNonUniformShuffle:+      return "OpGroupNonUniformShuffle";+    case SpvOpGroupNonUniformShuffleXor:+      return "OpGroupNonUniformShuffleXor";+    case SpvOpGroupNonUniformShuffleUp:+      return "OpGroupNonUniformShuffleUp";+    case SpvOpGroupNonUniformShuffleDown:+      return "OpGroupNonUniformShuffleDown";+    case SpvOpGroupNonUniformIAdd:+      return "OpGroupNonUniformIAdd";+    case SpvOpGroupNonUniformFAdd:+      return "OpGroupNonUniformFAdd";+    case SpvOpGroupNonUniformIMul:+      return "OpGroupNonUniformIMul";+    case SpvOpGroupNonUniformFMul:+      return "OpGroupNonUniformFMul";+    case SpvOpGroupNonUniformSMin:+      return "OpGroupNonUniformSMin";+    case SpvOpGroupNonUniformUMin:+      return "OpGroupNonUniformUMin";+    case SpvOpGroupNonUniformFMin:+      return "OpGroupNonUniformFMin";+    case SpvOpGroupNonUniformSMax:+      return "OpGroupNonUniformSMax";+    case SpvOpGroupNonUniformUMax:+      return "OpGroupNonUniformUMax";+    case SpvOpGroupNonUniformFMax:+      return "OpGroupNonUniformFMax";+    case SpvOpGroupNonUniformBitwiseAnd:+      return "OpGroupNonUniformBitwiseAnd";+    case SpvOpGroupNonUniformBitwiseOr:+      return "OpGroupNonUniformBitwiseOr";+    case SpvOpGroupNonUniformBitwiseXor:+      return "OpGroupNonUniformBitwiseXor";+    case SpvOpGroupNonUniformLogicalAnd:+      return "OpGroupNonUniformLogicalAnd";+    case SpvOpGroupNonUniformLogicalOr:+      return "OpGroupNonUniformLogicalOr";+    case SpvOpGroupNonUniformLogicalXor:+      return "OpGroupNonUniformLogicalXor";+    case SpvOpGroupNonUniformQuadBroadcast:+      return "OpGroupNonUniformQuadBroadcast";+    case SpvOpGroupNonUniformQuadSwap:+      return "OpGroupNonUniformQuadSwap";+    case SpvOpCopyLogical:+      return "OpCopyLogical";+    case SpvOpPtrEqual:+      return "OpPtrEqual";+    case SpvOpPtrNotEqual:+      return "OpPtrNotEqual";+    case SpvOpPtrDiff:+      return "OpPtrDiff";+    case SpvOpColorAttachmentReadEXT:+      return "OpColorAttachmentReadEXT";+    case SpvOpDepthAttachmentReadEXT:+      return "OpDepthAttachmentReadEXT";+    case SpvOpStencilAttachmentReadEXT:+      return "OpStencilAttachmentReadEXT";+    case SpvOpTypeTensorARM:+      return "OpTypeTensorARM";+    case SpvOpTensorReadARM:+      return "OpTensorReadARM";+    case SpvOpTensorWriteARM:+      return "OpTensorWriteARM";+    case SpvOpTensorQuerySizeARM:+      return "OpTensorQuerySizeARM";+    case SpvOpGraphConstantARM:+      return "OpGraphConstantARM";+    case SpvOpGraphEntryPointARM:+      return "OpGraphEntryPointARM";+    case SpvOpGraphARM:+      return "OpGraphARM";+    case SpvOpGraphInputARM:+      return "OpGraphInputARM";+    case SpvOpGraphSetOutputARM:+      return "OpGraphSetOutputARM";+    case SpvOpGraphEndARM:+      return "OpGraphEndARM";+    case SpvOpTypeGraphARM:+      return "OpTypeGraphARM";+    case SpvOpTerminateInvocation:+      return "OpTerminateInvocation";+    case SpvOpTypeUntypedPointerKHR:+      return "OpTypeUntypedPointerKHR";+    case SpvOpUntypedVariableKHR:+      return "OpUntypedVariableKHR";+    case SpvOpUntypedAccessChainKHR:+      return "OpUntypedAccessChainKHR";+    case SpvOpUntypedInBoundsAccessChainKHR:+      return "OpUntypedInBoundsAccessChainKHR";+    case SpvOpSubgroupBallotKHR:+      return "OpSubgroupBallotKHR";+    case SpvOpSubgroupFirstInvocationKHR:+      return "OpSubgroupFirstInvocationKHR";+    case SpvOpUntypedPtrAccessChainKHR:+      return "OpUntypedPtrAccessChainKHR";+    case SpvOpUntypedInBoundsPtrAccessChainKHR:+      return "OpUntypedInBoundsPtrAccessChainKHR";+    case SpvOpUntypedArrayLengthKHR:+      return "OpUntypedArrayLengthKHR";+    case SpvOpUntypedPrefetchKHR:+      return "OpUntypedPrefetchKHR";+    case SpvOpFmaKHR:+      return "OpFmaKHR";+    case SpvOpSubgroupAllKHR:+      return "OpSubgroupAllKHR";+    case SpvOpSubgroupAnyKHR:+      return "OpSubgroupAnyKHR";+    case SpvOpSubgroupAllEqualKHR:+      return "OpSubgroupAllEqualKHR";+    case SpvOpGroupNonUniformRotateKHR:+      return "OpGroupNonUniformRotateKHR";+    case SpvOpSubgroupReadInvocationKHR:+      return "OpSubgroupReadInvocationKHR";+    case SpvOpExtInstWithForwardRefsKHR:+      return "OpExtInstWithForwardRefsKHR";+    case SpvOpUntypedGroupAsyncCopyKHR:+      return "OpUntypedGroupAsyncCopyKHR";+    case SpvOpTraceRayKHR:+      return "OpTraceRayKHR";+    case SpvOpExecuteCallableKHR:+      return "OpExecuteCallableKHR";+    case SpvOpConvertUToAccelerationStructureKHR:+      return "OpConvertUToAccelerationStructureKHR";+    case SpvOpIgnoreIntersectionKHR:+      return "OpIgnoreIntersectionKHR";+    case SpvOpTerminateRayKHR:+      return "OpTerminateRayKHR";+    case SpvOpSDot:+      return "OpSDot";+    case SpvOpUDot:+      return "OpUDot";+    case SpvOpSUDot:+      return "OpSUDot";+    case SpvOpSDotAccSat:+      return "OpSDotAccSat";+    case SpvOpUDotAccSat:+      return "OpUDotAccSat";+    case SpvOpSUDotAccSat:+      return "OpSUDotAccSat";+    case SpvOpTypeCooperativeMatrixKHR:+      return "OpTypeCooperativeMatrixKHR";+    case SpvOpCooperativeMatrixLoadKHR:+      return "OpCooperativeMatrixLoadKHR";+    case SpvOpCooperativeMatrixStoreKHR:+      return "OpCooperativeMatrixStoreKHR";+    case SpvOpCooperativeMatrixMulAddKHR:+      return "OpCooperativeMatrixMulAddKHR";+    case SpvOpCooperativeMatrixLengthKHR:+      return "OpCooperativeMatrixLengthKHR";+    case SpvOpConstantCompositeReplicateEXT:+      return "OpConstantCompositeReplicateEXT";+    case SpvOpSpecConstantCompositeReplicateEXT:+      return "OpSpecConstantCompositeReplicateEXT";+    case SpvOpCompositeConstructReplicateEXT:+      return "OpCompositeConstructReplicateEXT";+    case SpvOpTypeRayQueryKHR:+      return "OpTypeRayQueryKHR";+    case SpvOpRayQueryInitializeKHR:+      return "OpRayQueryInitializeKHR";+    case SpvOpRayQueryTerminateKHR:+      return "OpRayQueryTerminateKHR";+    case SpvOpRayQueryGenerateIntersectionKHR:+      return "OpRayQueryGenerateIntersectionKHR";+    case SpvOpRayQueryConfirmIntersectionKHR:+      return "OpRayQueryConfirmIntersectionKHR";+    case SpvOpRayQueryProceedKHR:+      return "OpRayQueryProceedKHR";+    case SpvOpRayQueryGetIntersectionTypeKHR:+      return "OpRayQueryGetIntersectionTypeKHR";+    case SpvOpImageSampleWeightedQCOM:+      return "OpImageSampleWeightedQCOM";+    case SpvOpImageBoxFilterQCOM:+      return "OpImageBoxFilterQCOM";+    case SpvOpImageBlockMatchSSDQCOM:+      return "OpImageBlockMatchSSDQCOM";+    case SpvOpImageBlockMatchSADQCOM:+      return "OpImageBlockMatchSADQCOM";+    case SpvOpBitCastArrayQCOM:+      return "OpBitCastArrayQCOM";+    case SpvOpImageBlockMatchWindowSSDQCOM:+      return "OpImageBlockMatchWindowSSDQCOM";+    case SpvOpImageBlockMatchWindowSADQCOM:+      return "OpImageBlockMatchWindowSADQCOM";+    case SpvOpImageBlockMatchGatherSSDQCOM:+      return "OpImageBlockMatchGatherSSDQCOM";+    case SpvOpImageBlockMatchGatherSADQCOM:+      return "OpImageBlockMatchGatherSADQCOM";+    case SpvOpCompositeConstructCoopMatQCOM:+      return "OpCompositeConstructCoopMatQCOM";+    case SpvOpCompositeExtractCoopMatQCOM:+      return "OpCompositeExtractCoopMatQCOM";+    case SpvOpExtractSubArrayQCOM:+      return "OpExtractSubArrayQCOM";+    case SpvOpGroupIAddNonUniformAMD:+      return "OpGroupIAddNonUniformAMD";+    case SpvOpGroupFAddNonUniformAMD:+      return "OpGroupFAddNonUniformAMD";+    case SpvOpGroupFMinNonUniformAMD:+      return "OpGroupFMinNonUniformAMD";+    case SpvOpGroupUMinNonUniformAMD:+      return "OpGroupUMinNonUniformAMD";+    case SpvOpGroupSMinNonUniformAMD:+      return "OpGroupSMinNonUniformAMD";+    case SpvOpGroupFMaxNonUniformAMD:+      return "OpGroupFMaxNonUniformAMD";+    case SpvOpGroupUMaxNonUniformAMD:+      return "OpGroupUMaxNonUniformAMD";+    case SpvOpGroupSMaxNonUniformAMD:+      return "OpGroupSMaxNonUniformAMD";+    case SpvOpFragmentMaskFetchAMD:+      return "OpFragmentMaskFetchAMD";+    case SpvOpFragmentFetchAMD:+      return "OpFragmentFetchAMD";+    case SpvOpReadClockKHR:+      return "OpReadClockKHR";+    case SpvOpAllocateNodePayloadsAMDX:+      return "OpAllocateNodePayloadsAMDX";+    case SpvOpEnqueueNodePayloadsAMDX:+      return "OpEnqueueNodePayloadsAMDX";+    case SpvOpTypeNodePayloadArrayAMDX:+      return "OpTypeNodePayloadArrayAMDX";+    case SpvOpFinishWritingNodePayloadAMDX:+      return "OpFinishWritingNodePayloadAMDX";+    case SpvOpNodePayloadArrayLengthAMDX:+      return "OpNodePayloadArrayLengthAMDX";+    case SpvOpIsNodePayloadValidAMDX:+      return "OpIsNodePayloadValidAMDX";+    case SpvOpConstantStringAMDX:+      return "OpConstantStringAMDX";+    case SpvOpSpecConstantStringAMDX:+      return "OpSpecConstantStringAMDX";+    case SpvOpGroupNonUniformQuadAllKHR:+      return "OpGroupNonUniformQuadAllKHR";+    case SpvOpGroupNonUniformQuadAnyKHR:+      return "OpGroupNonUniformQuadAnyKHR";+    case SpvOpTypeBufferEXT:+      return "OpTypeBufferEXT";+    case SpvOpBufferPointerEXT:+      return "OpBufferPointerEXT";+    case SpvOpAbortKHR:+      return "OpAbortKHR";+    case SpvOpUntypedImageTexelPointerEXT:+      return "OpUntypedImageTexelPointerEXT";+    case SpvOpMemberDecorateIdEXT:+      return "OpMemberDecorateIdEXT";+    case SpvOpConstantSizeOfEXT:+      return "OpConstantSizeOfEXT";+    case SpvOpConstantDataKHR:+      return "OpConstantDataKHR";+    case SpvOpSpecConstantDataKHR:+      return "OpSpecConstantDataKHR";+    case SpvOpPoisonKHR:+      return "OpPoisonKHR";+    case SpvOpFreezeKHR:+      return "OpFreezeKHR";+    case SpvOpHitObjectRecordHitMotionNV:+      return "OpHitObjectRecordHitMotionNV";+    case SpvOpHitObjectRecordHitWithIndexMotionNV:+      return "OpHitObjectRecordHitWithIndexMotionNV";+    case SpvOpHitObjectRecordMissMotionNV:+      return "OpHitObjectRecordMissMotionNV";+    case SpvOpHitObjectGetWorldToObjectNV:+      return "OpHitObjectGetWorldToObjectNV";+    case SpvOpHitObjectGetObjectToWorldNV:+      return "OpHitObjectGetObjectToWorldNV";+    case SpvOpHitObjectGetObjectRayDirectionNV:+      return "OpHitObjectGetObjectRayDirectionNV";+    case SpvOpHitObjectGetObjectRayOriginNV:+      return "OpHitObjectGetObjectRayOriginNV";+    case SpvOpHitObjectTraceRayMotionNV:+      return "OpHitObjectTraceRayMotionNV";+    case SpvOpHitObjectGetShaderRecordBufferHandleNV:+      return "OpHitObjectGetShaderRecordBufferHandleNV";+    case SpvOpHitObjectGetShaderBindingTableRecordIndexNV:+      return "OpHitObjectGetShaderBindingTableRecordIndexNV";+    case SpvOpHitObjectRecordEmptyNV:+      return "OpHitObjectRecordEmptyNV";+    case SpvOpHitObjectTraceRayNV:+      return "OpHitObjectTraceRayNV";+    case SpvOpHitObjectRecordHitNV:+      return "OpHitObjectRecordHitNV";+    case SpvOpHitObjectRecordHitWithIndexNV:+      return "OpHitObjectRecordHitWithIndexNV";+    case SpvOpHitObjectRecordMissNV:+      return "OpHitObjectRecordMissNV";+    case SpvOpHitObjectExecuteShaderNV:+      return "OpHitObjectExecuteShaderNV";+    case SpvOpHitObjectGetCurrentTimeNV:+      return "OpHitObjectGetCurrentTimeNV";+    case SpvOpHitObjectGetAttributesNV:+      return "OpHitObjectGetAttributesNV";+    case SpvOpHitObjectGetHitKindNV:+      return "OpHitObjectGetHitKindNV";+    case SpvOpHitObjectGetPrimitiveIndexNV:+      return "OpHitObjectGetPrimitiveIndexNV";+    case SpvOpHitObjectGetGeometryIndexNV:+      return "OpHitObjectGetGeometryIndexNV";+    case SpvOpHitObjectGetInstanceIdNV:+      return "OpHitObjectGetInstanceIdNV";+    case SpvOpHitObjectGetInstanceCustomIndexNV:+      return "OpHitObjectGetInstanceCustomIndexNV";+    case SpvOpHitObjectGetWorldRayDirectionNV:+      return "OpHitObjectGetWorldRayDirectionNV";+    case SpvOpHitObjectGetWorldRayOriginNV:+      return "OpHitObjectGetWorldRayOriginNV";+    case SpvOpHitObjectGetRayTMaxNV:+      return "OpHitObjectGetRayTMaxNV";+    case SpvOpHitObjectGetRayTMinNV:+      return "OpHitObjectGetRayTMinNV";+    case SpvOpHitObjectIsEmptyNV:+      return "OpHitObjectIsEmptyNV";+    case SpvOpHitObjectIsHitNV:+      return "OpHitObjectIsHitNV";+    case SpvOpHitObjectIsMissNV:+      return "OpHitObjectIsMissNV";+    case SpvOpReorderThreadWithHitObjectNV:+      return "OpReorderThreadWithHitObjectNV";+    case SpvOpReorderThreadWithHintNV:+      return "OpReorderThreadWithHintNV";+    case SpvOpTypeHitObjectNV:+      return "OpTypeHitObjectNV";+    case SpvOpImageSampleFootprintNV:+      return "OpImageSampleFootprintNV";+    case SpvOpTypeCooperativeVectorNV:+      return "OpTypeCooperativeVectorNV";+    case SpvOpCooperativeVectorMatrixMulNV:+      return "OpCooperativeVectorMatrixMulNV";+    case SpvOpCooperativeVectorOuterProductAccumulateNV:+      return "OpCooperativeVectorOuterProductAccumulateNV";+    case SpvOpCooperativeVectorReduceSumAccumulateNV:+      return "OpCooperativeVectorReduceSumAccumulateNV";+    case SpvOpCooperativeVectorMatrixMulAddNV:+      return "OpCooperativeVectorMatrixMulAddNV";+    case SpvOpCooperativeMatrixConvertNV:+      return "OpCooperativeMatrixConvertNV";+    case SpvOpEmitMeshTasksEXT:+      return "OpEmitMeshTasksEXT";+    case SpvOpSetMeshOutputsEXT:+      return "OpSetMeshOutputsEXT";+    case SpvOpGroupNonUniformPartitionEXT:+      return "OpGroupNonUniformPartitionEXT";+    case SpvOpWritePackedPrimitiveIndices4x8NV:+      return "OpWritePackedPrimitiveIndices4x8NV";+    case SpvOpFetchMicroTriangleVertexPositionNV:+      return "OpFetchMicroTriangleVertexPositionNV";+    case SpvOpFetchMicroTriangleVertexBarycentricNV:+      return "OpFetchMicroTriangleVertexBarycentricNV";+    case SpvOpCooperativeVectorLoadNV:+      return "OpCooperativeVectorLoadNV";+    case SpvOpCooperativeVectorStoreNV:+      return "OpCooperativeVectorStoreNV";+    case SpvOpHitObjectRecordFromQueryEXT:+      return "OpHitObjectRecordFromQueryEXT";+    case SpvOpHitObjectRecordMissEXT:+      return "OpHitObjectRecordMissEXT";+    case SpvOpHitObjectRecordMissMotionEXT:+      return "OpHitObjectRecordMissMotionEXT";+    case SpvOpHitObjectGetIntersectionTriangleVertexPositionsEXT:+      return "OpHitObjectGetIntersectionTriangleVertexPositionsEXT";+    case SpvOpHitObjectGetRayFlagsEXT:+      return "OpHitObjectGetRayFlagsEXT";+    case SpvOpHitObjectSetShaderBindingTableRecordIndexEXT:+      return "OpHitObjectSetShaderBindingTableRecordIndexEXT";+    case SpvOpHitObjectReorderExecuteShaderEXT:+      return "OpHitObjectReorderExecuteShaderEXT";+    case SpvOpHitObjectTraceReorderExecuteEXT:+      return "OpHitObjectTraceReorderExecuteEXT";+    case SpvOpHitObjectTraceMotionReorderExecuteEXT:+      return "OpHitObjectTraceMotionReorderExecuteEXT";+    case SpvOpTypeHitObjectEXT:+      return "OpTypeHitObjectEXT";+    case SpvOpReorderThreadWithHintEXT:+      return "OpReorderThreadWithHintEXT";+    case SpvOpReorderThreadWithHitObjectEXT:+      return "OpReorderThreadWithHitObjectEXT";+    case SpvOpHitObjectTraceRayEXT:+      return "OpHitObjectTraceRayEXT";+    case SpvOpHitObjectTraceRayMotionEXT:+      return "OpHitObjectTraceRayMotionEXT";+    case SpvOpHitObjectRecordEmptyEXT:+      return "OpHitObjectRecordEmptyEXT";+    case SpvOpHitObjectExecuteShaderEXT:+      return "OpHitObjectExecuteShaderEXT";+    case SpvOpHitObjectGetCurrentTimeEXT:+      return "OpHitObjectGetCurrentTimeEXT";+    case SpvOpHitObjectGetAttributesEXT:+      return "OpHitObjectGetAttributesEXT";+    case SpvOpHitObjectGetHitKindEXT:+      return "OpHitObjectGetHitKindEXT";+    case SpvOpHitObjectGetPrimitiveIndexEXT:+      return "OpHitObjectGetPrimitiveIndexEXT";+    case SpvOpHitObjectGetGeometryIndexEXT:+      return "OpHitObjectGetGeometryIndexEXT";+    case SpvOpHitObjectGetInstanceIdEXT:+      return "OpHitObjectGetInstanceIdEXT";+    case SpvOpHitObjectGetInstanceCustomIndexEXT:+      return "OpHitObjectGetInstanceCustomIndexEXT";+    case SpvOpHitObjectGetObjectRayOriginEXT:+      return "OpHitObjectGetObjectRayOriginEXT";+    case SpvOpHitObjectGetObjectRayDirectionEXT:+      return "OpHitObjectGetObjectRayDirectionEXT";+    case SpvOpHitObjectGetWorldRayDirectionEXT:+      return "OpHitObjectGetWorldRayDirectionEXT";+    case SpvOpHitObjectGetWorldRayOriginEXT:+      return "OpHitObjectGetWorldRayOriginEXT";+    case SpvOpHitObjectGetObjectToWorldEXT:+      return "OpHitObjectGetObjectToWorldEXT";+    case SpvOpHitObjectGetWorldToObjectEXT:+      return "OpHitObjectGetWorldToObjectEXT";+    case SpvOpHitObjectGetRayTMaxEXT:+      return "OpHitObjectGetRayTMaxEXT";+    case SpvOpReportIntersectionKHR:+      return "OpReportIntersectionKHR";+    case SpvOpIgnoreIntersectionNV:+      return "OpIgnoreIntersectionNV";+    case SpvOpTerminateRayNV:+      return "OpTerminateRayNV";+    case SpvOpTraceNV:+      return "OpTraceNV";+    case SpvOpTraceMotionNV:+      return "OpTraceMotionNV";+    case SpvOpTraceRayMotionNV:+      return "OpTraceRayMotionNV";+    case SpvOpRayQueryGetIntersectionTriangleVertexPositionsKHR:+      return "OpRayQueryGetIntersectionTriangleVertexPositionsKHR";+    case SpvOpTypeAccelerationStructureKHR:+      return "OpTypeAccelerationStructureKHR";+    case SpvOpExecuteCallableNV:+      return "OpExecuteCallableNV";+    case SpvOpRayQueryGetClusterIdNV:+      return "OpRayQueryGetClusterIdNV";+    case SpvOpHitObjectGetClusterIdNV:+      return "OpHitObjectGetClusterIdNV";+    case SpvOpHitObjectGetRayTMinEXT:+      return "OpHitObjectGetRayTMinEXT";+    case SpvOpHitObjectGetShaderBindingTableRecordIndexEXT:+      return "OpHitObjectGetShaderBindingTableRecordIndexEXT";+    case SpvOpHitObjectGetShaderRecordBufferHandleEXT:+      return "OpHitObjectGetShaderRecordBufferHandleEXT";+    case SpvOpHitObjectIsEmptyEXT:+      return "OpHitObjectIsEmptyEXT";+    case SpvOpHitObjectIsHitEXT:+      return "OpHitObjectIsHitEXT";+    case SpvOpHitObjectIsMissEXT:+      return "OpHitObjectIsMissEXT";+    case SpvOpTypeCooperativeMatrixNV:+      return "OpTypeCooperativeMatrixNV";+    case SpvOpCooperativeMatrixLoadNV:+      return "OpCooperativeMatrixLoadNV";+    case SpvOpCooperativeMatrixStoreNV:+      return "OpCooperativeMatrixStoreNV";+    case SpvOpCooperativeMatrixMulAddNV:+      return "OpCooperativeMatrixMulAddNV";+    case SpvOpCooperativeMatrixLengthNV:+      return "OpCooperativeMatrixLengthNV";+    case SpvOpBeginInvocationInterlockEXT:+      return "OpBeginInvocationInterlockEXT";+    case SpvOpEndInvocationInterlockEXT:+      return "OpEndInvocationInterlockEXT";+    case SpvOpCooperativeMatrixReduceNV:+      return "OpCooperativeMatrixReduceNV";+    case SpvOpCooperativeMatrixLoadTensorNV:+      return "OpCooperativeMatrixLoadTensorNV";+    case SpvOpCooperativeMatrixStoreTensorNV:+      return "OpCooperativeMatrixStoreTensorNV";+    case SpvOpCooperativeMatrixPerElementOpNV:+      return "OpCooperativeMatrixPerElementOpNV";+    case SpvOpTypeTensorLayoutNV:+      return "OpTypeTensorLayoutNV";+    case SpvOpTypeTensorViewNV:+      return "OpTypeTensorViewNV";+    case SpvOpCreateTensorLayoutNV:+      return "OpCreateTensorLayoutNV";+    case SpvOpTensorLayoutSetDimensionNV:+      return "OpTensorLayoutSetDimensionNV";+    case SpvOpTensorLayoutSetStrideNV:+      return "OpTensorLayoutSetStrideNV";+    case SpvOpTensorLayoutSliceNV:+      return "OpTensorLayoutSliceNV";+    case SpvOpTensorLayoutSetClampValueNV:+      return "OpTensorLayoutSetClampValueNV";+    case SpvOpCreateTensorViewNV:+      return "OpCreateTensorViewNV";+    case SpvOpTensorViewSetDimensionNV:+      return "OpTensorViewSetDimensionNV";+    case SpvOpTensorViewSetStrideNV:+      return "OpTensorViewSetStrideNV";+    case SpvOpDemoteToHelperInvocation:+      return "OpDemoteToHelperInvocation";+    case SpvOpIsHelperInvocationEXT:+      return "OpIsHelperInvocationEXT";+    case SpvOpTensorViewSetClipNV:+      return "OpTensorViewSetClipNV";+    case SpvOpTensorLayoutSetBlockSizeNV:+      return "OpTensorLayoutSetBlockSizeNV";+    case SpvOpCooperativeMatrixTransposeNV:+      return "OpCooperativeMatrixTransposeNV";+    case SpvOpConvertUToImageNV:+      return "OpConvertUToImageNV";+    case SpvOpConvertUToSamplerNV:+      return "OpConvertUToSamplerNV";+    case SpvOpConvertImageToUNV:+      return "OpConvertImageToUNV";+    case SpvOpConvertSamplerToUNV:+      return "OpConvertSamplerToUNV";+    case SpvOpConvertUToSampledImageNV:+      return "OpConvertUToSampledImageNV";+    case SpvOpConvertSampledImageToUNV:+      return "OpConvertSampledImageToUNV";+    case SpvOpSamplerImageAddressingModeNV:+      return "OpSamplerImageAddressingModeNV";+    case SpvOpRawAccessChainNV:+      return "OpRawAccessChainNV";+    case SpvOpRayQueryGetIntersectionSpherePositionNV:+      return "OpRayQueryGetIntersectionSpherePositionNV";+    case SpvOpRayQueryGetIntersectionSphereRadiusNV:+      return "OpRayQueryGetIntersectionSphereRadiusNV";+    case SpvOpRayQueryGetIntersectionLSSPositionsNV:+      return "OpRayQueryGetIntersectionLSSPositionsNV";+    case SpvOpRayQueryGetIntersectionLSSRadiiNV:+      return "OpRayQueryGetIntersectionLSSRadiiNV";+    case SpvOpRayQueryGetIntersectionLSSHitValueNV:+      return "OpRayQueryGetIntersectionLSSHitValueNV";+    case SpvOpHitObjectGetSpherePositionNV:+      return "OpHitObjectGetSpherePositionNV";+    case SpvOpHitObjectGetSphereRadiusNV:+      return "OpHitObjectGetSphereRadiusNV";+    case SpvOpHitObjectGetLSSPositionsNV:+      return "OpHitObjectGetLSSPositionsNV";+    case SpvOpHitObjectGetLSSRadiiNV:+      return "OpHitObjectGetLSSRadiiNV";+    case SpvOpHitObjectIsSphereHitNV:+      return "OpHitObjectIsSphereHitNV";+    case SpvOpHitObjectIsLSSHitNV:+      return "OpHitObjectIsLSSHitNV";+    case SpvOpRayQueryIsSphereHitNV:+      return "OpRayQueryIsSphereHitNV";+    case SpvOpRayQueryIsLSSHitNV:+      return "OpRayQueryIsLSSHitNV";+    case SpvOpSubgroupShuffleINTEL:+      return "OpSubgroupShuffleINTEL";+    case SpvOpSubgroupShuffleDownINTEL:+      return "OpSubgroupShuffleDownINTEL";+    case SpvOpSubgroupShuffleUpINTEL:+      return "OpSubgroupShuffleUpINTEL";+    case SpvOpSubgroupShuffleXorINTEL:+      return "OpSubgroupShuffleXorINTEL";+    case SpvOpSubgroupBlockReadINTEL:+      return "OpSubgroupBlockReadINTEL";+    case SpvOpSubgroupBlockWriteINTEL:+      return "OpSubgroupBlockWriteINTEL";+    case SpvOpSubgroupImageBlockReadINTEL:+      return "OpSubgroupImageBlockReadINTEL";+    case SpvOpSubgroupImageBlockWriteINTEL:+      return "OpSubgroupImageBlockWriteINTEL";+    case SpvOpSubgroupImageMediaBlockReadINTEL:+      return "OpSubgroupImageMediaBlockReadINTEL";+    case SpvOpSubgroupImageMediaBlockWriteINTEL:+      return "OpSubgroupImageMediaBlockWriteINTEL";+    case SpvOpUCountLeadingZerosINTEL:+      return "OpUCountLeadingZerosINTEL";+    case SpvOpUCountTrailingZerosINTEL:+      return "OpUCountTrailingZerosINTEL";+    case SpvOpAbsISubINTEL:+      return "OpAbsISubINTEL";+    case SpvOpAbsUSubINTEL:+      return "OpAbsUSubINTEL";+    case SpvOpIAddSatINTEL:+      return "OpIAddSatINTEL";+    case SpvOpUAddSatINTEL:+      return "OpUAddSatINTEL";+    case SpvOpIAverageINTEL:+      return "OpIAverageINTEL";+    case SpvOpUAverageINTEL:+      return "OpUAverageINTEL";+    case SpvOpIAverageRoundedINTEL:+      return "OpIAverageRoundedINTEL";+    case SpvOpUAverageRoundedINTEL:+      return "OpUAverageRoundedINTEL";+    case SpvOpISubSatINTEL:+      return "OpISubSatINTEL";+    case SpvOpUSubSatINTEL:+      return "OpUSubSatINTEL";+    case SpvOpIMul32x16INTEL:+      return "OpIMul32x16INTEL";+    case SpvOpUMul32x16INTEL:+      return "OpUMul32x16INTEL";+    case SpvOpConstantFunctionPointerINTEL:+      return "OpConstantFunctionPointerINTEL";+    case SpvOpFunctionPointerCallINTEL:+      return "OpFunctionPointerCallINTEL";+    case SpvOpAsmTargetINTEL:+      return "OpAsmTargetINTEL";+    case SpvOpAsmINTEL:+      return "OpAsmINTEL";+    case SpvOpAsmCallINTEL:+      return "OpAsmCallINTEL";+    case SpvOpAtomicFMinEXT:+      return "OpAtomicFMinEXT";+    case SpvOpAtomicFMaxEXT:+      return "OpAtomicFMaxEXT";+    case SpvOpAssumeTrueKHR:+      return "OpAssumeTrueKHR";+    case SpvOpExpectKHR:+      return "OpExpectKHR";+    case SpvOpDecorateString:+      return "OpDecorateString";+    case SpvOpMemberDecorateString:+      return "OpMemberDecorateString";+    case SpvOpVmeImageINTEL:+      return "OpVmeImageINTEL";+    case SpvOpTypeVmeImageINTEL:+      return "OpTypeVmeImageINTEL";+    case SpvOpTypeAvcImePayloadINTEL:+      return "OpTypeAvcImePayloadINTEL";+    case SpvOpTypeAvcRefPayloadINTEL:+      return "OpTypeAvcRefPayloadINTEL";+    case SpvOpTypeAvcSicPayloadINTEL:+      return "OpTypeAvcSicPayloadINTEL";+    case SpvOpTypeAvcMcePayloadINTEL:+      return "OpTypeAvcMcePayloadINTEL";+    case SpvOpTypeAvcMceResultINTEL:+      return "OpTypeAvcMceResultINTEL";+    case SpvOpTypeAvcImeResultINTEL:+      return "OpTypeAvcImeResultINTEL";+    case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL:+      return "OpTypeAvcImeResultSingleReferenceStreamoutINTEL";+    case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL:+      return "OpTypeAvcImeResultDualReferenceStreamoutINTEL";+    case SpvOpTypeAvcImeSingleReferenceStreaminINTEL:+      return "OpTypeAvcImeSingleReferenceStreaminINTEL";+    case SpvOpTypeAvcImeDualReferenceStreaminINTEL:+      return "OpTypeAvcImeDualReferenceStreaminINTEL";+    case SpvOpTypeAvcRefResultINTEL:+      return "OpTypeAvcRefResultINTEL";+    case SpvOpTypeAvcSicResultINTEL:+      return "OpTypeAvcSicResultINTEL";+    case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL:+      return "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL";+    case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL:+      return "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL";+    case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL:+      return "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL";+    case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL:+      return "OpSubgroupAvcMceSetInterShapePenaltyINTEL";+    case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL:+      return "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL";+    case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL:+      return "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL";+    case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL:+      return "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL";+    case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL:+      return "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL";+    case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL:+      return "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL";+    case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL:+      return "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL";+    case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL:+      return "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL";+    case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL:+      return "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL";+    case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL:+      return "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL";+    case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL:+      return "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL";+    case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL:+      return "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL";+    case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL:+      return "OpSubgroupAvcMceSetAcOnlyHaarINTEL";+    case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL:+      return "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL";+    case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL:+      return "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL";+    case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL:+      return "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL";+    case SpvOpSubgroupAvcMceConvertToImePayloadINTEL:+      return "OpSubgroupAvcMceConvertToImePayloadINTEL";+    case SpvOpSubgroupAvcMceConvertToImeResultINTEL:+      return "OpSubgroupAvcMceConvertToImeResultINTEL";+    case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL:+      return "OpSubgroupAvcMceConvertToRefPayloadINTEL";+    case SpvOpSubgroupAvcMceConvertToRefResultINTEL:+      return "OpSubgroupAvcMceConvertToRefResultINTEL";+    case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL:+      return "OpSubgroupAvcMceConvertToSicPayloadINTEL";+    case SpvOpSubgroupAvcMceConvertToSicResultINTEL:+      return "OpSubgroupAvcMceConvertToSicResultINTEL";+    case SpvOpSubgroupAvcMceGetMotionVectorsINTEL:+      return "OpSubgroupAvcMceGetMotionVectorsINTEL";+    case SpvOpSubgroupAvcMceGetInterDistortionsINTEL:+      return "OpSubgroupAvcMceGetInterDistortionsINTEL";+    case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL:+      return "OpSubgroupAvcMceGetBestInterDistortionsINTEL";+    case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL:+      return "OpSubgroupAvcMceGetInterMajorShapeINTEL";+    case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL:+      return "OpSubgroupAvcMceGetInterMinorShapeINTEL";+    case SpvOpSubgroupAvcMceGetInterDirectionsINTEL:+      return "OpSubgroupAvcMceGetInterDirectionsINTEL";+    case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL:+      return "OpSubgroupAvcMceGetInterMotionVectorCountINTEL";+    case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL:+      return "OpSubgroupAvcMceGetInterReferenceIdsINTEL";+    case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL:+      return "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL";+    case SpvOpSubgroupAvcImeInitializeINTEL:+      return "OpSubgroupAvcImeInitializeINTEL";+    case SpvOpSubgroupAvcImeSetSingleReferenceINTEL:+      return "OpSubgroupAvcImeSetSingleReferenceINTEL";+    case SpvOpSubgroupAvcImeSetDualReferenceINTEL:+      return "OpSubgroupAvcImeSetDualReferenceINTEL";+    case SpvOpSubgroupAvcImeRefWindowSizeINTEL:+      return "OpSubgroupAvcImeRefWindowSizeINTEL";+    case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL:+      return "OpSubgroupAvcImeAdjustRefOffsetINTEL";+    case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL:+      return "OpSubgroupAvcImeConvertToMcePayloadINTEL";+    case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL:+      return "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL";+    case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL:+      return "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL";+    case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL:+      return "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL";+    case SpvOpSubgroupAvcImeSetWeightedSadINTEL:+      return "OpSubgroupAvcImeSetWeightedSadINTEL";+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL:+      return "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL";+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL:+      return "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL";+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL:+      return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL";+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL:+      return "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL";+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL:+      return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL";+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL:+      return "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL";+    case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL:+      return "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL";+    case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL:+      return "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL";+    case SpvOpSubgroupAvcImeConvertToMceResultINTEL:+      return "OpSubgroupAvcImeConvertToMceResultINTEL";+    case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL:+      return "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL";+    case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL:+      return "OpSubgroupAvcImeGetDualReferenceStreaminINTEL";+    case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL:+      return "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL";+    case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL:+      return "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL";+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL:+      return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL";+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL:+      return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL";+    case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL:+      return "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL";+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL:+      return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL";+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL:+      return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL";+    case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL:+      return "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL";+    case SpvOpSubgroupAvcImeGetBorderReachedINTEL:+      return "OpSubgroupAvcImeGetBorderReachedINTEL";+    case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL:+      return "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL";+    case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL:+      return "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL";+    case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL:+      return "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL";+    case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL:+      return "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL";+    case SpvOpSubgroupAvcFmeInitializeINTEL:+      return "OpSubgroupAvcFmeInitializeINTEL";+    case SpvOpSubgroupAvcBmeInitializeINTEL:+      return "OpSubgroupAvcBmeInitializeINTEL";+    case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL:+      return "OpSubgroupAvcRefConvertToMcePayloadINTEL";+    case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL:+      return "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL";+    case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL:+      return "OpSubgroupAvcRefSetBilinearFilterEnableINTEL";+    case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL:+      return "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL";+    case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL:+      return "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL";+    case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL:+      return "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL";+    case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL:+      return "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL";+    case SpvOpSubgroupAvcRefConvertToMceResultINTEL:+      return "OpSubgroupAvcRefConvertToMceResultINTEL";+    case SpvOpSubgroupAvcSicInitializeINTEL:+      return "OpSubgroupAvcSicInitializeINTEL";+    case SpvOpSubgroupAvcSicConfigureSkcINTEL:+      return "OpSubgroupAvcSicConfigureSkcINTEL";+    case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL:+      return "OpSubgroupAvcSicConfigureIpeLumaINTEL";+    case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL:+      return "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL";+    case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL:+      return "OpSubgroupAvcSicGetMotionVectorMaskINTEL";+    case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL:+      return "OpSubgroupAvcSicConvertToMcePayloadINTEL";+    case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL:+      return "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL";+    case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL:+      return "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL";+    case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL:+      return "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL";+    case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL:+      return "OpSubgroupAvcSicSetBilinearFilterEnableINTEL";+    case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL:+      return "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL";+    case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL:+      return "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL";+    case SpvOpSubgroupAvcSicEvaluateIpeINTEL:+      return "OpSubgroupAvcSicEvaluateIpeINTEL";+    case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL:+      return "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL";+    case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL:+      return "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL";+    case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL:+      return "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL";+    case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL:+      return "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL";+    case SpvOpSubgroupAvcSicConvertToMceResultINTEL:+      return "OpSubgroupAvcSicConvertToMceResultINTEL";+    case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL:+      return "OpSubgroupAvcSicGetIpeLumaShapeINTEL";+    case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL:+      return "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL";+    case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL:+      return "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL";+    case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL:+      return "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL";+    case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL:+      return "OpSubgroupAvcSicGetIpeChromaModeINTEL";+    case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL:+      return "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL";+    case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL:+      return "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL";+    case SpvOpSubgroupAvcSicGetInterRawSadsINTEL:+      return "OpSubgroupAvcSicGetInterRawSadsINTEL";+    case SpvOpVariableLengthArrayINTEL:+      return "OpVariableLengthArrayINTEL";+    case SpvOpSaveMemoryINTEL:+      return "OpSaveMemoryINTEL";+    case SpvOpRestoreMemoryINTEL:+      return "OpRestoreMemoryINTEL";+    case SpvOpArbitraryFloatSinCosPiALTERA:+      return "OpArbitraryFloatSinCosPiALTERA";+    case SpvOpArbitraryFloatCastALTERA:+      return "OpArbitraryFloatCastALTERA";+    case SpvOpArbitraryFloatCastFromIntALTERA:+      return "OpArbitraryFloatCastFromIntALTERA";+    case SpvOpArbitraryFloatCastToIntALTERA:+      return "OpArbitraryFloatCastToIntALTERA";+    case SpvOpArbitraryFloatAddALTERA:+      return "OpArbitraryFloatAddALTERA";+    case SpvOpArbitraryFloatSubALTERA:+      return "OpArbitraryFloatSubALTERA";+    case SpvOpArbitraryFloatMulALTERA:+      return "OpArbitraryFloatMulALTERA";+    case SpvOpArbitraryFloatDivALTERA:+      return "OpArbitraryFloatDivALTERA";+    case SpvOpArbitraryFloatGTALTERA:+      return "OpArbitraryFloatGTALTERA";+    case SpvOpArbitraryFloatGEALTERA:+      return "OpArbitraryFloatGEALTERA";+    case SpvOpArbitraryFloatLTALTERA:+      return "OpArbitraryFloatLTALTERA";+    case SpvOpArbitraryFloatLEALTERA:+      return "OpArbitraryFloatLEALTERA";+    case SpvOpArbitraryFloatEQALTERA:+      return "OpArbitraryFloatEQALTERA";+    case SpvOpArbitraryFloatRecipALTERA:+      return "OpArbitraryFloatRecipALTERA";+    case SpvOpArbitraryFloatRSqrtALTERA:+      return "OpArbitraryFloatRSqrtALTERA";+    case SpvOpArbitraryFloatCbrtALTERA:+      return "OpArbitraryFloatCbrtALTERA";+    case SpvOpArbitraryFloatHypotALTERA:+      return "OpArbitraryFloatHypotALTERA";+    case SpvOpArbitraryFloatSqrtALTERA:+      return "OpArbitraryFloatSqrtALTERA";+    case SpvOpArbitraryFloatLogINTEL:+      return "OpArbitraryFloatLogINTEL";+    case SpvOpArbitraryFloatLog2INTEL:+      return "OpArbitraryFloatLog2INTEL";+    case SpvOpArbitraryFloatLog10INTEL:+      return "OpArbitraryFloatLog10INTEL";+    case SpvOpArbitraryFloatLog1pINTEL:+      return "OpArbitraryFloatLog1pINTEL";+    case SpvOpArbitraryFloatExpINTEL:+      return "OpArbitraryFloatExpINTEL";+    case SpvOpArbitraryFloatExp2INTEL:+      return "OpArbitraryFloatExp2INTEL";+    case SpvOpArbitraryFloatExp10INTEL:+      return "OpArbitraryFloatExp10INTEL";+    case SpvOpArbitraryFloatExpm1INTEL:+      return "OpArbitraryFloatExpm1INTEL";+    case SpvOpArbitraryFloatSinINTEL:+      return "OpArbitraryFloatSinINTEL";+    case SpvOpArbitraryFloatCosINTEL:+      return "OpArbitraryFloatCosINTEL";+    case SpvOpArbitraryFloatSinCosINTEL:+      return "OpArbitraryFloatSinCosINTEL";+    case SpvOpArbitraryFloatSinPiINTEL:+      return "OpArbitraryFloatSinPiINTEL";+    case SpvOpArbitraryFloatCosPiINTEL:+      return "OpArbitraryFloatCosPiINTEL";+    case SpvOpArbitraryFloatASinINTEL:+      return "OpArbitraryFloatASinINTEL";+    case SpvOpArbitraryFloatASinPiINTEL:+      return "OpArbitraryFloatASinPiINTEL";+    case SpvOpArbitraryFloatACosINTEL:+      return "OpArbitraryFloatACosINTEL";+    case SpvOpArbitraryFloatACosPiINTEL:+      return "OpArbitraryFloatACosPiINTEL";+    case SpvOpArbitraryFloatATanINTEL:+      return "OpArbitraryFloatATanINTEL";+    case SpvOpArbitraryFloatATanPiINTEL:+      return "OpArbitraryFloatATanPiINTEL";+    case SpvOpArbitraryFloatATan2INTEL:+      return "OpArbitraryFloatATan2INTEL";+    case SpvOpArbitraryFloatPowINTEL:+      return "OpArbitraryFloatPowINTEL";+    case SpvOpArbitraryFloatPowRINTEL:+      return "OpArbitraryFloatPowRINTEL";+    case SpvOpArbitraryFloatPowNINTEL:+      return "OpArbitraryFloatPowNINTEL";+    case SpvOpLoopControlINTEL:+      return "OpLoopControlINTEL";+    case SpvOpAliasDomainDeclINTEL:+      return "OpAliasDomainDeclINTEL";+    case SpvOpAliasScopeDeclINTEL:+      return "OpAliasScopeDeclINTEL";+    case SpvOpAliasScopeListDeclINTEL:+      return "OpAliasScopeListDeclINTEL";+    case SpvOpFixedSqrtALTERA:+      return "OpFixedSqrtALTERA";+    case SpvOpFixedRecipALTERA:+      return "OpFixedRecipALTERA";+    case SpvOpFixedRsqrtALTERA:+      return "OpFixedRsqrtALTERA";+    case SpvOpFixedSinALTERA:+      return "OpFixedSinALTERA";+    case SpvOpFixedCosALTERA:+      return "OpFixedCosALTERA";+    case SpvOpFixedSinCosALTERA:+      return "OpFixedSinCosALTERA";+    case SpvOpFixedSinPiALTERA:+      return "OpFixedSinPiALTERA";+    case SpvOpFixedCosPiALTERA:+      return "OpFixedCosPiALTERA";+    case SpvOpFixedSinCosPiALTERA:+      return "OpFixedSinCosPiALTERA";+    case SpvOpFixedLogALTERA:+      return "OpFixedLogALTERA";+    case SpvOpFixedExpALTERA:+      return "OpFixedExpALTERA";+    case SpvOpPtrCastToCrossWorkgroupALTERA:+      return "OpPtrCastToCrossWorkgroupALTERA";+    case SpvOpCrossWorkgroupCastToPtrALTERA:+      return "OpCrossWorkgroupCastToPtrALTERA";+    case SpvOpReadPipeBlockingALTERA:+      return "OpReadPipeBlockingALTERA";+    case SpvOpWritePipeBlockingALTERA:+      return "OpWritePipeBlockingALTERA";+    case SpvOpFPGARegALTERA:+      return "OpFPGARegALTERA";+    case SpvOpRayQueryGetRayTMinKHR:+      return "OpRayQueryGetRayTMinKHR";+    case SpvOpRayQueryGetRayFlagsKHR:+      return "OpRayQueryGetRayFlagsKHR";+    case SpvOpRayQueryGetIntersectionTKHR:+      return "OpRayQueryGetIntersectionTKHR";+    case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR:+      return "OpRayQueryGetIntersectionInstanceCustomIndexKHR";+    case SpvOpRayQueryGetIntersectionInstanceIdKHR:+      return "OpRayQueryGetIntersectionInstanceIdKHR";+    case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR:+      return "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR";+    case SpvOpRayQueryGetIntersectionGeometryIndexKHR:+      return "OpRayQueryGetIntersectionGeometryIndexKHR";+    case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR:+      return "OpRayQueryGetIntersectionPrimitiveIndexKHR";+    case SpvOpRayQueryGetIntersectionBarycentricsKHR:+      return "OpRayQueryGetIntersectionBarycentricsKHR";+    case SpvOpRayQueryGetIntersectionFrontFaceKHR:+      return "OpRayQueryGetIntersectionFrontFaceKHR";+    case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR:+      return "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR";+    case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR:+      return "OpRayQueryGetIntersectionObjectRayDirectionKHR";+    case SpvOpRayQueryGetIntersectionObjectRayOriginKHR:+      return "OpRayQueryGetIntersectionObjectRayOriginKHR";+    case SpvOpRayQueryGetWorldRayDirectionKHR:+      return "OpRayQueryGetWorldRayDirectionKHR";+    case SpvOpRayQueryGetWorldRayOriginKHR:+      return "OpRayQueryGetWorldRayOriginKHR";+    case SpvOpRayQueryGetIntersectionObjectToWorldKHR:+      return "OpRayQueryGetIntersectionObjectToWorldKHR";+    case SpvOpRayQueryGetIntersectionWorldToObjectKHR:+      return "OpRayQueryGetIntersectionWorldToObjectKHR";+    case SpvOpAtomicFAddEXT:+      return "OpAtomicFAddEXT";+    case SpvOpTypeBufferSurfaceINTEL:+      return "OpTypeBufferSurfaceINTEL";+    case SpvOpTypeStructContinuedINTEL:+      return "OpTypeStructContinuedINTEL";+    case SpvOpConstantCompositeContinuedINTEL:+      return "OpConstantCompositeContinuedINTEL";+    case SpvOpSpecConstantCompositeContinuedINTEL:+      return "OpSpecConstantCompositeContinuedINTEL";+    case SpvOpCompositeConstructContinuedINTEL:+      return "OpCompositeConstructContinuedINTEL";+    case SpvOpConvertFToBF16INTEL:+      return "OpConvertFToBF16INTEL";+    case SpvOpConvertBF16ToFINTEL:+      return "OpConvertBF16ToFINTEL";+    case SpvOpControlBarrierArriveINTEL:+      return "OpControlBarrierArriveINTEL";+    case SpvOpControlBarrierWaitINTEL:+      return "OpControlBarrierWaitINTEL";+    case SpvOpArithmeticFenceEXT:+      return "OpArithmeticFenceEXT";+    case SpvOpTaskSequenceCreateALTERA:+      return "OpTaskSequenceCreateALTERA";+    case SpvOpTaskSequenceAsyncALTERA:+      return "OpTaskSequenceAsyncALTERA";+    case SpvOpTaskSequenceGetALTERA:+      return "OpTaskSequenceGetALTERA";+    case SpvOpTaskSequenceReleaseALTERA:+      return "OpTaskSequenceReleaseALTERA";+    case SpvOpTypeTaskSequenceALTERA:+      return "OpTypeTaskSequenceALTERA";+    case SpvOpSubgroupBlockPrefetchINTEL:+      return "OpSubgroupBlockPrefetchINTEL";+    case SpvOpSubgroup2DBlockLoadINTEL:+      return "OpSubgroup2DBlockLoadINTEL";+    case SpvOpSubgroup2DBlockLoadTransformINTEL:+      return "OpSubgroup2DBlockLoadTransformINTEL";+    case SpvOpSubgroup2DBlockLoadTransposeINTEL:+      return "OpSubgroup2DBlockLoadTransposeINTEL";+    case SpvOpSubgroup2DBlockPrefetchINTEL:+      return "OpSubgroup2DBlockPrefetchINTEL";+    case SpvOpSubgroup2DBlockStoreINTEL:+      return "OpSubgroup2DBlockStoreINTEL";+    case SpvOpSubgroupMatrixMultiplyAccumulateINTEL:+      return "OpSubgroupMatrixMultiplyAccumulateINTEL";+    case SpvOpBitwiseFunctionINTEL:+      return "OpBitwiseFunctionINTEL";+    case SpvOpUntypedVariableLengthArrayINTEL:+      return "OpUntypedVariableLengthArrayINTEL";+    case SpvOpConditionalExtensionINTEL:+      return "OpConditionalExtensionINTEL";+    case SpvOpConditionalEntryPointINTEL:+      return "OpConditionalEntryPointINTEL";+    case SpvOpConditionalCapabilityINTEL:+      return "OpConditionalCapabilityINTEL";+    case SpvOpSpecConstantTargetINTEL:+      return "OpSpecConstantTargetINTEL";+    case SpvOpSpecConstantArchitectureINTEL:+      return "OpSpecConstantArchitectureINTEL";+    case SpvOpSpecConstantCapabilitiesINTEL:+      return "OpSpecConstantCapabilitiesINTEL";+    case SpvOpConditionalCopyObjectINTEL:+      return "OpConditionalCopyObjectINTEL";+    case SpvOpGroupIMulKHR:+      return "OpGroupIMulKHR";+    case SpvOpGroupFMulKHR:+      return "OpGroupFMulKHR";+    case SpvOpGroupBitwiseAndKHR:+      return "OpGroupBitwiseAndKHR";+    case SpvOpGroupBitwiseOrKHR:+      return "OpGroupBitwiseOrKHR";+    case SpvOpGroupBitwiseXorKHR:+      return "OpGroupBitwiseXorKHR";+    case SpvOpGroupLogicalAndKHR:+      return "OpGroupLogicalAndKHR";+    case SpvOpGroupLogicalOrKHR:+      return "OpGroupLogicalOrKHR";+    case SpvOpGroupLogicalXorKHR:+      return "OpGroupLogicalXorKHR";+    case SpvOpRoundFToTF32INTEL:+      return "OpRoundFToTF32INTEL";+    case SpvOpMaskedGatherINTEL:+      return "OpMaskedGatherINTEL";+    case SpvOpMaskedScatterINTEL:+      return "OpMaskedScatterINTEL";+    case SpvOpConvertHandleToImageINTEL:+      return "OpConvertHandleToImageINTEL";+    case SpvOpConvertHandleToSamplerINTEL:+      return "OpConvertHandleToSamplerINTEL";+    case SpvOpConvertHandleToSampledImageINTEL:+      return "OpConvertHandleToSampledImageINTEL";+    case SpvOpFDot2MixAcc32VALVE:+      return "OpFDot2MixAcc32VALVE";+    case SpvOpFDot2MixAcc16VALVE:+      return "OpFDot2MixAcc16VALVE";+    case SpvOpFDot4MixAcc32VALVE:+      return "OpFDot4MixAcc32VALVE";+    default:+      return "Unknown";+  }+}+ #endif /* SPV_ENABLE_UTILITY_CODE */  #endif
cbits/spirv_reflect.c view
@@ -42,20 +42,21 @@  // clang-format off enum {-  SPIRV_STARTING_WORD_INDEX       = 5,-  SPIRV_WORD_SIZE                 = sizeof(uint32_t),-  SPIRV_BYTE_WIDTH                = 8,-  SPIRV_MINIMUM_FILE_SIZE         = SPIRV_STARTING_WORD_INDEX * SPIRV_WORD_SIZE,-  SPIRV_DATA_ALIGNMENT            = 4 * SPIRV_WORD_SIZE, // 16-  SPIRV_ACCESS_CHAIN_INDEX_OFFSET = 4,+  SPIRV_STARTING_WORD_INDEX           = 5,+  SPIRV_WORD_SIZE                     = sizeof(uint32_t),+  SPIRV_BYTE_WIDTH                    = 8,+  SPIRV_MINIMUM_FILE_SIZE             = SPIRV_STARTING_WORD_INDEX * SPIRV_WORD_SIZE,+  SPIRV_DATA_ALIGNMENT                = 4 * SPIRV_WORD_SIZE, // 16+  SPIRV_ACCESS_CHAIN_INDEX_OFFSET     = 4,+  SPIRV_PHYSICAL_STORAGE_POINTER_SIZE = 8, // Pointers are defined as 64-bit };  enum {-  INVALID_VALUE  = 0xFFFFFFFF,+  INVALID_VALUE = (int)0xFFFFFFFF, };  enum {-  MAX_NODE_NAME_LENGTH        = 1024,+  MAX_NODE_NAME_LENGTH                 = 1024,   // Number of unique PhysicalStorageBuffer structs tracked to detect recursion   MAX_RECURSIVE_PHYSICAL_POINTER_CHECK = 128, };@@ -224,6 +225,7 @@   uint32_t                        type_count;   uint32_t                        descriptor_count;   uint32_t                        push_constant_count;+  uint32_t                        spec_constant_count;    SpvReflectTypeDescription*      physical_pointer_check[MAX_RECURSIVE_PHYSICAL_POINTER_CHECK];   uint32_t                        physical_pointer_count;@@ -686,7 +688,7 @@     if (node_word_count == 0) {       return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_INSTRUCTION;     }-    if (op == SpvOpAccessChain) {+    if (op == SpvOpAccessChain || op == SpvOpInBoundsAccessChain) {       ++(p_parser->access_chain_count);     }     spirv_word_index += node_word_count;@@ -844,8 +846,11 @@       case SpvOpTypeAccelerationStructureKHR:       case SpvOpTypeRayQueryKHR:       case SpvOpTypeHitObjectNV:+      case SpvOpTypeHitObjectEXT:+      case SpvOpTypeCooperativeVectorNV:       case SpvOpTypeCooperativeMatrixNV:-      case SpvOpTypeCooperativeMatrixKHR: {+      case SpvOpTypeCooperativeMatrixKHR:+      case SpvOpTypeUntypedPointerKHR: {         CHECKED_READU32(p_parser, p_node->word_offset + 1, p_node->result_id);         p_node->is_type = true;       } break;@@ -921,7 +926,8 @@         CHECKED_READU32(p_parser, p_node->word_offset + 2, p_node->result_id);       } break; -      case SpvOpVariable: {+      case SpvOpVariable:+      case SpvOpUntypedVariableKHR: {         CHECKED_READU32(p_parser, p_node->word_offset + 1, p_node->type_id);         CHECKED_READU32(p_parser, p_node->word_offset + 2, p_node->result_id);         CHECKED_READU32(p_parser, p_node->word_offset + 3, p_node->storage_class);@@ -933,7 +939,8 @@         CHECKED_READU32(p_parser, p_node->word_offset + 2, p_node->result_id);       } break; -      case SpvOpAccessChain: {+      case SpvOpAccessChain:+      case SpvOpInBoundsAccessChain: {         SpvReflectPrvAccessChain* p_access_chain = &(p_parser->access_chains[access_chain_index]);         CHECKED_READU32(p_parser, p_node->word_offset + 1, p_access_chain->result_type_id);         CHECKED_READU32(p_parser, p_node->word_offset + 2, p_access_chain->result_id);@@ -1344,7 +1351,7 @@         continue;       } -      if (member_index == INVALID_VALUE) {+      if (member_index == (uint32_t)INVALID_VALUE) {         return SPV_REFLECT_RESULT_ERROR_RANGE_EXCEEDED;       } @@ -1417,7 +1424,7 @@   return false; } -static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser, SpvReflectShaderModule* p_module) {+static SpvReflectResult ParseDecorations(SpvReflectPrvParser* p_parser) {   uint32_t spec_constant_count = 0;   for (uint32_t i = 0; i < p_parser->node_count; ++i) {     SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);@@ -1604,6 +1611,8 @@       } break;        case SpvDecorationSpecId: {+        uint32_t word_offset = p_node->word_offset + member_offset + 3;+        CHECKED_READU32(p_parser, word_offset, p_target_decorations->spec_id);         spec_constant_count++;       } break; @@ -1717,31 +1726,7 @@     }   } -  if (spec_constant_count > 0) {-    p_module->spec_constants = (SpvReflectSpecializationConstant*)calloc(spec_constant_count, sizeof(*p_module->spec_constants));-    if (IsNull(p_module->spec_constants)) {-      return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;-    }-  }-  for (uint32_t i = 0; i < p_parser->node_count; ++i) {-    SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);-    if (p_node->op == SpvOpDecorate) {-      uint32_t decoration = (uint32_t)INVALID_VALUE;-      CHECKED_READU32(p_parser, p_node->word_offset + 2, decoration);-      if (decoration == SpvDecorationSpecId) {-        const uint32_t count = p_module->spec_constant_count;-        CHECKED_READU32(p_parser, p_node->word_offset + 1, p_module->spec_constants[count].spirv_id);-        CHECKED_READU32(p_parser, p_node->word_offset + 3, p_module->spec_constants[count].constant_id);-        // If being used for a OpSpecConstantComposite (ex. LocalSizeId), there won't be a name-        SpvReflectPrvNode* target_node = FindNode(p_parser, p_module->spec_constants[count].spirv_id);-        if (IsNotNull(target_node)) {-          p_module->spec_constants[count].name = target_node->name;-        }-        p_module->spec_constant_count++;-      }-    }-  }-+  p_parser->spec_constant_count = spec_constant_count;   return SPV_REFLECT_RESULT_SUCCESS; } @@ -1778,7 +1763,7 @@         SpvReflectTypeDescription* p_member_type = &(p_type->members[i]);         p_member_type->id = (uint32_t)INVALID_VALUE;         p_member_type->op = (SpvOp)INVALID_VALUE;-        p_member_type->storage_class = (SpvStorageClass)INVALID_VALUE;+        p_member_type->storage_class = INVALID_VALUE;       }     } else {       result = SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;@@ -1788,7 +1773,7 @@   if (result == SPV_REFLECT_RESULT_SUCCESS) {     // Since the parse descends on type information, these will get overwritten     // if not guarded against assignment. Only assign if the id is invalid.-    if (p_type->id == INVALID_VALUE) {+    if (p_type->id == (uint32_t)INVALID_VALUE) {       p_type->id = p_node->result_id;       p_type->op = p_node->op;       p_type->decoration_flags = 0;@@ -1986,6 +1971,13 @@         p_type->type_flags |= SPV_REFLECT_TYPE_FLAG_REF;         IF_READU32_CAST(result, p_parser, p_node->word_offset + 2, SpvStorageClass, p_type->storage_class); +        SpvReflectPrvNode* p_next_node = FindNode(p_parser, p_node->type_id);+        if (IsNull(p_next_node)) {+          result = SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;+          SPV_REFLECT_ASSERT(false);+          break;+        }+         bool found_recursion = false;         if (p_type->storage_class == SpvStorageClassPhysicalStorageBuffer) {           // Need to make sure we haven't started an infinite recursive loop@@ -1997,7 +1989,7 @@               return SPV_REFLECT_RESULT_SUCCESS;             }           }-          if (!found_recursion) {+          if (!found_recursion && p_next_node->op == SpvOpTypeStruct) {             p_parser->physical_pointer_struct_count++;             p_parser->physical_pointer_check[p_parser->physical_pointer_count] = p_type;             p_parser->physical_pointer_count++;@@ -2007,12 +1999,7 @@           }         } -        // Parse type-        SpvReflectPrvNode* p_next_node = FindNode(p_parser, p_node->type_id);-        if (IsNull(p_next_node)) {-          result = SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;-          SPV_REFLECT_ASSERT(false);-        } else if (!found_recursion) {+        if (!found_recursion) {           if (p_next_node->op == SpvOpTypeStruct) {             p_type->struct_type_description = FindType(p_module, p_next_node->result_id);           }@@ -2055,7 +2042,7 @@     SpvReflectTypeDescription* p_type = &(p_module->_internal->type_descriptions[i]);     p_type->id = (uint32_t)INVALID_VALUE;     p_type->op = (SpvOp)INVALID_VALUE;-    p_type->storage_class = (SpvStorageClass)INVALID_VALUE;+    p_type->storage_class = INVALID_VALUE;   }    size_t type_index = 0;@@ -2141,7 +2128,7 @@          (p_node->storage_class != SpvStorageClassUniformConstant))) {       continue;     }-    if ((p_node->decorations.set.value == INVALID_VALUE) || (p_node->decorations.binding.value == INVALID_VALUE)) {+    if ((p_node->decorations.set.value == (uint32_t)INVALID_VALUE) || (p_node->decorations.binding.value == (uint32_t)INVALID_VALUE)) {       continue;     } @@ -2176,7 +2163,7 @@          (p_node->storage_class != SpvStorageClassUniformConstant))) {       continue;     }-    if ((p_node->decorations.set.value == INVALID_VALUE) || (p_node->decorations.binding.value == INVALID_VALUE)) {+    if ((p_node->decorations.set.value == (uint32_t)INVALID_VALUE) || (p_node->decorations.binding.value == (uint32_t)INVALID_VALUE)) {       continue;     } @@ -2188,7 +2175,8 @@     // from the pointer so that we can use it to deduce deescriptor types.     SpvStorageClass pointer_storage_class = SpvStorageClassMax;     if (p_type->op == SpvOpTypePointer) {-      pointer_storage_class = p_type->storage_class;+      assert(p_type->storage_class != -1 && "Pointer types must have a valid storage class.");+      pointer_storage_class = (SpvStorageClass)p_type->storage_class;       // Find the type's node       SpvReflectPrvNode* p_type_node = FindNode(p_parser, p_type->id);       if (IsNull(p_type_node)) {@@ -2544,15 +2532,19 @@           }         }         if (!found_recursion) {-          uint32_t struct_id = FindType(p_module, p_member_type->id)->struct_type_description->id;-          p_parser->physical_pointer_structs[p_parser->physical_pointer_struct_count].struct_id = struct_id;-          p_parser->physical_pointer_structs[p_parser->physical_pointer_struct_count].p_var = p_member_var;-          p_parser->physical_pointer_struct_count++;+          SpvReflectTypeDescription* struct_type = FindType(p_module, p_member_type->id);+          // could be pointer directly to non-struct type here+          if (struct_type->struct_type_description) {+            uint32_t struct_id = struct_type->struct_type_description->id;+            p_parser->physical_pointer_structs[p_parser->physical_pointer_struct_count].struct_id = struct_id;+            p_parser->physical_pointer_structs[p_parser->physical_pointer_struct_count].p_var = p_member_var;+            p_parser->physical_pointer_struct_count++; -          p_parser->physical_pointer_check[p_parser->physical_pointer_count] = p_member_type;-          p_parser->physical_pointer_count++;-          if (p_parser->physical_pointer_count >= MAX_RECURSIVE_PHYSICAL_POINTER_CHECK) {-            return SPV_REFLECT_RESULT_ERROR_SPIRV_MAX_RECURSIVE_EXCEEDED;+            p_parser->physical_pointer_check[p_parser->physical_pointer_count] = p_member_type;+            p_parser->physical_pointer_count++;+            if (p_parser->physical_pointer_count >= MAX_RECURSIVE_PHYSICAL_POINTER_CHECK) {+              return SPV_REFLECT_RESULT_ERROR_SPIRV_MAX_RECURSIVE_EXCEEDED;+            }           }         } @@ -2723,7 +2715,13 @@         if (IsNull(p_member_type)) {           return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;         }-        assert(p_member_type->op == SpvOpTypeStruct);++        // If we found a struct, we need to fall through and get the size of it or else we grab the size here+        if (p_member_type->op != SpvOpTypeStruct) {+          // If we hit this, we are seeing a POD pointer and the size is fixed+          p_member_var->size = SPIRV_PHYSICAL_STORAGE_POINTER_SIZE;+          break;+        }         FALLTHROUGH;       } @@ -2815,19 +2813,11 @@   p_var->flags &= ~SPV_REFLECT_VARIABLE_FLAGS_UNUSED;    SpvOp op_type = p_var->type_description->op;-  switch (op_type) {-    default:-      break;--    case SpvOpTypeArray: {-    } break;--    case SpvOpTypeStruct: {-      for (uint32_t i = 0; i < p_var->member_count; ++i) {-        SpvReflectBlockVariable* p_member_var = &p_var->members[i];-        MarkSelfAndAllMemberVarsAsUsed(p_member_var);-      }-    } break;+  if (op_type == SpvOpTypeStruct) {+    for (uint32_t i = 0; i < p_var->member_count; ++i) {+      SpvReflectBlockVariable* p_member_var = &p_var->members[i];+      MarkSelfAndAllMemberVarsAsUsed(p_member_var);+    }   } } @@ -2944,7 +2934,10 @@         if (result != SPV_REFLECT_RESULT_SUCCESS) {           return result;         }-      } else if (!is_pointer_to_pointer) {+      } else if (is_pointer_to_pointer) {+        // Clear UNUSED flag, but only for the pointer+        p_member_var->flags &= ~SPV_REFLECT_VARIABLE_FLAGS_UNUSED;+      } else {         // Clear UNUSED flag for remaining variables         MarkSelfAndAllMemberVarsAsUsed(p_member_var);       }@@ -3382,7 +3375,7 @@ }  static bool HasByteAddressBufferOffset(SpvReflectPrvNode* p_node, SpvReflectDescriptorBinding* p_binding) {-  return IsNotNull(p_node) && IsNotNull(p_binding) && p_node->op == SpvOpAccessChain && p_node->word_count == 6 &&+  return IsNotNull(p_node) && IsNotNull(p_binding) && (p_node->op == SpvOpAccessChain || p_node->op == SpvOpInBoundsAccessChain) && p_node->word_count == 6 &&          (p_binding->user_type == SPV_REFLECT_USER_TYPE_BYTE_ADDRESS_BUFFER ||           p_binding->user_type == SPV_REFLECT_USER_TYPE_RW_BYTE_ADDRESS_BUFFER); }@@ -3437,7 +3430,7 @@     // All arithmetic ops takes 2 operands, assumption is the 2nd operand has the constant     UNCHECKED_READU32(p_parser, p_next_node->word_offset + 4, base_id);     uint32_t value = GetUint32Constant(p_parser, base_id);-    if (value == INVALID_VALUE) {+    if (value == (uint32_t)INVALID_VALUE) {       return not_found;     } @@ -3560,14 +3553,22 @@     }     used_acessed_count += p_parser->functions[j].accessed_variable_count;   }-  SpvReflectPrvAccessedVariable* p_used_accesses = NULL;-  if (used_acessed_count > 0) {-    p_used_accesses = (SpvReflectPrvAccessedVariable*)calloc(used_acessed_count, sizeof(SpvReflectPrvAccessedVariable));-    if (IsNull(p_used_accesses)) {-      SafeFree(p_called_functions);-      return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;-    }++  // If there are no used accessed, this is something like an empty function/early return+  // Basically there is going to be nothing to reflect, but everything after this expects |p_used_accesses| to be allocated with+  // real memory, see https://github.com/KhronosGroup/SPIRV-Reflect/issues/319+  if (used_acessed_count == 0) {+    SafeFree(p_called_functions);+    return SPV_REFLECT_RESULT_SUCCESS;   }++  SpvReflectPrvAccessedVariable* p_used_accesses =+      (SpvReflectPrvAccessedVariable*)calloc(used_acessed_count, sizeof(SpvReflectPrvAccessedVariable));+  if (IsNull(p_used_accesses)) {+    SafeFree(p_called_functions);+    return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;+  }+   used_acessed_count = 0;   for (size_t i = 0, j = 0; i < called_function_count; ++i) {     while (p_parser->functions[j].id != p_called_functions[i]) {@@ -4015,7 +4016,7 @@     }      p_push_constant->name = p_node->name;-    result = ParseDescriptorBlockVariableSizes(p_parser, p_module, true, false, false, p_push_constant);+    result = ParseDescriptorBlockVariableSizes(p_parser, p_module, true, false, true, p_push_constant);     if (result != SPV_REFLECT_RESULT_SUCCESS) {       return result;     }@@ -4034,6 +4035,63 @@   return SPV_REFLECT_RESULT_SUCCESS; } +static SpvReflectResult ParseSpecConstants(SpvReflectPrvParser* p_parser, SpvReflectShaderModule* p_module) {+  if (p_parser->spec_constant_count > 0) {+    p_module->spec_constants = (SpvReflectSpecializationConstant*)calloc(p_parser->spec_constant_count, sizeof(*p_module->spec_constants));+    if (IsNull(p_module->spec_constants)) {+      return SPV_REFLECT_RESULT_ERROR_ALLOC_FAILED;+    }+  } else {+    return SPV_REFLECT_RESULT_SUCCESS;+  }+  for (uint32_t i = 0; i < p_parser->node_count; ++i) {+    SpvReflectPrvNode* p_node = &(p_parser->nodes[i]);+    if (p_node->op == SpvOpDecorate) {+      uint32_t decoration = (uint32_t)INVALID_VALUE;+      CHECKED_READU32(p_parser, p_node->word_offset + 2, decoration);+      if (decoration == SpvDecorationSpecId) {+        SpvReflectSpecializationConstant* p_spec_constant = &(p_module->spec_constants[p_module->spec_constant_count]);+        CHECKED_READU32(p_parser, p_node->word_offset + 1, p_spec_constant->spirv_id);+        CHECKED_READU32(p_parser, p_node->word_offset + 3, p_spec_constant->constant_id);+        SpvReflectPrvNode* target_node = FindNode(p_parser, p_spec_constant->spirv_id);+        if (IsNotNull(target_node)) {+          // If being used for a OpSpecConstantComposite (ex. LocalSizeId), there won't be a name+          p_spec_constant->name = target_node->name;++          // During external specialization, Boolean values are true if non-zero and false if zero.+          static uint32_t true_value = 1;+          static uint32_t false_value = 0;+          switch (target_node->op) {+            default:+              // Unexpected, since Spec states:+              //   (SpecId) Apply only to a scalar specialization constant+              SPV_REFLECT_ASSERT(false);+              return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_INSTRUCTION;+            case SpvOpSpecConstantTrue:+              p_spec_constant->default_value_size = sizeof(uint32_t);+              p_spec_constant->default_value = &true_value;+              break;+            case SpvOpSpecConstantFalse:+              p_spec_constant->default_value_size = sizeof(uint32_t);+              p_spec_constant->default_value = &false_value;+              break;+            case SpvOpSpecConstant:+              p_spec_constant->default_value_size = (target_node->word_count - 3) * sizeof(uint32_t);+              p_spec_constant->default_value = p_parser->spirv_code + target_node->word_offset + 3;+              break;+          }+          p_spec_constant->type_description = FindType(p_module, target_node->result_type_id);+        } else {+          // Decoration target not found+          return SPV_REFLECT_RESULT_ERROR_SPIRV_INVALID_ID_REFERENCE;+        }+        p_module->spec_constant_count++;+      }+    }+  }+  return SPV_REFLECT_RESULT_SUCCESS;+}+ static int SortCompareDescriptorSet(const void* a, const void* b) {   const SpvReflectDescriptorSet* p_elem_a = (const SpvReflectDescriptorSet*)a;   const SpvReflectDescriptorSet* p_elem_b = (const SpvReflectDescriptorSet*)b;@@ -4286,7 +4344,7 @@     SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);   }   if (result == SPV_REFLECT_RESULT_SUCCESS) {-    result = ParseDecorations(&parser, p_module);+    result = ParseDecorations(&parser);     SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);   } @@ -4328,6 +4386,10 @@     SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);   }   if (result == SPV_REFLECT_RESULT_SUCCESS) {+    result = ParseSpecConstants(&parser, p_module);+    SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);+  }+  if (result == SPV_REFLECT_RESULT_SUCCESS) {     result = ParseEntryPoints(&parser, p_module);     SPV_REFLECT_ASSERT(result == SPV_REFLECT_RESULT_SUCCESS);   }@@ -5005,7 +5067,7 @@  const SpvReflectInterfaceVariable* spvReflectGetInputVariableByLocation(const SpvReflectShaderModule* p_module, uint32_t location,                                                                         SpvReflectResult* p_result) {-  if (location == INVALID_VALUE) {+  if (location == (uint32_t)INVALID_VALUE) {     if (IsNotNull(p_result)) {       *p_result = SPV_REFLECT_RESULT_ERROR_ELEMENT_NOT_FOUND;     }@@ -5035,7 +5097,7 @@ const SpvReflectInterfaceVariable* spvReflectGetEntryPointInputVariableByLocation(const SpvReflectShaderModule* p_module,                                                                                   const char* entry_point, uint32_t location,                                                                                   SpvReflectResult* p_result) {-  if (location == INVALID_VALUE) {+  if (location == (uint32_t)INVALID_VALUE) {     if (IsNotNull(p_result)) {       *p_result = SPV_REFLECT_RESULT_ERROR_ELEMENT_NOT_FOUND;     }@@ -5138,7 +5200,7 @@  const SpvReflectInterfaceVariable* spvReflectGetOutputVariableByLocation(const SpvReflectShaderModule* p_module, uint32_t location,                                                                          SpvReflectResult* p_result) {-  if (location == INVALID_VALUE) {+  if (location == (uint32_t)INVALID_VALUE) {     if (IsNotNull(p_result)) {       *p_result = SPV_REFLECT_RESULT_ERROR_ELEMENT_NOT_FOUND;     }@@ -5168,7 +5230,7 @@ const SpvReflectInterfaceVariable* spvReflectGetEntryPointOutputVariableByLocation(const SpvReflectShaderModule* p_module,                                                                                    const char* entry_point, uint32_t location,                                                                                    SpvReflectResult* p_result) {-  if (location == INVALID_VALUE) {+  if (location == (uint32_t)INVALID_VALUE) {     if (IsNotNull(p_result)) {       *p_result = SPV_REFLECT_RESULT_ERROR_ELEMENT_NOT_FOUND;     }@@ -5466,6 +5528,14 @@       return "Hero C";     case SpvSourceLanguageNZSL:       return "NZSL";+    case SpvSourceLanguageWGSL:+      return "WGSL";+    case SpvSourceLanguageSlang:+      return "Slang";+    case SpvSourceLanguageZig:+      return "Zig";+    case SpvSourceLanguageRust:+      return "Rust";     default:       break;   }
cbits/spirv_reflect.h view
@@ -325,6 +325,7 @@   SPV_REFLECT_GENERATOR_KHRONOS_SPIRV_TOOLS_LINKER            = 17,   SPV_REFLECT_GENERATOR_WINE_VKD3D_SHADER_COMPILER            = 18,   SPV_REFLECT_GENERATOR_CLAY_CLAY_SHADER_COMPILER             = 19,+  SPV_REFLECT_GENERATOR_SLANG_SHADER_COMPILER                 = 40, } SpvReflectGenerator;  enum {@@ -393,7 +394,9 @@   const char*                       type_name;   // Non-NULL if type is member of a struct   const char*                       struct_member_name;-  SpvStorageClass                   storage_class;++  // The storage class (SpvStorageClass) if the type, and -1 if it does not have a storage class.+  int                               storage_class;   SpvReflectTypeFlags               type_flags;   SpvReflectDecorationFlags         decoration_flags; @@ -429,7 +432,9 @@   SpvStorageClass                     storage_class;   const char*                         semantic;   SpvReflectDecorationFlags           decoration_flags;-  SpvBuiltIn                          built_in;++  // The builtin id (SpvBuiltIn) if the variable is a builtin, and -1 otherwise.+  int                                 built_in;   SpvReflectNumericTraits             numeric;   SpvReflectArrayTraits               array; @@ -519,7 +524,7 @@ } SpvReflectDescriptorSet;  typedef enum SpvReflectExecutionModeValue {-  SPV_REFLECT_EXECUTION_MODE_SPEC_CONSTANT = 0xFFFFFFFF // specialization constant+  SPV_REFLECT_EXECUTION_MODE_SPEC_CONSTANT = (int)0xFFFFFFFF // specialization constant } SpvReflectExecutionModeValue;  /*! @struct SpvReflectEntryPoint@@ -575,6 +580,21 @@   uint32_t spirv_id;   uint32_t constant_id;   const char* name;+  SpvReflectTypeDescription* type_description;++  // Size of the default value in bytes (always a multiple of 4).+  // Will be 4 for 8/16/32-bit constants and 8 for 64-bit constants.+  uint32_t default_value_size;++  // Pointer to the raw default value data.  +  // The interpretation of this data depends on type_description->op:  +  // - SpvOpSpecConstantTrue:  size = 4, data = uint32_t(1)  +  // - SpvOpSpecConstantFalse: size = 4, data = uint32_t(0)  +  // - SpvOpSpecConstant:      data contains the bit pattern of the default value  +  //   * The type will be a scalar integer or float.+  //   * Types 32 bits wide or smaller take one word.  +  //   * Larger types take multiple words, with low-order words appearing first.  +  void* default_value;   } SpvReflectSpecializationConstant;  /*! @struct SpvReflectShaderModule
lib/Data/SpirV/Reflect/FFI/Internal.chs view
@@ -15,11 +15,12 @@ import Data.Vector qualified as Vector import Data.Vector.Algorithms.Heap qualified as Heap import Data.Word (Word32)+import Data.IORef (IORef, newIORef, readIORef, modifyIORef') import Foreign.C.String (CString) import Foreign.C.Types (CULong) import Foreign.Marshal.Utils (maybePeek) import Foreign.Ptr (Ptr, castPtr, plusPtr, nullPtr)-import Foreign.Storable (peek)+import Foreign.Storable (peek, peekElemOff) import GHC.Ptr qualified as GHC  import Data.SpirV.Reflect.BlockVariable (BlockVariable)@@ -253,120 +254,212 @@   name <- inflateMaybe "" inflateText $     {#get SpvReflectSpecializationConstant->name #} sc +  type_description <-+    {#get SpvReflectSpecializationConstant->type_description #} sc >>=+      maybePeek inflateTypeDescription++  default_value <- do+    size <- inflateIntegral $+      {#get SpvReflectSpecializationConstant->default_value_size #} sc+    valuePtr <- {#get SpvReflectSpecializationConstant->default_value #} sc+    if valuePtr == nullPtr then+      pure Vector.empty+    else+      -- default_value_size is a byte count, always a multiple of 4; copy it out+      -- as 32-bit words (low-order word first) while the SPIR-V buffer is alive.+      Vector.generateM (size `div` 4) $+        peekElemOff (castPtr valuePtr)+   pure SpecializationConstant.SpecializationConstant {..}  {#pointer *SpvReflectBlockVariable as BlockVariablePtr #}  inflateBlockVariable :: BlockVariablePtr -> IO BlockVariable-inflateBlockVariable bv = do-  spirv_id <- fmap just . inflateIntegral $-    {#get SpvReflectBlockVariable->spirv_id #} bv+inflateBlockVariable bv0 = do+  cache <- newIORef []+  inflateBlockVariableCached cache bv0 -  name <- inflateMaybe "" inflateText $-    {#get SpvReflectBlockVariable->name #} bv+-- | Inflate a 'BlockVariable', breaking cycles the same way+-- 'inflateTypeDescriptionCached' does. A @buffer_reference@ /+-- @PhysicalStorageBuffer@ member points back into its own block, so a naive deep+-- copy of @members@ never terminates. We three-colour keyed by the+-- 'SpvReflectBlockVariable' pointer (as for 'TypeDescription'): the C side builds+-- the recursive block as a cyclic graph of shared pointers, so pointer identity+-- detects the back-edge, and — unlike @spirv_id@, which is 0 for every member —+-- it never conflates two distinct members (each carries its own @offset@/@name@).+-- A back-edge into a block still on the current path becomes a shallow node (no+-- members), so acyclic shaders are unchanged while recursive ones stay finite.+inflateBlockVariableCached+  :: IORef [(BlockVariablePtr, Maybe BlockVariable)]+  -> BlockVariablePtr+  -> IO BlockVariable+inflateBlockVariableCached cache bv = do+  colour <- fmap (lookup bv) (readIORef cache)+  case colour of+    Just (Just black) ->+      pure black+    _grey_or_white -> do+      spirv_id <- fmap just . inflateIntegral $+        {#get SpvReflectBlockVariable->spirv_id #} bv -  offset <- inflateIntegral $-    {#get SpvReflectBlockVariable->offset #} bv+      name <- inflateMaybe "" inflateText $+        {#get SpvReflectBlockVariable->name #} bv -  absolute_offset <- inflateIntegral $-    {#get SpvReflectBlockVariable->absolute_offset #} bv+      offset <- inflateIntegral $+        {#get SpvReflectBlockVariable->offset #} bv -  size <- inflateIntegral $-    {#get SpvReflectBlockVariable->size #} bv+      absolute_offset <- inflateIntegral $+        {#get SpvReflectBlockVariable->absolute_offset #} bv -  padded_size <- inflateIntegral $-    {#get SpvReflectBlockVariable->padded_size #} bv+      size <- inflateIntegral $+        {#get SpvReflectBlockVariable->size #} bv -  decorations <- inflateFlags32 $-    {#get SpvReflectBlockVariable->decoration_flags #} bv+      padded_size <- inflateIntegral $+        {#get SpvReflectBlockVariable->padded_size #} bv -  numeric <--    inflateNumericTraits-      bv-      {#offsetof SpvReflectBlockVariable->numeric #}+      decorations <- inflateFlags32 $+        {#get SpvReflectBlockVariable->decoration_flags #} bv -  array <--    inflateArrayTraits-      bv-      {#offsetof SpvReflectBlockVariable->array #}+      numeric <-+        inflateNumericTraits+          bv+          {#offsetof SpvReflectBlockVariable->numeric #} -  members <--    inflateVector-      ({#get SpvReflectBlockVariable->member_count #} bv)-      ({#get SpvReflectBlockVariable->members #} bv)-      {#sizeof SpvReflectBlockVariable #}-      inflateBlockVariable+      array <-+        inflateArrayTraits+          bv+          {#offsetof SpvReflectBlockVariable->array #} -  type_description <--    {#get SpvReflectBlockVariable->type_description #} bv >>=-      maybePeek inflateTypeDescription+      word_offset <-+        fmap (Just . BlockVariable.WordOffset) . inflateIntegral $+          {#get SpvReflectBlockVariable->word_offset.offset #} bv -  word_offset <--    fmap (Just . BlockVariable.WordOffset) . inflateIntegral $-      {#get SpvReflectBlockVariable->word_offset.offset #} bv+      case colour of+        Just Nothing ->+          -- grey: a back-edge into a block still being inflated; cut the cycle.+          pure BlockVariable.BlockVariable+            {spirv_id, members=Vector.empty, type_description=Nothing, ..}+        _white -> do+          modifyIORef' cache ((bv, Nothing) :) -- mark grey before descending -  pure BlockVariable.BlockVariable{..}+          members <-+            inflateVector+              ({#get SpvReflectBlockVariable->member_count #} bv)+              ({#get SpvReflectBlockVariable->members #} bv)+              {#sizeof SpvReflectBlockVariable #}+              (inflateBlockVariableCached cache) +          type_description <-+            {#get SpvReflectBlockVariable->type_description #} bv >>=+              maybePeek inflateTypeDescription++          let result = BlockVariable.BlockVariable{spirv_id, ..}+          modifyIORef' cache ((bv, Just result) :) -- mark black, memoise+          pure result+ {#pointer *SpvReflectTypeDescription as TypeDescriptionPtr #}  inflateTypeDescription :: TypeDescriptionPtr -> IO TypeDescription-inflateTypeDescription td = do-  id_ <- fmap just . inflateIntegral $-    {#get SpvReflectTypeDescription->id #} td+inflateTypeDescription td0 = do+  cache <- newIORef []+  inflateTypeDescriptionCached cache td0 -  op <- fmap (just . SpirV.Op) . inflateIntegral $-    {#get SpvReflectTypeDescription->op #} td+-- | Inflate a 'TypeDescription', breaking self-referential cycles.+--+-- Mutually recursive @buffer_reference@ / @PhysicalStorageBuffer@ pointer types+-- form a cyclic graph (a struct whose members point back at it through+-- 'struct_type_description' / 'members'). The C side keeps types in a flat list+-- linked by reference, but here we copy the graph into a tree, so a naive deep+-- copy never terminates.+--+-- We walk the graph as a DFS with three-colouring, keyed by the+-- 'SpvReflectTypeDescription' pointer (identity is by pointer, not @id@: the C+-- side reuses one @id@ across a canonical type and its copied references):+--+--   * /white/ (unseen): expand fully, recursing into children.+--   * /grey/ (on the current path): a genuine back-edge — emit a shallow node+--     (scalar fields only, no children) to cut the cycle.+--   * /black/ (already finished): return the cached value, so a type referenced+--     more than once is built only once and shared.+--+-- Acyclic shaders never hit a grey node, and black hits return the same fully+-- expanded value, so their result is byte-for-byte unchanged while recursive+-- shaders stay finite (each distinct node is inflated at most once).+inflateTypeDescriptionCached+  :: IORef [(TypeDescriptionPtr, Maybe TypeDescription)]+  -> TypeDescriptionPtr+  -> IO TypeDescription+inflateTypeDescriptionCached cache td = do+  colour <- fmap (lookup td) (readIORef cache)+  case colour of+    Just (Just black) ->+      pure black+    _grey_or_white -> do+      id_ <- fmap just . inflateIntegral $+        {#get SpvReflectTypeDescription->id #} td -  type_name <- inflateMaybe "" inflateText $-    {#get SpvReflectTypeDescription->type_name #} td+      op <- fmap (just . SpirV.Op) . inflateIntegral $+        {#get SpvReflectTypeDescription->op #} td -  struct_member_name <- inflateMaybe "" inflateText $-    {#get SpvReflectTypeDescription->struct_member_name #} td+      type_name <- inflateMaybe "" inflateText $+        {#get SpvReflectTypeDescription->type_name #} td -  storage_class <- fmap SpirV.StorageClass . inflateIntegral $-    {#get SpvReflectTypeDescription->storage_class #} td+      struct_member_name <- inflateMaybe "" inflateText $+        {#get SpvReflectTypeDescription->struct_member_name #} td -  type_flags <- inflateFlags32 $-    {#get SpvReflectTypeDescription->type_flags #} td+      storage_class <- fmap SpirV.StorageClass . inflateIntegral $+        {#get SpvReflectTypeDescription->storage_class #} td -  numeric <--    inflateNumericTraits-      td-      {#offsetof SpvReflectTypeDescription->traits.numeric #}+      type_flags <- inflateFlags32 $+        {#get SpvReflectTypeDescription->type_flags #} td -  image <--    inflateImageTraits-      td-      {#offsetof SpvReflectTypeDescription->traits.image #}+      numeric <-+        inflateNumericTraits+          td+          {#offsetof SpvReflectTypeDescription->traits.numeric #} -  array <--    inflateArrayTraits-      td-      {#offsetof SpvReflectTypeDescription->traits.array #}+      image <-+        inflateImageTraits+          td+          {#offsetof SpvReflectTypeDescription->traits.image #} -  let-    traits' = Just TypeDescription.Traits{..}-    traits = if traits' == Just TypeDescription.emptyTraits then Nothing else traits'+      array <-+        inflateArrayTraits+          td+          {#offsetof SpvReflectTypeDescription->traits.array #} -  struct_type_description <--    {#get SpvReflectTypeDescription->struct_type_description #} td >>=-      maybePeek inflateTypeDescription+      let+        traits' = Just TypeDescription.Traits{..}+        traits = if traits' == Just TypeDescription.emptyTraits then Nothing else traits' -  copied <--    fmap (\n -> if n > 0 then Just n else Nothing) . inflateIntegral $-      {#get SpvReflectTypeDescription->copied #} td+      copied <-+        fmap (\n -> if n > 0 then Just n else Nothing) . inflateIntegral $+          {#get SpvReflectTypeDescription->copied #} td -  -- XXX: deprecated, but struct_type_description isn't always available for structs-  -- BUG: trips up on recusive types-  members <--    inflateVector-      ({#get SpvReflectTypeDescription->member_count #} td)-      ({#get SpvReflectTypeDescription->members #} td)-      {#sizeof SpvReflectTypeDescription #}-      inflateTypeDescription+      case colour of+        Just Nothing -> do+          -- grey: a back-edge into a type still being inflated; cut the cycle.+          pure TypeDescription.TypeDescription+            {id=id_, struct_type_description=Nothing, members=Vector.empty, ..}+        _white -> do+          modifyIORef' cache ((td, Nothing) :) -- mark grey before descending -  pure TypeDescription.TypeDescription{id=id_, ..}+          struct_type_description <-+            {#get SpvReflectTypeDescription->struct_type_description #} td >>=+              maybePeek (inflateTypeDescriptionCached cache) +          -- XXX: deprecated, but struct_type_description isn't always available for structs+          members <-+            inflateVector+              ({#get SpvReflectTypeDescription->member_count #} td)+              ({#get SpvReflectTypeDescription->members #} td)+              {#sizeof SpvReflectTypeDescription #}+              (inflateTypeDescriptionCached cache)++          let result = TypeDescription.TypeDescription{id=id_, ..}+          modifyIORef' cache ((td, Just result) :) -- mark black, memoise+          pure result+ {#pointer *SpvReflectDescriptorSet as DescriptorSetPtr #}  inflateDescriptorSet :: DescriptorSetPtr -> IO DescriptorSet@@ -409,7 +502,9 @@   decoration_flags <- inflateFlags32 $     {#get SpvReflectInterfaceVariable->decoration_flags #} iv -  built_in <- inflateMaybe (SpirV.BuiltIn maxBound) (fmap SpirV.BuiltIn . inflateIntegral) $+  -- SPIRV-Reflect's invalid sentinel is 0xFFFFFFFF, which decodes to BuiltIn (-1)+  -- a non-built-in variable becomes Nothing.+  built_in <- inflateMaybe (SpirV.BuiltIn (-1)) (fmap SpirV.BuiltIn . inflateIntegral) $     {#get SpvReflectInterfaceVariable->built_in #} iv    numeric <-
spirv-reflect-ffi.cabal view
@@ -1,11 +1,11 @@ cabal-version: 1.12 --- This file has been generated from package.yaml by hpack version 0.36.0.+-- This file has been generated from package.yaml by hpack version 0.39.1. -- -- see: https://github.com/sol/hpack  name:           spirv-reflect-ffi-version:        0.3+version:        0.4 synopsis:       C-library loader for spirv-reflect tool. category:       Graphics author:         IC Rainbow@@ -58,10 +58,10 @@   build-tools:       c2hs   build-depends:-      base >=4.7 && <5+      base >=4.16 && <5     , bytestring-    , spirv-enum ==0.1.*-    , spirv-reflect-types ==0.3.*+    , spirv-enum >=0.1 && <2+    , spirv-reflect-types ==0.4.*     , text     , vector     , vector-algorithms@@ -90,7 +90,7 @@       StrictData       TypeApplications   build-depends:-      base >=4.7 && <5+      base >=4.16 && <5     , directory     , filepath     , spirv-reflect-ffi