xref: /third_party/mesa3d/src/compiler/spirv/spirv.h (revision bf215546)
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
56typedef unsigned int SpvId;
57
58#define SPV_VERSION 0x10600
59#define SPV_REVISION 1
60
61static const unsigned int SpvMagicNumber = 0x07230203;
62static const unsigned int SpvVersion = 0x00010600;
63static const unsigned int SpvRevision = 1;
64static const unsigned int SpvOpCodeMask = 0xffff;
65static const unsigned int SpvWordCountShift = 16;
66
67typedef 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
79typedef 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
104typedef enum SpvAddressingModel_ {
105    SpvAddressingModelLogical = 0,
106    SpvAddressingModelPhysical32 = 1,
107    SpvAddressingModelPhysical64 = 2,
108    SpvAddressingModelPhysicalStorageBuffer64 = 5348,
109    SpvAddressingModelPhysicalStorageBuffer64EXT = 5348,
110    SpvAddressingModelMax = 0x7fffffff,
111} SpvAddressingModel;
112
113typedef enum SpvMemoryModel_ {
114    SpvMemoryModelSimple = 0,
115    SpvMemoryModelGLSL450 = 1,
116    SpvMemoryModelOpenCL = 2,
117    SpvMemoryModelVulkan = 3,
118    SpvMemoryModelVulkanKHR = 3,
119    SpvMemoryModelMax = 0x7fffffff,
120} SpvMemoryModel;
121
122typedef 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
201typedef 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
235typedef 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
246typedef enum SpvSamplerAddressingMode_ {
247    SpvSamplerAddressingModeNone = 0,
248    SpvSamplerAddressingModeClampToEdge = 1,
249    SpvSamplerAddressingModeClamp = 2,
250    SpvSamplerAddressingModeRepeat = 3,
251    SpvSamplerAddressingModeRepeatMirrored = 4,
252    SpvSamplerAddressingModeMax = 0x7fffffff,
253} SpvSamplerAddressingMode;
254
255typedef enum SpvSamplerFilterMode_ {
256    SpvSamplerFilterModeNearest = 0,
257    SpvSamplerFilterModeLinear = 1,
258    SpvSamplerFilterModeMax = 0x7fffffff,
259} SpvSamplerFilterMode;
260
261typedef 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
307typedef 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
331typedef 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
352typedef 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
376typedef 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
400typedef 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
411typedef 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
422typedef enum SpvFPRoundingMode_ {
423    SpvFPRoundingModeRTE = 0,
424    SpvFPRoundingModeRTZ = 1,
425    SpvFPRoundingModeRTP = 2,
426    SpvFPRoundingModeRTN = 3,
427    SpvFPRoundingModeMax = 0x7fffffff,
428} SpvFPRoundingMode;
429
430typedef enum SpvLinkageType_ {
431    SpvLinkageTypeExport = 0,
432    SpvLinkageTypeImport = 1,
433    SpvLinkageTypeLinkOnceODR = 2,
434    SpvLinkageTypeMax = 0x7fffffff,
435} SpvLinkageType;
436
437typedef enum SpvAccessQualifier_ {
438    SpvAccessQualifierReadOnly = 0,
439    SpvAccessQualifierWriteOnly = 1,
440    SpvAccessQualifierReadWrite = 2,
441    SpvAccessQualifierMax = 0x7fffffff,
442} SpvAccessQualifier;
443
444typedef 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
456typedef 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
571typedef 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
697typedef enum SpvSelectionControlShift_ {
698    SpvSelectionControlFlattenShift = 0,
699    SpvSelectionControlDontFlattenShift = 1,
700    SpvSelectionControlMax = 0x7fffffff,
701} SpvSelectionControlShift;
702
703typedef enum SpvSelectionControlMask_ {
704    SpvSelectionControlMaskNone = 0,
705    SpvSelectionControlFlattenMask = 0x00000001,
706    SpvSelectionControlDontFlattenMask = 0x00000002,
707} SpvSelectionControlMask;
708
709typedef 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
730typedef 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
751typedef enum SpvFunctionControlShift_ {
752    SpvFunctionControlInlineShift = 0,
753    SpvFunctionControlDontInlineShift = 1,
754    SpvFunctionControlPureShift = 2,
755    SpvFunctionControlConstShift = 3,
756    SpvFunctionControlOptNoneINTELShift = 16,
757    SpvFunctionControlMax = 0x7fffffff,
758} SpvFunctionControlShift;
759
760typedef enum SpvFunctionControlMask_ {
761    SpvFunctionControlMaskNone = 0,
762    SpvFunctionControlInlineMask = 0x00000001,
763    SpvFunctionControlDontInlineMask = 0x00000002,
764    SpvFunctionControlPureMask = 0x00000004,
765    SpvFunctionControlConstMask = 0x00000008,
766    SpvFunctionControlOptNoneINTELMask = 0x00010000,
767} SpvFunctionControlMask;
768
769typedef 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
790typedef 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
811typedef 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
826typedef 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
841typedef 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
853typedef 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
864typedef enum SpvKernelEnqueueFlags_ {
865    SpvKernelEnqueueFlagsNoWait = 0,
866    SpvKernelEnqueueFlagsWaitKernel = 1,
867    SpvKernelEnqueueFlagsWaitWorkGroup = 2,
868    SpvKernelEnqueueFlagsMax = 0x7fffffff,
869} SpvKernelEnqueueFlags;
870
871typedef enum SpvKernelProfilingInfoShift_ {
872    SpvKernelProfilingInfoCmdExecTimeShift = 0,
873    SpvKernelProfilingInfoMax = 0x7fffffff,
874} SpvKernelProfilingInfoShift;
875
876typedef enum SpvKernelProfilingInfoMask_ {
877    SpvKernelProfilingInfoMaskNone = 0,
878    SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
879} SpvKernelProfilingInfoMask;
880
881typedef 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
1109typedef 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
1123typedef 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
1137typedef enum SpvRayQueryIntersection_ {
1138    SpvRayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
1139    SpvRayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
1140    SpvRayQueryIntersectionMax = 0x7fffffff,
1141} SpvRayQueryIntersection;
1142
1143typedef enum SpvRayQueryCommittedIntersectionType_ {
1144    SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
1145    SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
1146    SpvRayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
1147    SpvRayQueryCommittedIntersectionTypeMax = 0x7fffffff,
1148} SpvRayQueryCommittedIntersectionType;
1149
1150typedef enum SpvRayQueryCandidateIntersectionType_ {
1151    SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
1152    SpvRayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
1153    SpvRayQueryCandidateIntersectionTypeMax = 0x7fffffff,
1154} SpvRayQueryCandidateIntersectionType;
1155
1156typedef enum SpvFragmentShadingRateShift_ {
1157    SpvFragmentShadingRateVertical2PixelsShift = 0,
1158    SpvFragmentShadingRateVertical4PixelsShift = 1,
1159    SpvFragmentShadingRateHorizontal2PixelsShift = 2,
1160    SpvFragmentShadingRateHorizontal4PixelsShift = 3,
1161    SpvFragmentShadingRateMax = 0x7fffffff,
1162} SpvFragmentShadingRateShift;
1163
1164typedef enum SpvFragmentShadingRateMask_ {
1165    SpvFragmentShadingRateMaskNone = 0,
1166    SpvFragmentShadingRateVertical2PixelsMask = 0x00000001,
1167    SpvFragmentShadingRateVertical4PixelsMask = 0x00000002,
1168    SpvFragmentShadingRateHorizontal2PixelsMask = 0x00000004,
1169    SpvFragmentShadingRateHorizontal4PixelsMask = 0x00000008,
1170} SpvFragmentShadingRateMask;
1171
1172typedef enum SpvFPDenormMode_ {
1173    SpvFPDenormModePreserve = 0,
1174    SpvFPDenormModeFlushToZero = 1,
1175    SpvFPDenormModeMax = 0x7fffffff,
1176} SpvFPDenormMode;
1177
1178typedef enum SpvFPOperationMode_ {
1179    SpvFPOperationModeIEEE = 0,
1180    SpvFPOperationModeALT = 1,
1181    SpvFPOperationModeMax = 0x7fffffff,
1182} SpvFPOperationMode;
1183
1184typedef 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
1196typedef enum SpvOverflowModes_ {
1197    SpvOverflowModesWRAP = 0,
1198    SpvOverflowModesSAT = 1,
1199    SpvOverflowModesSAT_ZERO = 2,
1200    SpvOverflowModesSAT_SYM = 3,
1201    SpvOverflowModesMax = 0x7fffffff,
1202} SpvOverflowModes;
1203
1204typedef enum SpvPackedVectorFormat_ {
1205    SpvPackedVectorFormatPackedVectorFormat4x8Bit = 0,
1206    SpvPackedVectorFormatPackedVectorFormat4x8BitKHR = 0,
1207    SpvPackedVectorFormatMax = 0x7fffffff,
1208} SpvPackedVectorFormat;
1209
1210typedef 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
1886inline 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