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