1 /*
2 ** Copyright (c) 2014-2020 The Khronos Group Inc.
3 **
4 ** Permission is hereby granted, free of charge, to any person obtaining a copy
5 ** of this software and/or associated documentation files (the "Materials"),
6 ** to deal in the Materials without restriction, including without limitation
7 ** the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 ** and/or sell copies of the Materials, and to permit persons to whom the
9 ** Materials are furnished to do so, subject to the following conditions:
10 **
11 ** The above copyright notice and this permission notice shall be included in
12 ** all copies or substantial portions of the Materials.
13 **
14 ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15 ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16 ** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
17 **
18 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 ** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 ** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
24 ** IN THE MATERIALS.
25 */
26 
27 /*
28 ** This header is automatically generated by the same tool that creates
29 ** the Binary Section of the SPIR-V specification.
30 */
31 
32 /*
33 ** Enumeration tokens for SPIR-V, in various styles:
34 **   C, C++, C++11, JSON, Lua, Python, C#, D
35 **
36 ** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
37 ** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
38 ** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
39 ** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
40 ** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
41 ** - C# will use enum classes in the Specification class located in the "Spv" namespace,
42 **     e.g.: Spv.Specification.SourceLanguage.GLSL
43 ** - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
44 **
45 ** Some tokens act like mask values, which can be OR'd together,
46 ** while others are mutually exclusive.  The mask-like ones have
47 ** "Mask" in their name, and a parallel enum that has the shift
48 ** amount (1 << x) for each corresponding enumerant.
49 */
50 
51 #ifndef spirv_H
52 #define spirv_H
53 
54 typedef unsigned int SpvId;
55 
56 #define SPV_VERSION 0x10500
57 #define SPV_REVISION 4
58 
59 static const unsigned int SpvMagicNumber = 0x07230203;
60 static const unsigned int SpvVersion = 0x00010500;
61 static const unsigned int SpvRevision = 4;
62 static const unsigned int SpvOpCodeMask = 0xffff;
63 static const unsigned int SpvWordCountShift = 16;
64 
65 typedef enum SpvSourceLanguage_ {
66     SpvSourceLanguageUnknown = 0,
67     SpvSourceLanguageESSL = 1,
68     SpvSourceLanguageGLSL = 2,
69     SpvSourceLanguageOpenCL_C = 3,
70     SpvSourceLanguageOpenCL_CPP = 4,
71     SpvSourceLanguageHLSL = 5,
72     SpvSourceLanguageMax = 0x7fffffff,
73 } SpvSourceLanguage;
74 
75 typedef enum SpvExecutionModel_ {
76     SpvExecutionModelVertex = 0,
77     SpvExecutionModelTessellationControl = 1,
78     SpvExecutionModelTessellationEvaluation = 2,
79     SpvExecutionModelGeometry = 3,
80     SpvExecutionModelFragment = 4,
81     SpvExecutionModelGLCompute = 5,
82     SpvExecutionModelKernel = 6,
83     SpvExecutionModelTaskNV = 5267,
84     SpvExecutionModelMeshNV = 5268,
85     SpvExecutionModelRayGenerationKHR = 5313,
86     SpvExecutionModelRayGenerationNV = 5313,
87     SpvExecutionModelIntersectionKHR = 5314,
88     SpvExecutionModelIntersectionNV = 5314,
89     SpvExecutionModelAnyHitKHR = 5315,
90     SpvExecutionModelAnyHitNV = 5315,
91     SpvExecutionModelClosestHitKHR = 5316,
92     SpvExecutionModelClosestHitNV = 5316,
93     SpvExecutionModelMissKHR = 5317,
94     SpvExecutionModelMissNV = 5317,
95     SpvExecutionModelCallableKHR = 5318,
96     SpvExecutionModelCallableNV = 5318,
97     SpvExecutionModelMax = 0x7fffffff,
98 } SpvExecutionModel;
99 
100 typedef enum SpvAddressingModel_ {
101     SpvAddressingModelLogical = 0,
102     SpvAddressingModelPhysical32 = 1,
103     SpvAddressingModelPhysical64 = 2,
104     SpvAddressingModelPhysicalStorageBuffer64 = 5348,
105     SpvAddressingModelPhysicalStorageBuffer64EXT = 5348,
106     SpvAddressingModelMax = 0x7fffffff,
107 } SpvAddressingModel;
108 
109 typedef enum SpvMemoryModel_ {
110     SpvMemoryModelSimple = 0,
111     SpvMemoryModelGLSL450 = 1,
112     SpvMemoryModelOpenCL = 2,
113     SpvMemoryModelVulkan = 3,
114     SpvMemoryModelVulkanKHR = 3,
115     SpvMemoryModelMax = 0x7fffffff,
116 } SpvMemoryModel;
117 
118 typedef enum SpvExecutionMode_ {
119     SpvExecutionModeInvocations = 0,
120     SpvExecutionModeSpacingEqual = 1,
121     SpvExecutionModeSpacingFractionalEven = 2,
122     SpvExecutionModeSpacingFractionalOdd = 3,
123     SpvExecutionModeVertexOrderCw = 4,
124     SpvExecutionModeVertexOrderCcw = 5,
125     SpvExecutionModePixelCenterInteger = 6,
126     SpvExecutionModeOriginUpperLeft = 7,
127     SpvExecutionModeOriginLowerLeft = 8,
128     SpvExecutionModeEarlyFragmentTests = 9,
129     SpvExecutionModePointMode = 10,
130     SpvExecutionModeXfb = 11,
131     SpvExecutionModeDepthReplacing = 12,
132     SpvExecutionModeDepthGreater = 14,
133     SpvExecutionModeDepthLess = 15,
134     SpvExecutionModeDepthUnchanged = 16,
135     SpvExecutionModeLocalSize = 17,
136     SpvExecutionModeLocalSizeHint = 18,
137     SpvExecutionModeInputPoints = 19,
138     SpvExecutionModeInputLines = 20,
139     SpvExecutionModeInputLinesAdjacency = 21,
140     SpvExecutionModeTriangles = 22,
141     SpvExecutionModeInputTrianglesAdjacency = 23,
142     SpvExecutionModeQuads = 24,
143     SpvExecutionModeIsolines = 25,
144     SpvExecutionModeOutputVertices = 26,
145     SpvExecutionModeOutputPoints = 27,
146     SpvExecutionModeOutputLineStrip = 28,
147     SpvExecutionModeOutputTriangleStrip = 29,
148     SpvExecutionModeVecTypeHint = 30,
149     SpvExecutionModeContractionOff = 31,
150     SpvExecutionModeInitializer = 33,
151     SpvExecutionModeFinalizer = 34,
152     SpvExecutionModeSubgroupSize = 35,
153     SpvExecutionModeSubgroupsPerWorkgroup = 36,
154     SpvExecutionModeSubgroupsPerWorkgroupId = 37,
155     SpvExecutionModeLocalSizeId = 38,
156     SpvExecutionModeLocalSizeHintId = 39,
157     SpvExecutionModePostDepthCoverage = 4446,
158     SpvExecutionModeDenormPreserve = 4459,
159     SpvExecutionModeDenormFlushToZero = 4460,
160     SpvExecutionModeSignedZeroInfNanPreserve = 4461,
161     SpvExecutionModeRoundingModeRTE = 4462,
162     SpvExecutionModeRoundingModeRTZ = 4463,
163     SpvExecutionModeStencilRefReplacingEXT = 5027,
164     SpvExecutionModeOutputLinesNV = 5269,
165     SpvExecutionModeOutputPrimitivesNV = 5270,
166     SpvExecutionModeDerivativeGroupQuadsNV = 5289,
167     SpvExecutionModeDerivativeGroupLinearNV = 5290,
168     SpvExecutionModeOutputTrianglesNV = 5298,
169     SpvExecutionModePixelInterlockOrderedEXT = 5366,
170     SpvExecutionModePixelInterlockUnorderedEXT = 5367,
171     SpvExecutionModeSampleInterlockOrderedEXT = 5368,
172     SpvExecutionModeSampleInterlockUnorderedEXT = 5369,
173     SpvExecutionModeShadingRateInterlockOrderedEXT = 5370,
174     SpvExecutionModeShadingRateInterlockUnorderedEXT = 5371,
175     SpvExecutionModeMaxWorkgroupSizeINTEL = 5893,
176     SpvExecutionModeMaxWorkDimINTEL = 5894,
177     SpvExecutionModeNoGlobalOffsetINTEL = 5895,
178     SpvExecutionModeNumSIMDWorkitemsINTEL = 5896,
179     SpvExecutionModeMax = 0x7fffffff,
180 } SpvExecutionMode;
181 
182 typedef enum SpvStorageClass_ {
183     SpvStorageClassUniformConstant = 0,
184     SpvStorageClassInput = 1,
185     SpvStorageClassUniform = 2,
186     SpvStorageClassOutput = 3,
187     SpvStorageClassWorkgroup = 4,
188     SpvStorageClassCrossWorkgroup = 5,
189     SpvStorageClassPrivate = 6,
190     SpvStorageClassFunction = 7,
191     SpvStorageClassGeneric = 8,
192     SpvStorageClassPushConstant = 9,
193     SpvStorageClassAtomicCounter = 10,
194     SpvStorageClassImage = 11,
195     SpvStorageClassStorageBuffer = 12,
196     SpvStorageClassCallableDataKHR = 5328,
197     SpvStorageClassCallableDataNV = 5328,
198     SpvStorageClassIncomingCallableDataKHR = 5329,
199     SpvStorageClassIncomingCallableDataNV = 5329,
200     SpvStorageClassRayPayloadKHR = 5338,
201     SpvStorageClassRayPayloadNV = 5338,
202     SpvStorageClassHitAttributeKHR = 5339,
203     SpvStorageClassHitAttributeNV = 5339,
204     SpvStorageClassIncomingRayPayloadKHR = 5342,
205     SpvStorageClassIncomingRayPayloadNV = 5342,
206     SpvStorageClassShaderRecordBufferKHR = 5343,
207     SpvStorageClassShaderRecordBufferNV = 5343,
208     SpvStorageClassPhysicalStorageBuffer = 5349,
209     SpvStorageClassPhysicalStorageBufferEXT = 5349,
210     SpvStorageClassCodeSectionINTEL = 5605,
211     SpvStorageClassMax = 0x7fffffff,
212 } SpvStorageClass;
213 
214 typedef enum SpvDim_ {
215     SpvDim1D = 0,
216     SpvDim2D = 1,
217     SpvDim3D = 2,
218     SpvDimCube = 3,
219     SpvDimRect = 4,
220     SpvDimBuffer = 5,
221     SpvDimSubpassData = 6,
222     SpvDimMax = 0x7fffffff,
223 } SpvDim;
224 
225 typedef enum SpvSamplerAddressingMode_ {
226     SpvSamplerAddressingModeNone = 0,
227     SpvSamplerAddressingModeClampToEdge = 1,
228     SpvSamplerAddressingModeClamp = 2,
229     SpvSamplerAddressingModeRepeat = 3,
230     SpvSamplerAddressingModeRepeatMirrored = 4,
231     SpvSamplerAddressingModeMax = 0x7fffffff,
232 } SpvSamplerAddressingMode;
233 
234 typedef enum SpvSamplerFilterMode_ {
235     SpvSamplerFilterModeNearest = 0,
236     SpvSamplerFilterModeLinear = 1,
237     SpvSamplerFilterModeMax = 0x7fffffff,
238 } SpvSamplerFilterMode;
239 
240 typedef enum SpvImageFormat_ {
241     SpvImageFormatUnknown = 0,
242     SpvImageFormatRgba32f = 1,
243     SpvImageFormatRgba16f = 2,
244     SpvImageFormatR32f = 3,
245     SpvImageFormatRgba8 = 4,
246     SpvImageFormatRgba8Snorm = 5,
247     SpvImageFormatRg32f = 6,
248     SpvImageFormatRg16f = 7,
249     SpvImageFormatR11fG11fB10f = 8,
250     SpvImageFormatR16f = 9,
251     SpvImageFormatRgba16 = 10,
252     SpvImageFormatRgb10A2 = 11,
253     SpvImageFormatRg16 = 12,
254     SpvImageFormatRg8 = 13,
255     SpvImageFormatR16 = 14,
256     SpvImageFormatR8 = 15,
257     SpvImageFormatRgba16Snorm = 16,
258     SpvImageFormatRg16Snorm = 17,
259     SpvImageFormatRg8Snorm = 18,
260     SpvImageFormatR16Snorm = 19,
261     SpvImageFormatR8Snorm = 20,
262     SpvImageFormatRgba32i = 21,
263     SpvImageFormatRgba16i = 22,
264     SpvImageFormatRgba8i = 23,
265     SpvImageFormatR32i = 24,
266     SpvImageFormatRg32i = 25,
267     SpvImageFormatRg16i = 26,
268     SpvImageFormatRg8i = 27,
269     SpvImageFormatR16i = 28,
270     SpvImageFormatR8i = 29,
271     SpvImageFormatRgba32ui = 30,
272     SpvImageFormatRgba16ui = 31,
273     SpvImageFormatRgba8ui = 32,
274     SpvImageFormatR32ui = 33,
275     SpvImageFormatRgb10a2ui = 34,
276     SpvImageFormatRg32ui = 35,
277     SpvImageFormatRg16ui = 36,
278     SpvImageFormatRg8ui = 37,
279     SpvImageFormatR16ui = 38,
280     SpvImageFormatR8ui = 39,
281     SpvImageFormatR64ui = 40,
282     SpvImageFormatR64i = 41,
283     SpvImageFormatMax = 0x7fffffff,
284 } SpvImageFormat;
285 
286 typedef enum SpvImageChannelOrder_ {
287     SpvImageChannelOrderR = 0,
288     SpvImageChannelOrderA = 1,
289     SpvImageChannelOrderRG = 2,
290     SpvImageChannelOrderRA = 3,
291     SpvImageChannelOrderRGB = 4,
292     SpvImageChannelOrderRGBA = 5,
293     SpvImageChannelOrderBGRA = 6,
294     SpvImageChannelOrderARGB = 7,
295     SpvImageChannelOrderIntensity = 8,
296     SpvImageChannelOrderLuminance = 9,
297     SpvImageChannelOrderRx = 10,
298     SpvImageChannelOrderRGx = 11,
299     SpvImageChannelOrderRGBx = 12,
300     SpvImageChannelOrderDepth = 13,
301     SpvImageChannelOrderDepthStencil = 14,
302     SpvImageChannelOrdersRGB = 15,
303     SpvImageChannelOrdersRGBx = 16,
304     SpvImageChannelOrdersRGBA = 17,
305     SpvImageChannelOrdersBGRA = 18,
306     SpvImageChannelOrderABGR = 19,
307     SpvImageChannelOrderMax = 0x7fffffff,
308 } SpvImageChannelOrder;
309 
310 typedef enum SpvImageChannelDataType_ {
311     SpvImageChannelDataTypeSnormInt8 = 0,
312     SpvImageChannelDataTypeSnormInt16 = 1,
313     SpvImageChannelDataTypeUnormInt8 = 2,
314     SpvImageChannelDataTypeUnormInt16 = 3,
315     SpvImageChannelDataTypeUnormShort565 = 4,
316     SpvImageChannelDataTypeUnormShort555 = 5,
317     SpvImageChannelDataTypeUnormInt101010 = 6,
318     SpvImageChannelDataTypeSignedInt8 = 7,
319     SpvImageChannelDataTypeSignedInt16 = 8,
320     SpvImageChannelDataTypeSignedInt32 = 9,
321     SpvImageChannelDataTypeUnsignedInt8 = 10,
322     SpvImageChannelDataTypeUnsignedInt16 = 11,
323     SpvImageChannelDataTypeUnsignedInt32 = 12,
324     SpvImageChannelDataTypeHalfFloat = 13,
325     SpvImageChannelDataTypeFloat = 14,
326     SpvImageChannelDataTypeUnormInt24 = 15,
327     SpvImageChannelDataTypeUnormInt101010_2 = 16,
328     SpvImageChannelDataTypeMax = 0x7fffffff,
329 } SpvImageChannelDataType;
330 
331 typedef enum SpvImageOperandsShift_ {
332     SpvImageOperandsBiasShift = 0,
333     SpvImageOperandsLodShift = 1,
334     SpvImageOperandsGradShift = 2,
335     SpvImageOperandsConstOffsetShift = 3,
336     SpvImageOperandsOffsetShift = 4,
337     SpvImageOperandsConstOffsetsShift = 5,
338     SpvImageOperandsSampleShift = 6,
339     SpvImageOperandsMinLodShift = 7,
340     SpvImageOperandsMakeTexelAvailableShift = 8,
341     SpvImageOperandsMakeTexelAvailableKHRShift = 8,
342     SpvImageOperandsMakeTexelVisibleShift = 9,
343     SpvImageOperandsMakeTexelVisibleKHRShift = 9,
344     SpvImageOperandsNonPrivateTexelShift = 10,
345     SpvImageOperandsNonPrivateTexelKHRShift = 10,
346     SpvImageOperandsVolatileTexelShift = 11,
347     SpvImageOperandsVolatileTexelKHRShift = 11,
348     SpvImageOperandsSignExtendShift = 12,
349     SpvImageOperandsZeroExtendShift = 13,
350     SpvImageOperandsMax = 0x7fffffff,
351 } SpvImageOperandsShift;
352 
353 typedef enum SpvImageOperandsMask_ {
354     SpvImageOperandsMaskNone = 0,
355     SpvImageOperandsBiasMask = 0x00000001,
356     SpvImageOperandsLodMask = 0x00000002,
357     SpvImageOperandsGradMask = 0x00000004,
358     SpvImageOperandsConstOffsetMask = 0x00000008,
359     SpvImageOperandsOffsetMask = 0x00000010,
360     SpvImageOperandsConstOffsetsMask = 0x00000020,
361     SpvImageOperandsSampleMask = 0x00000040,
362     SpvImageOperandsMinLodMask = 0x00000080,
363     SpvImageOperandsMakeTexelAvailableMask = 0x00000100,
364     SpvImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
365     SpvImageOperandsMakeTexelVisibleMask = 0x00000200,
366     SpvImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
367     SpvImageOperandsNonPrivateTexelMask = 0x00000400,
368     SpvImageOperandsNonPrivateTexelKHRMask = 0x00000400,
369     SpvImageOperandsVolatileTexelMask = 0x00000800,
370     SpvImageOperandsVolatileTexelKHRMask = 0x00000800,
371     SpvImageOperandsSignExtendMask = 0x00001000,
372     SpvImageOperandsZeroExtendMask = 0x00002000,
373 } SpvImageOperandsMask;
374 
375 typedef enum SpvFPFastMathModeShift_ {
376     SpvFPFastMathModeNotNaNShift = 0,
377     SpvFPFastMathModeNotInfShift = 1,
378     SpvFPFastMathModeNSZShift = 2,
379     SpvFPFastMathModeAllowRecipShift = 3,
380     SpvFPFastMathModeFastShift = 4,
381     SpvFPFastMathModeMax = 0x7fffffff,
382 } SpvFPFastMathModeShift;
383 
384 typedef enum SpvFPFastMathModeMask_ {
385     SpvFPFastMathModeMaskNone = 0,
386     SpvFPFastMathModeNotNaNMask = 0x00000001,
387     SpvFPFastMathModeNotInfMask = 0x00000002,
388     SpvFPFastMathModeNSZMask = 0x00000004,
389     SpvFPFastMathModeAllowRecipMask = 0x00000008,
390     SpvFPFastMathModeFastMask = 0x00000010,
391 } SpvFPFastMathModeMask;
392 
393 typedef enum SpvFPRoundingMode_ {
394     SpvFPRoundingModeRTE = 0,
395     SpvFPRoundingModeRTZ = 1,
396     SpvFPRoundingModeRTP = 2,
397     SpvFPRoundingModeRTN = 3,
398     SpvFPRoundingModeMax = 0x7fffffff,
399 } SpvFPRoundingMode;
400 
401 typedef enum SpvLinkageType_ {
402     SpvLinkageTypeExport = 0,
403     SpvLinkageTypeImport = 1,
404     SpvLinkageTypeMax = 0x7fffffff,
405 } SpvLinkageType;
406 
407 typedef enum SpvAccessQualifier_ {
408     SpvAccessQualifierReadOnly = 0,
409     SpvAccessQualifierWriteOnly = 1,
410     SpvAccessQualifierReadWrite = 2,
411     SpvAccessQualifierMax = 0x7fffffff,
412 } SpvAccessQualifier;
413 
414 typedef enum SpvFunctionParameterAttribute_ {
415     SpvFunctionParameterAttributeZext = 0,
416     SpvFunctionParameterAttributeSext = 1,
417     SpvFunctionParameterAttributeByVal = 2,
418     SpvFunctionParameterAttributeSret = 3,
419     SpvFunctionParameterAttributeNoAlias = 4,
420     SpvFunctionParameterAttributeNoCapture = 5,
421     SpvFunctionParameterAttributeNoWrite = 6,
422     SpvFunctionParameterAttributeNoReadWrite = 7,
423     SpvFunctionParameterAttributeMax = 0x7fffffff,
424 } SpvFunctionParameterAttribute;
425 
426 typedef enum SpvDecoration_ {
427     SpvDecorationRelaxedPrecision = 0,
428     SpvDecorationSpecId = 1,
429     SpvDecorationBlock = 2,
430     SpvDecorationBufferBlock = 3,
431     SpvDecorationRowMajor = 4,
432     SpvDecorationColMajor = 5,
433     SpvDecorationArrayStride = 6,
434     SpvDecorationMatrixStride = 7,
435     SpvDecorationGLSLShared = 8,
436     SpvDecorationGLSLPacked = 9,
437     SpvDecorationCPacked = 10,
438     SpvDecorationBuiltIn = 11,
439     SpvDecorationNoPerspective = 13,
440     SpvDecorationFlat = 14,
441     SpvDecorationPatch = 15,
442     SpvDecorationCentroid = 16,
443     SpvDecorationSample = 17,
444     SpvDecorationInvariant = 18,
445     SpvDecorationRestrict = 19,
446     SpvDecorationAliased = 20,
447     SpvDecorationVolatile = 21,
448     SpvDecorationConstant = 22,
449     SpvDecorationCoherent = 23,
450     SpvDecorationNonWritable = 24,
451     SpvDecorationNonReadable = 25,
452     SpvDecorationUniform = 26,
453     SpvDecorationUniformId = 27,
454     SpvDecorationSaturatedConversion = 28,
455     SpvDecorationStream = 29,
456     SpvDecorationLocation = 30,
457     SpvDecorationComponent = 31,
458     SpvDecorationIndex = 32,
459     SpvDecorationBinding = 33,
460     SpvDecorationDescriptorSet = 34,
461     SpvDecorationOffset = 35,
462     SpvDecorationXfbBuffer = 36,
463     SpvDecorationXfbStride = 37,
464     SpvDecorationFuncParamAttr = 38,
465     SpvDecorationFPRoundingMode = 39,
466     SpvDecorationFPFastMathMode = 40,
467     SpvDecorationLinkageAttributes = 41,
468     SpvDecorationNoContraction = 42,
469     SpvDecorationInputAttachmentIndex = 43,
470     SpvDecorationAlignment = 44,
471     SpvDecorationMaxByteOffset = 45,
472     SpvDecorationAlignmentId = 46,
473     SpvDecorationMaxByteOffsetId = 47,
474     SpvDecorationNoSignedWrap = 4469,
475     SpvDecorationNoUnsignedWrap = 4470,
476     SpvDecorationExplicitInterpAMD = 4999,
477     SpvDecorationOverrideCoverageNV = 5248,
478     SpvDecorationPassthroughNV = 5250,
479     SpvDecorationViewportRelativeNV = 5252,
480     SpvDecorationSecondaryViewportRelativeNV = 5256,
481     SpvDecorationPerPrimitiveNV = 5271,
482     SpvDecorationPerViewNV = 5272,
483     SpvDecorationPerTaskNV = 5273,
484     SpvDecorationPerVertexNV = 5285,
485     SpvDecorationNonUniform = 5300,
486     SpvDecorationNonUniformEXT = 5300,
487     SpvDecorationRestrictPointer = 5355,
488     SpvDecorationRestrictPointerEXT = 5355,
489     SpvDecorationAliasedPointer = 5356,
490     SpvDecorationAliasedPointerEXT = 5356,
491     SpvDecorationReferencedIndirectlyINTEL = 5602,
492     SpvDecorationCounterBuffer = 5634,
493     SpvDecorationHlslCounterBufferGOOGLE = 5634,
494     SpvDecorationHlslSemanticGOOGLE = 5635,
495     SpvDecorationUserSemantic = 5635,
496     SpvDecorationUserTypeGOOGLE = 5636,
497     SpvDecorationRegisterINTEL = 5825,
498     SpvDecorationMemoryINTEL = 5826,
499     SpvDecorationNumbanksINTEL = 5827,
500     SpvDecorationBankwidthINTEL = 5828,
501     SpvDecorationMaxPrivateCopiesINTEL = 5829,
502     SpvDecorationSinglepumpINTEL = 5830,
503     SpvDecorationDoublepumpINTEL = 5831,
504     SpvDecorationMaxReplicatesINTEL = 5832,
505     SpvDecorationSimpleDualPortINTEL = 5833,
506     SpvDecorationMergeINTEL = 5834,
507     SpvDecorationBankBitsINTEL = 5835,
508     SpvDecorationForcePow2DepthINTEL = 5836,
509     SpvDecorationMax = 0x7fffffff,
510 } SpvDecoration;
511 
512 typedef enum SpvBuiltIn_ {
513     SpvBuiltInPosition = 0,
514     SpvBuiltInPointSize = 1,
515     SpvBuiltInClipDistance = 3,
516     SpvBuiltInCullDistance = 4,
517     SpvBuiltInVertexId = 5,
518     SpvBuiltInInstanceId = 6,
519     SpvBuiltInPrimitiveId = 7,
520     SpvBuiltInInvocationId = 8,
521     SpvBuiltInLayer = 9,
522     SpvBuiltInViewportIndex = 10,
523     SpvBuiltInTessLevelOuter = 11,
524     SpvBuiltInTessLevelInner = 12,
525     SpvBuiltInTessCoord = 13,
526     SpvBuiltInPatchVertices = 14,
527     SpvBuiltInFragCoord = 15,
528     SpvBuiltInPointCoord = 16,
529     SpvBuiltInFrontFacing = 17,
530     SpvBuiltInSampleId = 18,
531     SpvBuiltInSamplePosition = 19,
532     SpvBuiltInSampleMask = 20,
533     SpvBuiltInFragDepth = 22,
534     SpvBuiltInHelperInvocation = 23,
535     SpvBuiltInNumWorkgroups = 24,
536     SpvBuiltInWorkgroupSize = 25,
537     SpvBuiltInWorkgroupId = 26,
538     SpvBuiltInLocalInvocationId = 27,
539     SpvBuiltInGlobalInvocationId = 28,
540     SpvBuiltInLocalInvocationIndex = 29,
541     SpvBuiltInWorkDim = 30,
542     SpvBuiltInGlobalSize = 31,
543     SpvBuiltInEnqueuedWorkgroupSize = 32,
544     SpvBuiltInGlobalOffset = 33,
545     SpvBuiltInGlobalLinearId = 34,
546     SpvBuiltInSubgroupSize = 36,
547     SpvBuiltInSubgroupMaxSize = 37,
548     SpvBuiltInNumSubgroups = 38,
549     SpvBuiltInNumEnqueuedSubgroups = 39,
550     SpvBuiltInSubgroupId = 40,
551     SpvBuiltInSubgroupLocalInvocationId = 41,
552     SpvBuiltInVertexIndex = 42,
553     SpvBuiltInInstanceIndex = 43,
554     SpvBuiltInSubgroupEqMask = 4416,
555     SpvBuiltInSubgroupEqMaskKHR = 4416,
556     SpvBuiltInSubgroupGeMask = 4417,
557     SpvBuiltInSubgroupGeMaskKHR = 4417,
558     SpvBuiltInSubgroupGtMask = 4418,
559     SpvBuiltInSubgroupGtMaskKHR = 4418,
560     SpvBuiltInSubgroupLeMask = 4419,
561     SpvBuiltInSubgroupLeMaskKHR = 4419,
562     SpvBuiltInSubgroupLtMask = 4420,
563     SpvBuiltInSubgroupLtMaskKHR = 4420,
564     SpvBuiltInBaseVertex = 4424,
565     SpvBuiltInBaseInstance = 4425,
566     SpvBuiltInDrawIndex = 4426,
567     SpvBuiltInPrimitiveShadingRateKHR = 4432,
568     SpvBuiltInDeviceIndex = 4438,
569     SpvBuiltInViewIndex = 4440,
570     SpvBuiltInShadingRateKHR = 4444,
571     SpvBuiltInBaryCoordNoPerspAMD = 4992,
572     SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
573     SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
574     SpvBuiltInBaryCoordSmoothAMD = 4995,
575     SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
576     SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
577     SpvBuiltInBaryCoordPullModelAMD = 4998,
578     SpvBuiltInFragStencilRefEXT = 5014,
579     SpvBuiltInViewportMaskNV = 5253,
580     SpvBuiltInSecondaryPositionNV = 5257,
581     SpvBuiltInSecondaryViewportMaskNV = 5258,
582     SpvBuiltInPositionPerViewNV = 5261,
583     SpvBuiltInViewportMaskPerViewNV = 5262,
584     SpvBuiltInFullyCoveredEXT = 5264,
585     SpvBuiltInTaskCountNV = 5274,
586     SpvBuiltInPrimitiveCountNV = 5275,
587     SpvBuiltInPrimitiveIndicesNV = 5276,
588     SpvBuiltInClipDistancePerViewNV = 5277,
589     SpvBuiltInCullDistancePerViewNV = 5278,
590     SpvBuiltInLayerPerViewNV = 5279,
591     SpvBuiltInMeshViewCountNV = 5280,
592     SpvBuiltInMeshViewIndicesNV = 5281,
593     SpvBuiltInBaryCoordNV = 5286,
594     SpvBuiltInBaryCoordNoPerspNV = 5287,
595     SpvBuiltInFragSizeEXT = 5292,
596     SpvBuiltInFragmentSizeNV = 5292,
597     SpvBuiltInFragInvocationCountEXT = 5293,
598     SpvBuiltInInvocationsPerPixelNV = 5293,
599     SpvBuiltInLaunchIdKHR = 5319,
600     SpvBuiltInLaunchIdNV = 5319,
601     SpvBuiltInLaunchSizeKHR = 5320,
602     SpvBuiltInLaunchSizeNV = 5320,
603     SpvBuiltInWorldRayOriginKHR = 5321,
604     SpvBuiltInWorldRayOriginNV = 5321,
605     SpvBuiltInWorldRayDirectionKHR = 5322,
606     SpvBuiltInWorldRayDirectionNV = 5322,
607     SpvBuiltInObjectRayOriginKHR = 5323,
608     SpvBuiltInObjectRayOriginNV = 5323,
609     SpvBuiltInObjectRayDirectionKHR = 5324,
610     SpvBuiltInObjectRayDirectionNV = 5324,
611     SpvBuiltInRayTminKHR = 5325,
612     SpvBuiltInRayTminNV = 5325,
613     SpvBuiltInRayTmaxKHR = 5326,
614     SpvBuiltInRayTmaxNV = 5326,
615     SpvBuiltInInstanceCustomIndexKHR = 5327,
616     SpvBuiltInInstanceCustomIndexNV = 5327,
617     SpvBuiltInObjectToWorldKHR = 5330,
618     SpvBuiltInObjectToWorldNV = 5330,
619     SpvBuiltInWorldToObjectKHR = 5331,
620     SpvBuiltInWorldToObjectNV = 5331,
621     SpvBuiltInHitTKHR = 5332,
622     SpvBuiltInHitTNV = 5332,
623     SpvBuiltInHitKindKHR = 5333,
624     SpvBuiltInHitKindNV = 5333,
625     SpvBuiltInIncomingRayFlagsKHR = 5351,
626     SpvBuiltInIncomingRayFlagsNV = 5351,
627     SpvBuiltInRayGeometryIndexKHR = 5352,
628     SpvBuiltInWarpsPerSMNV = 5374,
629     SpvBuiltInSMCountNV = 5375,
630     SpvBuiltInWarpIDNV = 5376,
631     SpvBuiltInSMIDNV = 5377,
632     SpvBuiltInMax = 0x7fffffff,
633 } SpvBuiltIn;
634 
635 typedef enum SpvSelectionControlShift_ {
636     SpvSelectionControlFlattenShift = 0,
637     SpvSelectionControlDontFlattenShift = 1,
638     SpvSelectionControlMax = 0x7fffffff,
639 } SpvSelectionControlShift;
640 
641 typedef enum SpvSelectionControlMask_ {
642     SpvSelectionControlMaskNone = 0,
643     SpvSelectionControlFlattenMask = 0x00000001,
644     SpvSelectionControlDontFlattenMask = 0x00000002,
645 } SpvSelectionControlMask;
646 
647 typedef enum SpvLoopControlShift_ {
648     SpvLoopControlUnrollShift = 0,
649     SpvLoopControlDontUnrollShift = 1,
650     SpvLoopControlDependencyInfiniteShift = 2,
651     SpvLoopControlDependencyLengthShift = 3,
652     SpvLoopControlMinIterationsShift = 4,
653     SpvLoopControlMaxIterationsShift = 5,
654     SpvLoopControlIterationMultipleShift = 6,
655     SpvLoopControlPeelCountShift = 7,
656     SpvLoopControlPartialCountShift = 8,
657     SpvLoopControlInitiationIntervalINTELShift = 16,
658     SpvLoopControlMaxConcurrencyINTELShift = 17,
659     SpvLoopControlDependencyArrayINTELShift = 18,
660     SpvLoopControlPipelineEnableINTELShift = 19,
661     SpvLoopControlLoopCoalesceINTELShift = 20,
662     SpvLoopControlMaxInterleavingINTELShift = 21,
663     SpvLoopControlSpeculatedIterationsINTELShift = 22,
664     SpvLoopControlMax = 0x7fffffff,
665 } SpvLoopControlShift;
666 
667 typedef enum SpvLoopControlMask_ {
668     SpvLoopControlMaskNone = 0,
669     SpvLoopControlUnrollMask = 0x00000001,
670     SpvLoopControlDontUnrollMask = 0x00000002,
671     SpvLoopControlDependencyInfiniteMask = 0x00000004,
672     SpvLoopControlDependencyLengthMask = 0x00000008,
673     SpvLoopControlMinIterationsMask = 0x00000010,
674     SpvLoopControlMaxIterationsMask = 0x00000020,
675     SpvLoopControlIterationMultipleMask = 0x00000040,
676     SpvLoopControlPeelCountMask = 0x00000080,
677     SpvLoopControlPartialCountMask = 0x00000100,
678     SpvLoopControlInitiationIntervalINTELMask = 0x00010000,
679     SpvLoopControlMaxConcurrencyINTELMask = 0x00020000,
680     SpvLoopControlDependencyArrayINTELMask = 0x00040000,
681     SpvLoopControlPipelineEnableINTELMask = 0x00080000,
682     SpvLoopControlLoopCoalesceINTELMask = 0x00100000,
683     SpvLoopControlMaxInterleavingINTELMask = 0x00200000,
684     SpvLoopControlSpeculatedIterationsINTELMask = 0x00400000,
685 } SpvLoopControlMask;
686 
687 typedef enum SpvFunctionControlShift_ {
688     SpvFunctionControlInlineShift = 0,
689     SpvFunctionControlDontInlineShift = 1,
690     SpvFunctionControlPureShift = 2,
691     SpvFunctionControlConstShift = 3,
692     SpvFunctionControlMax = 0x7fffffff,
693 } SpvFunctionControlShift;
694 
695 typedef enum SpvFunctionControlMask_ {
696     SpvFunctionControlMaskNone = 0,
697     SpvFunctionControlInlineMask = 0x00000001,
698     SpvFunctionControlDontInlineMask = 0x00000002,
699     SpvFunctionControlPureMask = 0x00000004,
700     SpvFunctionControlConstMask = 0x00000008,
701 } SpvFunctionControlMask;
702 
703 typedef enum SpvMemorySemanticsShift_ {
704     SpvMemorySemanticsAcquireShift = 1,
705     SpvMemorySemanticsReleaseShift = 2,
706     SpvMemorySemanticsAcquireReleaseShift = 3,
707     SpvMemorySemanticsSequentiallyConsistentShift = 4,
708     SpvMemorySemanticsUniformMemoryShift = 6,
709     SpvMemorySemanticsSubgroupMemoryShift = 7,
710     SpvMemorySemanticsWorkgroupMemoryShift = 8,
711     SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
712     SpvMemorySemanticsAtomicCounterMemoryShift = 10,
713     SpvMemorySemanticsImageMemoryShift = 11,
714     SpvMemorySemanticsOutputMemoryShift = 12,
715     SpvMemorySemanticsOutputMemoryKHRShift = 12,
716     SpvMemorySemanticsMakeAvailableShift = 13,
717     SpvMemorySemanticsMakeAvailableKHRShift = 13,
718     SpvMemorySemanticsMakeVisibleShift = 14,
719     SpvMemorySemanticsMakeVisibleKHRShift = 14,
720     SpvMemorySemanticsVolatileShift = 15,
721     SpvMemorySemanticsMax = 0x7fffffff,
722 } SpvMemorySemanticsShift;
723 
724 typedef enum SpvMemorySemanticsMask_ {
725     SpvMemorySemanticsMaskNone = 0,
726     SpvMemorySemanticsAcquireMask = 0x00000002,
727     SpvMemorySemanticsReleaseMask = 0x00000004,
728     SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
729     SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
730     SpvMemorySemanticsUniformMemoryMask = 0x00000040,
731     SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
732     SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
733     SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
734     SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
735     SpvMemorySemanticsImageMemoryMask = 0x00000800,
736     SpvMemorySemanticsOutputMemoryMask = 0x00001000,
737     SpvMemorySemanticsOutputMemoryKHRMask = 0x00001000,
738     SpvMemorySemanticsMakeAvailableMask = 0x00002000,
739     SpvMemorySemanticsMakeAvailableKHRMask = 0x00002000,
740     SpvMemorySemanticsMakeVisibleMask = 0x00004000,
741     SpvMemorySemanticsMakeVisibleKHRMask = 0x00004000,
742     SpvMemorySemanticsVolatileMask = 0x00008000,
743 } SpvMemorySemanticsMask;
744 
745 typedef enum SpvMemoryAccessShift_ {
746     SpvMemoryAccessVolatileShift = 0,
747     SpvMemoryAccessAlignedShift = 1,
748     SpvMemoryAccessNontemporalShift = 2,
749     SpvMemoryAccessMakePointerAvailableShift = 3,
750     SpvMemoryAccessMakePointerAvailableKHRShift = 3,
751     SpvMemoryAccessMakePointerVisibleShift = 4,
752     SpvMemoryAccessMakePointerVisibleKHRShift = 4,
753     SpvMemoryAccessNonPrivatePointerShift = 5,
754     SpvMemoryAccessNonPrivatePointerKHRShift = 5,
755     SpvMemoryAccessMax = 0x7fffffff,
756 } SpvMemoryAccessShift;
757 
758 typedef enum SpvMemoryAccessMask_ {
759     SpvMemoryAccessMaskNone = 0,
760     SpvMemoryAccessVolatileMask = 0x00000001,
761     SpvMemoryAccessAlignedMask = 0x00000002,
762     SpvMemoryAccessNontemporalMask = 0x00000004,
763     SpvMemoryAccessMakePointerAvailableMask = 0x00000008,
764     SpvMemoryAccessMakePointerAvailableKHRMask = 0x00000008,
765     SpvMemoryAccessMakePointerVisibleMask = 0x00000010,
766     SpvMemoryAccessMakePointerVisibleKHRMask = 0x00000010,
767     SpvMemoryAccessNonPrivatePointerMask = 0x00000020,
768     SpvMemoryAccessNonPrivatePointerKHRMask = 0x00000020,
769 } SpvMemoryAccessMask;
770 
771 typedef enum SpvScope_ {
772     SpvScopeCrossDevice = 0,
773     SpvScopeDevice = 1,
774     SpvScopeWorkgroup = 2,
775     SpvScopeSubgroup = 3,
776     SpvScopeInvocation = 4,
777     SpvScopeQueueFamily = 5,
778     SpvScopeQueueFamilyKHR = 5,
779     SpvScopeShaderCallKHR = 6,
780     SpvScopeMax = 0x7fffffff,
781 } SpvScope;
782 
783 typedef enum SpvGroupOperation_ {
784     SpvGroupOperationReduce = 0,
785     SpvGroupOperationInclusiveScan = 1,
786     SpvGroupOperationExclusiveScan = 2,
787     SpvGroupOperationClusteredReduce = 3,
788     SpvGroupOperationPartitionedReduceNV = 6,
789     SpvGroupOperationPartitionedInclusiveScanNV = 7,
790     SpvGroupOperationPartitionedExclusiveScanNV = 8,
791     SpvGroupOperationMax = 0x7fffffff,
792 } SpvGroupOperation;
793 
794 typedef enum SpvKernelEnqueueFlags_ {
795     SpvKernelEnqueueFlagsNoWait = 0,
796     SpvKernelEnqueueFlagsWaitKernel = 1,
797     SpvKernelEnqueueFlagsWaitWorkGroup = 2,
798     SpvKernelEnqueueFlagsMax = 0x7fffffff,
799 } SpvKernelEnqueueFlags;
800 
801 typedef enum SpvKernelProfilingInfoShift_ {
802     SpvKernelProfilingInfoCmdExecTimeShift = 0,
803     SpvKernelProfilingInfoMax = 0x7fffffff,
804 } SpvKernelProfilingInfoShift;
805 
806 typedef enum SpvKernelProfilingInfoMask_ {
807     SpvKernelProfilingInfoMaskNone = 0,
808     SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
809 } SpvKernelProfilingInfoMask;
810 
811 typedef enum SpvCapability_ {
812     SpvCapabilityMatrix = 0,
813     SpvCapabilityShader = 1,
814     SpvCapabilityGeometry = 2,
815     SpvCapabilityTessellation = 3,
816     SpvCapabilityAddresses = 4,
817     SpvCapabilityLinkage = 5,
818     SpvCapabilityKernel = 6,
819     SpvCapabilityVector16 = 7,
820     SpvCapabilityFloat16Buffer = 8,
821     SpvCapabilityFloat16 = 9,
822     SpvCapabilityFloat64 = 10,
823     SpvCapabilityInt64 = 11,
824     SpvCapabilityInt64Atomics = 12,
825     SpvCapabilityImageBasic = 13,
826     SpvCapabilityImageReadWrite = 14,
827     SpvCapabilityImageMipmap = 15,
828     SpvCapabilityPipes = 17,
829     SpvCapabilityGroups = 18,
830     SpvCapabilityDeviceEnqueue = 19,
831     SpvCapabilityLiteralSampler = 20,
832     SpvCapabilityAtomicStorage = 21,
833     SpvCapabilityInt16 = 22,
834     SpvCapabilityTessellationPointSize = 23,
835     SpvCapabilityGeometryPointSize = 24,
836     SpvCapabilityImageGatherExtended = 25,
837     SpvCapabilityStorageImageMultisample = 27,
838     SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
839     SpvCapabilitySampledImageArrayDynamicIndexing = 29,
840     SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
841     SpvCapabilityStorageImageArrayDynamicIndexing = 31,
842     SpvCapabilityClipDistance = 32,
843     SpvCapabilityCullDistance = 33,
844     SpvCapabilityImageCubeArray = 34,
845     SpvCapabilitySampleRateShading = 35,
846     SpvCapabilityImageRect = 36,
847     SpvCapabilitySampledRect = 37,
848     SpvCapabilityGenericPointer = 38,
849     SpvCapabilityInt8 = 39,
850     SpvCapabilityInputAttachment = 40,
851     SpvCapabilitySparseResidency = 41,
852     SpvCapabilityMinLod = 42,
853     SpvCapabilitySampled1D = 43,
854     SpvCapabilityImage1D = 44,
855     SpvCapabilitySampledCubeArray = 45,
856     SpvCapabilitySampledBuffer = 46,
857     SpvCapabilityImageBuffer = 47,
858     SpvCapabilityImageMSArray = 48,
859     SpvCapabilityStorageImageExtendedFormats = 49,
860     SpvCapabilityImageQuery = 50,
861     SpvCapabilityDerivativeControl = 51,
862     SpvCapabilityInterpolationFunction = 52,
863     SpvCapabilityTransformFeedback = 53,
864     SpvCapabilityGeometryStreams = 54,
865     SpvCapabilityStorageImageReadWithoutFormat = 55,
866     SpvCapabilityStorageImageWriteWithoutFormat = 56,
867     SpvCapabilityMultiViewport = 57,
868     SpvCapabilitySubgroupDispatch = 58,
869     SpvCapabilityNamedBarrier = 59,
870     SpvCapabilityPipeStorage = 60,
871     SpvCapabilityGroupNonUniform = 61,
872     SpvCapabilityGroupNonUniformVote = 62,
873     SpvCapabilityGroupNonUniformArithmetic = 63,
874     SpvCapabilityGroupNonUniformBallot = 64,
875     SpvCapabilityGroupNonUniformShuffle = 65,
876     SpvCapabilityGroupNonUniformShuffleRelative = 66,
877     SpvCapabilityGroupNonUniformClustered = 67,
878     SpvCapabilityGroupNonUniformQuad = 68,
879     SpvCapabilityShaderLayer = 69,
880     SpvCapabilityShaderViewportIndex = 70,
881     SpvCapabilityFragmentShadingRateKHR = 4422,
882     SpvCapabilitySubgroupBallotKHR = 4423,
883     SpvCapabilityDrawParameters = 4427,
884     SpvCapabilitySubgroupVoteKHR = 4431,
885     SpvCapabilityStorageBuffer16BitAccess = 4433,
886     SpvCapabilityStorageUniformBufferBlock16 = 4433,
887     SpvCapabilityStorageUniform16 = 4434,
888     SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
889     SpvCapabilityStoragePushConstant16 = 4435,
890     SpvCapabilityStorageInputOutput16 = 4436,
891     SpvCapabilityDeviceGroup = 4437,
892     SpvCapabilityMultiView = 4439,
893     SpvCapabilityVariablePointersStorageBuffer = 4441,
894     SpvCapabilityVariablePointers = 4442,
895     SpvCapabilityAtomicStorageOps = 4445,
896     SpvCapabilitySampleMaskPostDepthCoverage = 4447,
897     SpvCapabilityStorageBuffer8BitAccess = 4448,
898     SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,
899     SpvCapabilityStoragePushConstant8 = 4450,
900     SpvCapabilityDenormPreserve = 4464,
901     SpvCapabilityDenormFlushToZero = 4465,
902     SpvCapabilitySignedZeroInfNanPreserve = 4466,
903     SpvCapabilityRoundingModeRTE = 4467,
904     SpvCapabilityRoundingModeRTZ = 4468,
905     SpvCapabilityRayQueryProvisionalKHR = 4471,
906     SpvCapabilityRayTraversalPrimitiveCullingProvisionalKHR = 4478,
907     SpvCapabilityFloat16ImageAMD = 5008,
908     SpvCapabilityImageGatherBiasLodAMD = 5009,
909     SpvCapabilityFragmentMaskAMD = 5010,
910     SpvCapabilityStencilExportEXT = 5013,
911     SpvCapabilityImageReadWriteLodAMD = 5015,
912     SpvCapabilityInt64ImageEXT = 5016,
913     SpvCapabilityShaderClockKHR = 5055,
914     SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
915     SpvCapabilityGeometryShaderPassthroughNV = 5251,
916     SpvCapabilityShaderViewportIndexLayerEXT = 5254,
917     SpvCapabilityShaderViewportIndexLayerNV = 5254,
918     SpvCapabilityShaderViewportMaskNV = 5255,
919     SpvCapabilityShaderStereoViewNV = 5259,
920     SpvCapabilityPerViewAttributesNV = 5260,
921     SpvCapabilityFragmentFullyCoveredEXT = 5265,
922     SpvCapabilityMeshShadingNV = 5266,
923     SpvCapabilityImageFootprintNV = 5282,
924     SpvCapabilityFragmentBarycentricNV = 5284,
925     SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
926     SpvCapabilityFragmentDensityEXT = 5291,
927     SpvCapabilityShadingRateNV = 5291,
928     SpvCapabilityGroupNonUniformPartitionedNV = 5297,
929     SpvCapabilityShaderNonUniform = 5301,
930     SpvCapabilityShaderNonUniformEXT = 5301,
931     SpvCapabilityRuntimeDescriptorArray = 5302,
932     SpvCapabilityRuntimeDescriptorArrayEXT = 5302,
933     SpvCapabilityInputAttachmentArrayDynamicIndexing = 5303,
934     SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
935     SpvCapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
936     SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
937     SpvCapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
938     SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
939     SpvCapabilityUniformBufferArrayNonUniformIndexing = 5306,
940     SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
941     SpvCapabilitySampledImageArrayNonUniformIndexing = 5307,
942     SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
943     SpvCapabilityStorageBufferArrayNonUniformIndexing = 5308,
944     SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
945     SpvCapabilityStorageImageArrayNonUniformIndexing = 5309,
946     SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
947     SpvCapabilityInputAttachmentArrayNonUniformIndexing = 5310,
948     SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
949     SpvCapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
950     SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
951     SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
952     SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
953     SpvCapabilityRayTracingNV = 5340,
954     SpvCapabilityVulkanMemoryModel = 5345,
955     SpvCapabilityVulkanMemoryModelKHR = 5345,
956     SpvCapabilityVulkanMemoryModelDeviceScope = 5346,
957     SpvCapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
958     SpvCapabilityPhysicalStorageBufferAddresses = 5347,
959     SpvCapabilityPhysicalStorageBufferAddressesEXT = 5347,
960     SpvCapabilityComputeDerivativeGroupLinearNV = 5350,
961     SpvCapabilityRayTracingProvisionalKHR = 5353,
962     SpvCapabilityCooperativeMatrixNV = 5357,
963     SpvCapabilityFragmentShaderSampleInterlockEXT = 5363,
964     SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,
965     SpvCapabilityShaderSMBuiltinsNV = 5373,
966     SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
967     SpvCapabilityDemoteToHelperInvocationEXT = 5379,
968     SpvCapabilitySubgroupShuffleINTEL = 5568,
969     SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
970     SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
971     SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,
972     SpvCapabilityIntegerFunctions2INTEL = 5584,
973     SpvCapabilityFunctionPointersINTEL = 5603,
974     SpvCapabilityIndirectReferencesINTEL = 5604,
975     SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,
976     SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
977     SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
978     SpvCapabilityFPGAMemoryAttributesINTEL = 5824,
979     SpvCapabilityUnstructuredLoopControlsINTEL = 5886,
980     SpvCapabilityFPGALoopControlsINTEL = 5888,
981     SpvCapabilityKernelAttributesINTEL = 5892,
982     SpvCapabilityFPGAKernelAttributesINTEL = 5897,
983     SpvCapabilityBlockingPipesINTEL = 5945,
984     SpvCapabilityFPGARegINTEL = 5948,
985     SpvCapabilityAtomicFloat32AddEXT = 6033,
986     SpvCapabilityAtomicFloat64AddEXT = 6034,
987     SpvCapabilityMax = 0x7fffffff,
988 } SpvCapability;
989 
990 typedef enum SpvRayFlagsShift_ {
991     SpvRayFlagsOpaqueKHRShift = 0,
992     SpvRayFlagsNoOpaqueKHRShift = 1,
993     SpvRayFlagsTerminateOnFirstHitKHRShift = 2,
994     SpvRayFlagsSkipClosestHitShaderKHRShift = 3,
995     SpvRayFlagsCullBackFacingTrianglesKHRShift = 4,
996     SpvRayFlagsCullFrontFacingTrianglesKHRShift = 5,
997     SpvRayFlagsCullOpaqueKHRShift = 6,
998     SpvRayFlagsCullNoOpaqueKHRShift = 7,
999     SpvRayFlagsSkipTrianglesKHRShift = 8,
1000     SpvRayFlagsSkipAABBsKHRShift = 9,
1001     SpvRayFlagsMax = 0x7fffffff,
1002 } SpvRayFlagsShift;
1003 
1004 typedef enum SpvRayFlagsMask_ {
1005     SpvRayFlagsMaskNone = 0,
1006     SpvRayFlagsOpaqueKHRMask = 0x00000001,
1007     SpvRayFlagsNoOpaqueKHRMask = 0x00000002,
1008     SpvRayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
1009     SpvRayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
1010     SpvRayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
1011     SpvRayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
1012     SpvRayFlagsCullOpaqueKHRMask = 0x00000040,
1013     SpvRayFlagsCullNoOpaqueKHRMask = 0x00000080,
1014     SpvRayFlagsSkipTrianglesKHRMask = 0x00000100,
1015     SpvRayFlagsSkipAABBsKHRMask = 0x00000200,
1016 } SpvRayFlagsMask;
1017 
1018 typedef enum SpvRayQueryIntersection_ {
1019     SpvRayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
1020     SpvRayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
1021     SpvRayQueryIntersectionMax = 0x7fffffff,
1022 } SpvRayQueryIntersection;
1023 
1024 typedef enum SpvRayQueryCommittedIntersectionType_ {
1025     SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
1026     SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
1027     SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
1028     SpvRayQueryCommittedIntersectionTypeMax = 0x7fffffff,
1029 } SpvRayQueryCommittedIntersectionType;
1030 
1031 typedef enum SpvRayQueryCandidateIntersectionType_ {
1032     SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
1033     SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
1034     SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff,
1035 } SpvRayQueryCandidateIntersectionType;
1036 
1037 typedef enum SpvFragmentShadingRateShift_ {
1038     SpvFragmentShadingRateVertical2PixelsShift = 0,
1039     SpvFragmentShadingRateVertical4PixelsShift = 1,
1040     SpvFragmentShadingRateHorizontal2PixelsShift = 2,
1041     SpvFragmentShadingRateHorizontal4PixelsShift = 3,
1042     SpvFragmentShadingRateMax = 0x7fffffff,
1043 } SpvFragmentShadingRateShift;
1044 
1045 typedef enum SpvFragmentShadingRateMask_ {
1046     SpvFragmentShadingRateMaskNone = 0,
1047     SpvFragmentShadingRateVertical2PixelsMask = 0x00000001,
1048     SpvFragmentShadingRateVertical4PixelsMask = 0x00000002,
1049     SpvFragmentShadingRateHorizontal2PixelsMask = 0x00000004,
1050     SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,
1051 } SpvFragmentShadingRateMask;
1052 
1053 typedef enum SpvOp_ {
1054     SpvOpNop = 0,
1055     SpvOpUndef = 1,
1056     SpvOpSourceContinued = 2,
1057     SpvOpSource = 3,
1058     SpvOpSourceExtension = 4,
1059     SpvOpName = 5,
1060     SpvOpMemberName = 6,
1061     SpvOpString = 7,
1062     SpvOpLine = 8,
1063     SpvOpExtension = 10,
1064     SpvOpExtInstImport = 11,
1065     SpvOpExtInst = 12,
1066     SpvOpMemoryModel = 14,
1067     SpvOpEntryPoint = 15,
1068     SpvOpExecutionMode = 16,
1069     SpvOpCapability = 17,
1070     SpvOpTypeVoid = 19,
1071     SpvOpTypeBool = 20,
1072     SpvOpTypeInt = 21,
1073     SpvOpTypeFloat = 22,
1074     SpvOpTypeVector = 23,
1075     SpvOpTypeMatrix = 24,
1076     SpvOpTypeImage = 25,
1077     SpvOpTypeSampler = 26,
1078     SpvOpTypeSampledImage = 27,
1079     SpvOpTypeArray = 28,
1080     SpvOpTypeRuntimeArray = 29,
1081     SpvOpTypeStruct = 30,
1082     SpvOpTypeOpaque = 31,
1083     SpvOpTypePointer = 32,
1084     SpvOpTypeFunction = 33,
1085     SpvOpTypeEvent = 34,
1086     SpvOpTypeDeviceEvent = 35,
1087     SpvOpTypeReserveId = 36,
1088     SpvOpTypeQueue = 37,
1089     SpvOpTypePipe = 38,
1090     SpvOpTypeForwardPointer = 39,
1091     SpvOpConstantTrue = 41,
1092     SpvOpConstantFalse = 42,
1093     SpvOpConstant = 43,
1094     SpvOpConstantComposite = 44,
1095     SpvOpConstantSampler = 45,
1096     SpvOpConstantNull = 46,
1097     SpvOpSpecConstantTrue = 48,
1098     SpvOpSpecConstantFalse = 49,
1099     SpvOpSpecConstant = 50,
1100     SpvOpSpecConstantComposite = 51,
1101     SpvOpSpecConstantOp = 52,
1102     SpvOpFunction = 54,
1103     SpvOpFunctionParameter = 55,
1104     SpvOpFunctionEnd = 56,
1105     SpvOpFunctionCall = 57,
1106     SpvOpVariable = 59,
1107     SpvOpImageTexelPointer = 60,
1108     SpvOpLoad = 61,
1109     SpvOpStore = 62,
1110     SpvOpCopyMemory = 63,
1111     SpvOpCopyMemorySized = 64,
1112     SpvOpAccessChain = 65,
1113     SpvOpInBoundsAccessChain = 66,
1114     SpvOpPtrAccessChain = 67,
1115     SpvOpArrayLength = 68,
1116     SpvOpGenericPtrMemSemantics = 69,
1117     SpvOpInBoundsPtrAccessChain = 70,
1118     SpvOpDecorate = 71,
1119     SpvOpMemberDecorate = 72,
1120     SpvOpDecorationGroup = 73,
1121     SpvOpGroupDecorate = 74,
1122     SpvOpGroupMemberDecorate = 75,
1123     SpvOpVectorExtractDynamic = 77,
1124     SpvOpVectorInsertDynamic = 78,
1125     SpvOpVectorShuffle = 79,
1126     SpvOpCompositeConstruct = 80,
1127     SpvOpCompositeExtract = 81,
1128     SpvOpCompositeInsert = 82,
1129     SpvOpCopyObject = 83,
1130     SpvOpTranspose = 84,
1131     SpvOpSampledImage = 86,
1132     SpvOpImageSampleImplicitLod = 87,
1133     SpvOpImageSampleExplicitLod = 88,
1134     SpvOpImageSampleDrefImplicitLod = 89,
1135     SpvOpImageSampleDrefExplicitLod = 90,
1136     SpvOpImageSampleProjImplicitLod = 91,
1137     SpvOpImageSampleProjExplicitLod = 92,
1138     SpvOpImageSampleProjDrefImplicitLod = 93,
1139     SpvOpImageSampleProjDrefExplicitLod = 94,
1140     SpvOpImageFetch = 95,
1141     SpvOpImageGather = 96,
1142     SpvOpImageDrefGather = 97,
1143     SpvOpImageRead = 98,
1144     SpvOpImageWrite = 99,
1145     SpvOpImage = 100,
1146     SpvOpImageQueryFormat = 101,
1147     SpvOpImageQueryOrder = 102,
1148     SpvOpImageQuerySizeLod = 103,
1149     SpvOpImageQuerySize = 104,
1150     SpvOpImageQueryLod = 105,
1151     SpvOpImageQueryLevels = 106,
1152     SpvOpImageQuerySamples = 107,
1153     SpvOpConvertFToU = 109,
1154     SpvOpConvertFToS = 110,
1155     SpvOpConvertSToF = 111,
1156     SpvOpConvertUToF = 112,
1157     SpvOpUConvert = 113,
1158     SpvOpSConvert = 114,
1159     SpvOpFConvert = 115,
1160     SpvOpQuantizeToF16 = 116,
1161     SpvOpConvertPtrToU = 117,
1162     SpvOpSatConvertSToU = 118,
1163     SpvOpSatConvertUToS = 119,
1164     SpvOpConvertUToPtr = 120,
1165     SpvOpPtrCastToGeneric = 121,
1166     SpvOpGenericCastToPtr = 122,
1167     SpvOpGenericCastToPtrExplicit = 123,
1168     SpvOpBitcast = 124,
1169     SpvOpSNegate = 126,
1170     SpvOpFNegate = 127,
1171     SpvOpIAdd = 128,
1172     SpvOpFAdd = 129,
1173     SpvOpISub = 130,
1174     SpvOpFSub = 131,
1175     SpvOpIMul = 132,
1176     SpvOpFMul = 133,
1177     SpvOpUDiv = 134,
1178     SpvOpSDiv = 135,
1179     SpvOpFDiv = 136,
1180     SpvOpUMod = 137,
1181     SpvOpSRem = 138,
1182     SpvOpSMod = 139,
1183     SpvOpFRem = 140,
1184     SpvOpFMod = 141,
1185     SpvOpVectorTimesScalar = 142,
1186     SpvOpMatrixTimesScalar = 143,
1187     SpvOpVectorTimesMatrix = 144,
1188     SpvOpMatrixTimesVector = 145,
1189     SpvOpMatrixTimesMatrix = 146,
1190     SpvOpOuterProduct = 147,
1191     SpvOpDot = 148,
1192     SpvOpIAddCarry = 149,
1193     SpvOpISubBorrow = 150,
1194     SpvOpUMulExtended = 151,
1195     SpvOpSMulExtended = 152,
1196     SpvOpAny = 154,
1197     SpvOpAll = 155,
1198     SpvOpIsNan = 156,
1199     SpvOpIsInf = 157,
1200     SpvOpIsFinite = 158,
1201     SpvOpIsNormal = 159,
1202     SpvOpSignBitSet = 160,
1203     SpvOpLessOrGreater = 161,
1204     SpvOpOrdered = 162,
1205     SpvOpUnordered = 163,
1206     SpvOpLogicalEqual = 164,
1207     SpvOpLogicalNotEqual = 165,
1208     SpvOpLogicalOr = 166,
1209     SpvOpLogicalAnd = 167,
1210     SpvOpLogicalNot = 168,
1211     SpvOpSelect = 169,
1212     SpvOpIEqual = 170,
1213     SpvOpINotEqual = 171,
1214     SpvOpUGreaterThan = 172,
1215     SpvOpSGreaterThan = 173,
1216     SpvOpUGreaterThanEqual = 174,
1217     SpvOpSGreaterThanEqual = 175,
1218     SpvOpULessThan = 176,
1219     SpvOpSLessThan = 177,
1220     SpvOpULessThanEqual = 178,
1221     SpvOpSLessThanEqual = 179,
1222     SpvOpFOrdEqual = 180,
1223     SpvOpFUnordEqual = 181,
1224     SpvOpFOrdNotEqual = 182,
1225     SpvOpFUnordNotEqual = 183,
1226     SpvOpFOrdLessThan = 184,
1227     SpvOpFUnordLessThan = 185,
1228     SpvOpFOrdGreaterThan = 186,
1229     SpvOpFUnordGreaterThan = 187,
1230     SpvOpFOrdLessThanEqual = 188,
1231     SpvOpFUnordLessThanEqual = 189,
1232     SpvOpFOrdGreaterThanEqual = 190,
1233     SpvOpFUnordGreaterThanEqual = 191,
1234     SpvOpShiftRightLogical = 194,
1235     SpvOpShiftRightArithmetic = 195,
1236     SpvOpShiftLeftLogical = 196,
1237     SpvOpBitwiseOr = 197,
1238     SpvOpBitwiseXor = 198,
1239     SpvOpBitwiseAnd = 199,
1240     SpvOpNot = 200,
1241     SpvOpBitFieldInsert = 201,
1242     SpvOpBitFieldSExtract = 202,
1243     SpvOpBitFieldUExtract = 203,
1244     SpvOpBitReverse = 204,
1245     SpvOpBitCount = 205,
1246     SpvOpDPdx = 207,
1247     SpvOpDPdy = 208,
1248     SpvOpFwidth = 209,
1249     SpvOpDPdxFine = 210,
1250     SpvOpDPdyFine = 211,
1251     SpvOpFwidthFine = 212,
1252     SpvOpDPdxCoarse = 213,
1253     SpvOpDPdyCoarse = 214,
1254     SpvOpFwidthCoarse = 215,
1255     SpvOpEmitVertex = 218,
1256     SpvOpEndPrimitive = 219,
1257     SpvOpEmitStreamVertex = 220,
1258     SpvOpEndStreamPrimitive = 221,
1259     SpvOpControlBarrier = 224,
1260     SpvOpMemoryBarrier = 225,
1261     SpvOpAtomicLoad = 227,
1262     SpvOpAtomicStore = 228,
1263     SpvOpAtomicExchange = 229,
1264     SpvOpAtomicCompareExchange = 230,
1265     SpvOpAtomicCompareExchangeWeak = 231,
1266     SpvOpAtomicIIncrement = 232,
1267     SpvOpAtomicIDecrement = 233,
1268     SpvOpAtomicIAdd = 234,
1269     SpvOpAtomicISub = 235,
1270     SpvOpAtomicSMin = 236,
1271     SpvOpAtomicUMin = 237,
1272     SpvOpAtomicSMax = 238,
1273     SpvOpAtomicUMax = 239,
1274     SpvOpAtomicAnd = 240,
1275     SpvOpAtomicOr = 241,
1276     SpvOpAtomicXor = 242,
1277     SpvOpPhi = 245,
1278     SpvOpLoopMerge = 246,
1279     SpvOpSelectionMerge = 247,
1280     SpvOpLabel = 248,
1281     SpvOpBranch = 249,
1282     SpvOpBranchConditional = 250,
1283     SpvOpSwitch = 251,
1284     SpvOpKill = 252,
1285     SpvOpReturn = 253,
1286     SpvOpReturnValue = 254,
1287     SpvOpUnreachable = 255,
1288     SpvOpLifetimeStart = 256,
1289     SpvOpLifetimeStop = 257,
1290     SpvOpGroupAsyncCopy = 259,
1291     SpvOpGroupWaitEvents = 260,
1292     SpvOpGroupAll = 261,
1293     SpvOpGroupAny = 262,
1294     SpvOpGroupBroadcast = 263,
1295     SpvOpGroupIAdd = 264,
1296     SpvOpGroupFAdd = 265,
1297     SpvOpGroupFMin = 266,
1298     SpvOpGroupUMin = 267,
1299     SpvOpGroupSMin = 268,
1300     SpvOpGroupFMax = 269,
1301     SpvOpGroupUMax = 270,
1302     SpvOpGroupSMax = 271,
1303     SpvOpReadPipe = 274,
1304     SpvOpWritePipe = 275,
1305     SpvOpReservedReadPipe = 276,
1306     SpvOpReservedWritePipe = 277,
1307     SpvOpReserveReadPipePackets = 278,
1308     SpvOpReserveWritePipePackets = 279,
1309     SpvOpCommitReadPipe = 280,
1310     SpvOpCommitWritePipe = 281,
1311     SpvOpIsValidReserveId = 282,
1312     SpvOpGetNumPipePackets = 283,
1313     SpvOpGetMaxPipePackets = 284,
1314     SpvOpGroupReserveReadPipePackets = 285,
1315     SpvOpGroupReserveWritePipePackets = 286,
1316     SpvOpGroupCommitReadPipe = 287,
1317     SpvOpGroupCommitWritePipe = 288,
1318     SpvOpEnqueueMarker = 291,
1319     SpvOpEnqueueKernel = 292,
1320     SpvOpGetKernelNDrangeSubGroupCount = 293,
1321     SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
1322     SpvOpGetKernelWorkGroupSize = 295,
1323     SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
1324     SpvOpRetainEvent = 297,
1325     SpvOpReleaseEvent = 298,
1326     SpvOpCreateUserEvent = 299,
1327     SpvOpIsValidEvent = 300,
1328     SpvOpSetUserEventStatus = 301,
1329     SpvOpCaptureEventProfilingInfo = 302,
1330     SpvOpGetDefaultQueue = 303,
1331     SpvOpBuildNDRange = 304,
1332     SpvOpImageSparseSampleImplicitLod = 305,
1333     SpvOpImageSparseSampleExplicitLod = 306,
1334     SpvOpImageSparseSampleDrefImplicitLod = 307,
1335     SpvOpImageSparseSampleDrefExplicitLod = 308,
1336     SpvOpImageSparseSampleProjImplicitLod = 309,
1337     SpvOpImageSparseSampleProjExplicitLod = 310,
1338     SpvOpImageSparseSampleProjDrefImplicitLod = 311,
1339     SpvOpImageSparseSampleProjDrefExplicitLod = 312,
1340     SpvOpImageSparseFetch = 313,
1341     SpvOpImageSparseGather = 314,
1342     SpvOpImageSparseDrefGather = 315,
1343     SpvOpImageSparseTexelsResident = 316,
1344     SpvOpNoLine = 317,
1345     SpvOpAtomicFlagTestAndSet = 318,
1346     SpvOpAtomicFlagClear = 319,
1347     SpvOpImageSparseRead = 320,
1348     SpvOpSizeOf = 321,
1349     SpvOpTypePipeStorage = 322,
1350     SpvOpConstantPipeStorage = 323,
1351     SpvOpCreatePipeFromPipeStorage = 324,
1352     SpvOpGetKernelLocalSizeForSubgroupCount = 325,
1353     SpvOpGetKernelMaxNumSubgroups = 326,
1354     SpvOpTypeNamedBarrier = 327,
1355     SpvOpNamedBarrierInitialize = 328,
1356     SpvOpMemoryNamedBarrier = 329,
1357     SpvOpModuleProcessed = 330,
1358     SpvOpExecutionModeId = 331,
1359     SpvOpDecorateId = 332,
1360     SpvOpGroupNonUniformElect = 333,
1361     SpvOpGroupNonUniformAll = 334,
1362     SpvOpGroupNonUniformAny = 335,
1363     SpvOpGroupNonUniformAllEqual = 336,
1364     SpvOpGroupNonUniformBroadcast = 337,
1365     SpvOpGroupNonUniformBroadcastFirst = 338,
1366     SpvOpGroupNonUniformBallot = 339,
1367     SpvOpGroupNonUniformInverseBallot = 340,
1368     SpvOpGroupNonUniformBallotBitExtract = 341,
1369     SpvOpGroupNonUniformBallotBitCount = 342,
1370     SpvOpGroupNonUniformBallotFindLSB = 343,
1371     SpvOpGroupNonUniformBallotFindMSB = 344,
1372     SpvOpGroupNonUniformShuffle = 345,
1373     SpvOpGroupNonUniformShuffleXor = 346,
1374     SpvOpGroupNonUniformShuffleUp = 347,
1375     SpvOpGroupNonUniformShuffleDown = 348,
1376     SpvOpGroupNonUniformIAdd = 349,
1377     SpvOpGroupNonUniformFAdd = 350,
1378     SpvOpGroupNonUniformIMul = 351,
1379     SpvOpGroupNonUniformFMul = 352,
1380     SpvOpGroupNonUniformSMin = 353,
1381     SpvOpGroupNonUniformUMin = 354,
1382     SpvOpGroupNonUniformFMin = 355,
1383     SpvOpGroupNonUniformSMax = 356,
1384     SpvOpGroupNonUniformUMax = 357,
1385     SpvOpGroupNonUniformFMax = 358,
1386     SpvOpGroupNonUniformBitwiseAnd = 359,
1387     SpvOpGroupNonUniformBitwiseOr = 360,
1388     SpvOpGroupNonUniformBitwiseXor = 361,
1389     SpvOpGroupNonUniformLogicalAnd = 362,
1390     SpvOpGroupNonUniformLogicalOr = 363,
1391     SpvOpGroupNonUniformLogicalXor = 364,
1392     SpvOpGroupNonUniformQuadBroadcast = 365,
1393     SpvOpGroupNonUniformQuadSwap = 366,
1394     SpvOpCopyLogical = 400,
1395     SpvOpPtrEqual = 401,
1396     SpvOpPtrNotEqual = 402,
1397     SpvOpPtrDiff = 403,
1398     SpvOpTerminateInvocation = 4416,
1399     SpvOpSubgroupBallotKHR = 4421,
1400     SpvOpSubgroupFirstInvocationKHR = 4422,
1401     SpvOpSubgroupAllKHR = 4428,
1402     SpvOpSubgroupAnyKHR = 4429,
1403     SpvOpSubgroupAllEqualKHR = 4430,
1404     SpvOpSubgroupReadInvocationKHR = 4432,
1405     SpvOpTypeRayQueryProvisionalKHR = 4472,
1406     SpvOpRayQueryInitializeKHR = 4473,
1407     SpvOpRayQueryTerminateKHR = 4474,
1408     SpvOpRayQueryGenerateIntersectionKHR = 4475,
1409     SpvOpRayQueryConfirmIntersectionKHR = 4476,
1410     SpvOpRayQueryProceedKHR = 4477,
1411     SpvOpRayQueryGetIntersectionTypeKHR = 4479,
1412     SpvOpGroupIAddNonUniformAMD = 5000,
1413     SpvOpGroupFAddNonUniformAMD = 5001,
1414     SpvOpGroupFMinNonUniformAMD = 5002,
1415     SpvOpGroupUMinNonUniformAMD = 5003,
1416     SpvOpGroupSMinNonUniformAMD = 5004,
1417     SpvOpGroupFMaxNonUniformAMD = 5005,
1418     SpvOpGroupUMaxNonUniformAMD = 5006,
1419     SpvOpGroupSMaxNonUniformAMD = 5007,
1420     SpvOpFragmentMaskFetchAMD = 5011,
1421     SpvOpFragmentFetchAMD = 5012,
1422     SpvOpReadClockKHR = 5056,
1423     SpvOpImageSampleFootprintNV = 5283,
1424     SpvOpGroupNonUniformPartitionNV = 5296,
1425     SpvOpWritePackedPrimitiveIndices4x8NV = 5299,
1426     SpvOpReportIntersectionKHR = 5334,
1427     SpvOpReportIntersectionNV = 5334,
1428     SpvOpIgnoreIntersectionKHR = 5335,
1429     SpvOpIgnoreIntersectionNV = 5335,
1430     SpvOpTerminateRayKHR = 5336,
1431     SpvOpTerminateRayNV = 5336,
1432     SpvOpTraceNV = 5337,
1433     SpvOpTraceRayKHR = 5337,
1434     SpvOpTypeAccelerationStructureKHR = 5341,
1435     SpvOpTypeAccelerationStructureNV = 5341,
1436     SpvOpExecuteCallableKHR = 5344,
1437     SpvOpExecuteCallableNV = 5344,
1438     SpvOpTypeCooperativeMatrixNV = 5358,
1439     SpvOpCooperativeMatrixLoadNV = 5359,
1440     SpvOpCooperativeMatrixStoreNV = 5360,
1441     SpvOpCooperativeMatrixMulAddNV = 5361,
1442     SpvOpCooperativeMatrixLengthNV = 5362,
1443     SpvOpBeginInvocationInterlockEXT = 5364,
1444     SpvOpEndInvocationInterlockEXT = 5365,
1445     SpvOpDemoteToHelperInvocationEXT = 5380,
1446     SpvOpIsHelperInvocationEXT = 5381,
1447     SpvOpSubgroupShuffleINTEL = 5571,
1448     SpvOpSubgroupShuffleDownINTEL = 5572,
1449     SpvOpSubgroupShuffleUpINTEL = 5573,
1450     SpvOpSubgroupShuffleXorINTEL = 5574,
1451     SpvOpSubgroupBlockReadINTEL = 5575,
1452     SpvOpSubgroupBlockWriteINTEL = 5576,
1453     SpvOpSubgroupImageBlockReadINTEL = 5577,
1454     SpvOpSubgroupImageBlockWriteINTEL = 5578,
1455     SpvOpSubgroupImageMediaBlockReadINTEL = 5580,
1456     SpvOpSubgroupImageMediaBlockWriteINTEL = 5581,
1457     SpvOpUCountLeadingZerosINTEL = 5585,
1458     SpvOpUCountTrailingZerosINTEL = 5586,
1459     SpvOpAbsISubINTEL = 5587,
1460     SpvOpAbsUSubINTEL = 5588,
1461     SpvOpIAddSatINTEL = 5589,
1462     SpvOpUAddSatINTEL = 5590,
1463     SpvOpIAverageINTEL = 5591,
1464     SpvOpUAverageINTEL = 5592,
1465     SpvOpIAverageRoundedINTEL = 5593,
1466     SpvOpUAverageRoundedINTEL = 5594,
1467     SpvOpISubSatINTEL = 5595,
1468     SpvOpUSubSatINTEL = 5596,
1469     SpvOpIMul32x16INTEL = 5597,
1470     SpvOpUMul32x16INTEL = 5598,
1471     SpvOpFunctionPointerINTEL = 5600,
1472     SpvOpFunctionPointerCallINTEL = 5601,
1473     SpvOpDecorateString = 5632,
1474     SpvOpDecorateStringGOOGLE = 5632,
1475     SpvOpMemberDecorateString = 5633,
1476     SpvOpMemberDecorateStringGOOGLE = 5633,
1477     SpvOpVmeImageINTEL = 5699,
1478     SpvOpTypeVmeImageINTEL = 5700,
1479     SpvOpTypeAvcImePayloadINTEL = 5701,
1480     SpvOpTypeAvcRefPayloadINTEL = 5702,
1481     SpvOpTypeAvcSicPayloadINTEL = 5703,
1482     SpvOpTypeAvcMcePayloadINTEL = 5704,
1483     SpvOpTypeAvcMceResultINTEL = 5705,
1484     SpvOpTypeAvcImeResultINTEL = 5706,
1485     SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
1486     SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
1487     SpvOpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
1488     SpvOpTypeAvcImeDualReferenceStreaminINTEL = 5710,
1489     SpvOpTypeAvcRefResultINTEL = 5711,
1490     SpvOpTypeAvcSicResultINTEL = 5712,
1491     SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
1492     SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
1493     SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
1494     SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
1495     SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
1496     SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
1497     SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
1498     SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
1499     SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
1500     SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
1501     SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
1502     SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
1503     SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
1504     SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
1505     SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
1506     SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
1507     SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
1508     SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
1509     SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
1510     SpvOpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
1511     SpvOpSubgroupAvcMceConvertToImeResultINTEL = 5733,
1512     SpvOpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
1513     SpvOpSubgroupAvcMceConvertToRefResultINTEL = 5735,
1514     SpvOpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
1515     SpvOpSubgroupAvcMceConvertToSicResultINTEL = 5737,
1516     SpvOpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
1517     SpvOpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
1518     SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
1519     SpvOpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
1520     SpvOpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
1521     SpvOpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
1522     SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
1523     SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
1524     SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
1525     SpvOpSubgroupAvcImeInitializeINTEL = 5747,
1526     SpvOpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
1527     SpvOpSubgroupAvcImeSetDualReferenceINTEL = 5749,
1528     SpvOpSubgroupAvcImeRefWindowSizeINTEL = 5750,
1529     SpvOpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
1530     SpvOpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
1531     SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
1532     SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
1533     SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
1534     SpvOpSubgroupAvcImeSetWeightedSadINTEL = 5756,
1535     SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
1536     SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
1537     SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
1538     SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
1539     SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
1540     SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
1541     SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
1542     SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
1543     SpvOpSubgroupAvcImeConvertToMceResultINTEL = 5765,
1544     SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
1545     SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
1546     SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
1547     SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
1548     SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
1549     SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
1550     SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
1551     SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
1552     SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
1553     SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
1554     SpvOpSubgroupAvcImeGetBorderReachedINTEL = 5776,
1555     SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
1556     SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
1557     SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
1558     SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
1559     SpvOpSubgroupAvcFmeInitializeINTEL = 5781,
1560     SpvOpSubgroupAvcBmeInitializeINTEL = 5782,
1561     SpvOpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
1562     SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
1563     SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
1564     SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
1565     SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
1566     SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
1567     SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
1568     SpvOpSubgroupAvcRefConvertToMceResultINTEL = 5790,
1569     SpvOpSubgroupAvcSicInitializeINTEL = 5791,
1570     SpvOpSubgroupAvcSicConfigureSkcINTEL = 5792,
1571     SpvOpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
1572     SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
1573     SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
1574     SpvOpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
1575     SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
1576     SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
1577     SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
1578     SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
1579     SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
1580     SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
1581     SpvOpSubgroupAvcSicEvaluateIpeINTEL = 5803,
1582     SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
1583     SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
1584     SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
1585     SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
1586     SpvOpSubgroupAvcSicConvertToMceResultINTEL = 5808,
1587     SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
1588     SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
1589     SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
1590     SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
1591     SpvOpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
1592     SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
1593     SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
1594     SpvOpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
1595     SpvOpLoopControlINTEL = 5887,
1596     SpvOpReadPipeBlockingINTEL = 5946,
1597     SpvOpWritePipeBlockingINTEL = 5947,
1598     SpvOpFPGARegINTEL = 5949,
1599     SpvOpRayQueryGetRayTMinKHR = 6016,
1600     SpvOpRayQueryGetRayFlagsKHR = 6017,
1601     SpvOpRayQueryGetIntersectionTKHR = 6018,
1602     SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
1603     SpvOpRayQueryGetIntersectionInstanceIdKHR = 6020,
1604     SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
1605     SpvOpRayQueryGetIntersectionGeometryIndexKHR = 6022,
1606     SpvOpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
1607     SpvOpRayQueryGetIntersectionBarycentricsKHR = 6024,
1608     SpvOpRayQueryGetIntersectionFrontFaceKHR = 6025,
1609     SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
1610     SpvOpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
1611     SpvOpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
1612     SpvOpRayQueryGetWorldRayDirectionKHR = 6029,
1613     SpvOpRayQueryGetWorldRayOriginKHR = 6030,
1614     SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,
1615     SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,
1616     SpvOpAtomicFAddEXT = 6035,
1617     SpvOpMax = 0x7fffffff,
1618 } SpvOp;
1619 
1620 #ifdef SPV_ENABLE_UTILITY_CODE
SpvHasResultAndType(SpvOp opcode,bool * hasResult,bool * hasResultType)1621 inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultType) {
1622     *hasResult = *hasResultType = false;
1623     switch (opcode) {
1624     default: /* unknown opcode */ break;
1625     case SpvOpNop: *hasResult = false; *hasResultType = false; break;
1626     case SpvOpUndef: *hasResult = true; *hasResultType = true; break;
1627     case SpvOpSourceContinued: *hasResult = false; *hasResultType = false; break;
1628     case SpvOpSource: *hasResult = false; *hasResultType = false; break;
1629     case SpvOpSourceExtension: *hasResult = false; *hasResultType = false; break;
1630     case SpvOpName: *hasResult = false; *hasResultType = false; break;
1631     case SpvOpMemberName: *hasResult = false; *hasResultType = false; break;
1632     case SpvOpString: *hasResult = true; *hasResultType = false; break;
1633     case SpvOpLine: *hasResult = false; *hasResultType = false; break;
1634     case SpvOpExtension: *hasResult = false; *hasResultType = false; break;
1635     case SpvOpExtInstImport: *hasResult = true; *hasResultType = false; break;
1636     case SpvOpExtInst: *hasResult = true; *hasResultType = true; break;
1637     case SpvOpMemoryModel: *hasResult = false; *hasResultType = false; break;
1638     case SpvOpEntryPoint: *hasResult = false; *hasResultType = false; break;
1639     case SpvOpExecutionMode: *hasResult = false; *hasResultType = false; break;
1640     case SpvOpCapability: *hasResult = false; *hasResultType = false; break;
1641     case SpvOpTypeVoid: *hasResult = true; *hasResultType = false; break;
1642     case SpvOpTypeBool: *hasResult = true; *hasResultType = false; break;
1643     case SpvOpTypeInt: *hasResult = true; *hasResultType = false; break;
1644     case SpvOpTypeFloat: *hasResult = true; *hasResultType = false; break;
1645     case SpvOpTypeVector: *hasResult = true; *hasResultType = false; break;
1646     case SpvOpTypeMatrix: *hasResult = true; *hasResultType = false; break;
1647     case SpvOpTypeImage: *hasResult = true; *hasResultType = false; break;
1648     case SpvOpTypeSampler: *hasResult = true; *hasResultType = false; break;
1649     case SpvOpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
1650     case SpvOpTypeArray: *hasResult = true; *hasResultType = false; break;
1651     case SpvOpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
1652     case SpvOpTypeStruct: *hasResult = true; *hasResultType = false; break;
1653     case SpvOpTypeOpaque: *hasResult = true; *hasResultType = false; break;
1654     case SpvOpTypePointer: *hasResult = true; *hasResultType = false; break;
1655     case SpvOpTypeFunction: *hasResult = true; *hasResultType = false; break;
1656     case SpvOpTypeEvent: *hasResult = true; *hasResultType = false; break;
1657     case SpvOpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
1658     case SpvOpTypeReserveId: *hasResult = true; *hasResultType = false; break;
1659     case SpvOpTypeQueue: *hasResult = true; *hasResultType = false; break;
1660     case SpvOpTypePipe: *hasResult = true; *hasResultType = false; break;
1661     case SpvOpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
1662     case SpvOpConstantTrue: *hasResult = true; *hasResultType = true; break;
1663     case SpvOpConstantFalse: *hasResult = true; *hasResultType = true; break;
1664     case SpvOpConstant: *hasResult = true; *hasResultType = true; break;
1665     case SpvOpConstantComposite: *hasResult = true; *hasResultType = true; break;
1666     case SpvOpConstantSampler: *hasResult = true; *hasResultType = true; break;
1667     case SpvOpConstantNull: *hasResult = true; *hasResultType = true; break;
1668     case SpvOpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
1669     case SpvOpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
1670     case SpvOpSpecConstant: *hasResult = true; *hasResultType = true; break;
1671     case SpvOpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
1672     case SpvOpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
1673     case SpvOpFunction: *hasResult = true; *hasResultType = true; break;
1674     case SpvOpFunctionParameter: *hasResult = true; *hasResultType = true; break;
1675     case SpvOpFunctionEnd: *hasResult = false; *hasResultType = false; break;
1676     case SpvOpFunctionCall: *hasResult = true; *hasResultType = true; break;
1677     case SpvOpVariable: *hasResult = true; *hasResultType = true; break;
1678     case SpvOpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
1679     case SpvOpLoad: *hasResult = true; *hasResultType = true; break;
1680     case SpvOpStore: *hasResult = false; *hasResultType = false; break;
1681     case SpvOpCopyMemory: *hasResult = false; *hasResultType = false; break;
1682     case SpvOpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
1683     case SpvOpAccessChain: *hasResult = true; *hasResultType = true; break;
1684     case SpvOpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
1685     case SpvOpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
1686     case SpvOpArrayLength: *hasResult = true; *hasResultType = true; break;
1687     case SpvOpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
1688     case SpvOpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
1689     case SpvOpDecorate: *hasResult = false; *hasResultType = false; break;
1690     case SpvOpMemberDecorate: *hasResult = false; *hasResultType = false; break;
1691     case SpvOpDecorationGroup: *hasResult = true; *hasResultType = false; break;
1692     case SpvOpGroupDecorate: *hasResult = false; *hasResultType = false; break;
1693     case SpvOpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
1694     case SpvOpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
1695     case SpvOpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
1696     case SpvOpVectorShuffle: *hasResult = true; *hasResultType = true; break;
1697     case SpvOpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
1698     case SpvOpCompositeExtract: *hasResult = true; *hasResultType = true; break;
1699     case SpvOpCompositeInsert: *hasResult = true; *hasResultType = true; break;
1700     case SpvOpCopyObject: *hasResult = true; *hasResultType = true; break;
1701     case SpvOpTranspose: *hasResult = true; *hasResultType = true; break;
1702     case SpvOpSampledImage: *hasResult = true; *hasResultType = true; break;
1703     case SpvOpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
1704     case SpvOpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
1705     case SpvOpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1706     case SpvOpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1707     case SpvOpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
1708     case SpvOpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
1709     case SpvOpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1710     case SpvOpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1711     case SpvOpImageFetch: *hasResult = true; *hasResultType = true; break;
1712     case SpvOpImageGather: *hasResult = true; *hasResultType = true; break;
1713     case SpvOpImageDrefGather: *hasResult = true; *hasResultType = true; break;
1714     case SpvOpImageRead: *hasResult = true; *hasResultType = true; break;
1715     case SpvOpImageWrite: *hasResult = false; *hasResultType = false; break;
1716     case SpvOpImage: *hasResult = true; *hasResultType = true; break;
1717     case SpvOpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
1718     case SpvOpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
1719     case SpvOpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
1720     case SpvOpImageQuerySize: *hasResult = true; *hasResultType = true; break;
1721     case SpvOpImageQueryLod: *hasResult = true; *hasResultType = true; break;
1722     case SpvOpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
1723     case SpvOpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
1724     case SpvOpConvertFToU: *hasResult = true; *hasResultType = true; break;
1725     case SpvOpConvertFToS: *hasResult = true; *hasResultType = true; break;
1726     case SpvOpConvertSToF: *hasResult = true; *hasResultType = true; break;
1727     case SpvOpConvertUToF: *hasResult = true; *hasResultType = true; break;
1728     case SpvOpUConvert: *hasResult = true; *hasResultType = true; break;
1729     case SpvOpSConvert: *hasResult = true; *hasResultType = true; break;
1730     case SpvOpFConvert: *hasResult = true; *hasResultType = true; break;
1731     case SpvOpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
1732     case SpvOpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
1733     case SpvOpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
1734     case SpvOpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
1735     case SpvOpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
1736     case SpvOpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
1737     case SpvOpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
1738     case SpvOpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
1739     case SpvOpBitcast: *hasResult = true; *hasResultType = true; break;
1740     case SpvOpSNegate: *hasResult = true; *hasResultType = true; break;
1741     case SpvOpFNegate: *hasResult = true; *hasResultType = true; break;
1742     case SpvOpIAdd: *hasResult = true; *hasResultType = true; break;
1743     case SpvOpFAdd: *hasResult = true; *hasResultType = true; break;
1744     case SpvOpISub: *hasResult = true; *hasResultType = true; break;
1745     case SpvOpFSub: *hasResult = true; *hasResultType = true; break;
1746     case SpvOpIMul: *hasResult = true; *hasResultType = true; break;
1747     case SpvOpFMul: *hasResult = true; *hasResultType = true; break;
1748     case SpvOpUDiv: *hasResult = true; *hasResultType = true; break;
1749     case SpvOpSDiv: *hasResult = true; *hasResultType = true; break;
1750     case SpvOpFDiv: *hasResult = true; *hasResultType = true; break;
1751     case SpvOpUMod: *hasResult = true; *hasResultType = true; break;
1752     case SpvOpSRem: *hasResult = true; *hasResultType = true; break;
1753     case SpvOpSMod: *hasResult = true; *hasResultType = true; break;
1754     case SpvOpFRem: *hasResult = true; *hasResultType = true; break;
1755     case SpvOpFMod: *hasResult = true; *hasResultType = true; break;
1756     case SpvOpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
1757     case SpvOpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
1758     case SpvOpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
1759     case SpvOpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
1760     case SpvOpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
1761     case SpvOpOuterProduct: *hasResult = true; *hasResultType = true; break;
1762     case SpvOpDot: *hasResult = true; *hasResultType = true; break;
1763     case SpvOpIAddCarry: *hasResult = true; *hasResultType = true; break;
1764     case SpvOpISubBorrow: *hasResult = true; *hasResultType = true; break;
1765     case SpvOpUMulExtended: *hasResult = true; *hasResultType = true; break;
1766     case SpvOpSMulExtended: *hasResult = true; *hasResultType = true; break;
1767     case SpvOpAny: *hasResult = true; *hasResultType = true; break;
1768     case SpvOpAll: *hasResult = true; *hasResultType = true; break;
1769     case SpvOpIsNan: *hasResult = true; *hasResultType = true; break;
1770     case SpvOpIsInf: *hasResult = true; *hasResultType = true; break;
1771     case SpvOpIsFinite: *hasResult = true; *hasResultType = true; break;
1772     case SpvOpIsNormal: *hasResult = true; *hasResultType = true; break;
1773     case SpvOpSignBitSet: *hasResult = true; *hasResultType = true; break;
1774     case SpvOpLessOrGreater: *hasResult = true; *hasResultType = true; break;
1775     case SpvOpOrdered: *hasResult = true; *hasResultType = true; break;
1776     case SpvOpUnordered: *hasResult = true; *hasResultType = true; break;
1777     case SpvOpLogicalEqual: *hasResult = true; *hasResultType = true; break;
1778     case SpvOpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
1779     case SpvOpLogicalOr: *hasResult = true; *hasResultType = true; break;
1780     case SpvOpLogicalAnd: *hasResult = true; *hasResultType = true; break;
1781     case SpvOpLogicalNot: *hasResult = true; *hasResultType = true; break;
1782     case SpvOpSelect: *hasResult = true; *hasResultType = true; break;
1783     case SpvOpIEqual: *hasResult = true; *hasResultType = true; break;
1784     case SpvOpINotEqual: *hasResult = true; *hasResultType = true; break;
1785     case SpvOpUGreaterThan: *hasResult = true; *hasResultType = true; break;
1786     case SpvOpSGreaterThan: *hasResult = true; *hasResultType = true; break;
1787     case SpvOpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1788     case SpvOpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1789     case SpvOpULessThan: *hasResult = true; *hasResultType = true; break;
1790     case SpvOpSLessThan: *hasResult = true; *hasResultType = true; break;
1791     case SpvOpULessThanEqual: *hasResult = true; *hasResultType = true; break;
1792     case SpvOpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
1793     case SpvOpFOrdEqual: *hasResult = true; *hasResultType = true; break;
1794     case SpvOpFUnordEqual: *hasResult = true; *hasResultType = true; break;
1795     case SpvOpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
1796     case SpvOpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
1797     case SpvOpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
1798     case SpvOpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
1799     case SpvOpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
1800     case SpvOpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
1801     case SpvOpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
1802     case SpvOpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
1803     case SpvOpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1804     case SpvOpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1805     case SpvOpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
1806     case SpvOpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
1807     case SpvOpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
1808     case SpvOpBitwiseOr: *hasResult = true; *hasResultType = true; break;
1809     case SpvOpBitwiseXor: *hasResult = true; *hasResultType = true; break;
1810     case SpvOpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
1811     case SpvOpNot: *hasResult = true; *hasResultType = true; break;
1812     case SpvOpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
1813     case SpvOpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
1814     case SpvOpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
1815     case SpvOpBitReverse: *hasResult = true; *hasResultType = true; break;
1816     case SpvOpBitCount: *hasResult = true; *hasResultType = true; break;
1817     case SpvOpDPdx: *hasResult = true; *hasResultType = true; break;
1818     case SpvOpDPdy: *hasResult = true; *hasResultType = true; break;
1819     case SpvOpFwidth: *hasResult = true; *hasResultType = true; break;
1820     case SpvOpDPdxFine: *hasResult = true; *hasResultType = true; break;
1821     case SpvOpDPdyFine: *hasResult = true; *hasResultType = true; break;
1822     case SpvOpFwidthFine: *hasResult = true; *hasResultType = true; break;
1823     case SpvOpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
1824     case SpvOpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
1825     case SpvOpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
1826     case SpvOpEmitVertex: *hasResult = false; *hasResultType = false; break;
1827     case SpvOpEndPrimitive: *hasResult = false; *hasResultType = false; break;
1828     case SpvOpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
1829     case SpvOpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
1830     case SpvOpControlBarrier: *hasResult = false; *hasResultType = false; break;
1831     case SpvOpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
1832     case SpvOpAtomicLoad: *hasResult = true; *hasResultType = true; break;
1833     case SpvOpAtomicStore: *hasResult = false; *hasResultType = false; break;
1834     case SpvOpAtomicExchange: *hasResult = true; *hasResultType = true; break;
1835     case SpvOpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
1836     case SpvOpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
1837     case SpvOpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
1838     case SpvOpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
1839     case SpvOpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
1840     case SpvOpAtomicISub: *hasResult = true; *hasResultType = true; break;
1841     case SpvOpAtomicSMin: *hasResult = true; *hasResultType = true; break;
1842     case SpvOpAtomicUMin: *hasResult = true; *hasResultType = true; break;
1843     case SpvOpAtomicSMax: *hasResult = true; *hasResultType = true; break;
1844     case SpvOpAtomicUMax: *hasResult = true; *hasResultType = true; break;
1845     case SpvOpAtomicAnd: *hasResult = true; *hasResultType = true; break;
1846     case SpvOpAtomicOr: *hasResult = true; *hasResultType = true; break;
1847     case SpvOpAtomicXor: *hasResult = true; *hasResultType = true; break;
1848     case SpvOpPhi: *hasResult = true; *hasResultType = true; break;
1849     case SpvOpLoopMerge: *hasResult = false; *hasResultType = false; break;
1850     case SpvOpSelectionMerge: *hasResult = false; *hasResultType = false; break;
1851     case SpvOpLabel: *hasResult = true; *hasResultType = false; break;
1852     case SpvOpBranch: *hasResult = false; *hasResultType = false; break;
1853     case SpvOpBranchConditional: *hasResult = false; *hasResultType = false; break;
1854     case SpvOpSwitch: *hasResult = false; *hasResultType = false; break;
1855     case SpvOpKill: *hasResult = false; *hasResultType = false; break;
1856     case SpvOpReturn: *hasResult = false; *hasResultType = false; break;
1857     case SpvOpReturnValue: *hasResult = false; *hasResultType = false; break;
1858     case SpvOpUnreachable: *hasResult = false; *hasResultType = false; break;
1859     case SpvOpLifetimeStart: *hasResult = false; *hasResultType = false; break;
1860     case SpvOpLifetimeStop: *hasResult = false; *hasResultType = false; break;
1861     case SpvOpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
1862     case SpvOpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
1863     case SpvOpGroupAll: *hasResult = true; *hasResultType = true; break;
1864     case SpvOpGroupAny: *hasResult = true; *hasResultType = true; break;
1865     case SpvOpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
1866     case SpvOpGroupIAdd: *hasResult = true; *hasResultType = true; break;
1867     case SpvOpGroupFAdd: *hasResult = true; *hasResultType = true; break;
1868     case SpvOpGroupFMin: *hasResult = true; *hasResultType = true; break;
1869     case SpvOpGroupUMin: *hasResult = true; *hasResultType = true; break;
1870     case SpvOpGroupSMin: *hasResult = true; *hasResultType = true; break;
1871     case SpvOpGroupFMax: *hasResult = true; *hasResultType = true; break;
1872     case SpvOpGroupUMax: *hasResult = true; *hasResultType = true; break;
1873     case SpvOpGroupSMax: *hasResult = true; *hasResultType = true; break;
1874     case SpvOpReadPipe: *hasResult = true; *hasResultType = true; break;
1875     case SpvOpWritePipe: *hasResult = true; *hasResultType = true; break;
1876     case SpvOpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
1877     case SpvOpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
1878     case SpvOpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
1879     case SpvOpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
1880     case SpvOpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
1881     case SpvOpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
1882     case SpvOpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
1883     case SpvOpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
1884     case SpvOpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
1885     case SpvOpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
1886     case SpvOpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
1887     case SpvOpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
1888     case SpvOpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
1889     case SpvOpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
1890     case SpvOpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
1891     case SpvOpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
1892     case SpvOpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
1893     case SpvOpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
1894     case SpvOpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
1895     case SpvOpRetainEvent: *hasResult = false; *hasResultType = false; break;
1896     case SpvOpReleaseEvent: *hasResult = false; *hasResultType = false; break;
1897     case SpvOpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
1898     case SpvOpIsValidEvent: *hasResult = true; *hasResultType = true; break;
1899     case SpvOpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
1900     case SpvOpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
1901     case SpvOpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
1902     case SpvOpBuildNDRange: *hasResult = true; *hasResultType = true; break;
1903     case SpvOpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
1904     case SpvOpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
1905     case SpvOpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1906     case SpvOpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1907     case SpvOpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
1908     case SpvOpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
1909     case SpvOpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1910     case SpvOpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1911     case SpvOpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
1912     case SpvOpImageSparseGather: *hasResult = true; *hasResultType = true; break;
1913     case SpvOpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
1914     case SpvOpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
1915     case SpvOpNoLine: *hasResult = false; *hasResultType = false; break;
1916     case SpvOpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
1917     case SpvOpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
1918     case SpvOpImageSparseRead: *hasResult = true; *hasResultType = true; break;
1919     case SpvOpSizeOf: *hasResult = true; *hasResultType = true; break;
1920     case SpvOpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
1921     case SpvOpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
1922     case SpvOpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
1923     case SpvOpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
1924     case SpvOpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
1925     case SpvOpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
1926     case SpvOpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
1927     case SpvOpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
1928     case SpvOpModuleProcessed: *hasResult = false; *hasResultType = false; break;
1929     case SpvOpExecutionModeId: *hasResult = false; *hasResultType = false; break;
1930     case SpvOpDecorateId: *hasResult = false; *hasResultType = false; break;
1931     case SpvOpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
1932     case SpvOpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
1933     case SpvOpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
1934     case SpvOpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
1935     case SpvOpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
1936     case SpvOpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
1937     case SpvOpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
1938     case SpvOpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
1939     case SpvOpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
1940     case SpvOpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
1941     case SpvOpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
1942     case SpvOpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
1943     case SpvOpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
1944     case SpvOpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
1945     case SpvOpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
1946     case SpvOpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
1947     case SpvOpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
1948     case SpvOpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
1949     case SpvOpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
1950     case SpvOpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
1951     case SpvOpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
1952     case SpvOpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
1953     case SpvOpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
1954     case SpvOpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
1955     case SpvOpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
1956     case SpvOpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
1957     case SpvOpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
1958     case SpvOpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
1959     case SpvOpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
1960     case SpvOpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
1961     case SpvOpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
1962     case SpvOpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
1963     case SpvOpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
1964     case SpvOpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
1965     case SpvOpCopyLogical: *hasResult = true; *hasResultType = true; break;
1966     case SpvOpPtrEqual: *hasResult = true; *hasResultType = true; break;
1967     case SpvOpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
1968     case SpvOpPtrDiff: *hasResult = true; *hasResultType = true; break;
1969     case SpvOpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
1970     case SpvOpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
1971     case SpvOpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
1972     case SpvOpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
1973     case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
1974     case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
1975     case SpvOpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
1976     case SpvOpTypeRayQueryProvisionalKHR: *hasResult = true; *hasResultType = false; break;
1977     case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
1978     case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
1979     case SpvOpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
1980     case SpvOpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
1981     case SpvOpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
1982     case SpvOpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
1983     case SpvOpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1984     case SpvOpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1985     case SpvOpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1986     case SpvOpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1987     case SpvOpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1988     case SpvOpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1989     case SpvOpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1990     case SpvOpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1991     case SpvOpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
1992     case SpvOpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
1993     case SpvOpReadClockKHR: *hasResult = true; *hasResultType = true; break;
1994     case SpvOpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
1995     case SpvOpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
1996     case SpvOpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
1997     case SpvOpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
1998     case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
1999     case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
2000     case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
2001     case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
2002     case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
2003     case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
2004     case SpvOpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
2005     case SpvOpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
2006     case SpvOpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
2007     case SpvOpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
2008     case SpvOpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
2009     case SpvOpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
2010     case SpvOpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
2011     case SpvOpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
2012     case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
2013     case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
2014     case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
2015     case SpvOpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
2016     case SpvOpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2017     case SpvOpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2018     case SpvOpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2019     case SpvOpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2020     case SpvOpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2021     case SpvOpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2022     case SpvOpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
2023     case SpvOpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
2024     case SpvOpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
2025     case SpvOpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
2026     case SpvOpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
2027     case SpvOpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
2028     case SpvOpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
2029     case SpvOpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
2030     case SpvOpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
2031     case SpvOpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
2032     case SpvOpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
2033     case SpvOpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
2034     case SpvOpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
2035     case SpvOpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
2036     case SpvOpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
2037     case SpvOpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
2038     case SpvOpDecorateString: *hasResult = false; *hasResultType = false; break;
2039     case SpvOpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
2040     case SpvOpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
2041     case SpvOpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
2042     case SpvOpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
2043     case SpvOpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
2044     case SpvOpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
2045     case SpvOpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
2046     case SpvOpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
2047     case SpvOpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
2048     case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
2049     case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
2050     case SpvOpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
2051     case SpvOpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
2052     case SpvOpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
2053     case SpvOpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
2054     case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2055     case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2056     case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2057     case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2058     case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2059     case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2060     case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2061     case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2062     case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2063     case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2064     case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2065     case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2066     case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2067     case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2068     case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2069     case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
2070     case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
2071     case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
2072     case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
2073     case SpvOpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2074     case SpvOpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
2075     case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
2076     case SpvOpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
2077     case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
2078     case SpvOpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
2079     case SpvOpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2080     case SpvOpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2081     case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2082     case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
2083     case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
2084     case SpvOpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
2085     case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
2086     case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2087     case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
2088     case SpvOpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2089     case SpvOpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2090     case SpvOpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2091     case SpvOpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
2092     case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
2093     case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2094     case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
2095     case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
2096     case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2097     case SpvOpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
2098     case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2099     case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2100     case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2101     case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2102     case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2103     case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2104     case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
2105     case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
2106     case SpvOpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2107     case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2108     case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2109     case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2110     case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2111     case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2112     case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2113     case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2114     case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2115     case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2116     case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2117     case SpvOpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
2118     case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
2119     case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
2120     case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
2121     case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2122     case SpvOpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2123     case SpvOpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2124     case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2125     case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
2126     case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
2127     case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2128     case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2129     case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2130     case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
2131     case SpvOpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2132     case SpvOpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2133     case SpvOpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
2134     case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
2135     case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
2136     case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
2137     case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2138     case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2139     case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2140     case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2141     case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
2142     case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
2143     case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
2144     case SpvOpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
2145     case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2146     case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2147     case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2148     case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
2149     case SpvOpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2150     case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
2151     case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2152     case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2153     case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
2154     case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
2155     case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2156     case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2157     case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
2158     case SpvOpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
2159     case SpvOpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
2160     case SpvOpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
2161     case SpvOpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
2162     case SpvOpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
2163     case SpvOpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
2164     case SpvOpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
2165     case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
2166     case SpvOpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
2167     case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
2168     case SpvOpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
2169     case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
2170     case SpvOpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
2171     case SpvOpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
2172     case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
2173     case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
2174     case SpvOpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
2175     case SpvOpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
2176     case SpvOpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
2177     case SpvOpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
2178     case SpvOpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
2179     case SpvOpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
2180     }
2181 }
2182 #endif /* SPV_ENABLE_UTILITY_CODE */
2183 
2184 #endif
2185 
2186