• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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     SpvBuiltInHitTNV = 5332,
622     SpvBuiltInHitKindKHR = 5333,
623     SpvBuiltInHitKindNV = 5333,
624     SpvBuiltInIncomingRayFlagsKHR = 5351,
625     SpvBuiltInIncomingRayFlagsNV = 5351,
626     SpvBuiltInRayGeometryIndexKHR = 5352,
627     SpvBuiltInWarpsPerSMNV = 5374,
628     SpvBuiltInSMCountNV = 5375,
629     SpvBuiltInWarpIDNV = 5376,
630     SpvBuiltInSMIDNV = 5377,
631     SpvBuiltInMax = 0x7fffffff,
632 } SpvBuiltIn;
633 
634 typedef enum SpvSelectionControlShift_ {
635     SpvSelectionControlFlattenShift = 0,
636     SpvSelectionControlDontFlattenShift = 1,
637     SpvSelectionControlMax = 0x7fffffff,
638 } SpvSelectionControlShift;
639 
640 typedef enum SpvSelectionControlMask_ {
641     SpvSelectionControlMaskNone = 0,
642     SpvSelectionControlFlattenMask = 0x00000001,
643     SpvSelectionControlDontFlattenMask = 0x00000002,
644 } SpvSelectionControlMask;
645 
646 typedef enum SpvLoopControlShift_ {
647     SpvLoopControlUnrollShift = 0,
648     SpvLoopControlDontUnrollShift = 1,
649     SpvLoopControlDependencyInfiniteShift = 2,
650     SpvLoopControlDependencyLengthShift = 3,
651     SpvLoopControlMinIterationsShift = 4,
652     SpvLoopControlMaxIterationsShift = 5,
653     SpvLoopControlIterationMultipleShift = 6,
654     SpvLoopControlPeelCountShift = 7,
655     SpvLoopControlPartialCountShift = 8,
656     SpvLoopControlInitiationIntervalINTELShift = 16,
657     SpvLoopControlMaxConcurrencyINTELShift = 17,
658     SpvLoopControlDependencyArrayINTELShift = 18,
659     SpvLoopControlPipelineEnableINTELShift = 19,
660     SpvLoopControlLoopCoalesceINTELShift = 20,
661     SpvLoopControlMaxInterleavingINTELShift = 21,
662     SpvLoopControlSpeculatedIterationsINTELShift = 22,
663     SpvLoopControlMax = 0x7fffffff,
664 } SpvLoopControlShift;
665 
666 typedef enum SpvLoopControlMask_ {
667     SpvLoopControlMaskNone = 0,
668     SpvLoopControlUnrollMask = 0x00000001,
669     SpvLoopControlDontUnrollMask = 0x00000002,
670     SpvLoopControlDependencyInfiniteMask = 0x00000004,
671     SpvLoopControlDependencyLengthMask = 0x00000008,
672     SpvLoopControlMinIterationsMask = 0x00000010,
673     SpvLoopControlMaxIterationsMask = 0x00000020,
674     SpvLoopControlIterationMultipleMask = 0x00000040,
675     SpvLoopControlPeelCountMask = 0x00000080,
676     SpvLoopControlPartialCountMask = 0x00000100,
677     SpvLoopControlInitiationIntervalINTELMask = 0x00010000,
678     SpvLoopControlMaxConcurrencyINTELMask = 0x00020000,
679     SpvLoopControlDependencyArrayINTELMask = 0x00040000,
680     SpvLoopControlPipelineEnableINTELMask = 0x00080000,
681     SpvLoopControlLoopCoalesceINTELMask = 0x00100000,
682     SpvLoopControlMaxInterleavingINTELMask = 0x00200000,
683     SpvLoopControlSpeculatedIterationsINTELMask = 0x00400000,
684 } SpvLoopControlMask;
685 
686 typedef enum SpvFunctionControlShift_ {
687     SpvFunctionControlInlineShift = 0,
688     SpvFunctionControlDontInlineShift = 1,
689     SpvFunctionControlPureShift = 2,
690     SpvFunctionControlConstShift = 3,
691     SpvFunctionControlMax = 0x7fffffff,
692 } SpvFunctionControlShift;
693 
694 typedef enum SpvFunctionControlMask_ {
695     SpvFunctionControlMaskNone = 0,
696     SpvFunctionControlInlineMask = 0x00000001,
697     SpvFunctionControlDontInlineMask = 0x00000002,
698     SpvFunctionControlPureMask = 0x00000004,
699     SpvFunctionControlConstMask = 0x00000008,
700 } SpvFunctionControlMask;
701 
702 typedef enum SpvMemorySemanticsShift_ {
703     SpvMemorySemanticsAcquireShift = 1,
704     SpvMemorySemanticsReleaseShift = 2,
705     SpvMemorySemanticsAcquireReleaseShift = 3,
706     SpvMemorySemanticsSequentiallyConsistentShift = 4,
707     SpvMemorySemanticsUniformMemoryShift = 6,
708     SpvMemorySemanticsSubgroupMemoryShift = 7,
709     SpvMemorySemanticsWorkgroupMemoryShift = 8,
710     SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
711     SpvMemorySemanticsAtomicCounterMemoryShift = 10,
712     SpvMemorySemanticsImageMemoryShift = 11,
713     SpvMemorySemanticsOutputMemoryShift = 12,
714     SpvMemorySemanticsOutputMemoryKHRShift = 12,
715     SpvMemorySemanticsMakeAvailableShift = 13,
716     SpvMemorySemanticsMakeAvailableKHRShift = 13,
717     SpvMemorySemanticsMakeVisibleShift = 14,
718     SpvMemorySemanticsMakeVisibleKHRShift = 14,
719     SpvMemorySemanticsVolatileShift = 15,
720     SpvMemorySemanticsMax = 0x7fffffff,
721 } SpvMemorySemanticsShift;
722 
723 typedef enum SpvMemorySemanticsMask_ {
724     SpvMemorySemanticsMaskNone = 0,
725     SpvMemorySemanticsAcquireMask = 0x00000002,
726     SpvMemorySemanticsReleaseMask = 0x00000004,
727     SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
728     SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
729     SpvMemorySemanticsUniformMemoryMask = 0x00000040,
730     SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
731     SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
732     SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
733     SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
734     SpvMemorySemanticsImageMemoryMask = 0x00000800,
735     SpvMemorySemanticsOutputMemoryMask = 0x00001000,
736     SpvMemorySemanticsOutputMemoryKHRMask = 0x00001000,
737     SpvMemorySemanticsMakeAvailableMask = 0x00002000,
738     SpvMemorySemanticsMakeAvailableKHRMask = 0x00002000,
739     SpvMemorySemanticsMakeVisibleMask = 0x00004000,
740     SpvMemorySemanticsMakeVisibleKHRMask = 0x00004000,
741     SpvMemorySemanticsVolatileMask = 0x00008000,
742 } SpvMemorySemanticsMask;
743 
744 typedef enum SpvMemoryAccessShift_ {
745     SpvMemoryAccessVolatileShift = 0,
746     SpvMemoryAccessAlignedShift = 1,
747     SpvMemoryAccessNontemporalShift = 2,
748     SpvMemoryAccessMakePointerAvailableShift = 3,
749     SpvMemoryAccessMakePointerAvailableKHRShift = 3,
750     SpvMemoryAccessMakePointerVisibleShift = 4,
751     SpvMemoryAccessMakePointerVisibleKHRShift = 4,
752     SpvMemoryAccessNonPrivatePointerShift = 5,
753     SpvMemoryAccessNonPrivatePointerKHRShift = 5,
754     SpvMemoryAccessMax = 0x7fffffff,
755 } SpvMemoryAccessShift;
756 
757 typedef enum SpvMemoryAccessMask_ {
758     SpvMemoryAccessMaskNone = 0,
759     SpvMemoryAccessVolatileMask = 0x00000001,
760     SpvMemoryAccessAlignedMask = 0x00000002,
761     SpvMemoryAccessNontemporalMask = 0x00000004,
762     SpvMemoryAccessMakePointerAvailableMask = 0x00000008,
763     SpvMemoryAccessMakePointerAvailableKHRMask = 0x00000008,
764     SpvMemoryAccessMakePointerVisibleMask = 0x00000010,
765     SpvMemoryAccessMakePointerVisibleKHRMask = 0x00000010,
766     SpvMemoryAccessNonPrivatePointerMask = 0x00000020,
767     SpvMemoryAccessNonPrivatePointerKHRMask = 0x00000020,
768 } SpvMemoryAccessMask;
769 
770 typedef enum SpvScope_ {
771     SpvScopeCrossDevice = 0,
772     SpvScopeDevice = 1,
773     SpvScopeWorkgroup = 2,
774     SpvScopeSubgroup = 3,
775     SpvScopeInvocation = 4,
776     SpvScopeQueueFamily = 5,
777     SpvScopeQueueFamilyKHR = 5,
778     SpvScopeShaderCallKHR = 6,
779     SpvScopeMax = 0x7fffffff,
780 } SpvScope;
781 
782 typedef enum SpvGroupOperation_ {
783     SpvGroupOperationReduce = 0,
784     SpvGroupOperationInclusiveScan = 1,
785     SpvGroupOperationExclusiveScan = 2,
786     SpvGroupOperationClusteredReduce = 3,
787     SpvGroupOperationPartitionedReduceNV = 6,
788     SpvGroupOperationPartitionedInclusiveScanNV = 7,
789     SpvGroupOperationPartitionedExclusiveScanNV = 8,
790     SpvGroupOperationMax = 0x7fffffff,
791 } SpvGroupOperation;
792 
793 typedef enum SpvKernelEnqueueFlags_ {
794     SpvKernelEnqueueFlagsNoWait = 0,
795     SpvKernelEnqueueFlagsWaitKernel = 1,
796     SpvKernelEnqueueFlagsWaitWorkGroup = 2,
797     SpvKernelEnqueueFlagsMax = 0x7fffffff,
798 } SpvKernelEnqueueFlags;
799 
800 typedef enum SpvKernelProfilingInfoShift_ {
801     SpvKernelProfilingInfoCmdExecTimeShift = 0,
802     SpvKernelProfilingInfoMax = 0x7fffffff,
803 } SpvKernelProfilingInfoShift;
804 
805 typedef enum SpvKernelProfilingInfoMask_ {
806     SpvKernelProfilingInfoMaskNone = 0,
807     SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
808 } SpvKernelProfilingInfoMask;
809 
810 typedef enum SpvCapability_ {
811     SpvCapabilityMatrix = 0,
812     SpvCapabilityShader = 1,
813     SpvCapabilityGeometry = 2,
814     SpvCapabilityTessellation = 3,
815     SpvCapabilityAddresses = 4,
816     SpvCapabilityLinkage = 5,
817     SpvCapabilityKernel = 6,
818     SpvCapabilityVector16 = 7,
819     SpvCapabilityFloat16Buffer = 8,
820     SpvCapabilityFloat16 = 9,
821     SpvCapabilityFloat64 = 10,
822     SpvCapabilityInt64 = 11,
823     SpvCapabilityInt64Atomics = 12,
824     SpvCapabilityImageBasic = 13,
825     SpvCapabilityImageReadWrite = 14,
826     SpvCapabilityImageMipmap = 15,
827     SpvCapabilityPipes = 17,
828     SpvCapabilityGroups = 18,
829     SpvCapabilityDeviceEnqueue = 19,
830     SpvCapabilityLiteralSampler = 20,
831     SpvCapabilityAtomicStorage = 21,
832     SpvCapabilityInt16 = 22,
833     SpvCapabilityTessellationPointSize = 23,
834     SpvCapabilityGeometryPointSize = 24,
835     SpvCapabilityImageGatherExtended = 25,
836     SpvCapabilityStorageImageMultisample = 27,
837     SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
838     SpvCapabilitySampledImageArrayDynamicIndexing = 29,
839     SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
840     SpvCapabilityStorageImageArrayDynamicIndexing = 31,
841     SpvCapabilityClipDistance = 32,
842     SpvCapabilityCullDistance = 33,
843     SpvCapabilityImageCubeArray = 34,
844     SpvCapabilitySampleRateShading = 35,
845     SpvCapabilityImageRect = 36,
846     SpvCapabilitySampledRect = 37,
847     SpvCapabilityGenericPointer = 38,
848     SpvCapabilityInt8 = 39,
849     SpvCapabilityInputAttachment = 40,
850     SpvCapabilitySparseResidency = 41,
851     SpvCapabilityMinLod = 42,
852     SpvCapabilitySampled1D = 43,
853     SpvCapabilityImage1D = 44,
854     SpvCapabilitySampledCubeArray = 45,
855     SpvCapabilitySampledBuffer = 46,
856     SpvCapabilityImageBuffer = 47,
857     SpvCapabilityImageMSArray = 48,
858     SpvCapabilityStorageImageExtendedFormats = 49,
859     SpvCapabilityImageQuery = 50,
860     SpvCapabilityDerivativeControl = 51,
861     SpvCapabilityInterpolationFunction = 52,
862     SpvCapabilityTransformFeedback = 53,
863     SpvCapabilityGeometryStreams = 54,
864     SpvCapabilityStorageImageReadWithoutFormat = 55,
865     SpvCapabilityStorageImageWriteWithoutFormat = 56,
866     SpvCapabilityMultiViewport = 57,
867     SpvCapabilitySubgroupDispatch = 58,
868     SpvCapabilityNamedBarrier = 59,
869     SpvCapabilityPipeStorage = 60,
870     SpvCapabilityGroupNonUniform = 61,
871     SpvCapabilityGroupNonUniformVote = 62,
872     SpvCapabilityGroupNonUniformArithmetic = 63,
873     SpvCapabilityGroupNonUniformBallot = 64,
874     SpvCapabilityGroupNonUniformShuffle = 65,
875     SpvCapabilityGroupNonUniformShuffleRelative = 66,
876     SpvCapabilityGroupNonUniformClustered = 67,
877     SpvCapabilityGroupNonUniformQuad = 68,
878     SpvCapabilityShaderLayer = 69,
879     SpvCapabilityShaderViewportIndex = 70,
880     SpvCapabilityFragmentShadingRateKHR = 4422,
881     SpvCapabilitySubgroupBallotKHR = 4423,
882     SpvCapabilityDrawParameters = 4427,
883     SpvCapabilitySubgroupVoteKHR = 4431,
884     SpvCapabilityStorageBuffer16BitAccess = 4433,
885     SpvCapabilityStorageUniformBufferBlock16 = 4433,
886     SpvCapabilityStorageUniform16 = 4434,
887     SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
888     SpvCapabilityStoragePushConstant16 = 4435,
889     SpvCapabilityStorageInputOutput16 = 4436,
890     SpvCapabilityDeviceGroup = 4437,
891     SpvCapabilityMultiView = 4439,
892     SpvCapabilityVariablePointersStorageBuffer = 4441,
893     SpvCapabilityVariablePointers = 4442,
894     SpvCapabilityAtomicStorageOps = 4445,
895     SpvCapabilitySampleMaskPostDepthCoverage = 4447,
896     SpvCapabilityStorageBuffer8BitAccess = 4448,
897     SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,
898     SpvCapabilityStoragePushConstant8 = 4450,
899     SpvCapabilityDenormPreserve = 4464,
900     SpvCapabilityDenormFlushToZero = 4465,
901     SpvCapabilitySignedZeroInfNanPreserve = 4466,
902     SpvCapabilityRoundingModeRTE = 4467,
903     SpvCapabilityRoundingModeRTZ = 4468,
904     SpvCapabilityRayQueryProvisionalKHR = 4471,
905     SpvCapabilityRayQueryKHR = 4472,
906     SpvCapabilityRayTraversalPrimitiveCullingKHR = 4478,
907     SpvCapabilityRayTracingKHR = 4479,
908     SpvCapabilityFloat16ImageAMD = 5008,
909     SpvCapabilityImageGatherBiasLodAMD = 5009,
910     SpvCapabilityFragmentMaskAMD = 5010,
911     SpvCapabilityStencilExportEXT = 5013,
912     SpvCapabilityImageReadWriteLodAMD = 5015,
913     SpvCapabilityInt64ImageEXT = 5016,
914     SpvCapabilityShaderClockKHR = 5055,
915     SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
916     SpvCapabilityGeometryShaderPassthroughNV = 5251,
917     SpvCapabilityShaderViewportIndexLayerEXT = 5254,
918     SpvCapabilityShaderViewportIndexLayerNV = 5254,
919     SpvCapabilityShaderViewportMaskNV = 5255,
920     SpvCapabilityShaderStereoViewNV = 5259,
921     SpvCapabilityPerViewAttributesNV = 5260,
922     SpvCapabilityFragmentFullyCoveredEXT = 5265,
923     SpvCapabilityMeshShadingNV = 5266,
924     SpvCapabilityImageFootprintNV = 5282,
925     SpvCapabilityFragmentBarycentricNV = 5284,
926     SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
927     SpvCapabilityFragmentDensityEXT = 5291,
928     SpvCapabilityShadingRateNV = 5291,
929     SpvCapabilityGroupNonUniformPartitionedNV = 5297,
930     SpvCapabilityShaderNonUniform = 5301,
931     SpvCapabilityShaderNonUniformEXT = 5301,
932     SpvCapabilityRuntimeDescriptorArray = 5302,
933     SpvCapabilityRuntimeDescriptorArrayEXT = 5302,
934     SpvCapabilityInputAttachmentArrayDynamicIndexing = 5303,
935     SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
936     SpvCapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
937     SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
938     SpvCapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
939     SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
940     SpvCapabilityUniformBufferArrayNonUniformIndexing = 5306,
941     SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
942     SpvCapabilitySampledImageArrayNonUniformIndexing = 5307,
943     SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
944     SpvCapabilityStorageBufferArrayNonUniformIndexing = 5308,
945     SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
946     SpvCapabilityStorageImageArrayNonUniformIndexing = 5309,
947     SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
948     SpvCapabilityInputAttachmentArrayNonUniformIndexing = 5310,
949     SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
950     SpvCapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
951     SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
952     SpvCapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
953     SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
954     SpvCapabilityRayTracingNV = 5340,
955     SpvCapabilityVulkanMemoryModel = 5345,
956     SpvCapabilityVulkanMemoryModelKHR = 5345,
957     SpvCapabilityVulkanMemoryModelDeviceScope = 5346,
958     SpvCapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
959     SpvCapabilityPhysicalStorageBufferAddresses = 5347,
960     SpvCapabilityPhysicalStorageBufferAddressesEXT = 5347,
961     SpvCapabilityComputeDerivativeGroupLinearNV = 5350,
962     SpvCapabilityRayTracingProvisionalKHR = 5353,
963     SpvCapabilityCooperativeMatrixNV = 5357,
964     SpvCapabilityFragmentShaderSampleInterlockEXT = 5363,
965     SpvCapabilityFragmentShaderShadingRateInterlockEXT = 5372,
966     SpvCapabilityShaderSMBuiltinsNV = 5373,
967     SpvCapabilityFragmentShaderPixelInterlockEXT = 5378,
968     SpvCapabilityDemoteToHelperInvocationEXT = 5379,
969     SpvCapabilitySubgroupShuffleINTEL = 5568,
970     SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
971     SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
972     SpvCapabilitySubgroupImageMediaBlockIOINTEL = 5579,
973     SpvCapabilityIntegerFunctions2INTEL = 5584,
974     SpvCapabilityFunctionPointersINTEL = 5603,
975     SpvCapabilityIndirectReferencesINTEL = 5604,
976     SpvCapabilitySubgroupAvcMotionEstimationINTEL = 5696,
977     SpvCapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
978     SpvCapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
979     SpvCapabilityFPGAMemoryAttributesINTEL = 5824,
980     SpvCapabilityUnstructuredLoopControlsINTEL = 5886,
981     SpvCapabilityFPGALoopControlsINTEL = 5888,
982     SpvCapabilityKernelAttributesINTEL = 5892,
983     SpvCapabilityFPGAKernelAttributesINTEL = 5897,
984     SpvCapabilityBlockingPipesINTEL = 5945,
985     SpvCapabilityFPGARegINTEL = 5948,
986     SpvCapabilityAtomicFloat32AddEXT = 6033,
987     SpvCapabilityAtomicFloat64AddEXT = 6034,
988     SpvCapabilityMax = 0x7fffffff,
989 } SpvCapability;
990 
991 typedef enum SpvRayFlagsShift_ {
992     SpvRayFlagsOpaqueKHRShift = 0,
993     SpvRayFlagsNoOpaqueKHRShift = 1,
994     SpvRayFlagsTerminateOnFirstHitKHRShift = 2,
995     SpvRayFlagsSkipClosestHitShaderKHRShift = 3,
996     SpvRayFlagsCullBackFacingTrianglesKHRShift = 4,
997     SpvRayFlagsCullFrontFacingTrianglesKHRShift = 5,
998     SpvRayFlagsCullOpaqueKHRShift = 6,
999     SpvRayFlagsCullNoOpaqueKHRShift = 7,
1000     SpvRayFlagsSkipTrianglesKHRShift = 8,
1001     SpvRayFlagsSkipAABBsKHRShift = 9,
1002     SpvRayFlagsMax = 0x7fffffff,
1003 } SpvRayFlagsShift;
1004 
1005 typedef enum SpvRayFlagsMask_ {
1006     SpvRayFlagsMaskNone = 0,
1007     SpvRayFlagsOpaqueKHRMask = 0x00000001,
1008     SpvRayFlagsNoOpaqueKHRMask = 0x00000002,
1009     SpvRayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
1010     SpvRayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
1011     SpvRayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
1012     SpvRayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
1013     SpvRayFlagsCullOpaqueKHRMask = 0x00000040,
1014     SpvRayFlagsCullNoOpaqueKHRMask = 0x00000080,
1015     SpvRayFlagsSkipTrianglesKHRMask = 0x00000100,
1016     SpvRayFlagsSkipAABBsKHRMask = 0x00000200,
1017 } SpvRayFlagsMask;
1018 
1019 typedef enum SpvRayQueryIntersection_ {
1020     SpvRayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
1021     SpvRayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
1022     SpvRayQueryIntersectionMax = 0x7fffffff,
1023 } SpvRayQueryIntersection;
1024 
1025 typedef enum SpvRayQueryCommittedIntersectionType_ {
1026     SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
1027     SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
1028     SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
1029     SpvRayQueryCommittedIntersectionTypeMax = 0x7fffffff,
1030 } SpvRayQueryCommittedIntersectionType;
1031 
1032 typedef enum SpvRayQueryCandidateIntersectionType_ {
1033     SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
1034     SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
1035     SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff,
1036 } SpvRayQueryCandidateIntersectionType;
1037 
1038 typedef enum SpvFragmentShadingRateShift_ {
1039     SpvFragmentShadingRateVertical2PixelsShift = 0,
1040     SpvFragmentShadingRateVertical4PixelsShift = 1,
1041     SpvFragmentShadingRateHorizontal2PixelsShift = 2,
1042     SpvFragmentShadingRateHorizontal4PixelsShift = 3,
1043     SpvFragmentShadingRateMax = 0x7fffffff,
1044 } SpvFragmentShadingRateShift;
1045 
1046 typedef enum SpvFragmentShadingRateMask_ {
1047     SpvFragmentShadingRateMaskNone = 0,
1048     SpvFragmentShadingRateVertical2PixelsMask = 0x00000001,
1049     SpvFragmentShadingRateVertical4PixelsMask = 0x00000002,
1050     SpvFragmentShadingRateHorizontal2PixelsMask = 0x00000004,
1051     SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,
1052 } SpvFragmentShadingRateMask;
1053 
1054 typedef enum SpvOp_ {
1055     SpvOpNop = 0,
1056     SpvOpUndef = 1,
1057     SpvOpSourceContinued = 2,
1058     SpvOpSource = 3,
1059     SpvOpSourceExtension = 4,
1060     SpvOpName = 5,
1061     SpvOpMemberName = 6,
1062     SpvOpString = 7,
1063     SpvOpLine = 8,
1064     SpvOpExtension = 10,
1065     SpvOpExtInstImport = 11,
1066     SpvOpExtInst = 12,
1067     SpvOpMemoryModel = 14,
1068     SpvOpEntryPoint = 15,
1069     SpvOpExecutionMode = 16,
1070     SpvOpCapability = 17,
1071     SpvOpTypeVoid = 19,
1072     SpvOpTypeBool = 20,
1073     SpvOpTypeInt = 21,
1074     SpvOpTypeFloat = 22,
1075     SpvOpTypeVector = 23,
1076     SpvOpTypeMatrix = 24,
1077     SpvOpTypeImage = 25,
1078     SpvOpTypeSampler = 26,
1079     SpvOpTypeSampledImage = 27,
1080     SpvOpTypeArray = 28,
1081     SpvOpTypeRuntimeArray = 29,
1082     SpvOpTypeStruct = 30,
1083     SpvOpTypeOpaque = 31,
1084     SpvOpTypePointer = 32,
1085     SpvOpTypeFunction = 33,
1086     SpvOpTypeEvent = 34,
1087     SpvOpTypeDeviceEvent = 35,
1088     SpvOpTypeReserveId = 36,
1089     SpvOpTypeQueue = 37,
1090     SpvOpTypePipe = 38,
1091     SpvOpTypeForwardPointer = 39,
1092     SpvOpConstantTrue = 41,
1093     SpvOpConstantFalse = 42,
1094     SpvOpConstant = 43,
1095     SpvOpConstantComposite = 44,
1096     SpvOpConstantSampler = 45,
1097     SpvOpConstantNull = 46,
1098     SpvOpSpecConstantTrue = 48,
1099     SpvOpSpecConstantFalse = 49,
1100     SpvOpSpecConstant = 50,
1101     SpvOpSpecConstantComposite = 51,
1102     SpvOpSpecConstantOp = 52,
1103     SpvOpFunction = 54,
1104     SpvOpFunctionParameter = 55,
1105     SpvOpFunctionEnd = 56,
1106     SpvOpFunctionCall = 57,
1107     SpvOpVariable = 59,
1108     SpvOpImageTexelPointer = 60,
1109     SpvOpLoad = 61,
1110     SpvOpStore = 62,
1111     SpvOpCopyMemory = 63,
1112     SpvOpCopyMemorySized = 64,
1113     SpvOpAccessChain = 65,
1114     SpvOpInBoundsAccessChain = 66,
1115     SpvOpPtrAccessChain = 67,
1116     SpvOpArrayLength = 68,
1117     SpvOpGenericPtrMemSemantics = 69,
1118     SpvOpInBoundsPtrAccessChain = 70,
1119     SpvOpDecorate = 71,
1120     SpvOpMemberDecorate = 72,
1121     SpvOpDecorationGroup = 73,
1122     SpvOpGroupDecorate = 74,
1123     SpvOpGroupMemberDecorate = 75,
1124     SpvOpVectorExtractDynamic = 77,
1125     SpvOpVectorInsertDynamic = 78,
1126     SpvOpVectorShuffle = 79,
1127     SpvOpCompositeConstruct = 80,
1128     SpvOpCompositeExtract = 81,
1129     SpvOpCompositeInsert = 82,
1130     SpvOpCopyObject = 83,
1131     SpvOpTranspose = 84,
1132     SpvOpSampledImage = 86,
1133     SpvOpImageSampleImplicitLod = 87,
1134     SpvOpImageSampleExplicitLod = 88,
1135     SpvOpImageSampleDrefImplicitLod = 89,
1136     SpvOpImageSampleDrefExplicitLod = 90,
1137     SpvOpImageSampleProjImplicitLod = 91,
1138     SpvOpImageSampleProjExplicitLod = 92,
1139     SpvOpImageSampleProjDrefImplicitLod = 93,
1140     SpvOpImageSampleProjDrefExplicitLod = 94,
1141     SpvOpImageFetch = 95,
1142     SpvOpImageGather = 96,
1143     SpvOpImageDrefGather = 97,
1144     SpvOpImageRead = 98,
1145     SpvOpImageWrite = 99,
1146     SpvOpImage = 100,
1147     SpvOpImageQueryFormat = 101,
1148     SpvOpImageQueryOrder = 102,
1149     SpvOpImageQuerySizeLod = 103,
1150     SpvOpImageQuerySize = 104,
1151     SpvOpImageQueryLod = 105,
1152     SpvOpImageQueryLevels = 106,
1153     SpvOpImageQuerySamples = 107,
1154     SpvOpConvertFToU = 109,
1155     SpvOpConvertFToS = 110,
1156     SpvOpConvertSToF = 111,
1157     SpvOpConvertUToF = 112,
1158     SpvOpUConvert = 113,
1159     SpvOpSConvert = 114,
1160     SpvOpFConvert = 115,
1161     SpvOpQuantizeToF16 = 116,
1162     SpvOpConvertPtrToU = 117,
1163     SpvOpSatConvertSToU = 118,
1164     SpvOpSatConvertUToS = 119,
1165     SpvOpConvertUToPtr = 120,
1166     SpvOpPtrCastToGeneric = 121,
1167     SpvOpGenericCastToPtr = 122,
1168     SpvOpGenericCastToPtrExplicit = 123,
1169     SpvOpBitcast = 124,
1170     SpvOpSNegate = 126,
1171     SpvOpFNegate = 127,
1172     SpvOpIAdd = 128,
1173     SpvOpFAdd = 129,
1174     SpvOpISub = 130,
1175     SpvOpFSub = 131,
1176     SpvOpIMul = 132,
1177     SpvOpFMul = 133,
1178     SpvOpUDiv = 134,
1179     SpvOpSDiv = 135,
1180     SpvOpFDiv = 136,
1181     SpvOpUMod = 137,
1182     SpvOpSRem = 138,
1183     SpvOpSMod = 139,
1184     SpvOpFRem = 140,
1185     SpvOpFMod = 141,
1186     SpvOpVectorTimesScalar = 142,
1187     SpvOpMatrixTimesScalar = 143,
1188     SpvOpVectorTimesMatrix = 144,
1189     SpvOpMatrixTimesVector = 145,
1190     SpvOpMatrixTimesMatrix = 146,
1191     SpvOpOuterProduct = 147,
1192     SpvOpDot = 148,
1193     SpvOpIAddCarry = 149,
1194     SpvOpISubBorrow = 150,
1195     SpvOpUMulExtended = 151,
1196     SpvOpSMulExtended = 152,
1197     SpvOpAny = 154,
1198     SpvOpAll = 155,
1199     SpvOpIsNan = 156,
1200     SpvOpIsInf = 157,
1201     SpvOpIsFinite = 158,
1202     SpvOpIsNormal = 159,
1203     SpvOpSignBitSet = 160,
1204     SpvOpLessOrGreater = 161,
1205     SpvOpOrdered = 162,
1206     SpvOpUnordered = 163,
1207     SpvOpLogicalEqual = 164,
1208     SpvOpLogicalNotEqual = 165,
1209     SpvOpLogicalOr = 166,
1210     SpvOpLogicalAnd = 167,
1211     SpvOpLogicalNot = 168,
1212     SpvOpSelect = 169,
1213     SpvOpIEqual = 170,
1214     SpvOpINotEqual = 171,
1215     SpvOpUGreaterThan = 172,
1216     SpvOpSGreaterThan = 173,
1217     SpvOpUGreaterThanEqual = 174,
1218     SpvOpSGreaterThanEqual = 175,
1219     SpvOpULessThan = 176,
1220     SpvOpSLessThan = 177,
1221     SpvOpULessThanEqual = 178,
1222     SpvOpSLessThanEqual = 179,
1223     SpvOpFOrdEqual = 180,
1224     SpvOpFUnordEqual = 181,
1225     SpvOpFOrdNotEqual = 182,
1226     SpvOpFUnordNotEqual = 183,
1227     SpvOpFOrdLessThan = 184,
1228     SpvOpFUnordLessThan = 185,
1229     SpvOpFOrdGreaterThan = 186,
1230     SpvOpFUnordGreaterThan = 187,
1231     SpvOpFOrdLessThanEqual = 188,
1232     SpvOpFUnordLessThanEqual = 189,
1233     SpvOpFOrdGreaterThanEqual = 190,
1234     SpvOpFUnordGreaterThanEqual = 191,
1235     SpvOpShiftRightLogical = 194,
1236     SpvOpShiftRightArithmetic = 195,
1237     SpvOpShiftLeftLogical = 196,
1238     SpvOpBitwiseOr = 197,
1239     SpvOpBitwiseXor = 198,
1240     SpvOpBitwiseAnd = 199,
1241     SpvOpNot = 200,
1242     SpvOpBitFieldInsert = 201,
1243     SpvOpBitFieldSExtract = 202,
1244     SpvOpBitFieldUExtract = 203,
1245     SpvOpBitReverse = 204,
1246     SpvOpBitCount = 205,
1247     SpvOpDPdx = 207,
1248     SpvOpDPdy = 208,
1249     SpvOpFwidth = 209,
1250     SpvOpDPdxFine = 210,
1251     SpvOpDPdyFine = 211,
1252     SpvOpFwidthFine = 212,
1253     SpvOpDPdxCoarse = 213,
1254     SpvOpDPdyCoarse = 214,
1255     SpvOpFwidthCoarse = 215,
1256     SpvOpEmitVertex = 218,
1257     SpvOpEndPrimitive = 219,
1258     SpvOpEmitStreamVertex = 220,
1259     SpvOpEndStreamPrimitive = 221,
1260     SpvOpControlBarrier = 224,
1261     SpvOpMemoryBarrier = 225,
1262     SpvOpAtomicLoad = 227,
1263     SpvOpAtomicStore = 228,
1264     SpvOpAtomicExchange = 229,
1265     SpvOpAtomicCompareExchange = 230,
1266     SpvOpAtomicCompareExchangeWeak = 231,
1267     SpvOpAtomicIIncrement = 232,
1268     SpvOpAtomicIDecrement = 233,
1269     SpvOpAtomicIAdd = 234,
1270     SpvOpAtomicISub = 235,
1271     SpvOpAtomicSMin = 236,
1272     SpvOpAtomicUMin = 237,
1273     SpvOpAtomicSMax = 238,
1274     SpvOpAtomicUMax = 239,
1275     SpvOpAtomicAnd = 240,
1276     SpvOpAtomicOr = 241,
1277     SpvOpAtomicXor = 242,
1278     SpvOpPhi = 245,
1279     SpvOpLoopMerge = 246,
1280     SpvOpSelectionMerge = 247,
1281     SpvOpLabel = 248,
1282     SpvOpBranch = 249,
1283     SpvOpBranchConditional = 250,
1284     SpvOpSwitch = 251,
1285     SpvOpKill = 252,
1286     SpvOpReturn = 253,
1287     SpvOpReturnValue = 254,
1288     SpvOpUnreachable = 255,
1289     SpvOpLifetimeStart = 256,
1290     SpvOpLifetimeStop = 257,
1291     SpvOpGroupAsyncCopy = 259,
1292     SpvOpGroupWaitEvents = 260,
1293     SpvOpGroupAll = 261,
1294     SpvOpGroupAny = 262,
1295     SpvOpGroupBroadcast = 263,
1296     SpvOpGroupIAdd = 264,
1297     SpvOpGroupFAdd = 265,
1298     SpvOpGroupFMin = 266,
1299     SpvOpGroupUMin = 267,
1300     SpvOpGroupSMin = 268,
1301     SpvOpGroupFMax = 269,
1302     SpvOpGroupUMax = 270,
1303     SpvOpGroupSMax = 271,
1304     SpvOpReadPipe = 274,
1305     SpvOpWritePipe = 275,
1306     SpvOpReservedReadPipe = 276,
1307     SpvOpReservedWritePipe = 277,
1308     SpvOpReserveReadPipePackets = 278,
1309     SpvOpReserveWritePipePackets = 279,
1310     SpvOpCommitReadPipe = 280,
1311     SpvOpCommitWritePipe = 281,
1312     SpvOpIsValidReserveId = 282,
1313     SpvOpGetNumPipePackets = 283,
1314     SpvOpGetMaxPipePackets = 284,
1315     SpvOpGroupReserveReadPipePackets = 285,
1316     SpvOpGroupReserveWritePipePackets = 286,
1317     SpvOpGroupCommitReadPipe = 287,
1318     SpvOpGroupCommitWritePipe = 288,
1319     SpvOpEnqueueMarker = 291,
1320     SpvOpEnqueueKernel = 292,
1321     SpvOpGetKernelNDrangeSubGroupCount = 293,
1322     SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
1323     SpvOpGetKernelWorkGroupSize = 295,
1324     SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
1325     SpvOpRetainEvent = 297,
1326     SpvOpReleaseEvent = 298,
1327     SpvOpCreateUserEvent = 299,
1328     SpvOpIsValidEvent = 300,
1329     SpvOpSetUserEventStatus = 301,
1330     SpvOpCaptureEventProfilingInfo = 302,
1331     SpvOpGetDefaultQueue = 303,
1332     SpvOpBuildNDRange = 304,
1333     SpvOpImageSparseSampleImplicitLod = 305,
1334     SpvOpImageSparseSampleExplicitLod = 306,
1335     SpvOpImageSparseSampleDrefImplicitLod = 307,
1336     SpvOpImageSparseSampleDrefExplicitLod = 308,
1337     SpvOpImageSparseSampleProjImplicitLod = 309,
1338     SpvOpImageSparseSampleProjExplicitLod = 310,
1339     SpvOpImageSparseSampleProjDrefImplicitLod = 311,
1340     SpvOpImageSparseSampleProjDrefExplicitLod = 312,
1341     SpvOpImageSparseFetch = 313,
1342     SpvOpImageSparseGather = 314,
1343     SpvOpImageSparseDrefGather = 315,
1344     SpvOpImageSparseTexelsResident = 316,
1345     SpvOpNoLine = 317,
1346     SpvOpAtomicFlagTestAndSet = 318,
1347     SpvOpAtomicFlagClear = 319,
1348     SpvOpImageSparseRead = 320,
1349     SpvOpSizeOf = 321,
1350     SpvOpTypePipeStorage = 322,
1351     SpvOpConstantPipeStorage = 323,
1352     SpvOpCreatePipeFromPipeStorage = 324,
1353     SpvOpGetKernelLocalSizeForSubgroupCount = 325,
1354     SpvOpGetKernelMaxNumSubgroups = 326,
1355     SpvOpTypeNamedBarrier = 327,
1356     SpvOpNamedBarrierInitialize = 328,
1357     SpvOpMemoryNamedBarrier = 329,
1358     SpvOpModuleProcessed = 330,
1359     SpvOpExecutionModeId = 331,
1360     SpvOpDecorateId = 332,
1361     SpvOpGroupNonUniformElect = 333,
1362     SpvOpGroupNonUniformAll = 334,
1363     SpvOpGroupNonUniformAny = 335,
1364     SpvOpGroupNonUniformAllEqual = 336,
1365     SpvOpGroupNonUniformBroadcast = 337,
1366     SpvOpGroupNonUniformBroadcastFirst = 338,
1367     SpvOpGroupNonUniformBallot = 339,
1368     SpvOpGroupNonUniformInverseBallot = 340,
1369     SpvOpGroupNonUniformBallotBitExtract = 341,
1370     SpvOpGroupNonUniformBallotBitCount = 342,
1371     SpvOpGroupNonUniformBallotFindLSB = 343,
1372     SpvOpGroupNonUniformBallotFindMSB = 344,
1373     SpvOpGroupNonUniformShuffle = 345,
1374     SpvOpGroupNonUniformShuffleXor = 346,
1375     SpvOpGroupNonUniformShuffleUp = 347,
1376     SpvOpGroupNonUniformShuffleDown = 348,
1377     SpvOpGroupNonUniformIAdd = 349,
1378     SpvOpGroupNonUniformFAdd = 350,
1379     SpvOpGroupNonUniformIMul = 351,
1380     SpvOpGroupNonUniformFMul = 352,
1381     SpvOpGroupNonUniformSMin = 353,
1382     SpvOpGroupNonUniformUMin = 354,
1383     SpvOpGroupNonUniformFMin = 355,
1384     SpvOpGroupNonUniformSMax = 356,
1385     SpvOpGroupNonUniformUMax = 357,
1386     SpvOpGroupNonUniformFMax = 358,
1387     SpvOpGroupNonUniformBitwiseAnd = 359,
1388     SpvOpGroupNonUniformBitwiseOr = 360,
1389     SpvOpGroupNonUniformBitwiseXor = 361,
1390     SpvOpGroupNonUniformLogicalAnd = 362,
1391     SpvOpGroupNonUniformLogicalOr = 363,
1392     SpvOpGroupNonUniformLogicalXor = 364,
1393     SpvOpGroupNonUniformQuadBroadcast = 365,
1394     SpvOpGroupNonUniformQuadSwap = 366,
1395     SpvOpCopyLogical = 400,
1396     SpvOpPtrEqual = 401,
1397     SpvOpPtrNotEqual = 402,
1398     SpvOpPtrDiff = 403,
1399     SpvOpTerminateInvocation = 4416,
1400     SpvOpSubgroupBallotKHR = 4421,
1401     SpvOpSubgroupFirstInvocationKHR = 4422,
1402     SpvOpSubgroupAllKHR = 4428,
1403     SpvOpSubgroupAnyKHR = 4429,
1404     SpvOpSubgroupAllEqualKHR = 4430,
1405     SpvOpSubgroupReadInvocationKHR = 4432,
1406     SpvOpTraceRayKHR = 4445,
1407     SpvOpExecuteCallableKHR = 4446,
1408     SpvOpConvertUToAccelerationStructureKHR = 4447,
1409     SpvOpIgnoreIntersectionKHR = 4448,
1410     SpvOpTerminateRayKHR = 4449,
1411     SpvOpTypeRayQueryKHR = 4472,
1412     SpvOpRayQueryInitializeKHR = 4473,
1413     SpvOpRayQueryTerminateKHR = 4474,
1414     SpvOpRayQueryGenerateIntersectionKHR = 4475,
1415     SpvOpRayQueryConfirmIntersectionKHR = 4476,
1416     SpvOpRayQueryProceedKHR = 4477,
1417     SpvOpRayQueryGetIntersectionTypeKHR = 4479,
1418     SpvOpGroupIAddNonUniformAMD = 5000,
1419     SpvOpGroupFAddNonUniformAMD = 5001,
1420     SpvOpGroupFMinNonUniformAMD = 5002,
1421     SpvOpGroupUMinNonUniformAMD = 5003,
1422     SpvOpGroupSMinNonUniformAMD = 5004,
1423     SpvOpGroupFMaxNonUniformAMD = 5005,
1424     SpvOpGroupUMaxNonUniformAMD = 5006,
1425     SpvOpGroupSMaxNonUniformAMD = 5007,
1426     SpvOpFragmentMaskFetchAMD = 5011,
1427     SpvOpFragmentFetchAMD = 5012,
1428     SpvOpReadClockKHR = 5056,
1429     SpvOpImageSampleFootprintNV = 5283,
1430     SpvOpGroupNonUniformPartitionNV = 5296,
1431     SpvOpWritePackedPrimitiveIndices4x8NV = 5299,
1432     SpvOpReportIntersectionKHR = 5334,
1433     SpvOpReportIntersectionNV = 5334,
1434     SpvOpIgnoreIntersectionNV = 5335,
1435     SpvOpTerminateRayNV = 5336,
1436     SpvOpTraceNV = 5337,
1437     SpvOpTypeAccelerationStructureKHR = 5341,
1438     SpvOpTypeAccelerationStructureNV = 5341,
1439     SpvOpExecuteCallableNV = 5344,
1440     SpvOpTypeCooperativeMatrixNV = 5358,
1441     SpvOpCooperativeMatrixLoadNV = 5359,
1442     SpvOpCooperativeMatrixStoreNV = 5360,
1443     SpvOpCooperativeMatrixMulAddNV = 5361,
1444     SpvOpCooperativeMatrixLengthNV = 5362,
1445     SpvOpBeginInvocationInterlockEXT = 5364,
1446     SpvOpEndInvocationInterlockEXT = 5365,
1447     SpvOpDemoteToHelperInvocationEXT = 5380,
1448     SpvOpIsHelperInvocationEXT = 5381,
1449     SpvOpSubgroupShuffleINTEL = 5571,
1450     SpvOpSubgroupShuffleDownINTEL = 5572,
1451     SpvOpSubgroupShuffleUpINTEL = 5573,
1452     SpvOpSubgroupShuffleXorINTEL = 5574,
1453     SpvOpSubgroupBlockReadINTEL = 5575,
1454     SpvOpSubgroupBlockWriteINTEL = 5576,
1455     SpvOpSubgroupImageBlockReadINTEL = 5577,
1456     SpvOpSubgroupImageBlockWriteINTEL = 5578,
1457     SpvOpSubgroupImageMediaBlockReadINTEL = 5580,
1458     SpvOpSubgroupImageMediaBlockWriteINTEL = 5581,
1459     SpvOpUCountLeadingZerosINTEL = 5585,
1460     SpvOpUCountTrailingZerosINTEL = 5586,
1461     SpvOpAbsISubINTEL = 5587,
1462     SpvOpAbsUSubINTEL = 5588,
1463     SpvOpIAddSatINTEL = 5589,
1464     SpvOpUAddSatINTEL = 5590,
1465     SpvOpIAverageINTEL = 5591,
1466     SpvOpUAverageINTEL = 5592,
1467     SpvOpIAverageRoundedINTEL = 5593,
1468     SpvOpUAverageRoundedINTEL = 5594,
1469     SpvOpISubSatINTEL = 5595,
1470     SpvOpUSubSatINTEL = 5596,
1471     SpvOpIMul32x16INTEL = 5597,
1472     SpvOpUMul32x16INTEL = 5598,
1473     SpvOpFunctionPointerINTEL = 5600,
1474     SpvOpFunctionPointerCallINTEL = 5601,
1475     SpvOpDecorateString = 5632,
1476     SpvOpDecorateStringGOOGLE = 5632,
1477     SpvOpMemberDecorateString = 5633,
1478     SpvOpMemberDecorateStringGOOGLE = 5633,
1479     SpvOpVmeImageINTEL = 5699,
1480     SpvOpTypeVmeImageINTEL = 5700,
1481     SpvOpTypeAvcImePayloadINTEL = 5701,
1482     SpvOpTypeAvcRefPayloadINTEL = 5702,
1483     SpvOpTypeAvcSicPayloadINTEL = 5703,
1484     SpvOpTypeAvcMcePayloadINTEL = 5704,
1485     SpvOpTypeAvcMceResultINTEL = 5705,
1486     SpvOpTypeAvcImeResultINTEL = 5706,
1487     SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
1488     SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
1489     SpvOpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
1490     SpvOpTypeAvcImeDualReferenceStreaminINTEL = 5710,
1491     SpvOpTypeAvcRefResultINTEL = 5711,
1492     SpvOpTypeAvcSicResultINTEL = 5712,
1493     SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
1494     SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
1495     SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
1496     SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
1497     SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
1498     SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
1499     SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
1500     SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
1501     SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
1502     SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
1503     SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
1504     SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
1505     SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
1506     SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
1507     SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
1508     SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
1509     SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
1510     SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
1511     SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
1512     SpvOpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
1513     SpvOpSubgroupAvcMceConvertToImeResultINTEL = 5733,
1514     SpvOpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
1515     SpvOpSubgroupAvcMceConvertToRefResultINTEL = 5735,
1516     SpvOpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
1517     SpvOpSubgroupAvcMceConvertToSicResultINTEL = 5737,
1518     SpvOpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
1519     SpvOpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
1520     SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
1521     SpvOpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
1522     SpvOpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
1523     SpvOpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
1524     SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
1525     SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
1526     SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
1527     SpvOpSubgroupAvcImeInitializeINTEL = 5747,
1528     SpvOpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
1529     SpvOpSubgroupAvcImeSetDualReferenceINTEL = 5749,
1530     SpvOpSubgroupAvcImeRefWindowSizeINTEL = 5750,
1531     SpvOpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
1532     SpvOpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
1533     SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
1534     SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
1535     SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
1536     SpvOpSubgroupAvcImeSetWeightedSadINTEL = 5756,
1537     SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
1538     SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
1539     SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
1540     SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
1541     SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
1542     SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
1543     SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
1544     SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
1545     SpvOpSubgroupAvcImeConvertToMceResultINTEL = 5765,
1546     SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
1547     SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
1548     SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
1549     SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
1550     SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
1551     SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
1552     SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
1553     SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
1554     SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
1555     SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
1556     SpvOpSubgroupAvcImeGetBorderReachedINTEL = 5776,
1557     SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
1558     SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
1559     SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
1560     SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
1561     SpvOpSubgroupAvcFmeInitializeINTEL = 5781,
1562     SpvOpSubgroupAvcBmeInitializeINTEL = 5782,
1563     SpvOpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
1564     SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
1565     SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
1566     SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
1567     SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
1568     SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
1569     SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
1570     SpvOpSubgroupAvcRefConvertToMceResultINTEL = 5790,
1571     SpvOpSubgroupAvcSicInitializeINTEL = 5791,
1572     SpvOpSubgroupAvcSicConfigureSkcINTEL = 5792,
1573     SpvOpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
1574     SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
1575     SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
1576     SpvOpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
1577     SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
1578     SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
1579     SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
1580     SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
1581     SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
1582     SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
1583     SpvOpSubgroupAvcSicEvaluateIpeINTEL = 5803,
1584     SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
1585     SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
1586     SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
1587     SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
1588     SpvOpSubgroupAvcSicConvertToMceResultINTEL = 5808,
1589     SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
1590     SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
1591     SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
1592     SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
1593     SpvOpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
1594     SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
1595     SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
1596     SpvOpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
1597     SpvOpLoopControlINTEL = 5887,
1598     SpvOpReadPipeBlockingINTEL = 5946,
1599     SpvOpWritePipeBlockingINTEL = 5947,
1600     SpvOpFPGARegINTEL = 5949,
1601     SpvOpRayQueryGetRayTMinKHR = 6016,
1602     SpvOpRayQueryGetRayFlagsKHR = 6017,
1603     SpvOpRayQueryGetIntersectionTKHR = 6018,
1604     SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
1605     SpvOpRayQueryGetIntersectionInstanceIdKHR = 6020,
1606     SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
1607     SpvOpRayQueryGetIntersectionGeometryIndexKHR = 6022,
1608     SpvOpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
1609     SpvOpRayQueryGetIntersectionBarycentricsKHR = 6024,
1610     SpvOpRayQueryGetIntersectionFrontFaceKHR = 6025,
1611     SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
1612     SpvOpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
1613     SpvOpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
1614     SpvOpRayQueryGetWorldRayDirectionKHR = 6029,
1615     SpvOpRayQueryGetWorldRayOriginKHR = 6030,
1616     SpvOpRayQueryGetIntersectionObjectToWorldKHR = 6031,
1617     SpvOpRayQueryGetIntersectionWorldToObjectKHR = 6032,
1618     SpvOpAtomicFAddEXT = 6035,
1619     SpvOpMax = 0x7fffffff,
1620 } SpvOp;
1621 
1622 #ifdef SPV_ENABLE_UTILITY_CODE
SpvHasResultAndType(SpvOp opcode,bool * hasResult,bool * hasResultType)1623 inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultType) {
1624     *hasResult = *hasResultType = false;
1625     switch (opcode) {
1626     default: /* unknown opcode */ break;
1627     case SpvOpNop: *hasResult = false; *hasResultType = false; break;
1628     case SpvOpUndef: *hasResult = true; *hasResultType = true; break;
1629     case SpvOpSourceContinued: *hasResult = false; *hasResultType = false; break;
1630     case SpvOpSource: *hasResult = false; *hasResultType = false; break;
1631     case SpvOpSourceExtension: *hasResult = false; *hasResultType = false; break;
1632     case SpvOpName: *hasResult = false; *hasResultType = false; break;
1633     case SpvOpMemberName: *hasResult = false; *hasResultType = false; break;
1634     case SpvOpString: *hasResult = true; *hasResultType = false; break;
1635     case SpvOpLine: *hasResult = false; *hasResultType = false; break;
1636     case SpvOpExtension: *hasResult = false; *hasResultType = false; break;
1637     case SpvOpExtInstImport: *hasResult = true; *hasResultType = false; break;
1638     case SpvOpExtInst: *hasResult = true; *hasResultType = true; break;
1639     case SpvOpMemoryModel: *hasResult = false; *hasResultType = false; break;
1640     case SpvOpEntryPoint: *hasResult = false; *hasResultType = false; break;
1641     case SpvOpExecutionMode: *hasResult = false; *hasResultType = false; break;
1642     case SpvOpCapability: *hasResult = false; *hasResultType = false; break;
1643     case SpvOpTypeVoid: *hasResult = true; *hasResultType = false; break;
1644     case SpvOpTypeBool: *hasResult = true; *hasResultType = false; break;
1645     case SpvOpTypeInt: *hasResult = true; *hasResultType = false; break;
1646     case SpvOpTypeFloat: *hasResult = true; *hasResultType = false; break;
1647     case SpvOpTypeVector: *hasResult = true; *hasResultType = false; break;
1648     case SpvOpTypeMatrix: *hasResult = true; *hasResultType = false; break;
1649     case SpvOpTypeImage: *hasResult = true; *hasResultType = false; break;
1650     case SpvOpTypeSampler: *hasResult = true; *hasResultType = false; break;
1651     case SpvOpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
1652     case SpvOpTypeArray: *hasResult = true; *hasResultType = false; break;
1653     case SpvOpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
1654     case SpvOpTypeStruct: *hasResult = true; *hasResultType = false; break;
1655     case SpvOpTypeOpaque: *hasResult = true; *hasResultType = false; break;
1656     case SpvOpTypePointer: *hasResult = true; *hasResultType = false; break;
1657     case SpvOpTypeFunction: *hasResult = true; *hasResultType = false; break;
1658     case SpvOpTypeEvent: *hasResult = true; *hasResultType = false; break;
1659     case SpvOpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
1660     case SpvOpTypeReserveId: *hasResult = true; *hasResultType = false; break;
1661     case SpvOpTypeQueue: *hasResult = true; *hasResultType = false; break;
1662     case SpvOpTypePipe: *hasResult = true; *hasResultType = false; break;
1663     case SpvOpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
1664     case SpvOpConstantTrue: *hasResult = true; *hasResultType = true; break;
1665     case SpvOpConstantFalse: *hasResult = true; *hasResultType = true; break;
1666     case SpvOpConstant: *hasResult = true; *hasResultType = true; break;
1667     case SpvOpConstantComposite: *hasResult = true; *hasResultType = true; break;
1668     case SpvOpConstantSampler: *hasResult = true; *hasResultType = true; break;
1669     case SpvOpConstantNull: *hasResult = true; *hasResultType = true; break;
1670     case SpvOpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
1671     case SpvOpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
1672     case SpvOpSpecConstant: *hasResult = true; *hasResultType = true; break;
1673     case SpvOpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
1674     case SpvOpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
1675     case SpvOpFunction: *hasResult = true; *hasResultType = true; break;
1676     case SpvOpFunctionParameter: *hasResult = true; *hasResultType = true; break;
1677     case SpvOpFunctionEnd: *hasResult = false; *hasResultType = false; break;
1678     case SpvOpFunctionCall: *hasResult = true; *hasResultType = true; break;
1679     case SpvOpVariable: *hasResult = true; *hasResultType = true; break;
1680     case SpvOpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
1681     case SpvOpLoad: *hasResult = true; *hasResultType = true; break;
1682     case SpvOpStore: *hasResult = false; *hasResultType = false; break;
1683     case SpvOpCopyMemory: *hasResult = false; *hasResultType = false; break;
1684     case SpvOpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
1685     case SpvOpAccessChain: *hasResult = true; *hasResultType = true; break;
1686     case SpvOpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
1687     case SpvOpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
1688     case SpvOpArrayLength: *hasResult = true; *hasResultType = true; break;
1689     case SpvOpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
1690     case SpvOpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
1691     case SpvOpDecorate: *hasResult = false; *hasResultType = false; break;
1692     case SpvOpMemberDecorate: *hasResult = false; *hasResultType = false; break;
1693     case SpvOpDecorationGroup: *hasResult = true; *hasResultType = false; break;
1694     case SpvOpGroupDecorate: *hasResult = false; *hasResultType = false; break;
1695     case SpvOpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
1696     case SpvOpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
1697     case SpvOpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
1698     case SpvOpVectorShuffle: *hasResult = true; *hasResultType = true; break;
1699     case SpvOpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
1700     case SpvOpCompositeExtract: *hasResult = true; *hasResultType = true; break;
1701     case SpvOpCompositeInsert: *hasResult = true; *hasResultType = true; break;
1702     case SpvOpCopyObject: *hasResult = true; *hasResultType = true; break;
1703     case SpvOpTranspose: *hasResult = true; *hasResultType = true; break;
1704     case SpvOpSampledImage: *hasResult = true; *hasResultType = true; break;
1705     case SpvOpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
1706     case SpvOpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
1707     case SpvOpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1708     case SpvOpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1709     case SpvOpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
1710     case SpvOpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
1711     case SpvOpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1712     case SpvOpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1713     case SpvOpImageFetch: *hasResult = true; *hasResultType = true; break;
1714     case SpvOpImageGather: *hasResult = true; *hasResultType = true; break;
1715     case SpvOpImageDrefGather: *hasResult = true; *hasResultType = true; break;
1716     case SpvOpImageRead: *hasResult = true; *hasResultType = true; break;
1717     case SpvOpImageWrite: *hasResult = false; *hasResultType = false; break;
1718     case SpvOpImage: *hasResult = true; *hasResultType = true; break;
1719     case SpvOpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
1720     case SpvOpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
1721     case SpvOpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
1722     case SpvOpImageQuerySize: *hasResult = true; *hasResultType = true; break;
1723     case SpvOpImageQueryLod: *hasResult = true; *hasResultType = true; break;
1724     case SpvOpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
1725     case SpvOpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
1726     case SpvOpConvertFToU: *hasResult = true; *hasResultType = true; break;
1727     case SpvOpConvertFToS: *hasResult = true; *hasResultType = true; break;
1728     case SpvOpConvertSToF: *hasResult = true; *hasResultType = true; break;
1729     case SpvOpConvertUToF: *hasResult = true; *hasResultType = true; break;
1730     case SpvOpUConvert: *hasResult = true; *hasResultType = true; break;
1731     case SpvOpSConvert: *hasResult = true; *hasResultType = true; break;
1732     case SpvOpFConvert: *hasResult = true; *hasResultType = true; break;
1733     case SpvOpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
1734     case SpvOpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
1735     case SpvOpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
1736     case SpvOpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
1737     case SpvOpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
1738     case SpvOpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
1739     case SpvOpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
1740     case SpvOpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
1741     case SpvOpBitcast: *hasResult = true; *hasResultType = true; break;
1742     case SpvOpSNegate: *hasResult = true; *hasResultType = true; break;
1743     case SpvOpFNegate: *hasResult = true; *hasResultType = true; break;
1744     case SpvOpIAdd: *hasResult = true; *hasResultType = true; break;
1745     case SpvOpFAdd: *hasResult = true; *hasResultType = true; break;
1746     case SpvOpISub: *hasResult = true; *hasResultType = true; break;
1747     case SpvOpFSub: *hasResult = true; *hasResultType = true; break;
1748     case SpvOpIMul: *hasResult = true; *hasResultType = true; break;
1749     case SpvOpFMul: *hasResult = true; *hasResultType = true; break;
1750     case SpvOpUDiv: *hasResult = true; *hasResultType = true; break;
1751     case SpvOpSDiv: *hasResult = true; *hasResultType = true; break;
1752     case SpvOpFDiv: *hasResult = true; *hasResultType = true; break;
1753     case SpvOpUMod: *hasResult = true; *hasResultType = true; break;
1754     case SpvOpSRem: *hasResult = true; *hasResultType = true; break;
1755     case SpvOpSMod: *hasResult = true; *hasResultType = true; break;
1756     case SpvOpFRem: *hasResult = true; *hasResultType = true; break;
1757     case SpvOpFMod: *hasResult = true; *hasResultType = true; break;
1758     case SpvOpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
1759     case SpvOpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
1760     case SpvOpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
1761     case SpvOpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
1762     case SpvOpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
1763     case SpvOpOuterProduct: *hasResult = true; *hasResultType = true; break;
1764     case SpvOpDot: *hasResult = true; *hasResultType = true; break;
1765     case SpvOpIAddCarry: *hasResult = true; *hasResultType = true; break;
1766     case SpvOpISubBorrow: *hasResult = true; *hasResultType = true; break;
1767     case SpvOpUMulExtended: *hasResult = true; *hasResultType = true; break;
1768     case SpvOpSMulExtended: *hasResult = true; *hasResultType = true; break;
1769     case SpvOpAny: *hasResult = true; *hasResultType = true; break;
1770     case SpvOpAll: *hasResult = true; *hasResultType = true; break;
1771     case SpvOpIsNan: *hasResult = true; *hasResultType = true; break;
1772     case SpvOpIsInf: *hasResult = true; *hasResultType = true; break;
1773     case SpvOpIsFinite: *hasResult = true; *hasResultType = true; break;
1774     case SpvOpIsNormal: *hasResult = true; *hasResultType = true; break;
1775     case SpvOpSignBitSet: *hasResult = true; *hasResultType = true; break;
1776     case SpvOpLessOrGreater: *hasResult = true; *hasResultType = true; break;
1777     case SpvOpOrdered: *hasResult = true; *hasResultType = true; break;
1778     case SpvOpUnordered: *hasResult = true; *hasResultType = true; break;
1779     case SpvOpLogicalEqual: *hasResult = true; *hasResultType = true; break;
1780     case SpvOpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
1781     case SpvOpLogicalOr: *hasResult = true; *hasResultType = true; break;
1782     case SpvOpLogicalAnd: *hasResult = true; *hasResultType = true; break;
1783     case SpvOpLogicalNot: *hasResult = true; *hasResultType = true; break;
1784     case SpvOpSelect: *hasResult = true; *hasResultType = true; break;
1785     case SpvOpIEqual: *hasResult = true; *hasResultType = true; break;
1786     case SpvOpINotEqual: *hasResult = true; *hasResultType = true; break;
1787     case SpvOpUGreaterThan: *hasResult = true; *hasResultType = true; break;
1788     case SpvOpSGreaterThan: *hasResult = true; *hasResultType = true; break;
1789     case SpvOpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1790     case SpvOpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1791     case SpvOpULessThan: *hasResult = true; *hasResultType = true; break;
1792     case SpvOpSLessThan: *hasResult = true; *hasResultType = true; break;
1793     case SpvOpULessThanEqual: *hasResult = true; *hasResultType = true; break;
1794     case SpvOpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
1795     case SpvOpFOrdEqual: *hasResult = true; *hasResultType = true; break;
1796     case SpvOpFUnordEqual: *hasResult = true; *hasResultType = true; break;
1797     case SpvOpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
1798     case SpvOpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
1799     case SpvOpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
1800     case SpvOpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
1801     case SpvOpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
1802     case SpvOpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
1803     case SpvOpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
1804     case SpvOpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
1805     case SpvOpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1806     case SpvOpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
1807     case SpvOpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
1808     case SpvOpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
1809     case SpvOpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
1810     case SpvOpBitwiseOr: *hasResult = true; *hasResultType = true; break;
1811     case SpvOpBitwiseXor: *hasResult = true; *hasResultType = true; break;
1812     case SpvOpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
1813     case SpvOpNot: *hasResult = true; *hasResultType = true; break;
1814     case SpvOpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
1815     case SpvOpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
1816     case SpvOpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
1817     case SpvOpBitReverse: *hasResult = true; *hasResultType = true; break;
1818     case SpvOpBitCount: *hasResult = true; *hasResultType = true; break;
1819     case SpvOpDPdx: *hasResult = true; *hasResultType = true; break;
1820     case SpvOpDPdy: *hasResult = true; *hasResultType = true; break;
1821     case SpvOpFwidth: *hasResult = true; *hasResultType = true; break;
1822     case SpvOpDPdxFine: *hasResult = true; *hasResultType = true; break;
1823     case SpvOpDPdyFine: *hasResult = true; *hasResultType = true; break;
1824     case SpvOpFwidthFine: *hasResult = true; *hasResultType = true; break;
1825     case SpvOpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
1826     case SpvOpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
1827     case SpvOpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
1828     case SpvOpEmitVertex: *hasResult = false; *hasResultType = false; break;
1829     case SpvOpEndPrimitive: *hasResult = false; *hasResultType = false; break;
1830     case SpvOpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
1831     case SpvOpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
1832     case SpvOpControlBarrier: *hasResult = false; *hasResultType = false; break;
1833     case SpvOpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
1834     case SpvOpAtomicLoad: *hasResult = true; *hasResultType = true; break;
1835     case SpvOpAtomicStore: *hasResult = false; *hasResultType = false; break;
1836     case SpvOpAtomicExchange: *hasResult = true; *hasResultType = true; break;
1837     case SpvOpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
1838     case SpvOpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
1839     case SpvOpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
1840     case SpvOpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
1841     case SpvOpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
1842     case SpvOpAtomicISub: *hasResult = true; *hasResultType = true; break;
1843     case SpvOpAtomicSMin: *hasResult = true; *hasResultType = true; break;
1844     case SpvOpAtomicUMin: *hasResult = true; *hasResultType = true; break;
1845     case SpvOpAtomicSMax: *hasResult = true; *hasResultType = true; break;
1846     case SpvOpAtomicUMax: *hasResult = true; *hasResultType = true; break;
1847     case SpvOpAtomicAnd: *hasResult = true; *hasResultType = true; break;
1848     case SpvOpAtomicOr: *hasResult = true; *hasResultType = true; break;
1849     case SpvOpAtomicXor: *hasResult = true; *hasResultType = true; break;
1850     case SpvOpPhi: *hasResult = true; *hasResultType = true; break;
1851     case SpvOpLoopMerge: *hasResult = false; *hasResultType = false; break;
1852     case SpvOpSelectionMerge: *hasResult = false; *hasResultType = false; break;
1853     case SpvOpLabel: *hasResult = true; *hasResultType = false; break;
1854     case SpvOpBranch: *hasResult = false; *hasResultType = false; break;
1855     case SpvOpBranchConditional: *hasResult = false; *hasResultType = false; break;
1856     case SpvOpSwitch: *hasResult = false; *hasResultType = false; break;
1857     case SpvOpKill: *hasResult = false; *hasResultType = false; break;
1858     case SpvOpReturn: *hasResult = false; *hasResultType = false; break;
1859     case SpvOpReturnValue: *hasResult = false; *hasResultType = false; break;
1860     case SpvOpUnreachable: *hasResult = false; *hasResultType = false; break;
1861     case SpvOpLifetimeStart: *hasResult = false; *hasResultType = false; break;
1862     case SpvOpLifetimeStop: *hasResult = false; *hasResultType = false; break;
1863     case SpvOpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
1864     case SpvOpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
1865     case SpvOpGroupAll: *hasResult = true; *hasResultType = true; break;
1866     case SpvOpGroupAny: *hasResult = true; *hasResultType = true; break;
1867     case SpvOpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
1868     case SpvOpGroupIAdd: *hasResult = true; *hasResultType = true; break;
1869     case SpvOpGroupFAdd: *hasResult = true; *hasResultType = true; break;
1870     case SpvOpGroupFMin: *hasResult = true; *hasResultType = true; break;
1871     case SpvOpGroupUMin: *hasResult = true; *hasResultType = true; break;
1872     case SpvOpGroupSMin: *hasResult = true; *hasResultType = true; break;
1873     case SpvOpGroupFMax: *hasResult = true; *hasResultType = true; break;
1874     case SpvOpGroupUMax: *hasResult = true; *hasResultType = true; break;
1875     case SpvOpGroupSMax: *hasResult = true; *hasResultType = true; break;
1876     case SpvOpReadPipe: *hasResult = true; *hasResultType = true; break;
1877     case SpvOpWritePipe: *hasResult = true; *hasResultType = true; break;
1878     case SpvOpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
1879     case SpvOpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
1880     case SpvOpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
1881     case SpvOpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
1882     case SpvOpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
1883     case SpvOpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
1884     case SpvOpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
1885     case SpvOpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
1886     case SpvOpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
1887     case SpvOpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
1888     case SpvOpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
1889     case SpvOpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
1890     case SpvOpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
1891     case SpvOpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
1892     case SpvOpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
1893     case SpvOpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
1894     case SpvOpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
1895     case SpvOpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
1896     case SpvOpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
1897     case SpvOpRetainEvent: *hasResult = false; *hasResultType = false; break;
1898     case SpvOpReleaseEvent: *hasResult = false; *hasResultType = false; break;
1899     case SpvOpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
1900     case SpvOpIsValidEvent: *hasResult = true; *hasResultType = true; break;
1901     case SpvOpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
1902     case SpvOpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
1903     case SpvOpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
1904     case SpvOpBuildNDRange: *hasResult = true; *hasResultType = true; break;
1905     case SpvOpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
1906     case SpvOpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
1907     case SpvOpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1908     case SpvOpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1909     case SpvOpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
1910     case SpvOpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
1911     case SpvOpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
1912     case SpvOpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
1913     case SpvOpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
1914     case SpvOpImageSparseGather: *hasResult = true; *hasResultType = true; break;
1915     case SpvOpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
1916     case SpvOpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
1917     case SpvOpNoLine: *hasResult = false; *hasResultType = false; break;
1918     case SpvOpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
1919     case SpvOpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
1920     case SpvOpImageSparseRead: *hasResult = true; *hasResultType = true; break;
1921     case SpvOpSizeOf: *hasResult = true; *hasResultType = true; break;
1922     case SpvOpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
1923     case SpvOpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
1924     case SpvOpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
1925     case SpvOpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
1926     case SpvOpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
1927     case SpvOpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
1928     case SpvOpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
1929     case SpvOpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
1930     case SpvOpModuleProcessed: *hasResult = false; *hasResultType = false; break;
1931     case SpvOpExecutionModeId: *hasResult = false; *hasResultType = false; break;
1932     case SpvOpDecorateId: *hasResult = false; *hasResultType = false; break;
1933     case SpvOpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
1934     case SpvOpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
1935     case SpvOpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
1936     case SpvOpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
1937     case SpvOpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
1938     case SpvOpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
1939     case SpvOpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
1940     case SpvOpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
1941     case SpvOpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
1942     case SpvOpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
1943     case SpvOpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
1944     case SpvOpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
1945     case SpvOpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
1946     case SpvOpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
1947     case SpvOpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
1948     case SpvOpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
1949     case SpvOpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
1950     case SpvOpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
1951     case SpvOpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
1952     case SpvOpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
1953     case SpvOpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
1954     case SpvOpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
1955     case SpvOpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
1956     case SpvOpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
1957     case SpvOpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
1958     case SpvOpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
1959     case SpvOpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
1960     case SpvOpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
1961     case SpvOpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
1962     case SpvOpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
1963     case SpvOpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
1964     case SpvOpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
1965     case SpvOpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
1966     case SpvOpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
1967     case SpvOpCopyLogical: *hasResult = true; *hasResultType = true; break;
1968     case SpvOpPtrEqual: *hasResult = true; *hasResultType = true; break;
1969     case SpvOpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
1970     case SpvOpPtrDiff: *hasResult = true; *hasResultType = true; break;
1971     case SpvOpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
1972     case SpvOpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
1973     case SpvOpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
1974     case SpvOpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
1975     case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
1976     case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
1977     case SpvOpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
1978     case SpvOpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
1979     case SpvOpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
1980     case SpvOpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
1981     case SpvOpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
1982     case SpvOpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
1983     case SpvOpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
1984     case SpvOpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
1985     case SpvOpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
1986     case SpvOpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
1987     case SpvOpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
1988     case SpvOpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
1989     case SpvOpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
1990     case SpvOpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1991     case SpvOpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1992     case SpvOpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1993     case SpvOpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1994     case SpvOpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1995     case SpvOpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1996     case SpvOpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1997     case SpvOpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
1998     case SpvOpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
1999     case SpvOpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
2000     case SpvOpReadClockKHR: *hasResult = true; *hasResultType = true; break;
2001     case SpvOpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
2002     case SpvOpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
2003     case SpvOpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
2004     case SpvOpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
2005     case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
2006     case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
2007     case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
2008     case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
2009     case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
2010     case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
2011     case SpvOpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
2012     case SpvOpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
2013     case SpvOpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
2014     case SpvOpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
2015     case SpvOpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
2016     case SpvOpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
2017     case SpvOpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
2018     case SpvOpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
2019     case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
2020     case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
2021     case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
2022     case SpvOpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
2023     case SpvOpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2024     case SpvOpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2025     case SpvOpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2026     case SpvOpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2027     case SpvOpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2028     case SpvOpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2029     case SpvOpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
2030     case SpvOpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
2031     case SpvOpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
2032     case SpvOpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
2033     case SpvOpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
2034     case SpvOpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
2035     case SpvOpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
2036     case SpvOpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
2037     case SpvOpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
2038     case SpvOpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
2039     case SpvOpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
2040     case SpvOpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
2041     case SpvOpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
2042     case SpvOpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
2043     case SpvOpFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
2044     case SpvOpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
2045     case SpvOpDecorateString: *hasResult = false; *hasResultType = false; break;
2046     case SpvOpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
2047     case SpvOpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
2048     case SpvOpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
2049     case SpvOpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
2050     case SpvOpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
2051     case SpvOpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
2052     case SpvOpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
2053     case SpvOpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
2054     case SpvOpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
2055     case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
2056     case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
2057     case SpvOpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
2058     case SpvOpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
2059     case SpvOpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
2060     case SpvOpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
2061     case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2062     case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2063     case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2064     case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2065     case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2066     case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2067     case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2068     case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2069     case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2070     case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2071     case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2072     case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2073     case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2074     case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2075     case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2076     case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
2077     case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
2078     case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
2079     case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
2080     case SpvOpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2081     case SpvOpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
2082     case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
2083     case SpvOpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
2084     case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
2085     case SpvOpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
2086     case SpvOpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2087     case SpvOpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2088     case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2089     case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
2090     case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
2091     case SpvOpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
2092     case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
2093     case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2094     case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
2095     case SpvOpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2096     case SpvOpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2097     case SpvOpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2098     case SpvOpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
2099     case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
2100     case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2101     case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
2102     case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
2103     case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2104     case SpvOpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
2105     case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2106     case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2107     case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2108     case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2109     case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2110     case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2111     case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
2112     case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
2113     case SpvOpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2114     case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2115     case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2116     case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2117     case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2118     case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2119     case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2120     case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2121     case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2122     case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2123     case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2124     case SpvOpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
2125     case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
2126     case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
2127     case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
2128     case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2129     case SpvOpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2130     case SpvOpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2131     case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2132     case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
2133     case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
2134     case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2135     case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2136     case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2137     case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
2138     case SpvOpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2139     case SpvOpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2140     case SpvOpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
2141     case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
2142     case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
2143     case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
2144     case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2145     case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2146     case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2147     case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2148     case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
2149     case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
2150     case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
2151     case SpvOpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
2152     case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2153     case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2154     case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2155     case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
2156     case SpvOpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2157     case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
2158     case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2159     case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2160     case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
2161     case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
2162     case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2163     case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2164     case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
2165     case SpvOpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
2166     case SpvOpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
2167     case SpvOpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
2168     case SpvOpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
2169     case SpvOpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
2170     case SpvOpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
2171     case SpvOpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
2172     case SpvOpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
2173     case SpvOpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
2174     case SpvOpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
2175     case SpvOpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
2176     case SpvOpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
2177     case SpvOpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
2178     case SpvOpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
2179     case SpvOpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
2180     case SpvOpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
2181     case SpvOpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
2182     case SpvOpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
2183     case SpvOpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
2184     case SpvOpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
2185     case SpvOpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
2186     case SpvOpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
2187     }
2188 }
2189 #endif /* SPV_ENABLE_UTILITY_CODE */
2190 
2191 #endif
2192 
2193