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