1 // Copyright (c) 2014-2024 The Khronos Group Inc.
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and/or associated documentation files (the "Materials"),
5 // to deal in the Materials without restriction, including without limitation
6 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 // and/or sell copies of the Materials, and to permit persons to whom the
8 // Materials are furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Materials.
12 //
13 // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
14 // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
15 // HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
16 //
17 // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 // FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
23 // IN THE MATERIALS.
24 
25 // This header is automatically generated by the same tool that creates
26 // the Binary Section of the SPIR-V specification.
27 
28 // Enumeration tokens for SPIR-V, in various styles:
29 //   C, C++, C++11, JSON, Lua, Python, C#, D, Beef
30 //
31 // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
32 // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
33 // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
34 // - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
35 // - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
36 // - C# will use enum classes in the Specification class located in the "Spv" namespace,
37 //     e.g.: Spv.Specification.SourceLanguage.GLSL
38 // - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
39 // - Beef will use enum classes in the Specification class located in the "Spv" namespace,
40 //     e.g.: Spv.Specification.SourceLanguage.GLSL
41 //
42 // Some tokens act like mask values, which can be OR'd together,
43 // while others are mutually exclusive.  The mask-like ones have
44 // "Mask" in their name, and a parallel enum that has the shift
45 // amount (1 << x) for each corresponding enumerant.
46 
47 #ifndef spirv_HPP
48 #define spirv_HPP
49 
50 namespace spv {
51 
52 typedef unsigned int Id;
53 
54 #define SPV_VERSION 0x10600
55 #define SPV_REVISION 1
56 
57 static const unsigned int MagicNumber = 0x07230203;
58 static const unsigned int Version = 0x00010600;
59 static const unsigned int Revision = 1;
60 static const unsigned int OpCodeMask = 0xffff;
61 static const unsigned int WordCountShift = 16;
62 
63 enum SourceLanguage {
64     SourceLanguageUnknown = 0,
65     SourceLanguageESSL = 1,
66     SourceLanguageGLSL = 2,
67     SourceLanguageOpenCL_C = 3,
68     SourceLanguageOpenCL_CPP = 4,
69     SourceLanguageHLSL = 5,
70     SourceLanguageCPP_for_OpenCL = 6,
71     SourceLanguageSYCL = 7,
72     SourceLanguageHERO_C = 8,
73     SourceLanguageNZSL = 9,
74     SourceLanguageWGSL = 10,
75     SourceLanguageSlang = 11,
76     SourceLanguageZig = 12,
77     SourceLanguageMax = 0x7fffffff,
78 };
79 
80 enum ExecutionModel {
81     ExecutionModelVertex = 0,
82     ExecutionModelTessellationControl = 1,
83     ExecutionModelTessellationEvaluation = 2,
84     ExecutionModelGeometry = 3,
85     ExecutionModelFragment = 4,
86     ExecutionModelGLCompute = 5,
87     ExecutionModelKernel = 6,
88     ExecutionModelTaskNV = 5267,
89     ExecutionModelMeshNV = 5268,
90     ExecutionModelRayGenerationKHR = 5313,
91     ExecutionModelRayGenerationNV = 5313,
92     ExecutionModelIntersectionKHR = 5314,
93     ExecutionModelIntersectionNV = 5314,
94     ExecutionModelAnyHitKHR = 5315,
95     ExecutionModelAnyHitNV = 5315,
96     ExecutionModelClosestHitKHR = 5316,
97     ExecutionModelClosestHitNV = 5316,
98     ExecutionModelMissKHR = 5317,
99     ExecutionModelMissNV = 5317,
100     ExecutionModelCallableKHR = 5318,
101     ExecutionModelCallableNV = 5318,
102     ExecutionModelTaskEXT = 5364,
103     ExecutionModelMeshEXT = 5365,
104     ExecutionModelMax = 0x7fffffff,
105 };
106 
107 enum AddressingModel {
108     AddressingModelLogical = 0,
109     AddressingModelPhysical32 = 1,
110     AddressingModelPhysical64 = 2,
111     AddressingModelPhysicalStorageBuffer64 = 5348,
112     AddressingModelPhysicalStorageBuffer64EXT = 5348,
113     AddressingModelMax = 0x7fffffff,
114 };
115 
116 enum MemoryModel {
117     MemoryModelSimple = 0,
118     MemoryModelGLSL450 = 1,
119     MemoryModelOpenCL = 2,
120     MemoryModelVulkan = 3,
121     MemoryModelVulkanKHR = 3,
122     MemoryModelMax = 0x7fffffff,
123 };
124 
125 enum ExecutionMode {
126     ExecutionModeInvocations = 0,
127     ExecutionModeSpacingEqual = 1,
128     ExecutionModeSpacingFractionalEven = 2,
129     ExecutionModeSpacingFractionalOdd = 3,
130     ExecutionModeVertexOrderCw = 4,
131     ExecutionModeVertexOrderCcw = 5,
132     ExecutionModePixelCenterInteger = 6,
133     ExecutionModeOriginUpperLeft = 7,
134     ExecutionModeOriginLowerLeft = 8,
135     ExecutionModeEarlyFragmentTests = 9,
136     ExecutionModePointMode = 10,
137     ExecutionModeXfb = 11,
138     ExecutionModeDepthReplacing = 12,
139     ExecutionModeDepthGreater = 14,
140     ExecutionModeDepthLess = 15,
141     ExecutionModeDepthUnchanged = 16,
142     ExecutionModeLocalSize = 17,
143     ExecutionModeLocalSizeHint = 18,
144     ExecutionModeInputPoints = 19,
145     ExecutionModeInputLines = 20,
146     ExecutionModeInputLinesAdjacency = 21,
147     ExecutionModeTriangles = 22,
148     ExecutionModeInputTrianglesAdjacency = 23,
149     ExecutionModeQuads = 24,
150     ExecutionModeIsolines = 25,
151     ExecutionModeOutputVertices = 26,
152     ExecutionModeOutputPoints = 27,
153     ExecutionModeOutputLineStrip = 28,
154     ExecutionModeOutputTriangleStrip = 29,
155     ExecutionModeVecTypeHint = 30,
156     ExecutionModeContractionOff = 31,
157     ExecutionModeInitializer = 33,
158     ExecutionModeFinalizer = 34,
159     ExecutionModeSubgroupSize = 35,
160     ExecutionModeSubgroupsPerWorkgroup = 36,
161     ExecutionModeSubgroupsPerWorkgroupId = 37,
162     ExecutionModeLocalSizeId = 38,
163     ExecutionModeLocalSizeHintId = 39,
164     ExecutionModeNonCoherentColorAttachmentReadEXT = 4169,
165     ExecutionModeNonCoherentDepthAttachmentReadEXT = 4170,
166     ExecutionModeNonCoherentStencilAttachmentReadEXT = 4171,
167     ExecutionModeSubgroupUniformControlFlowKHR = 4421,
168     ExecutionModePostDepthCoverage = 4446,
169     ExecutionModeDenormPreserve = 4459,
170     ExecutionModeDenormFlushToZero = 4460,
171     ExecutionModeSignedZeroInfNanPreserve = 4461,
172     ExecutionModeRoundingModeRTE = 4462,
173     ExecutionModeRoundingModeRTZ = 4463,
174     ExecutionModeEarlyAndLateFragmentTestsAMD = 5017,
175     ExecutionModeStencilRefReplacingEXT = 5027,
176     ExecutionModeCoalescingAMDX = 5069,
177     ExecutionModeMaxNodeRecursionAMDX = 5071,
178     ExecutionModeStaticNumWorkgroupsAMDX = 5072,
179     ExecutionModeShaderIndexAMDX = 5073,
180     ExecutionModeMaxNumWorkgroupsAMDX = 5077,
181     ExecutionModeStencilRefUnchangedFrontAMD = 5079,
182     ExecutionModeStencilRefGreaterFrontAMD = 5080,
183     ExecutionModeStencilRefLessFrontAMD = 5081,
184     ExecutionModeStencilRefUnchangedBackAMD = 5082,
185     ExecutionModeStencilRefGreaterBackAMD = 5083,
186     ExecutionModeStencilRefLessBackAMD = 5084,
187     ExecutionModeQuadDerivativesKHR = 5088,
188     ExecutionModeRequireFullQuadsKHR = 5089,
189     ExecutionModeOutputLinesEXT = 5269,
190     ExecutionModeOutputLinesNV = 5269,
191     ExecutionModeOutputPrimitivesEXT = 5270,
192     ExecutionModeOutputPrimitivesNV = 5270,
193     ExecutionModeDerivativeGroupQuadsNV = 5289,
194     ExecutionModeDerivativeGroupLinearNV = 5290,
195     ExecutionModeOutputTrianglesEXT = 5298,
196     ExecutionModeOutputTrianglesNV = 5298,
197     ExecutionModePixelInterlockOrderedEXT = 5366,
198     ExecutionModePixelInterlockUnorderedEXT = 5367,
199     ExecutionModeSampleInterlockOrderedEXT = 5368,
200     ExecutionModeSampleInterlockUnorderedEXT = 5369,
201     ExecutionModeShadingRateInterlockOrderedEXT = 5370,
202     ExecutionModeShadingRateInterlockUnorderedEXT = 5371,
203     ExecutionModeSharedLocalMemorySizeINTEL = 5618,
204     ExecutionModeRoundingModeRTPINTEL = 5620,
205     ExecutionModeRoundingModeRTNINTEL = 5621,
206     ExecutionModeFloatingPointModeALTINTEL = 5622,
207     ExecutionModeFloatingPointModeIEEEINTEL = 5623,
208     ExecutionModeMaxWorkgroupSizeINTEL = 5893,
209     ExecutionModeMaxWorkDimINTEL = 5894,
210     ExecutionModeNoGlobalOffsetINTEL = 5895,
211     ExecutionModeNumSIMDWorkitemsINTEL = 5896,
212     ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903,
213     ExecutionModeMaximallyReconvergesKHR = 6023,
214     ExecutionModeFPFastMathDefault = 6028,
215     ExecutionModeStreamingInterfaceINTEL = 6154,
216     ExecutionModeRegisterMapInterfaceINTEL = 6160,
217     ExecutionModeNamedBarrierCountINTEL = 6417,
218     ExecutionModeMax = 0x7fffffff,
219 };
220 
221 enum StorageClass {
222     StorageClassUniformConstant = 0,
223     StorageClassInput = 1,
224     StorageClassUniform = 2,
225     StorageClassOutput = 3,
226     StorageClassWorkgroup = 4,
227     StorageClassCrossWorkgroup = 5,
228     StorageClassPrivate = 6,
229     StorageClassFunction = 7,
230     StorageClassGeneric = 8,
231     StorageClassPushConstant = 9,
232     StorageClassAtomicCounter = 10,
233     StorageClassImage = 11,
234     StorageClassStorageBuffer = 12,
235     StorageClassTileImageEXT = 4172,
236     StorageClassNodePayloadAMDX = 5068,
237     StorageClassNodeOutputPayloadAMDX = 5076,
238     StorageClassCallableDataKHR = 5328,
239     StorageClassCallableDataNV = 5328,
240     StorageClassIncomingCallableDataKHR = 5329,
241     StorageClassIncomingCallableDataNV = 5329,
242     StorageClassRayPayloadKHR = 5338,
243     StorageClassRayPayloadNV = 5338,
244     StorageClassHitAttributeKHR = 5339,
245     StorageClassHitAttributeNV = 5339,
246     StorageClassIncomingRayPayloadKHR = 5342,
247     StorageClassIncomingRayPayloadNV = 5342,
248     StorageClassShaderRecordBufferKHR = 5343,
249     StorageClassShaderRecordBufferNV = 5343,
250     StorageClassPhysicalStorageBuffer = 5349,
251     StorageClassPhysicalStorageBufferEXT = 5349,
252     StorageClassHitObjectAttributeNV = 5385,
253     StorageClassTaskPayloadWorkgroupEXT = 5402,
254     StorageClassCodeSectionINTEL = 5605,
255     StorageClassDeviceOnlyINTEL = 5936,
256     StorageClassHostOnlyINTEL = 5937,
257     StorageClassMax = 0x7fffffff,
258 };
259 
260 enum Dim {
261     Dim1D = 0,
262     Dim2D = 1,
263     Dim3D = 2,
264     DimCube = 3,
265     DimRect = 4,
266     DimBuffer = 5,
267     DimSubpassData = 6,
268     DimTileImageDataEXT = 4173,
269     DimMax = 0x7fffffff,
270 };
271 
272 enum SamplerAddressingMode {
273     SamplerAddressingModeNone = 0,
274     SamplerAddressingModeClampToEdge = 1,
275     SamplerAddressingModeClamp = 2,
276     SamplerAddressingModeRepeat = 3,
277     SamplerAddressingModeRepeatMirrored = 4,
278     SamplerAddressingModeMax = 0x7fffffff,
279 };
280 
281 enum SamplerFilterMode {
282     SamplerFilterModeNearest = 0,
283     SamplerFilterModeLinear = 1,
284     SamplerFilterModeMax = 0x7fffffff,
285 };
286 
287 enum ImageFormat {
288     ImageFormatUnknown = 0,
289     ImageFormatRgba32f = 1,
290     ImageFormatRgba16f = 2,
291     ImageFormatR32f = 3,
292     ImageFormatRgba8 = 4,
293     ImageFormatRgba8Snorm = 5,
294     ImageFormatRg32f = 6,
295     ImageFormatRg16f = 7,
296     ImageFormatR11fG11fB10f = 8,
297     ImageFormatR16f = 9,
298     ImageFormatRgba16 = 10,
299     ImageFormatRgb10A2 = 11,
300     ImageFormatRg16 = 12,
301     ImageFormatRg8 = 13,
302     ImageFormatR16 = 14,
303     ImageFormatR8 = 15,
304     ImageFormatRgba16Snorm = 16,
305     ImageFormatRg16Snorm = 17,
306     ImageFormatRg8Snorm = 18,
307     ImageFormatR16Snorm = 19,
308     ImageFormatR8Snorm = 20,
309     ImageFormatRgba32i = 21,
310     ImageFormatRgba16i = 22,
311     ImageFormatRgba8i = 23,
312     ImageFormatR32i = 24,
313     ImageFormatRg32i = 25,
314     ImageFormatRg16i = 26,
315     ImageFormatRg8i = 27,
316     ImageFormatR16i = 28,
317     ImageFormatR8i = 29,
318     ImageFormatRgba32ui = 30,
319     ImageFormatRgba16ui = 31,
320     ImageFormatRgba8ui = 32,
321     ImageFormatR32ui = 33,
322     ImageFormatRgb10a2ui = 34,
323     ImageFormatRg32ui = 35,
324     ImageFormatRg16ui = 36,
325     ImageFormatRg8ui = 37,
326     ImageFormatR16ui = 38,
327     ImageFormatR8ui = 39,
328     ImageFormatR64ui = 40,
329     ImageFormatR64i = 41,
330     ImageFormatMax = 0x7fffffff,
331 };
332 
333 enum ImageChannelOrder {
334     ImageChannelOrderR = 0,
335     ImageChannelOrderA = 1,
336     ImageChannelOrderRG = 2,
337     ImageChannelOrderRA = 3,
338     ImageChannelOrderRGB = 4,
339     ImageChannelOrderRGBA = 5,
340     ImageChannelOrderBGRA = 6,
341     ImageChannelOrderARGB = 7,
342     ImageChannelOrderIntensity = 8,
343     ImageChannelOrderLuminance = 9,
344     ImageChannelOrderRx = 10,
345     ImageChannelOrderRGx = 11,
346     ImageChannelOrderRGBx = 12,
347     ImageChannelOrderDepth = 13,
348     ImageChannelOrderDepthStencil = 14,
349     ImageChannelOrdersRGB = 15,
350     ImageChannelOrdersRGBx = 16,
351     ImageChannelOrdersRGBA = 17,
352     ImageChannelOrdersBGRA = 18,
353     ImageChannelOrderABGR = 19,
354     ImageChannelOrderMax = 0x7fffffff,
355 };
356 
357 enum ImageChannelDataType {
358     ImageChannelDataTypeSnormInt8 = 0,
359     ImageChannelDataTypeSnormInt16 = 1,
360     ImageChannelDataTypeUnormInt8 = 2,
361     ImageChannelDataTypeUnormInt16 = 3,
362     ImageChannelDataTypeUnormShort565 = 4,
363     ImageChannelDataTypeUnormShort555 = 5,
364     ImageChannelDataTypeUnormInt101010 = 6,
365     ImageChannelDataTypeSignedInt8 = 7,
366     ImageChannelDataTypeSignedInt16 = 8,
367     ImageChannelDataTypeSignedInt32 = 9,
368     ImageChannelDataTypeUnsignedInt8 = 10,
369     ImageChannelDataTypeUnsignedInt16 = 11,
370     ImageChannelDataTypeUnsignedInt32 = 12,
371     ImageChannelDataTypeHalfFloat = 13,
372     ImageChannelDataTypeFloat = 14,
373     ImageChannelDataTypeUnormInt24 = 15,
374     ImageChannelDataTypeUnormInt101010_2 = 16,
375     ImageChannelDataTypeUnsignedIntRaw10EXT = 19,
376     ImageChannelDataTypeUnsignedIntRaw12EXT = 20,
377     ImageChannelDataTypeMax = 0x7fffffff,
378 };
379 
380 enum ImageOperandsShift {
381     ImageOperandsBiasShift = 0,
382     ImageOperandsLodShift = 1,
383     ImageOperandsGradShift = 2,
384     ImageOperandsConstOffsetShift = 3,
385     ImageOperandsOffsetShift = 4,
386     ImageOperandsConstOffsetsShift = 5,
387     ImageOperandsSampleShift = 6,
388     ImageOperandsMinLodShift = 7,
389     ImageOperandsMakeTexelAvailableShift = 8,
390     ImageOperandsMakeTexelAvailableKHRShift = 8,
391     ImageOperandsMakeTexelVisibleShift = 9,
392     ImageOperandsMakeTexelVisibleKHRShift = 9,
393     ImageOperandsNonPrivateTexelShift = 10,
394     ImageOperandsNonPrivateTexelKHRShift = 10,
395     ImageOperandsVolatileTexelShift = 11,
396     ImageOperandsVolatileTexelKHRShift = 11,
397     ImageOperandsSignExtendShift = 12,
398     ImageOperandsZeroExtendShift = 13,
399     ImageOperandsNontemporalShift = 14,
400     ImageOperandsOffsetsShift = 16,
401     ImageOperandsMax = 0x7fffffff,
402 };
403 
404 enum ImageOperandsMask {
405     ImageOperandsMaskNone = 0,
406     ImageOperandsBiasMask = 0x00000001,
407     ImageOperandsLodMask = 0x00000002,
408     ImageOperandsGradMask = 0x00000004,
409     ImageOperandsConstOffsetMask = 0x00000008,
410     ImageOperandsOffsetMask = 0x00000010,
411     ImageOperandsConstOffsetsMask = 0x00000020,
412     ImageOperandsSampleMask = 0x00000040,
413     ImageOperandsMinLodMask = 0x00000080,
414     ImageOperandsMakeTexelAvailableMask = 0x00000100,
415     ImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
416     ImageOperandsMakeTexelVisibleMask = 0x00000200,
417     ImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
418     ImageOperandsNonPrivateTexelMask = 0x00000400,
419     ImageOperandsNonPrivateTexelKHRMask = 0x00000400,
420     ImageOperandsVolatileTexelMask = 0x00000800,
421     ImageOperandsVolatileTexelKHRMask = 0x00000800,
422     ImageOperandsSignExtendMask = 0x00001000,
423     ImageOperandsZeroExtendMask = 0x00002000,
424     ImageOperandsNontemporalMask = 0x00004000,
425     ImageOperandsOffsetsMask = 0x00010000,
426 };
427 
428 enum FPFastMathModeShift {
429     FPFastMathModeNotNaNShift = 0,
430     FPFastMathModeNotInfShift = 1,
431     FPFastMathModeNSZShift = 2,
432     FPFastMathModeAllowRecipShift = 3,
433     FPFastMathModeFastShift = 4,
434     FPFastMathModeAllowContractShift = 16,
435     FPFastMathModeAllowContractFastINTELShift = 16,
436     FPFastMathModeAllowReassocShift = 17,
437     FPFastMathModeAllowReassocINTELShift = 17,
438     FPFastMathModeAllowTransformShift = 18,
439     FPFastMathModeMax = 0x7fffffff,
440 };
441 
442 enum FPFastMathModeMask {
443     FPFastMathModeMaskNone = 0,
444     FPFastMathModeNotNaNMask = 0x00000001,
445     FPFastMathModeNotInfMask = 0x00000002,
446     FPFastMathModeNSZMask = 0x00000004,
447     FPFastMathModeAllowRecipMask = 0x00000008,
448     FPFastMathModeFastMask = 0x00000010,
449     FPFastMathModeAllowContractMask = 0x00010000,
450     FPFastMathModeAllowContractFastINTELMask = 0x00010000,
451     FPFastMathModeAllowReassocMask = 0x00020000,
452     FPFastMathModeAllowReassocINTELMask = 0x00020000,
453     FPFastMathModeAllowTransformMask = 0x00040000,
454 };
455 
456 enum FPRoundingMode {
457     FPRoundingModeRTE = 0,
458     FPRoundingModeRTZ = 1,
459     FPRoundingModeRTP = 2,
460     FPRoundingModeRTN = 3,
461     FPRoundingModeMax = 0x7fffffff,
462 };
463 
464 enum LinkageType {
465     LinkageTypeExport = 0,
466     LinkageTypeImport = 1,
467     LinkageTypeLinkOnceODR = 2,
468     LinkageTypeMax = 0x7fffffff,
469 };
470 
471 enum AccessQualifier {
472     AccessQualifierReadOnly = 0,
473     AccessQualifierWriteOnly = 1,
474     AccessQualifierReadWrite = 2,
475     AccessQualifierMax = 0x7fffffff,
476 };
477 
478 enum FunctionParameterAttribute {
479     FunctionParameterAttributeZext = 0,
480     FunctionParameterAttributeSext = 1,
481     FunctionParameterAttributeByVal = 2,
482     FunctionParameterAttributeSret = 3,
483     FunctionParameterAttributeNoAlias = 4,
484     FunctionParameterAttributeNoCapture = 5,
485     FunctionParameterAttributeNoWrite = 6,
486     FunctionParameterAttributeNoReadWrite = 7,
487     FunctionParameterAttributeRuntimeAlignedINTEL = 5940,
488     FunctionParameterAttributeMax = 0x7fffffff,
489 };
490 
491 enum Decoration {
492     DecorationRelaxedPrecision = 0,
493     DecorationSpecId = 1,
494     DecorationBlock = 2,
495     DecorationBufferBlock = 3,
496     DecorationRowMajor = 4,
497     DecorationColMajor = 5,
498     DecorationArrayStride = 6,
499     DecorationMatrixStride = 7,
500     DecorationGLSLShared = 8,
501     DecorationGLSLPacked = 9,
502     DecorationCPacked = 10,
503     DecorationBuiltIn = 11,
504     DecorationNoPerspective = 13,
505     DecorationFlat = 14,
506     DecorationPatch = 15,
507     DecorationCentroid = 16,
508     DecorationSample = 17,
509     DecorationInvariant = 18,
510     DecorationRestrict = 19,
511     DecorationAliased = 20,
512     DecorationVolatile = 21,
513     DecorationConstant = 22,
514     DecorationCoherent = 23,
515     DecorationNonWritable = 24,
516     DecorationNonReadable = 25,
517     DecorationUniform = 26,
518     DecorationUniformId = 27,
519     DecorationSaturatedConversion = 28,
520     DecorationStream = 29,
521     DecorationLocation = 30,
522     DecorationComponent = 31,
523     DecorationIndex = 32,
524     DecorationBinding = 33,
525     DecorationDescriptorSet = 34,
526     DecorationOffset = 35,
527     DecorationXfbBuffer = 36,
528     DecorationXfbStride = 37,
529     DecorationFuncParamAttr = 38,
530     DecorationFPRoundingMode = 39,
531     DecorationFPFastMathMode = 40,
532     DecorationLinkageAttributes = 41,
533     DecorationNoContraction = 42,
534     DecorationInputAttachmentIndex = 43,
535     DecorationAlignment = 44,
536     DecorationMaxByteOffset = 45,
537     DecorationAlignmentId = 46,
538     DecorationMaxByteOffsetId = 47,
539     DecorationNoSignedWrap = 4469,
540     DecorationNoUnsignedWrap = 4470,
541     DecorationWeightTextureQCOM = 4487,
542     DecorationBlockMatchTextureQCOM = 4488,
543     DecorationExplicitInterpAMD = 4999,
544     DecorationNodeSharesPayloadLimitsWithAMDX = 5019,
545     DecorationNodeMaxPayloadsAMDX = 5020,
546     DecorationTrackFinishWritingAMDX = 5078,
547     DecorationPayloadNodeNameAMDX = 5091,
548     DecorationOverrideCoverageNV = 5248,
549     DecorationPassthroughNV = 5250,
550     DecorationViewportRelativeNV = 5252,
551     DecorationSecondaryViewportRelativeNV = 5256,
552     DecorationPerPrimitiveEXT = 5271,
553     DecorationPerPrimitiveNV = 5271,
554     DecorationPerViewNV = 5272,
555     DecorationPerTaskNV = 5273,
556     DecorationPerVertexKHR = 5285,
557     DecorationPerVertexNV = 5285,
558     DecorationNonUniform = 5300,
559     DecorationNonUniformEXT = 5300,
560     DecorationRestrictPointer = 5355,
561     DecorationRestrictPointerEXT = 5355,
562     DecorationAliasedPointer = 5356,
563     DecorationAliasedPointerEXT = 5356,
564     DecorationHitObjectShaderRecordBufferNV = 5386,
565     DecorationBindlessSamplerNV = 5398,
566     DecorationBindlessImageNV = 5399,
567     DecorationBoundSamplerNV = 5400,
568     DecorationBoundImageNV = 5401,
569     DecorationSIMTCallINTEL = 5599,
570     DecorationReferencedIndirectlyINTEL = 5602,
571     DecorationClobberINTEL = 5607,
572     DecorationSideEffectsINTEL = 5608,
573     DecorationVectorComputeVariableINTEL = 5624,
574     DecorationFuncParamIOKindINTEL = 5625,
575     DecorationVectorComputeFunctionINTEL = 5626,
576     DecorationStackCallINTEL = 5627,
577     DecorationGlobalVariableOffsetINTEL = 5628,
578     DecorationCounterBuffer = 5634,
579     DecorationHlslCounterBufferGOOGLE = 5634,
580     DecorationHlslSemanticGOOGLE = 5635,
581     DecorationUserSemantic = 5635,
582     DecorationUserTypeGOOGLE = 5636,
583     DecorationFunctionRoundingModeINTEL = 5822,
584     DecorationFunctionDenormModeINTEL = 5823,
585     DecorationRegisterINTEL = 5825,
586     DecorationMemoryINTEL = 5826,
587     DecorationNumbanksINTEL = 5827,
588     DecorationBankwidthINTEL = 5828,
589     DecorationMaxPrivateCopiesINTEL = 5829,
590     DecorationSinglepumpINTEL = 5830,
591     DecorationDoublepumpINTEL = 5831,
592     DecorationMaxReplicatesINTEL = 5832,
593     DecorationSimpleDualPortINTEL = 5833,
594     DecorationMergeINTEL = 5834,
595     DecorationBankBitsINTEL = 5835,
596     DecorationForcePow2DepthINTEL = 5836,
597     DecorationStridesizeINTEL = 5883,
598     DecorationWordsizeINTEL = 5884,
599     DecorationTrueDualPortINTEL = 5885,
600     DecorationBurstCoalesceINTEL = 5899,
601     DecorationCacheSizeINTEL = 5900,
602     DecorationDontStaticallyCoalesceINTEL = 5901,
603     DecorationPrefetchINTEL = 5902,
604     DecorationStallEnableINTEL = 5905,
605     DecorationFuseLoopsInFunctionINTEL = 5907,
606     DecorationMathOpDSPModeINTEL = 5909,
607     DecorationAliasScopeINTEL = 5914,
608     DecorationNoAliasINTEL = 5915,
609     DecorationInitiationIntervalINTEL = 5917,
610     DecorationMaxConcurrencyINTEL = 5918,
611     DecorationPipelineEnableINTEL = 5919,
612     DecorationBufferLocationINTEL = 5921,
613     DecorationIOPipeStorageINTEL = 5944,
614     DecorationFunctionFloatingPointModeINTEL = 6080,
615     DecorationSingleElementVectorINTEL = 6085,
616     DecorationVectorComputeCallableFunctionINTEL = 6087,
617     DecorationMediaBlockIOINTEL = 6140,
618     DecorationStallFreeINTEL = 6151,
619     DecorationFPMaxErrorDecorationINTEL = 6170,
620     DecorationLatencyControlLabelINTEL = 6172,
621     DecorationLatencyControlConstraintINTEL = 6173,
622     DecorationConduitKernelArgumentINTEL = 6175,
623     DecorationRegisterMapKernelArgumentINTEL = 6176,
624     DecorationMMHostInterfaceAddressWidthINTEL = 6177,
625     DecorationMMHostInterfaceDataWidthINTEL = 6178,
626     DecorationMMHostInterfaceLatencyINTEL = 6179,
627     DecorationMMHostInterfaceReadWriteModeINTEL = 6180,
628     DecorationMMHostInterfaceMaxBurstINTEL = 6181,
629     DecorationMMHostInterfaceWaitRequestINTEL = 6182,
630     DecorationStableKernelArgumentINTEL = 6183,
631     DecorationHostAccessINTEL = 6188,
632     DecorationInitModeINTEL = 6190,
633     DecorationImplementInRegisterMapINTEL = 6191,
634     DecorationCacheControlLoadINTEL = 6442,
635     DecorationCacheControlStoreINTEL = 6443,
636     DecorationMax = 0x7fffffff,
637 };
638 
639 enum BuiltIn {
640     BuiltInPosition = 0,
641     BuiltInPointSize = 1,
642     BuiltInClipDistance = 3,
643     BuiltInCullDistance = 4,
644     BuiltInVertexId = 5,
645     BuiltInInstanceId = 6,
646     BuiltInPrimitiveId = 7,
647     BuiltInInvocationId = 8,
648     BuiltInLayer = 9,
649     BuiltInViewportIndex = 10,
650     BuiltInTessLevelOuter = 11,
651     BuiltInTessLevelInner = 12,
652     BuiltInTessCoord = 13,
653     BuiltInPatchVertices = 14,
654     BuiltInFragCoord = 15,
655     BuiltInPointCoord = 16,
656     BuiltInFrontFacing = 17,
657     BuiltInSampleId = 18,
658     BuiltInSamplePosition = 19,
659     BuiltInSampleMask = 20,
660     BuiltInFragDepth = 22,
661     BuiltInHelperInvocation = 23,
662     BuiltInNumWorkgroups = 24,
663     BuiltInWorkgroupSize = 25,
664     BuiltInWorkgroupId = 26,
665     BuiltInLocalInvocationId = 27,
666     BuiltInGlobalInvocationId = 28,
667     BuiltInLocalInvocationIndex = 29,
668     BuiltInWorkDim = 30,
669     BuiltInGlobalSize = 31,
670     BuiltInEnqueuedWorkgroupSize = 32,
671     BuiltInGlobalOffset = 33,
672     BuiltInGlobalLinearId = 34,
673     BuiltInSubgroupSize = 36,
674     BuiltInSubgroupMaxSize = 37,
675     BuiltInNumSubgroups = 38,
676     BuiltInNumEnqueuedSubgroups = 39,
677     BuiltInSubgroupId = 40,
678     BuiltInSubgroupLocalInvocationId = 41,
679     BuiltInVertexIndex = 42,
680     BuiltInInstanceIndex = 43,
681     BuiltInCoreIDARM = 4160,
682     BuiltInCoreCountARM = 4161,
683     BuiltInCoreMaxIDARM = 4162,
684     BuiltInWarpIDARM = 4163,
685     BuiltInWarpMaxIDARM = 4164,
686     BuiltInSubgroupEqMask = 4416,
687     BuiltInSubgroupEqMaskKHR = 4416,
688     BuiltInSubgroupGeMask = 4417,
689     BuiltInSubgroupGeMaskKHR = 4417,
690     BuiltInSubgroupGtMask = 4418,
691     BuiltInSubgroupGtMaskKHR = 4418,
692     BuiltInSubgroupLeMask = 4419,
693     BuiltInSubgroupLeMaskKHR = 4419,
694     BuiltInSubgroupLtMask = 4420,
695     BuiltInSubgroupLtMaskKHR = 4420,
696     BuiltInBaseVertex = 4424,
697     BuiltInBaseInstance = 4425,
698     BuiltInDrawIndex = 4426,
699     BuiltInPrimitiveShadingRateKHR = 4432,
700     BuiltInDeviceIndex = 4438,
701     BuiltInViewIndex = 4440,
702     BuiltInShadingRateKHR = 4444,
703     BuiltInBaryCoordNoPerspAMD = 4992,
704     BuiltInBaryCoordNoPerspCentroidAMD = 4993,
705     BuiltInBaryCoordNoPerspSampleAMD = 4994,
706     BuiltInBaryCoordSmoothAMD = 4995,
707     BuiltInBaryCoordSmoothCentroidAMD = 4996,
708     BuiltInBaryCoordSmoothSampleAMD = 4997,
709     BuiltInBaryCoordPullModelAMD = 4998,
710     BuiltInFragStencilRefEXT = 5014,
711     BuiltInCoalescedInputCountAMDX = 5021,
712     BuiltInShaderIndexAMDX = 5073,
713     BuiltInViewportMaskNV = 5253,
714     BuiltInSecondaryPositionNV = 5257,
715     BuiltInSecondaryViewportMaskNV = 5258,
716     BuiltInPositionPerViewNV = 5261,
717     BuiltInViewportMaskPerViewNV = 5262,
718     BuiltInFullyCoveredEXT = 5264,
719     BuiltInTaskCountNV = 5274,
720     BuiltInPrimitiveCountNV = 5275,
721     BuiltInPrimitiveIndicesNV = 5276,
722     BuiltInClipDistancePerViewNV = 5277,
723     BuiltInCullDistancePerViewNV = 5278,
724     BuiltInLayerPerViewNV = 5279,
725     BuiltInMeshViewCountNV = 5280,
726     BuiltInMeshViewIndicesNV = 5281,
727     BuiltInBaryCoordKHR = 5286,
728     BuiltInBaryCoordNV = 5286,
729     BuiltInBaryCoordNoPerspKHR = 5287,
730     BuiltInBaryCoordNoPerspNV = 5287,
731     BuiltInFragSizeEXT = 5292,
732     BuiltInFragmentSizeNV = 5292,
733     BuiltInFragInvocationCountEXT = 5293,
734     BuiltInInvocationsPerPixelNV = 5293,
735     BuiltInPrimitivePointIndicesEXT = 5294,
736     BuiltInPrimitiveLineIndicesEXT = 5295,
737     BuiltInPrimitiveTriangleIndicesEXT = 5296,
738     BuiltInCullPrimitiveEXT = 5299,
739     BuiltInLaunchIdKHR = 5319,
740     BuiltInLaunchIdNV = 5319,
741     BuiltInLaunchSizeKHR = 5320,
742     BuiltInLaunchSizeNV = 5320,
743     BuiltInWorldRayOriginKHR = 5321,
744     BuiltInWorldRayOriginNV = 5321,
745     BuiltInWorldRayDirectionKHR = 5322,
746     BuiltInWorldRayDirectionNV = 5322,
747     BuiltInObjectRayOriginKHR = 5323,
748     BuiltInObjectRayOriginNV = 5323,
749     BuiltInObjectRayDirectionKHR = 5324,
750     BuiltInObjectRayDirectionNV = 5324,
751     BuiltInRayTminKHR = 5325,
752     BuiltInRayTminNV = 5325,
753     BuiltInRayTmaxKHR = 5326,
754     BuiltInRayTmaxNV = 5326,
755     BuiltInInstanceCustomIndexKHR = 5327,
756     BuiltInInstanceCustomIndexNV = 5327,
757     BuiltInObjectToWorldKHR = 5330,
758     BuiltInObjectToWorldNV = 5330,
759     BuiltInWorldToObjectKHR = 5331,
760     BuiltInWorldToObjectNV = 5331,
761     BuiltInHitTNV = 5332,
762     BuiltInHitKindKHR = 5333,
763     BuiltInHitKindNV = 5333,
764     BuiltInCurrentRayTimeNV = 5334,
765     BuiltInHitTriangleVertexPositionsKHR = 5335,
766     BuiltInHitMicroTriangleVertexPositionsNV = 5337,
767     BuiltInHitMicroTriangleVertexBarycentricsNV = 5344,
768     BuiltInIncomingRayFlagsKHR = 5351,
769     BuiltInIncomingRayFlagsNV = 5351,
770     BuiltInRayGeometryIndexKHR = 5352,
771     BuiltInWarpsPerSMNV = 5374,
772     BuiltInSMCountNV = 5375,
773     BuiltInWarpIDNV = 5376,
774     BuiltInSMIDNV = 5377,
775     BuiltInHitKindFrontFacingMicroTriangleNV = 5405,
776     BuiltInHitKindBackFacingMicroTriangleNV = 5406,
777     BuiltInCullMaskKHR = 6021,
778     BuiltInMax = 0x7fffffff,
779 };
780 
781 enum SelectionControlShift {
782     SelectionControlFlattenShift = 0,
783     SelectionControlDontFlattenShift = 1,
784     SelectionControlMax = 0x7fffffff,
785 };
786 
787 enum SelectionControlMask {
788     SelectionControlMaskNone = 0,
789     SelectionControlFlattenMask = 0x00000001,
790     SelectionControlDontFlattenMask = 0x00000002,
791 };
792 
793 enum LoopControlShift {
794     LoopControlUnrollShift = 0,
795     LoopControlDontUnrollShift = 1,
796     LoopControlDependencyInfiniteShift = 2,
797     LoopControlDependencyLengthShift = 3,
798     LoopControlMinIterationsShift = 4,
799     LoopControlMaxIterationsShift = 5,
800     LoopControlIterationMultipleShift = 6,
801     LoopControlPeelCountShift = 7,
802     LoopControlPartialCountShift = 8,
803     LoopControlInitiationIntervalINTELShift = 16,
804     LoopControlMaxConcurrencyINTELShift = 17,
805     LoopControlDependencyArrayINTELShift = 18,
806     LoopControlPipelineEnableINTELShift = 19,
807     LoopControlLoopCoalesceINTELShift = 20,
808     LoopControlMaxInterleavingINTELShift = 21,
809     LoopControlSpeculatedIterationsINTELShift = 22,
810     LoopControlNoFusionINTELShift = 23,
811     LoopControlLoopCountINTELShift = 24,
812     LoopControlMaxReinvocationDelayINTELShift = 25,
813     LoopControlMax = 0x7fffffff,
814 };
815 
816 enum LoopControlMask {
817     LoopControlMaskNone = 0,
818     LoopControlUnrollMask = 0x00000001,
819     LoopControlDontUnrollMask = 0x00000002,
820     LoopControlDependencyInfiniteMask = 0x00000004,
821     LoopControlDependencyLengthMask = 0x00000008,
822     LoopControlMinIterationsMask = 0x00000010,
823     LoopControlMaxIterationsMask = 0x00000020,
824     LoopControlIterationMultipleMask = 0x00000040,
825     LoopControlPeelCountMask = 0x00000080,
826     LoopControlPartialCountMask = 0x00000100,
827     LoopControlInitiationIntervalINTELMask = 0x00010000,
828     LoopControlMaxConcurrencyINTELMask = 0x00020000,
829     LoopControlDependencyArrayINTELMask = 0x00040000,
830     LoopControlPipelineEnableINTELMask = 0x00080000,
831     LoopControlLoopCoalesceINTELMask = 0x00100000,
832     LoopControlMaxInterleavingINTELMask = 0x00200000,
833     LoopControlSpeculatedIterationsINTELMask = 0x00400000,
834     LoopControlNoFusionINTELMask = 0x00800000,
835     LoopControlLoopCountINTELMask = 0x01000000,
836     LoopControlMaxReinvocationDelayINTELMask = 0x02000000,
837 };
838 
839 enum FunctionControlShift {
840     FunctionControlInlineShift = 0,
841     FunctionControlDontInlineShift = 1,
842     FunctionControlPureShift = 2,
843     FunctionControlConstShift = 3,
844     FunctionControlOptNoneINTELShift = 16,
845     FunctionControlMax = 0x7fffffff,
846 };
847 
848 enum FunctionControlMask {
849     FunctionControlMaskNone = 0,
850     FunctionControlInlineMask = 0x00000001,
851     FunctionControlDontInlineMask = 0x00000002,
852     FunctionControlPureMask = 0x00000004,
853     FunctionControlConstMask = 0x00000008,
854     FunctionControlOptNoneINTELMask = 0x00010000,
855 };
856 
857 enum MemorySemanticsShift {
858     MemorySemanticsAcquireShift = 1,
859     MemorySemanticsReleaseShift = 2,
860     MemorySemanticsAcquireReleaseShift = 3,
861     MemorySemanticsSequentiallyConsistentShift = 4,
862     MemorySemanticsUniformMemoryShift = 6,
863     MemorySemanticsSubgroupMemoryShift = 7,
864     MemorySemanticsWorkgroupMemoryShift = 8,
865     MemorySemanticsCrossWorkgroupMemoryShift = 9,
866     MemorySemanticsAtomicCounterMemoryShift = 10,
867     MemorySemanticsImageMemoryShift = 11,
868     MemorySemanticsOutputMemoryShift = 12,
869     MemorySemanticsOutputMemoryKHRShift = 12,
870     MemorySemanticsMakeAvailableShift = 13,
871     MemorySemanticsMakeAvailableKHRShift = 13,
872     MemorySemanticsMakeVisibleShift = 14,
873     MemorySemanticsMakeVisibleKHRShift = 14,
874     MemorySemanticsVolatileShift = 15,
875     MemorySemanticsMax = 0x7fffffff,
876 };
877 
878 enum MemorySemanticsMask {
879     MemorySemanticsMaskNone = 0,
880     MemorySemanticsAcquireMask = 0x00000002,
881     MemorySemanticsReleaseMask = 0x00000004,
882     MemorySemanticsAcquireReleaseMask = 0x00000008,
883     MemorySemanticsSequentiallyConsistentMask = 0x00000010,
884     MemorySemanticsUniformMemoryMask = 0x00000040,
885     MemorySemanticsSubgroupMemoryMask = 0x00000080,
886     MemorySemanticsWorkgroupMemoryMask = 0x00000100,
887     MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
888     MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
889     MemorySemanticsImageMemoryMask = 0x00000800,
890     MemorySemanticsOutputMemoryMask = 0x00001000,
891     MemorySemanticsOutputMemoryKHRMask = 0x00001000,
892     MemorySemanticsMakeAvailableMask = 0x00002000,
893     MemorySemanticsMakeAvailableKHRMask = 0x00002000,
894     MemorySemanticsMakeVisibleMask = 0x00004000,
895     MemorySemanticsMakeVisibleKHRMask = 0x00004000,
896     MemorySemanticsVolatileMask = 0x00008000,
897 };
898 
899 enum MemoryAccessShift {
900     MemoryAccessVolatileShift = 0,
901     MemoryAccessAlignedShift = 1,
902     MemoryAccessNontemporalShift = 2,
903     MemoryAccessMakePointerAvailableShift = 3,
904     MemoryAccessMakePointerAvailableKHRShift = 3,
905     MemoryAccessMakePointerVisibleShift = 4,
906     MemoryAccessMakePointerVisibleKHRShift = 4,
907     MemoryAccessNonPrivatePointerShift = 5,
908     MemoryAccessNonPrivatePointerKHRShift = 5,
909     MemoryAccessAliasScopeINTELMaskShift = 16,
910     MemoryAccessNoAliasINTELMaskShift = 17,
911     MemoryAccessMax = 0x7fffffff,
912 };
913 
914 enum MemoryAccessMask {
915     MemoryAccessMaskNone = 0,
916     MemoryAccessVolatileMask = 0x00000001,
917     MemoryAccessAlignedMask = 0x00000002,
918     MemoryAccessNontemporalMask = 0x00000004,
919     MemoryAccessMakePointerAvailableMask = 0x00000008,
920     MemoryAccessMakePointerAvailableKHRMask = 0x00000008,
921     MemoryAccessMakePointerVisibleMask = 0x00000010,
922     MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
923     MemoryAccessNonPrivatePointerMask = 0x00000020,
924     MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
925     MemoryAccessAliasScopeINTELMaskMask = 0x00010000,
926     MemoryAccessNoAliasINTELMaskMask = 0x00020000,
927 };
928 
929 enum Scope {
930     ScopeCrossDevice = 0,
931     ScopeDevice = 1,
932     ScopeWorkgroup = 2,
933     ScopeSubgroup = 3,
934     ScopeInvocation = 4,
935     ScopeQueueFamily = 5,
936     ScopeQueueFamilyKHR = 5,
937     ScopeShaderCallKHR = 6,
938     ScopeMax = 0x7fffffff,
939 };
940 
941 enum GroupOperation {
942     GroupOperationReduce = 0,
943     GroupOperationInclusiveScan = 1,
944     GroupOperationExclusiveScan = 2,
945     GroupOperationClusteredReduce = 3,
946     GroupOperationPartitionedReduceNV = 6,
947     GroupOperationPartitionedInclusiveScanNV = 7,
948     GroupOperationPartitionedExclusiveScanNV = 8,
949     GroupOperationMax = 0x7fffffff,
950 };
951 
952 enum KernelEnqueueFlags {
953     KernelEnqueueFlagsNoWait = 0,
954     KernelEnqueueFlagsWaitKernel = 1,
955     KernelEnqueueFlagsWaitWorkGroup = 2,
956     KernelEnqueueFlagsMax = 0x7fffffff,
957 };
958 
959 enum KernelProfilingInfoShift {
960     KernelProfilingInfoCmdExecTimeShift = 0,
961     KernelProfilingInfoMax = 0x7fffffff,
962 };
963 
964 enum KernelProfilingInfoMask {
965     KernelProfilingInfoMaskNone = 0,
966     KernelProfilingInfoCmdExecTimeMask = 0x00000001,
967 };
968 
969 enum Capability {
970     CapabilityMatrix = 0,
971     CapabilityShader = 1,
972     CapabilityGeometry = 2,
973     CapabilityTessellation = 3,
974     CapabilityAddresses = 4,
975     CapabilityLinkage = 5,
976     CapabilityKernel = 6,
977     CapabilityVector16 = 7,
978     CapabilityFloat16Buffer = 8,
979     CapabilityFloat16 = 9,
980     CapabilityFloat64 = 10,
981     CapabilityInt64 = 11,
982     CapabilityInt64Atomics = 12,
983     CapabilityImageBasic = 13,
984     CapabilityImageReadWrite = 14,
985     CapabilityImageMipmap = 15,
986     CapabilityPipes = 17,
987     CapabilityGroups = 18,
988     CapabilityDeviceEnqueue = 19,
989     CapabilityLiteralSampler = 20,
990     CapabilityAtomicStorage = 21,
991     CapabilityInt16 = 22,
992     CapabilityTessellationPointSize = 23,
993     CapabilityGeometryPointSize = 24,
994     CapabilityImageGatherExtended = 25,
995     CapabilityStorageImageMultisample = 27,
996     CapabilityUniformBufferArrayDynamicIndexing = 28,
997     CapabilitySampledImageArrayDynamicIndexing = 29,
998     CapabilityStorageBufferArrayDynamicIndexing = 30,
999     CapabilityStorageImageArrayDynamicIndexing = 31,
1000     CapabilityClipDistance = 32,
1001     CapabilityCullDistance = 33,
1002     CapabilityImageCubeArray = 34,
1003     CapabilitySampleRateShading = 35,
1004     CapabilityImageRect = 36,
1005     CapabilitySampledRect = 37,
1006     CapabilityGenericPointer = 38,
1007     CapabilityInt8 = 39,
1008     CapabilityInputAttachment = 40,
1009     CapabilitySparseResidency = 41,
1010     CapabilityMinLod = 42,
1011     CapabilitySampled1D = 43,
1012     CapabilityImage1D = 44,
1013     CapabilitySampledCubeArray = 45,
1014     CapabilitySampledBuffer = 46,
1015     CapabilityImageBuffer = 47,
1016     CapabilityImageMSArray = 48,
1017     CapabilityStorageImageExtendedFormats = 49,
1018     CapabilityImageQuery = 50,
1019     CapabilityDerivativeControl = 51,
1020     CapabilityInterpolationFunction = 52,
1021     CapabilityTransformFeedback = 53,
1022     CapabilityGeometryStreams = 54,
1023     CapabilityStorageImageReadWithoutFormat = 55,
1024     CapabilityStorageImageWriteWithoutFormat = 56,
1025     CapabilityMultiViewport = 57,
1026     CapabilitySubgroupDispatch = 58,
1027     CapabilityNamedBarrier = 59,
1028     CapabilityPipeStorage = 60,
1029     CapabilityGroupNonUniform = 61,
1030     CapabilityGroupNonUniformVote = 62,
1031     CapabilityGroupNonUniformArithmetic = 63,
1032     CapabilityGroupNonUniformBallot = 64,
1033     CapabilityGroupNonUniformShuffle = 65,
1034     CapabilityGroupNonUniformShuffleRelative = 66,
1035     CapabilityGroupNonUniformClustered = 67,
1036     CapabilityGroupNonUniformQuad = 68,
1037     CapabilityShaderLayer = 69,
1038     CapabilityShaderViewportIndex = 70,
1039     CapabilityUniformDecoration = 71,
1040     CapabilityCoreBuiltinsARM = 4165,
1041     CapabilityTileImageColorReadAccessEXT = 4166,
1042     CapabilityTileImageDepthReadAccessEXT = 4167,
1043     CapabilityTileImageStencilReadAccessEXT = 4168,
1044     CapabilityFragmentShadingRateKHR = 4422,
1045     CapabilitySubgroupBallotKHR = 4423,
1046     CapabilityDrawParameters = 4427,
1047     CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428,
1048     CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
1049     CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
1050     CapabilitySubgroupVoteKHR = 4431,
1051     CapabilityStorageBuffer16BitAccess = 4433,
1052     CapabilityStorageUniformBufferBlock16 = 4433,
1053     CapabilityStorageUniform16 = 4434,
1054     CapabilityUniformAndStorageBuffer16BitAccess = 4434,
1055     CapabilityStoragePushConstant16 = 4435,
1056     CapabilityStorageInputOutput16 = 4436,
1057     CapabilityDeviceGroup = 4437,
1058     CapabilityMultiView = 4439,
1059     CapabilityVariablePointersStorageBuffer = 4441,
1060     CapabilityVariablePointers = 4442,
1061     CapabilityAtomicStorageOps = 4445,
1062     CapabilitySampleMaskPostDepthCoverage = 4447,
1063     CapabilityStorageBuffer8BitAccess = 4448,
1064     CapabilityUniformAndStorageBuffer8BitAccess = 4449,
1065     CapabilityStoragePushConstant8 = 4450,
1066     CapabilityDenormPreserve = 4464,
1067     CapabilityDenormFlushToZero = 4465,
1068     CapabilitySignedZeroInfNanPreserve = 4466,
1069     CapabilityRoundingModeRTE = 4467,
1070     CapabilityRoundingModeRTZ = 4468,
1071     CapabilityRayQueryProvisionalKHR = 4471,
1072     CapabilityRayQueryKHR = 4472,
1073     CapabilityRayTraversalPrimitiveCullingKHR = 4478,
1074     CapabilityRayTracingKHR = 4479,
1075     CapabilityTextureSampleWeightedQCOM = 4484,
1076     CapabilityTextureBoxFilterQCOM = 4485,
1077     CapabilityTextureBlockMatchQCOM = 4486,
1078     CapabilityFloat16ImageAMD = 5008,
1079     CapabilityImageGatherBiasLodAMD = 5009,
1080     CapabilityFragmentMaskAMD = 5010,
1081     CapabilityStencilExportEXT = 5013,
1082     CapabilityImageReadWriteLodAMD = 5015,
1083     CapabilityInt64ImageEXT = 5016,
1084     CapabilityShaderClockKHR = 5055,
1085     CapabilityShaderEnqueueAMDX = 5067,
1086     CapabilityQuadControlKHR = 5087,
1087     CapabilitySampleMaskOverrideCoverageNV = 5249,
1088     CapabilityGeometryShaderPassthroughNV = 5251,
1089     CapabilityShaderViewportIndexLayerEXT = 5254,
1090     CapabilityShaderViewportIndexLayerNV = 5254,
1091     CapabilityShaderViewportMaskNV = 5255,
1092     CapabilityShaderStereoViewNV = 5259,
1093     CapabilityPerViewAttributesNV = 5260,
1094     CapabilityFragmentFullyCoveredEXT = 5265,
1095     CapabilityMeshShadingNV = 5266,
1096     CapabilityImageFootprintNV = 5282,
1097     CapabilityMeshShadingEXT = 5283,
1098     CapabilityFragmentBarycentricKHR = 5284,
1099     CapabilityFragmentBarycentricNV = 5284,
1100     CapabilityComputeDerivativeGroupQuadsNV = 5288,
1101     CapabilityFragmentDensityEXT = 5291,
1102     CapabilityShadingRateNV = 5291,
1103     CapabilityGroupNonUniformPartitionedNV = 5297,
1104     CapabilityShaderNonUniform = 5301,
1105     CapabilityShaderNonUniformEXT = 5301,
1106     CapabilityRuntimeDescriptorArray = 5302,
1107     CapabilityRuntimeDescriptorArrayEXT = 5302,
1108     CapabilityInputAttachmentArrayDynamicIndexing = 5303,
1109     CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
1110     CapabilityUniformTexelBufferArrayDynamicIndexing = 5304,
1111     CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
1112     CapabilityStorageTexelBufferArrayDynamicIndexing = 5305,
1113     CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
1114     CapabilityUniformBufferArrayNonUniformIndexing = 5306,
1115     CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
1116     CapabilitySampledImageArrayNonUniformIndexing = 5307,
1117     CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
1118     CapabilityStorageBufferArrayNonUniformIndexing = 5308,
1119     CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
1120     CapabilityStorageImageArrayNonUniformIndexing = 5309,
1121     CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
1122     CapabilityInputAttachmentArrayNonUniformIndexing = 5310,
1123     CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
1124     CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311,
1125     CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
1126     CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312,
1127     CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
1128     CapabilityRayTracingPositionFetchKHR = 5336,
1129     CapabilityRayTracingNV = 5340,
1130     CapabilityRayTracingMotionBlurNV = 5341,
1131     CapabilityVulkanMemoryModel = 5345,
1132     CapabilityVulkanMemoryModelKHR = 5345,
1133     CapabilityVulkanMemoryModelDeviceScope = 5346,
1134     CapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
1135     CapabilityPhysicalStorageBufferAddresses = 5347,
1136     CapabilityPhysicalStorageBufferAddressesEXT = 5347,
1137     CapabilityComputeDerivativeGroupLinearNV = 5350,
1138     CapabilityRayTracingProvisionalKHR = 5353,
1139     CapabilityCooperativeMatrixNV = 5357,
1140     CapabilityFragmentShaderSampleInterlockEXT = 5363,
1141     CapabilityFragmentShaderShadingRateInterlockEXT = 5372,
1142     CapabilityShaderSMBuiltinsNV = 5373,
1143     CapabilityFragmentShaderPixelInterlockEXT = 5378,
1144     CapabilityDemoteToHelperInvocation = 5379,
1145     CapabilityDemoteToHelperInvocationEXT = 5379,
1146     CapabilityDisplacementMicromapNV = 5380,
1147     CapabilityRayTracingOpacityMicromapEXT = 5381,
1148     CapabilityShaderInvocationReorderNV = 5383,
1149     CapabilityBindlessTextureNV = 5390,
1150     CapabilityRayQueryPositionFetchKHR = 5391,
1151     CapabilityRayTracingDisplacementMicromapNV = 5409,
1152     CapabilitySubgroupShuffleINTEL = 5568,
1153     CapabilitySubgroupBufferBlockIOINTEL = 5569,
1154     CapabilitySubgroupImageBlockIOINTEL = 5570,
1155     CapabilitySubgroupImageMediaBlockIOINTEL = 5579,
1156     CapabilityRoundToInfinityINTEL = 5582,
1157     CapabilityFloatingPointModeINTEL = 5583,
1158     CapabilityIntegerFunctions2INTEL = 5584,
1159     CapabilityFunctionPointersINTEL = 5603,
1160     CapabilityIndirectReferencesINTEL = 5604,
1161     CapabilityAsmINTEL = 5606,
1162     CapabilityAtomicFloat32MinMaxEXT = 5612,
1163     CapabilityAtomicFloat64MinMaxEXT = 5613,
1164     CapabilityAtomicFloat16MinMaxEXT = 5616,
1165     CapabilityVectorComputeINTEL = 5617,
1166     CapabilityVectorAnyINTEL = 5619,
1167     CapabilityExpectAssumeKHR = 5629,
1168     CapabilitySubgroupAvcMotionEstimationINTEL = 5696,
1169     CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697,
1170     CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698,
1171     CapabilityVariableLengthArrayINTEL = 5817,
1172     CapabilityFunctionFloatControlINTEL = 5821,
1173     CapabilityFPGAMemoryAttributesINTEL = 5824,
1174     CapabilityFPFastMathModeINTEL = 5837,
1175     CapabilityArbitraryPrecisionIntegersINTEL = 5844,
1176     CapabilityArbitraryPrecisionFloatingPointINTEL = 5845,
1177     CapabilityUnstructuredLoopControlsINTEL = 5886,
1178     CapabilityFPGALoopControlsINTEL = 5888,
1179     CapabilityKernelAttributesINTEL = 5892,
1180     CapabilityFPGAKernelAttributesINTEL = 5897,
1181     CapabilityFPGAMemoryAccessesINTEL = 5898,
1182     CapabilityFPGAClusterAttributesINTEL = 5904,
1183     CapabilityLoopFuseINTEL = 5906,
1184     CapabilityFPGADSPControlINTEL = 5908,
1185     CapabilityMemoryAccessAliasingINTEL = 5910,
1186     CapabilityFPGAInvocationPipeliningAttributesINTEL = 5916,
1187     CapabilityFPGABufferLocationINTEL = 5920,
1188     CapabilityArbitraryPrecisionFixedPointINTEL = 5922,
1189     CapabilityUSMStorageClassesINTEL = 5935,
1190     CapabilityRuntimeAlignedAttributeINTEL = 5939,
1191     CapabilityIOPipesINTEL = 5943,
1192     CapabilityBlockingPipesINTEL = 5945,
1193     CapabilityFPGARegINTEL = 5948,
1194     CapabilityDotProductInputAll = 6016,
1195     CapabilityDotProductInputAllKHR = 6016,
1196     CapabilityDotProductInput4x8Bit = 6017,
1197     CapabilityDotProductInput4x8BitKHR = 6017,
1198     CapabilityDotProductInput4x8BitPacked = 6018,
1199     CapabilityDotProductInput4x8BitPackedKHR = 6018,
1200     CapabilityDotProduct = 6019,
1201     CapabilityDotProductKHR = 6019,
1202     CapabilityRayCullMaskKHR = 6020,
1203     CapabilityCooperativeMatrixKHR = 6022,
1204     CapabilityBitInstructions = 6025,
1205     CapabilityGroupNonUniformRotateKHR = 6026,
1206     CapabilityFloatControls2 = 6029,
1207     CapabilityAtomicFloat32AddEXT = 6033,
1208     CapabilityAtomicFloat64AddEXT = 6034,
1209     CapabilityLongCompositesINTEL = 6089,
1210     CapabilityOptNoneINTEL = 6094,
1211     CapabilityAtomicFloat16AddEXT = 6095,
1212     CapabilityDebugInfoModuleINTEL = 6114,
1213     CapabilityBFloat16ConversionINTEL = 6115,
1214     CapabilitySplitBarrierINTEL = 6141,
1215     CapabilityFPGAClusterAttributesV2INTEL = 6150,
1216     CapabilityFPGAKernelAttributesv2INTEL = 6161,
1217     CapabilityFPMaxErrorINTEL = 6169,
1218     CapabilityFPGALatencyControlINTEL = 6171,
1219     CapabilityFPGAArgumentInterfacesINTEL = 6174,
1220     CapabilityGlobalVariableHostAccessINTEL = 6187,
1221     CapabilityGlobalVariableFPGADecorationsINTEL = 6189,
1222     CapabilityGroupUniformArithmeticKHR = 6400,
1223     CapabilityMaskedGatherScatterINTEL = 6427,
1224     CapabilityCacheControlsINTEL = 6441,
1225     CapabilityMax = 0x7fffffff,
1226 };
1227 
1228 enum RayFlagsShift {
1229     RayFlagsOpaqueKHRShift = 0,
1230     RayFlagsNoOpaqueKHRShift = 1,
1231     RayFlagsTerminateOnFirstHitKHRShift = 2,
1232     RayFlagsSkipClosestHitShaderKHRShift = 3,
1233     RayFlagsCullBackFacingTrianglesKHRShift = 4,
1234     RayFlagsCullFrontFacingTrianglesKHRShift = 5,
1235     RayFlagsCullOpaqueKHRShift = 6,
1236     RayFlagsCullNoOpaqueKHRShift = 7,
1237     RayFlagsSkipTrianglesKHRShift = 8,
1238     RayFlagsSkipAABBsKHRShift = 9,
1239     RayFlagsForceOpacityMicromap2StateEXTShift = 10,
1240     RayFlagsMax = 0x7fffffff,
1241 };
1242 
1243 enum RayFlagsMask {
1244     RayFlagsMaskNone = 0,
1245     RayFlagsOpaqueKHRMask = 0x00000001,
1246     RayFlagsNoOpaqueKHRMask = 0x00000002,
1247     RayFlagsTerminateOnFirstHitKHRMask = 0x00000004,
1248     RayFlagsSkipClosestHitShaderKHRMask = 0x00000008,
1249     RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010,
1250     RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020,
1251     RayFlagsCullOpaqueKHRMask = 0x00000040,
1252     RayFlagsCullNoOpaqueKHRMask = 0x00000080,
1253     RayFlagsSkipTrianglesKHRMask = 0x00000100,
1254     RayFlagsSkipAABBsKHRMask = 0x00000200,
1255     RayFlagsForceOpacityMicromap2StateEXTMask = 0x00000400,
1256 };
1257 
1258 enum RayQueryIntersection {
1259     RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0,
1260     RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1,
1261     RayQueryIntersectionMax = 0x7fffffff,
1262 };
1263 
1264 enum RayQueryCommittedIntersectionType {
1265     RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0,
1266     RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1,
1267     RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2,
1268     RayQueryCommittedIntersectionTypeMax = 0x7fffffff,
1269 };
1270 
1271 enum RayQueryCandidateIntersectionType {
1272     RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0,
1273     RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1,
1274     RayQueryCandidateIntersectionTypeMax = 0x7fffffff,
1275 };
1276 
1277 enum FragmentShadingRateShift {
1278     FragmentShadingRateVertical2PixelsShift = 0,
1279     FragmentShadingRateVertical4PixelsShift = 1,
1280     FragmentShadingRateHorizontal2PixelsShift = 2,
1281     FragmentShadingRateHorizontal4PixelsShift = 3,
1282     FragmentShadingRateMax = 0x7fffffff,
1283 };
1284 
1285 enum FragmentShadingRateMask {
1286     FragmentShadingRateMaskNone = 0,
1287     FragmentShadingRateVertical2PixelsMask = 0x00000001,
1288     FragmentShadingRateVertical4PixelsMask = 0x00000002,
1289     FragmentShadingRateHorizontal2PixelsMask = 0x00000004,
1290     FragmentShadingRateHorizontal4PixelsMask = 0x00000008,
1291 };
1292 
1293 enum FPDenormMode {
1294     FPDenormModePreserve = 0,
1295     FPDenormModeFlushToZero = 1,
1296     FPDenormModeMax = 0x7fffffff,
1297 };
1298 
1299 enum FPOperationMode {
1300     FPOperationModeIEEE = 0,
1301     FPOperationModeALT = 1,
1302     FPOperationModeMax = 0x7fffffff,
1303 };
1304 
1305 enum QuantizationModes {
1306     QuantizationModesTRN = 0,
1307     QuantizationModesTRN_ZERO = 1,
1308     QuantizationModesRND = 2,
1309     QuantizationModesRND_ZERO = 3,
1310     QuantizationModesRND_INF = 4,
1311     QuantizationModesRND_MIN_INF = 5,
1312     QuantizationModesRND_CONV = 6,
1313     QuantizationModesRND_CONV_ODD = 7,
1314     QuantizationModesMax = 0x7fffffff,
1315 };
1316 
1317 enum OverflowModes {
1318     OverflowModesWRAP = 0,
1319     OverflowModesSAT = 1,
1320     OverflowModesSAT_ZERO = 2,
1321     OverflowModesSAT_SYM = 3,
1322     OverflowModesMax = 0x7fffffff,
1323 };
1324 
1325 enum PackedVectorFormat {
1326     PackedVectorFormatPackedVectorFormat4x8Bit = 0,
1327     PackedVectorFormatPackedVectorFormat4x8BitKHR = 0,
1328     PackedVectorFormatMax = 0x7fffffff,
1329 };
1330 
1331 enum CooperativeMatrixOperandsShift {
1332     CooperativeMatrixOperandsMatrixASignedComponentsKHRShift = 0,
1333     CooperativeMatrixOperandsMatrixBSignedComponentsKHRShift = 1,
1334     CooperativeMatrixOperandsMatrixCSignedComponentsKHRShift = 2,
1335     CooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift = 3,
1336     CooperativeMatrixOperandsSaturatingAccumulationKHRShift = 4,
1337     CooperativeMatrixOperandsMax = 0x7fffffff,
1338 };
1339 
1340 enum CooperativeMatrixOperandsMask {
1341     CooperativeMatrixOperandsMaskNone = 0,
1342     CooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001,
1343     CooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002,
1344     CooperativeMatrixOperandsMatrixCSignedComponentsKHRMask = 0x00000004,
1345     CooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask = 0x00000008,
1346     CooperativeMatrixOperandsSaturatingAccumulationKHRMask = 0x00000010,
1347 };
1348 
1349 enum CooperativeMatrixLayout {
1350     CooperativeMatrixLayoutRowMajorKHR = 0,
1351     CooperativeMatrixLayoutColumnMajorKHR = 1,
1352     CooperativeMatrixLayoutMax = 0x7fffffff,
1353 };
1354 
1355 enum CooperativeMatrixUse {
1356     CooperativeMatrixUseMatrixAKHR = 0,
1357     CooperativeMatrixUseMatrixBKHR = 1,
1358     CooperativeMatrixUseMatrixAccumulatorKHR = 2,
1359     CooperativeMatrixUseMax = 0x7fffffff,
1360 };
1361 
1362 enum InitializationModeQualifier {
1363     InitializationModeQualifierInitOnDeviceReprogramINTEL = 0,
1364     InitializationModeQualifierInitOnDeviceResetINTEL = 1,
1365     InitializationModeQualifierMax = 0x7fffffff,
1366 };
1367 
1368 enum HostAccessQualifier {
1369     HostAccessQualifierNoneINTEL = 0,
1370     HostAccessQualifierReadINTEL = 1,
1371     HostAccessQualifierWriteINTEL = 2,
1372     HostAccessQualifierReadWriteINTEL = 3,
1373     HostAccessQualifierMax = 0x7fffffff,
1374 };
1375 
1376 enum LoadCacheControl {
1377     LoadCacheControlUncachedINTEL = 0,
1378     LoadCacheControlCachedINTEL = 1,
1379     LoadCacheControlStreamingINTEL = 2,
1380     LoadCacheControlInvalidateAfterReadINTEL = 3,
1381     LoadCacheControlConstCachedINTEL = 4,
1382     LoadCacheControlMax = 0x7fffffff,
1383 };
1384 
1385 enum StoreCacheControl {
1386     StoreCacheControlUncachedINTEL = 0,
1387     StoreCacheControlWriteThroughINTEL = 1,
1388     StoreCacheControlWriteBackINTEL = 2,
1389     StoreCacheControlStreamingINTEL = 3,
1390     StoreCacheControlMax = 0x7fffffff,
1391 };
1392 
1393 enum Op {
1394     OpNop = 0,
1395     OpUndef = 1,
1396     OpSourceContinued = 2,
1397     OpSource = 3,
1398     OpSourceExtension = 4,
1399     OpName = 5,
1400     OpMemberName = 6,
1401     OpString = 7,
1402     OpLine = 8,
1403     OpExtension = 10,
1404     OpExtInstImport = 11,
1405     OpExtInst = 12,
1406     OpMemoryModel = 14,
1407     OpEntryPoint = 15,
1408     OpExecutionMode = 16,
1409     OpCapability = 17,
1410     OpTypeVoid = 19,
1411     OpTypeBool = 20,
1412     OpTypeInt = 21,
1413     OpTypeFloat = 22,
1414     OpTypeVector = 23,
1415     OpTypeMatrix = 24,
1416     OpTypeImage = 25,
1417     OpTypeSampler = 26,
1418     OpTypeSampledImage = 27,
1419     OpTypeArray = 28,
1420     OpTypeRuntimeArray = 29,
1421     OpTypeStruct = 30,
1422     OpTypeOpaque = 31,
1423     OpTypePointer = 32,
1424     OpTypeFunction = 33,
1425     OpTypeEvent = 34,
1426     OpTypeDeviceEvent = 35,
1427     OpTypeReserveId = 36,
1428     OpTypeQueue = 37,
1429     OpTypePipe = 38,
1430     OpTypeForwardPointer = 39,
1431     OpConstantTrue = 41,
1432     OpConstantFalse = 42,
1433     OpConstant = 43,
1434     OpConstantComposite = 44,
1435     OpConstantSampler = 45,
1436     OpConstantNull = 46,
1437     OpSpecConstantTrue = 48,
1438     OpSpecConstantFalse = 49,
1439     OpSpecConstant = 50,
1440     OpSpecConstantComposite = 51,
1441     OpSpecConstantOp = 52,
1442     OpFunction = 54,
1443     OpFunctionParameter = 55,
1444     OpFunctionEnd = 56,
1445     OpFunctionCall = 57,
1446     OpVariable = 59,
1447     OpImageTexelPointer = 60,
1448     OpLoad = 61,
1449     OpStore = 62,
1450     OpCopyMemory = 63,
1451     OpCopyMemorySized = 64,
1452     OpAccessChain = 65,
1453     OpInBoundsAccessChain = 66,
1454     OpPtrAccessChain = 67,
1455     OpArrayLength = 68,
1456     OpGenericPtrMemSemantics = 69,
1457     OpInBoundsPtrAccessChain = 70,
1458     OpDecorate = 71,
1459     OpMemberDecorate = 72,
1460     OpDecorationGroup = 73,
1461     OpGroupDecorate = 74,
1462     OpGroupMemberDecorate = 75,
1463     OpVectorExtractDynamic = 77,
1464     OpVectorInsertDynamic = 78,
1465     OpVectorShuffle = 79,
1466     OpCompositeConstruct = 80,
1467     OpCompositeExtract = 81,
1468     OpCompositeInsert = 82,
1469     OpCopyObject = 83,
1470     OpTranspose = 84,
1471     OpSampledImage = 86,
1472     OpImageSampleImplicitLod = 87,
1473     OpImageSampleExplicitLod = 88,
1474     OpImageSampleDrefImplicitLod = 89,
1475     OpImageSampleDrefExplicitLod = 90,
1476     OpImageSampleProjImplicitLod = 91,
1477     OpImageSampleProjExplicitLod = 92,
1478     OpImageSampleProjDrefImplicitLod = 93,
1479     OpImageSampleProjDrefExplicitLod = 94,
1480     OpImageFetch = 95,
1481     OpImageGather = 96,
1482     OpImageDrefGather = 97,
1483     OpImageRead = 98,
1484     OpImageWrite = 99,
1485     OpImage = 100,
1486     OpImageQueryFormat = 101,
1487     OpImageQueryOrder = 102,
1488     OpImageQuerySizeLod = 103,
1489     OpImageQuerySize = 104,
1490     OpImageQueryLod = 105,
1491     OpImageQueryLevels = 106,
1492     OpImageQuerySamples = 107,
1493     OpConvertFToU = 109,
1494     OpConvertFToS = 110,
1495     OpConvertSToF = 111,
1496     OpConvertUToF = 112,
1497     OpUConvert = 113,
1498     OpSConvert = 114,
1499     OpFConvert = 115,
1500     OpQuantizeToF16 = 116,
1501     OpConvertPtrToU = 117,
1502     OpSatConvertSToU = 118,
1503     OpSatConvertUToS = 119,
1504     OpConvertUToPtr = 120,
1505     OpPtrCastToGeneric = 121,
1506     OpGenericCastToPtr = 122,
1507     OpGenericCastToPtrExplicit = 123,
1508     OpBitcast = 124,
1509     OpSNegate = 126,
1510     OpFNegate = 127,
1511     OpIAdd = 128,
1512     OpFAdd = 129,
1513     OpISub = 130,
1514     OpFSub = 131,
1515     OpIMul = 132,
1516     OpFMul = 133,
1517     OpUDiv = 134,
1518     OpSDiv = 135,
1519     OpFDiv = 136,
1520     OpUMod = 137,
1521     OpSRem = 138,
1522     OpSMod = 139,
1523     OpFRem = 140,
1524     OpFMod = 141,
1525     OpVectorTimesScalar = 142,
1526     OpMatrixTimesScalar = 143,
1527     OpVectorTimesMatrix = 144,
1528     OpMatrixTimesVector = 145,
1529     OpMatrixTimesMatrix = 146,
1530     OpOuterProduct = 147,
1531     OpDot = 148,
1532     OpIAddCarry = 149,
1533     OpISubBorrow = 150,
1534     OpUMulExtended = 151,
1535     OpSMulExtended = 152,
1536     OpAny = 154,
1537     OpAll = 155,
1538     OpIsNan = 156,
1539     OpIsInf = 157,
1540     OpIsFinite = 158,
1541     OpIsNormal = 159,
1542     OpSignBitSet = 160,
1543     OpLessOrGreater = 161,
1544     OpOrdered = 162,
1545     OpUnordered = 163,
1546     OpLogicalEqual = 164,
1547     OpLogicalNotEqual = 165,
1548     OpLogicalOr = 166,
1549     OpLogicalAnd = 167,
1550     OpLogicalNot = 168,
1551     OpSelect = 169,
1552     OpIEqual = 170,
1553     OpINotEqual = 171,
1554     OpUGreaterThan = 172,
1555     OpSGreaterThan = 173,
1556     OpUGreaterThanEqual = 174,
1557     OpSGreaterThanEqual = 175,
1558     OpULessThan = 176,
1559     OpSLessThan = 177,
1560     OpULessThanEqual = 178,
1561     OpSLessThanEqual = 179,
1562     OpFOrdEqual = 180,
1563     OpFUnordEqual = 181,
1564     OpFOrdNotEqual = 182,
1565     OpFUnordNotEqual = 183,
1566     OpFOrdLessThan = 184,
1567     OpFUnordLessThan = 185,
1568     OpFOrdGreaterThan = 186,
1569     OpFUnordGreaterThan = 187,
1570     OpFOrdLessThanEqual = 188,
1571     OpFUnordLessThanEqual = 189,
1572     OpFOrdGreaterThanEqual = 190,
1573     OpFUnordGreaterThanEqual = 191,
1574     OpShiftRightLogical = 194,
1575     OpShiftRightArithmetic = 195,
1576     OpShiftLeftLogical = 196,
1577     OpBitwiseOr = 197,
1578     OpBitwiseXor = 198,
1579     OpBitwiseAnd = 199,
1580     OpNot = 200,
1581     OpBitFieldInsert = 201,
1582     OpBitFieldSExtract = 202,
1583     OpBitFieldUExtract = 203,
1584     OpBitReverse = 204,
1585     OpBitCount = 205,
1586     OpDPdx = 207,
1587     OpDPdy = 208,
1588     OpFwidth = 209,
1589     OpDPdxFine = 210,
1590     OpDPdyFine = 211,
1591     OpFwidthFine = 212,
1592     OpDPdxCoarse = 213,
1593     OpDPdyCoarse = 214,
1594     OpFwidthCoarse = 215,
1595     OpEmitVertex = 218,
1596     OpEndPrimitive = 219,
1597     OpEmitStreamVertex = 220,
1598     OpEndStreamPrimitive = 221,
1599     OpControlBarrier = 224,
1600     OpMemoryBarrier = 225,
1601     OpAtomicLoad = 227,
1602     OpAtomicStore = 228,
1603     OpAtomicExchange = 229,
1604     OpAtomicCompareExchange = 230,
1605     OpAtomicCompareExchangeWeak = 231,
1606     OpAtomicIIncrement = 232,
1607     OpAtomicIDecrement = 233,
1608     OpAtomicIAdd = 234,
1609     OpAtomicISub = 235,
1610     OpAtomicSMin = 236,
1611     OpAtomicUMin = 237,
1612     OpAtomicSMax = 238,
1613     OpAtomicUMax = 239,
1614     OpAtomicAnd = 240,
1615     OpAtomicOr = 241,
1616     OpAtomicXor = 242,
1617     OpPhi = 245,
1618     OpLoopMerge = 246,
1619     OpSelectionMerge = 247,
1620     OpLabel = 248,
1621     OpBranch = 249,
1622     OpBranchConditional = 250,
1623     OpSwitch = 251,
1624     OpKill = 252,
1625     OpReturn = 253,
1626     OpReturnValue = 254,
1627     OpUnreachable = 255,
1628     OpLifetimeStart = 256,
1629     OpLifetimeStop = 257,
1630     OpGroupAsyncCopy = 259,
1631     OpGroupWaitEvents = 260,
1632     OpGroupAll = 261,
1633     OpGroupAny = 262,
1634     OpGroupBroadcast = 263,
1635     OpGroupIAdd = 264,
1636     OpGroupFAdd = 265,
1637     OpGroupFMin = 266,
1638     OpGroupUMin = 267,
1639     OpGroupSMin = 268,
1640     OpGroupFMax = 269,
1641     OpGroupUMax = 270,
1642     OpGroupSMax = 271,
1643     OpReadPipe = 274,
1644     OpWritePipe = 275,
1645     OpReservedReadPipe = 276,
1646     OpReservedWritePipe = 277,
1647     OpReserveReadPipePackets = 278,
1648     OpReserveWritePipePackets = 279,
1649     OpCommitReadPipe = 280,
1650     OpCommitWritePipe = 281,
1651     OpIsValidReserveId = 282,
1652     OpGetNumPipePackets = 283,
1653     OpGetMaxPipePackets = 284,
1654     OpGroupReserveReadPipePackets = 285,
1655     OpGroupReserveWritePipePackets = 286,
1656     OpGroupCommitReadPipe = 287,
1657     OpGroupCommitWritePipe = 288,
1658     OpEnqueueMarker = 291,
1659     OpEnqueueKernel = 292,
1660     OpGetKernelNDrangeSubGroupCount = 293,
1661     OpGetKernelNDrangeMaxSubGroupSize = 294,
1662     OpGetKernelWorkGroupSize = 295,
1663     OpGetKernelPreferredWorkGroupSizeMultiple = 296,
1664     OpRetainEvent = 297,
1665     OpReleaseEvent = 298,
1666     OpCreateUserEvent = 299,
1667     OpIsValidEvent = 300,
1668     OpSetUserEventStatus = 301,
1669     OpCaptureEventProfilingInfo = 302,
1670     OpGetDefaultQueue = 303,
1671     OpBuildNDRange = 304,
1672     OpImageSparseSampleImplicitLod = 305,
1673     OpImageSparseSampleExplicitLod = 306,
1674     OpImageSparseSampleDrefImplicitLod = 307,
1675     OpImageSparseSampleDrefExplicitLod = 308,
1676     OpImageSparseSampleProjImplicitLod = 309,
1677     OpImageSparseSampleProjExplicitLod = 310,
1678     OpImageSparseSampleProjDrefImplicitLod = 311,
1679     OpImageSparseSampleProjDrefExplicitLod = 312,
1680     OpImageSparseFetch = 313,
1681     OpImageSparseGather = 314,
1682     OpImageSparseDrefGather = 315,
1683     OpImageSparseTexelsResident = 316,
1684     OpNoLine = 317,
1685     OpAtomicFlagTestAndSet = 318,
1686     OpAtomicFlagClear = 319,
1687     OpImageSparseRead = 320,
1688     OpSizeOf = 321,
1689     OpTypePipeStorage = 322,
1690     OpConstantPipeStorage = 323,
1691     OpCreatePipeFromPipeStorage = 324,
1692     OpGetKernelLocalSizeForSubgroupCount = 325,
1693     OpGetKernelMaxNumSubgroups = 326,
1694     OpTypeNamedBarrier = 327,
1695     OpNamedBarrierInitialize = 328,
1696     OpMemoryNamedBarrier = 329,
1697     OpModuleProcessed = 330,
1698     OpExecutionModeId = 331,
1699     OpDecorateId = 332,
1700     OpGroupNonUniformElect = 333,
1701     OpGroupNonUniformAll = 334,
1702     OpGroupNonUniformAny = 335,
1703     OpGroupNonUniformAllEqual = 336,
1704     OpGroupNonUniformBroadcast = 337,
1705     OpGroupNonUniformBroadcastFirst = 338,
1706     OpGroupNonUniformBallot = 339,
1707     OpGroupNonUniformInverseBallot = 340,
1708     OpGroupNonUniformBallotBitExtract = 341,
1709     OpGroupNonUniformBallotBitCount = 342,
1710     OpGroupNonUniformBallotFindLSB = 343,
1711     OpGroupNonUniformBallotFindMSB = 344,
1712     OpGroupNonUniformShuffle = 345,
1713     OpGroupNonUniformShuffleXor = 346,
1714     OpGroupNonUniformShuffleUp = 347,
1715     OpGroupNonUniformShuffleDown = 348,
1716     OpGroupNonUniformIAdd = 349,
1717     OpGroupNonUniformFAdd = 350,
1718     OpGroupNonUniformIMul = 351,
1719     OpGroupNonUniformFMul = 352,
1720     OpGroupNonUniformSMin = 353,
1721     OpGroupNonUniformUMin = 354,
1722     OpGroupNonUniformFMin = 355,
1723     OpGroupNonUniformSMax = 356,
1724     OpGroupNonUniformUMax = 357,
1725     OpGroupNonUniformFMax = 358,
1726     OpGroupNonUniformBitwiseAnd = 359,
1727     OpGroupNonUniformBitwiseOr = 360,
1728     OpGroupNonUniformBitwiseXor = 361,
1729     OpGroupNonUniformLogicalAnd = 362,
1730     OpGroupNonUniformLogicalOr = 363,
1731     OpGroupNonUniformLogicalXor = 364,
1732     OpGroupNonUniformQuadBroadcast = 365,
1733     OpGroupNonUniformQuadSwap = 366,
1734     OpCopyLogical = 400,
1735     OpPtrEqual = 401,
1736     OpPtrNotEqual = 402,
1737     OpPtrDiff = 403,
1738     OpColorAttachmentReadEXT = 4160,
1739     OpDepthAttachmentReadEXT = 4161,
1740     OpStencilAttachmentReadEXT = 4162,
1741     OpTerminateInvocation = 4416,
1742     OpSubgroupBallotKHR = 4421,
1743     OpSubgroupFirstInvocationKHR = 4422,
1744     OpSubgroupAllKHR = 4428,
1745     OpSubgroupAnyKHR = 4429,
1746     OpSubgroupAllEqualKHR = 4430,
1747     OpGroupNonUniformRotateKHR = 4431,
1748     OpSubgroupReadInvocationKHR = 4432,
1749     OpTraceRayKHR = 4445,
1750     OpExecuteCallableKHR = 4446,
1751     OpConvertUToAccelerationStructureKHR = 4447,
1752     OpIgnoreIntersectionKHR = 4448,
1753     OpTerminateRayKHR = 4449,
1754     OpSDot = 4450,
1755     OpSDotKHR = 4450,
1756     OpUDot = 4451,
1757     OpUDotKHR = 4451,
1758     OpSUDot = 4452,
1759     OpSUDotKHR = 4452,
1760     OpSDotAccSat = 4453,
1761     OpSDotAccSatKHR = 4453,
1762     OpUDotAccSat = 4454,
1763     OpUDotAccSatKHR = 4454,
1764     OpSUDotAccSat = 4455,
1765     OpSUDotAccSatKHR = 4455,
1766     OpTypeCooperativeMatrixKHR = 4456,
1767     OpCooperativeMatrixLoadKHR = 4457,
1768     OpCooperativeMatrixStoreKHR = 4458,
1769     OpCooperativeMatrixMulAddKHR = 4459,
1770     OpCooperativeMatrixLengthKHR = 4460,
1771     OpTypeRayQueryKHR = 4472,
1772     OpRayQueryInitializeKHR = 4473,
1773     OpRayQueryTerminateKHR = 4474,
1774     OpRayQueryGenerateIntersectionKHR = 4475,
1775     OpRayQueryConfirmIntersectionKHR = 4476,
1776     OpRayQueryProceedKHR = 4477,
1777     OpRayQueryGetIntersectionTypeKHR = 4479,
1778     OpImageSampleWeightedQCOM = 4480,
1779     OpImageBoxFilterQCOM = 4481,
1780     OpImageBlockMatchSSDQCOM = 4482,
1781     OpImageBlockMatchSADQCOM = 4483,
1782     OpGroupIAddNonUniformAMD = 5000,
1783     OpGroupFAddNonUniformAMD = 5001,
1784     OpGroupFMinNonUniformAMD = 5002,
1785     OpGroupUMinNonUniformAMD = 5003,
1786     OpGroupSMinNonUniformAMD = 5004,
1787     OpGroupFMaxNonUniformAMD = 5005,
1788     OpGroupUMaxNonUniformAMD = 5006,
1789     OpGroupSMaxNonUniformAMD = 5007,
1790     OpFragmentMaskFetchAMD = 5011,
1791     OpFragmentFetchAMD = 5012,
1792     OpReadClockKHR = 5056,
1793     OpFinalizeNodePayloadsAMDX = 5075,
1794     OpFinishWritingNodePayloadAMDX = 5078,
1795     OpInitializeNodePayloadsAMDX = 5090,
1796     OpGroupNonUniformQuadAllKHR = 5110,
1797     OpGroupNonUniformQuadAnyKHR = 5111,
1798     OpHitObjectRecordHitMotionNV = 5249,
1799     OpHitObjectRecordHitWithIndexMotionNV = 5250,
1800     OpHitObjectRecordMissMotionNV = 5251,
1801     OpHitObjectGetWorldToObjectNV = 5252,
1802     OpHitObjectGetObjectToWorldNV = 5253,
1803     OpHitObjectGetObjectRayDirectionNV = 5254,
1804     OpHitObjectGetObjectRayOriginNV = 5255,
1805     OpHitObjectTraceRayMotionNV = 5256,
1806     OpHitObjectGetShaderRecordBufferHandleNV = 5257,
1807     OpHitObjectGetShaderBindingTableRecordIndexNV = 5258,
1808     OpHitObjectRecordEmptyNV = 5259,
1809     OpHitObjectTraceRayNV = 5260,
1810     OpHitObjectRecordHitNV = 5261,
1811     OpHitObjectRecordHitWithIndexNV = 5262,
1812     OpHitObjectRecordMissNV = 5263,
1813     OpHitObjectExecuteShaderNV = 5264,
1814     OpHitObjectGetCurrentTimeNV = 5265,
1815     OpHitObjectGetAttributesNV = 5266,
1816     OpHitObjectGetHitKindNV = 5267,
1817     OpHitObjectGetPrimitiveIndexNV = 5268,
1818     OpHitObjectGetGeometryIndexNV = 5269,
1819     OpHitObjectGetInstanceIdNV = 5270,
1820     OpHitObjectGetInstanceCustomIndexNV = 5271,
1821     OpHitObjectGetWorldRayDirectionNV = 5272,
1822     OpHitObjectGetWorldRayOriginNV = 5273,
1823     OpHitObjectGetRayTMaxNV = 5274,
1824     OpHitObjectGetRayTMinNV = 5275,
1825     OpHitObjectIsEmptyNV = 5276,
1826     OpHitObjectIsHitNV = 5277,
1827     OpHitObjectIsMissNV = 5278,
1828     OpReorderThreadWithHitObjectNV = 5279,
1829     OpReorderThreadWithHintNV = 5280,
1830     OpTypeHitObjectNV = 5281,
1831     OpImageSampleFootprintNV = 5283,
1832     OpEmitMeshTasksEXT = 5294,
1833     OpSetMeshOutputsEXT = 5295,
1834     OpGroupNonUniformPartitionNV = 5296,
1835     OpWritePackedPrimitiveIndices4x8NV = 5299,
1836     OpFetchMicroTriangleVertexPositionNV = 5300,
1837     OpFetchMicroTriangleVertexBarycentricNV = 5301,
1838     OpReportIntersectionKHR = 5334,
1839     OpReportIntersectionNV = 5334,
1840     OpIgnoreIntersectionNV = 5335,
1841     OpTerminateRayNV = 5336,
1842     OpTraceNV = 5337,
1843     OpTraceMotionNV = 5338,
1844     OpTraceRayMotionNV = 5339,
1845     OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
1846     OpTypeAccelerationStructureKHR = 5341,
1847     OpTypeAccelerationStructureNV = 5341,
1848     OpExecuteCallableNV = 5344,
1849     OpTypeCooperativeMatrixNV = 5358,
1850     OpCooperativeMatrixLoadNV = 5359,
1851     OpCooperativeMatrixStoreNV = 5360,
1852     OpCooperativeMatrixMulAddNV = 5361,
1853     OpCooperativeMatrixLengthNV = 5362,
1854     OpBeginInvocationInterlockEXT = 5364,
1855     OpEndInvocationInterlockEXT = 5365,
1856     OpDemoteToHelperInvocation = 5380,
1857     OpDemoteToHelperInvocationEXT = 5380,
1858     OpIsHelperInvocationEXT = 5381,
1859     OpConvertUToImageNV = 5391,
1860     OpConvertUToSamplerNV = 5392,
1861     OpConvertImageToUNV = 5393,
1862     OpConvertSamplerToUNV = 5394,
1863     OpConvertUToSampledImageNV = 5395,
1864     OpConvertSampledImageToUNV = 5396,
1865     OpSamplerImageAddressingModeNV = 5397,
1866     OpSubgroupShuffleINTEL = 5571,
1867     OpSubgroupShuffleDownINTEL = 5572,
1868     OpSubgroupShuffleUpINTEL = 5573,
1869     OpSubgroupShuffleXorINTEL = 5574,
1870     OpSubgroupBlockReadINTEL = 5575,
1871     OpSubgroupBlockWriteINTEL = 5576,
1872     OpSubgroupImageBlockReadINTEL = 5577,
1873     OpSubgroupImageBlockWriteINTEL = 5578,
1874     OpSubgroupImageMediaBlockReadINTEL = 5580,
1875     OpSubgroupImageMediaBlockWriteINTEL = 5581,
1876     OpUCountLeadingZerosINTEL = 5585,
1877     OpUCountTrailingZerosINTEL = 5586,
1878     OpAbsISubINTEL = 5587,
1879     OpAbsUSubINTEL = 5588,
1880     OpIAddSatINTEL = 5589,
1881     OpUAddSatINTEL = 5590,
1882     OpIAverageINTEL = 5591,
1883     OpUAverageINTEL = 5592,
1884     OpIAverageRoundedINTEL = 5593,
1885     OpUAverageRoundedINTEL = 5594,
1886     OpISubSatINTEL = 5595,
1887     OpUSubSatINTEL = 5596,
1888     OpIMul32x16INTEL = 5597,
1889     OpUMul32x16INTEL = 5598,
1890     OpConstantFunctionPointerINTEL = 5600,
1891     OpFunctionPointerCallINTEL = 5601,
1892     OpAsmTargetINTEL = 5609,
1893     OpAsmINTEL = 5610,
1894     OpAsmCallINTEL = 5611,
1895     OpAtomicFMinEXT = 5614,
1896     OpAtomicFMaxEXT = 5615,
1897     OpAssumeTrueKHR = 5630,
1898     OpExpectKHR = 5631,
1899     OpDecorateString = 5632,
1900     OpDecorateStringGOOGLE = 5632,
1901     OpMemberDecorateString = 5633,
1902     OpMemberDecorateStringGOOGLE = 5633,
1903     OpVmeImageINTEL = 5699,
1904     OpTypeVmeImageINTEL = 5700,
1905     OpTypeAvcImePayloadINTEL = 5701,
1906     OpTypeAvcRefPayloadINTEL = 5702,
1907     OpTypeAvcSicPayloadINTEL = 5703,
1908     OpTypeAvcMcePayloadINTEL = 5704,
1909     OpTypeAvcMceResultINTEL = 5705,
1910     OpTypeAvcImeResultINTEL = 5706,
1911     OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
1912     OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
1913     OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
1914     OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
1915     OpTypeAvcRefResultINTEL = 5711,
1916     OpTypeAvcSicResultINTEL = 5712,
1917     OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
1918     OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
1919     OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
1920     OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
1921     OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
1922     OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
1923     OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
1924     OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
1925     OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
1926     OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
1927     OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
1928     OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
1929     OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
1930     OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
1931     OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
1932     OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
1933     OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
1934     OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
1935     OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
1936     OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
1937     OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
1938     OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
1939     OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
1940     OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
1941     OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
1942     OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
1943     OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
1944     OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
1945     OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
1946     OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
1947     OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
1948     OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
1949     OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
1950     OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
1951     OpSubgroupAvcImeInitializeINTEL = 5747,
1952     OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
1953     OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
1954     OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
1955     OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
1956     OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
1957     OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
1958     OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
1959     OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
1960     OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
1961     OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
1962     OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
1963     OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
1964     OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
1965     OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
1966     OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
1967     OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
1968     OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
1969     OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
1970     OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
1971     OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
1972     OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
1973     OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
1974     OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
1975     OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
1976     OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
1977     OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
1978     OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
1979     OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
1980     OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
1981     OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
1982     OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
1983     OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
1984     OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
1985     OpSubgroupAvcFmeInitializeINTEL = 5781,
1986     OpSubgroupAvcBmeInitializeINTEL = 5782,
1987     OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
1988     OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
1989     OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
1990     OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
1991     OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
1992     OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
1993     OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
1994     OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
1995     OpSubgroupAvcSicInitializeINTEL = 5791,
1996     OpSubgroupAvcSicConfigureSkcINTEL = 5792,
1997     OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
1998     OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
1999     OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
2000     OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
2001     OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
2002     OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
2003     OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
2004     OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
2005     OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
2006     OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
2007     OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
2008     OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
2009     OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
2010     OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
2011     OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
2012     OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
2013     OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
2014     OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
2015     OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
2016     OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
2017     OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
2018     OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
2019     OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
2020     OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
2021     OpVariableLengthArrayINTEL = 5818,
2022     OpSaveMemoryINTEL = 5819,
2023     OpRestoreMemoryINTEL = 5820,
2024     OpArbitraryFloatSinCosPiINTEL = 5840,
2025     OpArbitraryFloatCastINTEL = 5841,
2026     OpArbitraryFloatCastFromIntINTEL = 5842,
2027     OpArbitraryFloatCastToIntINTEL = 5843,
2028     OpArbitraryFloatAddINTEL = 5846,
2029     OpArbitraryFloatSubINTEL = 5847,
2030     OpArbitraryFloatMulINTEL = 5848,
2031     OpArbitraryFloatDivINTEL = 5849,
2032     OpArbitraryFloatGTINTEL = 5850,
2033     OpArbitraryFloatGEINTEL = 5851,
2034     OpArbitraryFloatLTINTEL = 5852,
2035     OpArbitraryFloatLEINTEL = 5853,
2036     OpArbitraryFloatEQINTEL = 5854,
2037     OpArbitraryFloatRecipINTEL = 5855,
2038     OpArbitraryFloatRSqrtINTEL = 5856,
2039     OpArbitraryFloatCbrtINTEL = 5857,
2040     OpArbitraryFloatHypotINTEL = 5858,
2041     OpArbitraryFloatSqrtINTEL = 5859,
2042     OpArbitraryFloatLogINTEL = 5860,
2043     OpArbitraryFloatLog2INTEL = 5861,
2044     OpArbitraryFloatLog10INTEL = 5862,
2045     OpArbitraryFloatLog1pINTEL = 5863,
2046     OpArbitraryFloatExpINTEL = 5864,
2047     OpArbitraryFloatExp2INTEL = 5865,
2048     OpArbitraryFloatExp10INTEL = 5866,
2049     OpArbitraryFloatExpm1INTEL = 5867,
2050     OpArbitraryFloatSinINTEL = 5868,
2051     OpArbitraryFloatCosINTEL = 5869,
2052     OpArbitraryFloatSinCosINTEL = 5870,
2053     OpArbitraryFloatSinPiINTEL = 5871,
2054     OpArbitraryFloatCosPiINTEL = 5872,
2055     OpArbitraryFloatASinINTEL = 5873,
2056     OpArbitraryFloatASinPiINTEL = 5874,
2057     OpArbitraryFloatACosINTEL = 5875,
2058     OpArbitraryFloatACosPiINTEL = 5876,
2059     OpArbitraryFloatATanINTEL = 5877,
2060     OpArbitraryFloatATanPiINTEL = 5878,
2061     OpArbitraryFloatATan2INTEL = 5879,
2062     OpArbitraryFloatPowINTEL = 5880,
2063     OpArbitraryFloatPowRINTEL = 5881,
2064     OpArbitraryFloatPowNINTEL = 5882,
2065     OpLoopControlINTEL = 5887,
2066     OpAliasDomainDeclINTEL = 5911,
2067     OpAliasScopeDeclINTEL = 5912,
2068     OpAliasScopeListDeclINTEL = 5913,
2069     OpFixedSqrtINTEL = 5923,
2070     OpFixedRecipINTEL = 5924,
2071     OpFixedRsqrtINTEL = 5925,
2072     OpFixedSinINTEL = 5926,
2073     OpFixedCosINTEL = 5927,
2074     OpFixedSinCosINTEL = 5928,
2075     OpFixedSinPiINTEL = 5929,
2076     OpFixedCosPiINTEL = 5930,
2077     OpFixedSinCosPiINTEL = 5931,
2078     OpFixedLogINTEL = 5932,
2079     OpFixedExpINTEL = 5933,
2080     OpPtrCastToCrossWorkgroupINTEL = 5934,
2081     OpCrossWorkgroupCastToPtrINTEL = 5938,
2082     OpReadPipeBlockingINTEL = 5946,
2083     OpWritePipeBlockingINTEL = 5947,
2084     OpFPGARegINTEL = 5949,
2085     OpRayQueryGetRayTMinKHR = 6016,
2086     OpRayQueryGetRayFlagsKHR = 6017,
2087     OpRayQueryGetIntersectionTKHR = 6018,
2088     OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019,
2089     OpRayQueryGetIntersectionInstanceIdKHR = 6020,
2090     OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021,
2091     OpRayQueryGetIntersectionGeometryIndexKHR = 6022,
2092     OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023,
2093     OpRayQueryGetIntersectionBarycentricsKHR = 6024,
2094     OpRayQueryGetIntersectionFrontFaceKHR = 6025,
2095     OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026,
2096     OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027,
2097     OpRayQueryGetIntersectionObjectRayOriginKHR = 6028,
2098     OpRayQueryGetWorldRayDirectionKHR = 6029,
2099     OpRayQueryGetWorldRayOriginKHR = 6030,
2100     OpRayQueryGetIntersectionObjectToWorldKHR = 6031,
2101     OpRayQueryGetIntersectionWorldToObjectKHR = 6032,
2102     OpAtomicFAddEXT = 6035,
2103     OpTypeBufferSurfaceINTEL = 6086,
2104     OpTypeStructContinuedINTEL = 6090,
2105     OpConstantCompositeContinuedINTEL = 6091,
2106     OpSpecConstantCompositeContinuedINTEL = 6092,
2107     OpCompositeConstructContinuedINTEL = 6096,
2108     OpConvertFToBF16INTEL = 6116,
2109     OpConvertBF16ToFINTEL = 6117,
2110     OpControlBarrierArriveINTEL = 6142,
2111     OpControlBarrierWaitINTEL = 6143,
2112     OpGroupIMulKHR = 6401,
2113     OpGroupFMulKHR = 6402,
2114     OpGroupBitwiseAndKHR = 6403,
2115     OpGroupBitwiseOrKHR = 6404,
2116     OpGroupBitwiseXorKHR = 6405,
2117     OpGroupLogicalAndKHR = 6406,
2118     OpGroupLogicalOrKHR = 6407,
2119     OpGroupLogicalXorKHR = 6408,
2120     OpMaskedGatherINTEL = 6428,
2121     OpMaskedScatterINTEL = 6429,
2122     OpMax = 0x7fffffff,
2123 };
2124 
2125 #ifdef SPV_ENABLE_UTILITY_CODE
2126 #ifndef __cplusplus
2127 #include <stdbool.h>
2128 #endif
HasResultAndType(Op opcode,bool * hasResult,bool * hasResultType)2129 inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
2130     *hasResult = *hasResultType = false;
2131     switch (opcode) {
2132     default: /* unknown opcode */ break;
2133     case OpNop: *hasResult = false; *hasResultType = false; break;
2134     case OpUndef: *hasResult = true; *hasResultType = true; break;
2135     case OpSourceContinued: *hasResult = false; *hasResultType = false; break;
2136     case OpSource: *hasResult = false; *hasResultType = false; break;
2137     case OpSourceExtension: *hasResult = false; *hasResultType = false; break;
2138     case OpName: *hasResult = false; *hasResultType = false; break;
2139     case OpMemberName: *hasResult = false; *hasResultType = false; break;
2140     case OpString: *hasResult = true; *hasResultType = false; break;
2141     case OpLine: *hasResult = false; *hasResultType = false; break;
2142     case OpExtension: *hasResult = false; *hasResultType = false; break;
2143     case OpExtInstImport: *hasResult = true; *hasResultType = false; break;
2144     case OpExtInst: *hasResult = true; *hasResultType = true; break;
2145     case OpMemoryModel: *hasResult = false; *hasResultType = false; break;
2146     case OpEntryPoint: *hasResult = false; *hasResultType = false; break;
2147     case OpExecutionMode: *hasResult = false; *hasResultType = false; break;
2148     case OpCapability: *hasResult = false; *hasResultType = false; break;
2149     case OpTypeVoid: *hasResult = true; *hasResultType = false; break;
2150     case OpTypeBool: *hasResult = true; *hasResultType = false; break;
2151     case OpTypeInt: *hasResult = true; *hasResultType = false; break;
2152     case OpTypeFloat: *hasResult = true; *hasResultType = false; break;
2153     case OpTypeVector: *hasResult = true; *hasResultType = false; break;
2154     case OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
2155     case OpTypeImage: *hasResult = true; *hasResultType = false; break;
2156     case OpTypeSampler: *hasResult = true; *hasResultType = false; break;
2157     case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
2158     case OpTypeArray: *hasResult = true; *hasResultType = false; break;
2159     case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
2160     case OpTypeStruct: *hasResult = true; *hasResultType = false; break;
2161     case OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
2162     case OpTypePointer: *hasResult = true; *hasResultType = false; break;
2163     case OpTypeFunction: *hasResult = true; *hasResultType = false; break;
2164     case OpTypeEvent: *hasResult = true; *hasResultType = false; break;
2165     case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
2166     case OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
2167     case OpTypeQueue: *hasResult = true; *hasResultType = false; break;
2168     case OpTypePipe: *hasResult = true; *hasResultType = false; break;
2169     case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
2170     case OpConstantTrue: *hasResult = true; *hasResultType = true; break;
2171     case OpConstantFalse: *hasResult = true; *hasResultType = true; break;
2172     case OpConstant: *hasResult = true; *hasResultType = true; break;
2173     case OpConstantComposite: *hasResult = true; *hasResultType = true; break;
2174     case OpConstantSampler: *hasResult = true; *hasResultType = true; break;
2175     case OpConstantNull: *hasResult = true; *hasResultType = true; break;
2176     case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
2177     case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
2178     case OpSpecConstant: *hasResult = true; *hasResultType = true; break;
2179     case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
2180     case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
2181     case OpFunction: *hasResult = true; *hasResultType = true; break;
2182     case OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
2183     case OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
2184     case OpFunctionCall: *hasResult = true; *hasResultType = true; break;
2185     case OpVariable: *hasResult = true; *hasResultType = true; break;
2186     case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
2187     case OpLoad: *hasResult = true; *hasResultType = true; break;
2188     case OpStore: *hasResult = false; *hasResultType = false; break;
2189     case OpCopyMemory: *hasResult = false; *hasResultType = false; break;
2190     case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
2191     case OpAccessChain: *hasResult = true; *hasResultType = true; break;
2192     case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
2193     case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
2194     case OpArrayLength: *hasResult = true; *hasResultType = true; break;
2195     case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
2196     case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
2197     case OpDecorate: *hasResult = false; *hasResultType = false; break;
2198     case OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
2199     case OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
2200     case OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
2201     case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
2202     case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
2203     case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
2204     case OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
2205     case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
2206     case OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
2207     case OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
2208     case OpCopyObject: *hasResult = true; *hasResultType = true; break;
2209     case OpTranspose: *hasResult = true; *hasResultType = true; break;
2210     case OpSampledImage: *hasResult = true; *hasResultType = true; break;
2211     case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
2212     case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
2213     case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
2214     case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
2215     case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
2216     case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
2217     case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
2218     case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
2219     case OpImageFetch: *hasResult = true; *hasResultType = true; break;
2220     case OpImageGather: *hasResult = true; *hasResultType = true; break;
2221     case OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
2222     case OpImageRead: *hasResult = true; *hasResultType = true; break;
2223     case OpImageWrite: *hasResult = false; *hasResultType = false; break;
2224     case OpImage: *hasResult = true; *hasResultType = true; break;
2225     case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
2226     case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
2227     case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
2228     case OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
2229     case OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
2230     case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
2231     case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
2232     case OpConvertFToU: *hasResult = true; *hasResultType = true; break;
2233     case OpConvertFToS: *hasResult = true; *hasResultType = true; break;
2234     case OpConvertSToF: *hasResult = true; *hasResultType = true; break;
2235     case OpConvertUToF: *hasResult = true; *hasResultType = true; break;
2236     case OpUConvert: *hasResult = true; *hasResultType = true; break;
2237     case OpSConvert: *hasResult = true; *hasResultType = true; break;
2238     case OpFConvert: *hasResult = true; *hasResultType = true; break;
2239     case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
2240     case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
2241     case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
2242     case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
2243     case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
2244     case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
2245     case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
2246     case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
2247     case OpBitcast: *hasResult = true; *hasResultType = true; break;
2248     case OpSNegate: *hasResult = true; *hasResultType = true; break;
2249     case OpFNegate: *hasResult = true; *hasResultType = true; break;
2250     case OpIAdd: *hasResult = true; *hasResultType = true; break;
2251     case OpFAdd: *hasResult = true; *hasResultType = true; break;
2252     case OpISub: *hasResult = true; *hasResultType = true; break;
2253     case OpFSub: *hasResult = true; *hasResultType = true; break;
2254     case OpIMul: *hasResult = true; *hasResultType = true; break;
2255     case OpFMul: *hasResult = true; *hasResultType = true; break;
2256     case OpUDiv: *hasResult = true; *hasResultType = true; break;
2257     case OpSDiv: *hasResult = true; *hasResultType = true; break;
2258     case OpFDiv: *hasResult = true; *hasResultType = true; break;
2259     case OpUMod: *hasResult = true; *hasResultType = true; break;
2260     case OpSRem: *hasResult = true; *hasResultType = true; break;
2261     case OpSMod: *hasResult = true; *hasResultType = true; break;
2262     case OpFRem: *hasResult = true; *hasResultType = true; break;
2263     case OpFMod: *hasResult = true; *hasResultType = true; break;
2264     case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
2265     case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
2266     case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
2267     case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
2268     case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
2269     case OpOuterProduct: *hasResult = true; *hasResultType = true; break;
2270     case OpDot: *hasResult = true; *hasResultType = true; break;
2271     case OpIAddCarry: *hasResult = true; *hasResultType = true; break;
2272     case OpISubBorrow: *hasResult = true; *hasResultType = true; break;
2273     case OpUMulExtended: *hasResult = true; *hasResultType = true; break;
2274     case OpSMulExtended: *hasResult = true; *hasResultType = true; break;
2275     case OpAny: *hasResult = true; *hasResultType = true; break;
2276     case OpAll: *hasResult = true; *hasResultType = true; break;
2277     case OpIsNan: *hasResult = true; *hasResultType = true; break;
2278     case OpIsInf: *hasResult = true; *hasResultType = true; break;
2279     case OpIsFinite: *hasResult = true; *hasResultType = true; break;
2280     case OpIsNormal: *hasResult = true; *hasResultType = true; break;
2281     case OpSignBitSet: *hasResult = true; *hasResultType = true; break;
2282     case OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
2283     case OpOrdered: *hasResult = true; *hasResultType = true; break;
2284     case OpUnordered: *hasResult = true; *hasResultType = true; break;
2285     case OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
2286     case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
2287     case OpLogicalOr: *hasResult = true; *hasResultType = true; break;
2288     case OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
2289     case OpLogicalNot: *hasResult = true; *hasResultType = true; break;
2290     case OpSelect: *hasResult = true; *hasResultType = true; break;
2291     case OpIEqual: *hasResult = true; *hasResultType = true; break;
2292     case OpINotEqual: *hasResult = true; *hasResultType = true; break;
2293     case OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
2294     case OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
2295     case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
2296     case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
2297     case OpULessThan: *hasResult = true; *hasResultType = true; break;
2298     case OpSLessThan: *hasResult = true; *hasResultType = true; break;
2299     case OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
2300     case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
2301     case OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
2302     case OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
2303     case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
2304     case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
2305     case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
2306     case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
2307     case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
2308     case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
2309     case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
2310     case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
2311     case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
2312     case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
2313     case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
2314     case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
2315     case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
2316     case OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
2317     case OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
2318     case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
2319     case OpNot: *hasResult = true; *hasResultType = true; break;
2320     case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
2321     case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
2322     case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
2323     case OpBitReverse: *hasResult = true; *hasResultType = true; break;
2324     case OpBitCount: *hasResult = true; *hasResultType = true; break;
2325     case OpDPdx: *hasResult = true; *hasResultType = true; break;
2326     case OpDPdy: *hasResult = true; *hasResultType = true; break;
2327     case OpFwidth: *hasResult = true; *hasResultType = true; break;
2328     case OpDPdxFine: *hasResult = true; *hasResultType = true; break;
2329     case OpDPdyFine: *hasResult = true; *hasResultType = true; break;
2330     case OpFwidthFine: *hasResult = true; *hasResultType = true; break;
2331     case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
2332     case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
2333     case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
2334     case OpEmitVertex: *hasResult = false; *hasResultType = false; break;
2335     case OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
2336     case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
2337     case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
2338     case OpControlBarrier: *hasResult = false; *hasResultType = false; break;
2339     case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
2340     case OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
2341     case OpAtomicStore: *hasResult = false; *hasResultType = false; break;
2342     case OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
2343     case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
2344     case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
2345     case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
2346     case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
2347     case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
2348     case OpAtomicISub: *hasResult = true; *hasResultType = true; break;
2349     case OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
2350     case OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
2351     case OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
2352     case OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
2353     case OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
2354     case OpAtomicOr: *hasResult = true; *hasResultType = true; break;
2355     case OpAtomicXor: *hasResult = true; *hasResultType = true; break;
2356     case OpPhi: *hasResult = true; *hasResultType = true; break;
2357     case OpLoopMerge: *hasResult = false; *hasResultType = false; break;
2358     case OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
2359     case OpLabel: *hasResult = true; *hasResultType = false; break;
2360     case OpBranch: *hasResult = false; *hasResultType = false; break;
2361     case OpBranchConditional: *hasResult = false; *hasResultType = false; break;
2362     case OpSwitch: *hasResult = false; *hasResultType = false; break;
2363     case OpKill: *hasResult = false; *hasResultType = false; break;
2364     case OpReturn: *hasResult = false; *hasResultType = false; break;
2365     case OpReturnValue: *hasResult = false; *hasResultType = false; break;
2366     case OpUnreachable: *hasResult = false; *hasResultType = false; break;
2367     case OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
2368     case OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
2369     case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
2370     case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
2371     case OpGroupAll: *hasResult = true; *hasResultType = true; break;
2372     case OpGroupAny: *hasResult = true; *hasResultType = true; break;
2373     case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
2374     case OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
2375     case OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
2376     case OpGroupFMin: *hasResult = true; *hasResultType = true; break;
2377     case OpGroupUMin: *hasResult = true; *hasResultType = true; break;
2378     case OpGroupSMin: *hasResult = true; *hasResultType = true; break;
2379     case OpGroupFMax: *hasResult = true; *hasResultType = true; break;
2380     case OpGroupUMax: *hasResult = true; *hasResultType = true; break;
2381     case OpGroupSMax: *hasResult = true; *hasResultType = true; break;
2382     case OpReadPipe: *hasResult = true; *hasResultType = true; break;
2383     case OpWritePipe: *hasResult = true; *hasResultType = true; break;
2384     case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
2385     case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
2386     case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
2387     case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
2388     case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
2389     case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
2390     case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
2391     case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
2392     case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
2393     case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
2394     case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
2395     case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
2396     case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
2397     case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
2398     case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
2399     case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
2400     case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
2401     case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
2402     case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
2403     case OpRetainEvent: *hasResult = false; *hasResultType = false; break;
2404     case OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
2405     case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
2406     case OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
2407     case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
2408     case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
2409     case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
2410     case OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
2411     case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
2412     case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
2413     case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
2414     case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
2415     case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
2416     case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
2417     case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
2418     case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
2419     case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
2420     case OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
2421     case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
2422     case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
2423     case OpNoLine: *hasResult = false; *hasResultType = false; break;
2424     case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
2425     case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
2426     case OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
2427     case OpSizeOf: *hasResult = true; *hasResultType = true; break;
2428     case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
2429     case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
2430     case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
2431     case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
2432     case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
2433     case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
2434     case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
2435     case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
2436     case OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
2437     case OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
2438     case OpDecorateId: *hasResult = false; *hasResultType = false; break;
2439     case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
2440     case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
2441     case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
2442     case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
2443     case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
2444     case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
2445     case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
2446     case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
2447     case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
2448     case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
2449     case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
2450     case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
2451     case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
2452     case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
2453     case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
2454     case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
2455     case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
2456     case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
2457     case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
2458     case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
2459     case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
2460     case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
2461     case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
2462     case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
2463     case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
2464     case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
2465     case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
2466     case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
2467     case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
2468     case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
2469     case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
2470     case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
2471     case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
2472     case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
2473     case OpCopyLogical: *hasResult = true; *hasResultType = true; break;
2474     case OpPtrEqual: *hasResult = true; *hasResultType = true; break;
2475     case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
2476     case OpPtrDiff: *hasResult = true; *hasResultType = true; break;
2477     case OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
2478     case OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
2479     case OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break;
2480     case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break;
2481     case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
2482     case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
2483     case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
2484     case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
2485     case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
2486     case OpGroupNonUniformRotateKHR: *hasResult = true; *hasResultType = true; break;
2487     case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
2488     case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break;
2489     case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break;
2490     case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break;
2491     case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break;
2492     case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break;
2493     case OpSDot: *hasResult = true; *hasResultType = true; break;
2494     case OpUDot: *hasResult = true; *hasResultType = true; break;
2495     case OpSUDot: *hasResult = true; *hasResultType = true; break;
2496     case OpSDotAccSat: *hasResult = true; *hasResultType = true; break;
2497     case OpUDotAccSat: *hasResult = true; *hasResultType = true; break;
2498     case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break;
2499     case OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break;
2500     case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break;
2501     case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break;
2502     case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break;
2503     case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break;
2504     case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break;
2505     case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break;
2506     case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break;
2507     case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break;
2508     case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break;
2509     case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break;
2510     case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break;
2511     case OpImageSampleWeightedQCOM: *hasResult = true; *hasResultType = true; break;
2512     case OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break;
2513     case OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break;
2514     case OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break;
2515     case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
2516     case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
2517     case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
2518     case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
2519     case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
2520     case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
2521     case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
2522     case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
2523     case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
2524     case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
2525     case OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
2526     case OpFinalizeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
2527     case OpFinishWritingNodePayloadAMDX: *hasResult = true; *hasResultType = true; break;
2528     case OpInitializeNodePayloadsAMDX: *hasResult = false; *hasResultType = false; break;
2529     case OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break;
2530     case OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break;
2531     case OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break;
2532     case OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break;
2533     case OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break;
2534     case OpHitObjectGetWorldToObjectNV: *hasResult = true; *hasResultType = true; break;
2535     case OpHitObjectGetObjectToWorldNV: *hasResult = true; *hasResultType = true; break;
2536     case OpHitObjectGetObjectRayDirectionNV: *hasResult = true; *hasResultType = true; break;
2537     case OpHitObjectGetObjectRayOriginNV: *hasResult = true; *hasResultType = true; break;
2538     case OpHitObjectTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
2539     case OpHitObjectGetShaderRecordBufferHandleNV: *hasResult = true; *hasResultType = true; break;
2540     case OpHitObjectGetShaderBindingTableRecordIndexNV: *hasResult = true; *hasResultType = true; break;
2541     case OpHitObjectRecordEmptyNV: *hasResult = false; *hasResultType = false; break;
2542     case OpHitObjectTraceRayNV: *hasResult = false; *hasResultType = false; break;
2543     case OpHitObjectRecordHitNV: *hasResult = false; *hasResultType = false; break;
2544     case OpHitObjectRecordHitWithIndexNV: *hasResult = false; *hasResultType = false; break;
2545     case OpHitObjectRecordMissNV: *hasResult = false; *hasResultType = false; break;
2546     case OpHitObjectExecuteShaderNV: *hasResult = false; *hasResultType = false; break;
2547     case OpHitObjectGetCurrentTimeNV: *hasResult = true; *hasResultType = true; break;
2548     case OpHitObjectGetAttributesNV: *hasResult = false; *hasResultType = false; break;
2549     case OpHitObjectGetHitKindNV: *hasResult = true; *hasResultType = true; break;
2550     case OpHitObjectGetPrimitiveIndexNV: *hasResult = true; *hasResultType = true; break;
2551     case OpHitObjectGetGeometryIndexNV: *hasResult = true; *hasResultType = true; break;
2552     case OpHitObjectGetInstanceIdNV: *hasResult = true; *hasResultType = true; break;
2553     case OpHitObjectGetInstanceCustomIndexNV: *hasResult = true; *hasResultType = true; break;
2554     case OpHitObjectGetWorldRayDirectionNV: *hasResult = true; *hasResultType = true; break;
2555     case OpHitObjectGetWorldRayOriginNV: *hasResult = true; *hasResultType = true; break;
2556     case OpHitObjectGetRayTMaxNV: *hasResult = true; *hasResultType = true; break;
2557     case OpHitObjectGetRayTMinNV: *hasResult = true; *hasResultType = true; break;
2558     case OpHitObjectIsEmptyNV: *hasResult = true; *hasResultType = true; break;
2559     case OpHitObjectIsHitNV: *hasResult = true; *hasResultType = true; break;
2560     case OpHitObjectIsMissNV: *hasResult = true; *hasResultType = true; break;
2561     case OpReorderThreadWithHitObjectNV: *hasResult = false; *hasResultType = false; break;
2562     case OpReorderThreadWithHintNV: *hasResult = false; *hasResultType = false; break;
2563     case OpTypeHitObjectNV: *hasResult = true; *hasResultType = false; break;
2564     case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
2565     case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break;
2566     case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break;
2567     case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
2568     case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
2569     case OpFetchMicroTriangleVertexPositionNV: *hasResult = true; *hasResultType = true; break;
2570     case OpFetchMicroTriangleVertexBarycentricNV: *hasResult = true; *hasResultType = true; break;
2571     case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
2572     case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
2573     case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
2574     case OpTraceNV: *hasResult = false; *hasResultType = false; break;
2575     case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break;
2576     case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break;
2577     case OpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break;
2578     case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
2579     case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
2580     case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
2581     case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
2582     case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
2583     case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
2584     case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
2585     case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
2586     case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
2587     case OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break;
2588     case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
2589     case OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break;
2590     case OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break;
2591     case OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break;
2592     case OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break;
2593     case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break;
2594     case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break;
2595     case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break;
2596     case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
2597     case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
2598     case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
2599     case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
2600     case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2601     case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2602     case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2603     case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2604     case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
2605     case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
2606     case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
2607     case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
2608     case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
2609     case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
2610     case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
2611     case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
2612     case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
2613     case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
2614     case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
2615     case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
2616     case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
2617     case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
2618     case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
2619     case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
2620     case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break;
2621     case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break;
2622     case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break;
2623     case OpAsmINTEL: *hasResult = true; *hasResultType = true; break;
2624     case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break;
2625     case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break;
2626     case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break;
2627     case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break;
2628     case OpExpectKHR: *hasResult = true; *hasResultType = true; break;
2629     case OpDecorateString: *hasResult = false; *hasResultType = false; break;
2630     case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
2631     case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
2632     case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
2633     case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
2634     case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
2635     case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
2636     case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
2637     case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
2638     case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
2639     case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
2640     case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
2641     case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
2642     case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
2643     case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
2644     case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
2645     case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2646     case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2647     case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2648     case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2649     case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2650     case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2651     case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2652     case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2653     case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2654     case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2655     case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
2656     case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2657     case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2658     case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2659     case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2660     case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
2661     case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
2662     case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
2663     case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
2664     case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2665     case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
2666     case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
2667     case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
2668     case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
2669     case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
2670     case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2671     case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2672     case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2673     case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
2674     case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
2675     case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
2676     case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
2677     case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2678     case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
2679     case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2680     case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2681     case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2682     case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
2683     case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
2684     case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2685     case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
2686     case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
2687     case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2688     case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
2689     case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2690     case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2691     case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2692     case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2693     case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2694     case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2695     case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
2696     case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
2697     case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2698     case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2699     case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
2700     case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2701     case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
2702     case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2703     case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2704     case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2705     case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
2706     case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
2707     case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
2708     case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
2709     case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
2710     case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
2711     case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
2712     case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2713     case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2714     case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2715     case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2716     case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
2717     case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
2718     case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2719     case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2720     case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2721     case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
2722     case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2723     case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
2724     case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
2725     case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
2726     case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
2727     case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
2728     case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
2729     case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
2730     case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2731     case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
2732     case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
2733     case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
2734     case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
2735     case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
2736     case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2737     case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2738     case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
2739     case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
2740     case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
2741     case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
2742     case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2743     case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
2744     case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
2745     case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
2746     case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2747     case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
2748     case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
2749     case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break;
2750     case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break;
2751     case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break;
2752     case OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
2753     case OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break;
2754     case OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break;
2755     case OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break;
2756     case OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break;
2757     case OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break;
2758     case OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break;
2759     case OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break;
2760     case OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break;
2761     case OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break;
2762     case OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break;
2763     case OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break;
2764     case OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break;
2765     case OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break;
2766     case OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break;
2767     case OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break;
2768     case OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break;
2769     case OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break;
2770     case OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break;
2771     case OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break;
2772     case OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break;
2773     case OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break;
2774     case OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break;
2775     case OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break;
2776     case OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break;
2777     case OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break;
2778     case OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break;
2779     case OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break;
2780     case OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break;
2781     case OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break;
2782     case OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break;
2783     case OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break;
2784     case OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break;
2785     case OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break;
2786     case OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break;
2787     case OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break;
2788     case OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break;
2789     case OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break;
2790     case OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break;
2791     case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break;
2792     case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break;
2793     case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break;
2794     case OpAliasDomainDeclINTEL: *hasResult = true; *hasResultType = false; break;
2795     case OpAliasScopeDeclINTEL: *hasResult = true; *hasResultType = false; break;
2796     case OpAliasScopeListDeclINTEL: *hasResult = true; *hasResultType = false; break;
2797     case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break;
2798     case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break;
2799     case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break;
2800     case OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break;
2801     case OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break;
2802     case OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break;
2803     case OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break;
2804     case OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break;
2805     case OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break;
2806     case OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break;
2807     case OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break;
2808     case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break;
2809     case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break;
2810     case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
2811     case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break;
2812     case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break;
2813     case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break;
2814     case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break;
2815     case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break;
2816     case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break;
2817     case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break;
2818     case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break;
2819     case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break;
2820     case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break;
2821     case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break;
2822     case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break;
2823     case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break;
2824     case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
2825     case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break;
2826     case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break;
2827     case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break;
2828     case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break;
2829     case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break;
2830     case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break;
2831     case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break;
2832     case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break;
2833     case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
2834     case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break;
2835     case OpCompositeConstructContinuedINTEL: *hasResult = true; *hasResultType = true; break;
2836     case OpConvertFToBF16INTEL: *hasResult = true; *hasResultType = true; break;
2837     case OpConvertBF16ToFINTEL: *hasResult = true; *hasResultType = true; break;
2838     case OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break;
2839     case OpControlBarrierWaitINTEL: *hasResult = false; *hasResultType = false; break;
2840     case OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break;
2841     case OpGroupFMulKHR: *hasResult = true; *hasResultType = true; break;
2842     case OpGroupBitwiseAndKHR: *hasResult = true; *hasResultType = true; break;
2843     case OpGroupBitwiseOrKHR: *hasResult = true; *hasResultType = true; break;
2844     case OpGroupBitwiseXorKHR: *hasResult = true; *hasResultType = true; break;
2845     case OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break;
2846     case OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break;
2847     case OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break;
2848     case OpMaskedGatherINTEL: *hasResult = true; *hasResultType = true; break;
2849     case OpMaskedScatterINTEL: *hasResult = false; *hasResultType = false; break;
2850     }
2851 }
2852 #endif /* SPV_ENABLE_UTILITY_CODE */
2853 
2854 // Overload bitwise operators for mask bit combining
2855 
operator |(ImageOperandsMask a,ImageOperandsMask b)2856 inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
operator &(ImageOperandsMask a,ImageOperandsMask b)2857 inline ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) & unsigned(b)); }
operator ^(ImageOperandsMask a,ImageOperandsMask b)2858 inline ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) ^ unsigned(b)); }
operator ~(ImageOperandsMask a)2859 inline ImageOperandsMask operator~(ImageOperandsMask a) { return ImageOperandsMask(~unsigned(a)); }
operator |(FPFastMathModeMask a,FPFastMathModeMask b)2860 inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
operator &(FPFastMathModeMask a,FPFastMathModeMask b)2861 inline FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) & unsigned(b)); }
operator ^(FPFastMathModeMask a,FPFastMathModeMask b)2862 inline FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) ^ unsigned(b)); }
operator ~(FPFastMathModeMask a)2863 inline FPFastMathModeMask operator~(FPFastMathModeMask a) { return FPFastMathModeMask(~unsigned(a)); }
operator |(SelectionControlMask a,SelectionControlMask b)2864 inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
operator &(SelectionControlMask a,SelectionControlMask b)2865 inline SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) & unsigned(b)); }
operator ^(SelectionControlMask a,SelectionControlMask b)2866 inline SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) ^ unsigned(b)); }
operator ~(SelectionControlMask a)2867 inline SelectionControlMask operator~(SelectionControlMask a) { return SelectionControlMask(~unsigned(a)); }
operator |(LoopControlMask a,LoopControlMask b)2868 inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
operator &(LoopControlMask a,LoopControlMask b)2869 inline LoopControlMask operator&(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) & unsigned(b)); }
operator ^(LoopControlMask a,LoopControlMask b)2870 inline LoopControlMask operator^(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) ^ unsigned(b)); }
operator ~(LoopControlMask a)2871 inline LoopControlMask operator~(LoopControlMask a) { return LoopControlMask(~unsigned(a)); }
operator |(FunctionControlMask a,FunctionControlMask b)2872 inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
operator &(FunctionControlMask a,FunctionControlMask b)2873 inline FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) & unsigned(b)); }
operator ^(FunctionControlMask a,FunctionControlMask b)2874 inline FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) ^ unsigned(b)); }
operator ~(FunctionControlMask a)2875 inline FunctionControlMask operator~(FunctionControlMask a) { return FunctionControlMask(~unsigned(a)); }
operator |(MemorySemanticsMask a,MemorySemanticsMask b)2876 inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
operator &(MemorySemanticsMask a,MemorySemanticsMask b)2877 inline MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) & unsigned(b)); }
operator ^(MemorySemanticsMask a,MemorySemanticsMask b)2878 inline MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) ^ unsigned(b)); }
operator ~(MemorySemanticsMask a)2879 inline MemorySemanticsMask operator~(MemorySemanticsMask a) { return MemorySemanticsMask(~unsigned(a)); }
operator |(MemoryAccessMask a,MemoryAccessMask b)2880 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
operator &(MemoryAccessMask a,MemoryAccessMask b)2881 inline MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) & unsigned(b)); }
operator ^(MemoryAccessMask a,MemoryAccessMask b)2882 inline MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) ^ unsigned(b)); }
operator ~(MemoryAccessMask a)2883 inline MemoryAccessMask operator~(MemoryAccessMask a) { return MemoryAccessMask(~unsigned(a)); }
operator |(KernelProfilingInfoMask a,KernelProfilingInfoMask b)2884 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
operator &(KernelProfilingInfoMask a,KernelProfilingInfoMask b)2885 inline KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) & unsigned(b)); }
operator ^(KernelProfilingInfoMask a,KernelProfilingInfoMask b)2886 inline KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) ^ unsigned(b)); }
operator ~(KernelProfilingInfoMask a)2887 inline KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) { return KernelProfilingInfoMask(~unsigned(a)); }
operator |(RayFlagsMask a,RayFlagsMask b)2888 inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); }
operator &(RayFlagsMask a,RayFlagsMask b)2889 inline RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) & unsigned(b)); }
operator ^(RayFlagsMask a,RayFlagsMask b)2890 inline RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) ^ unsigned(b)); }
operator ~(RayFlagsMask a)2891 inline RayFlagsMask operator~(RayFlagsMask a) { return RayFlagsMask(~unsigned(a)); }
operator |(FragmentShadingRateMask a,FragmentShadingRateMask b)2892 inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); }
operator &(FragmentShadingRateMask a,FragmentShadingRateMask b)2893 inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); }
operator ^(FragmentShadingRateMask a,FragmentShadingRateMask b)2894 inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); }
operator ~(FragmentShadingRateMask a)2895 inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); }
operator |(CooperativeMatrixOperandsMask a,CooperativeMatrixOperandsMask b)2896 inline CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); }
operator &(CooperativeMatrixOperandsMask a,CooperativeMatrixOperandsMask b)2897 inline CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); }
operator ^(CooperativeMatrixOperandsMask a,CooperativeMatrixOperandsMask b)2898 inline CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); }
operator ~(CooperativeMatrixOperandsMask a)2899 inline CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); }
2900 
2901 }  // end namespace spv
2902 
2903 #endif  // #ifndef spirv_HPP
2904 
2905