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