1 /*
2 ** Copyright (c) 2014-2018 The Khronos Group Inc.
3 **
4 ** Permission is hereby granted, free of charge, to any person obtaining a copy
5 ** of this software and/or associated documentation files (the "Materials"),
6 ** to deal in the Materials without restriction, including without limitation
7 ** the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 ** and/or sell copies of the Materials, and to permit persons to whom the
9 ** Materials are furnished to do so, subject to the following conditions:
10 **
11 ** The above copyright notice and this permission notice shall be included in
12 ** all copies or substantial portions of the Materials.
13 **
14 ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15 ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16 ** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
17 **
18 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 ** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 ** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
24 ** IN THE MATERIALS.
25 */
26 
27 /*
28 ** This header is automatically generated by the same tool that creates
29 ** the Binary Section of the SPIR-V specification.
30 */
31 
32 /*
33 ** Enumeration tokens for SPIR-V, in various styles:
34 **   C, C++, C++11, JSON, Lua, Python, C#
35 **
36 ** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
37 ** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
38 ** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
39 ** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
40 ** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
41 ** - C# will use enum classes in the Specification class located in the "Spv" namespace, e.g.: Spv.Specification.SourceLanguage.GLSL
42 **
43 ** Some tokens act like mask values, which can be OR'd together,
44 ** while others are mutually exclusive.  The mask-like ones have
45 ** "Mask" in their name, and a parallel enum that has the shift
46 ** amount (1 << x) for each corresponding enumerant.
47 */
48 
49 #ifndef spirv_H
50 #define spirv_H
51 
52 typedef unsigned int SpvId;
53 
54 #define SPV_VERSION 0x10300
55 #define SPV_REVISION 6
56 
57 static const unsigned int SpvMagicNumber = 0x07230203;
58 static const unsigned int SpvVersion = 0x00010300;
59 static const unsigned int SpvRevision = 6;
60 static const unsigned int SpvOpCodeMask = 0xffff;
61 static const unsigned int SpvWordCountShift = 16;
62 
63 typedef enum SpvSourceLanguage_ {
64     SpvSourceLanguageUnknown = 0,
65     SpvSourceLanguageESSL = 1,
66     SpvSourceLanguageGLSL = 2,
67     SpvSourceLanguageOpenCL_C = 3,
68     SpvSourceLanguageOpenCL_CPP = 4,
69     SpvSourceLanguageHLSL = 5,
70     SpvSourceLanguageMax = 0x7fffffff,
71 } SpvSourceLanguage;
72 
73 typedef enum SpvExecutionModel_ {
74     SpvExecutionModelVertex = 0,
75     SpvExecutionModelTessellationControl = 1,
76     SpvExecutionModelTessellationEvaluation = 2,
77     SpvExecutionModelGeometry = 3,
78     SpvExecutionModelFragment = 4,
79     SpvExecutionModelGLCompute = 5,
80     SpvExecutionModelKernel = 6,
81     SpvExecutionModelTaskNV = 5267,
82     SpvExecutionModelMeshNV = 5268,
83     SpvExecutionModelRayGenerationNV = 5313,
84     SpvExecutionModelIntersectionNV = 5314,
85     SpvExecutionModelAnyHitNV = 5315,
86     SpvExecutionModelClosestHitNV = 5316,
87     SpvExecutionModelMissNV = 5317,
88     SpvExecutionModelCallableNV = 5318,
89     SpvExecutionModelMax = 0x7fffffff,
90 } SpvExecutionModel;
91 
92 typedef enum SpvAddressingModel_ {
93     SpvAddressingModelLogical = 0,
94     SpvAddressingModelPhysical32 = 1,
95     SpvAddressingModelPhysical64 = 2,
96     SpvAddressingModelMax = 0x7fffffff,
97 } SpvAddressingModel;
98 
99 typedef enum SpvMemoryModel_ {
100     SpvMemoryModelSimple = 0,
101     SpvMemoryModelGLSL450 = 1,
102     SpvMemoryModelOpenCL = 2,
103     SpvMemoryModelVulkanKHR = 3,
104     SpvMemoryModelMax = 0x7fffffff,
105 } SpvMemoryModel;
106 
107 typedef enum SpvExecutionMode_ {
108     SpvExecutionModeInvocations = 0,
109     SpvExecutionModeSpacingEqual = 1,
110     SpvExecutionModeSpacingFractionalEven = 2,
111     SpvExecutionModeSpacingFractionalOdd = 3,
112     SpvExecutionModeVertexOrderCw = 4,
113     SpvExecutionModeVertexOrderCcw = 5,
114     SpvExecutionModePixelCenterInteger = 6,
115     SpvExecutionModeOriginUpperLeft = 7,
116     SpvExecutionModeOriginLowerLeft = 8,
117     SpvExecutionModeEarlyFragmentTests = 9,
118     SpvExecutionModePointMode = 10,
119     SpvExecutionModeXfb = 11,
120     SpvExecutionModeDepthReplacing = 12,
121     SpvExecutionModeDepthGreater = 14,
122     SpvExecutionModeDepthLess = 15,
123     SpvExecutionModeDepthUnchanged = 16,
124     SpvExecutionModeLocalSize = 17,
125     SpvExecutionModeLocalSizeHint = 18,
126     SpvExecutionModeInputPoints = 19,
127     SpvExecutionModeInputLines = 20,
128     SpvExecutionModeInputLinesAdjacency = 21,
129     SpvExecutionModeTriangles = 22,
130     SpvExecutionModeInputTrianglesAdjacency = 23,
131     SpvExecutionModeQuads = 24,
132     SpvExecutionModeIsolines = 25,
133     SpvExecutionModeOutputVertices = 26,
134     SpvExecutionModeOutputPoints = 27,
135     SpvExecutionModeOutputLineStrip = 28,
136     SpvExecutionModeOutputTriangleStrip = 29,
137     SpvExecutionModeVecTypeHint = 30,
138     SpvExecutionModeContractionOff = 31,
139     SpvExecutionModeInitializer = 33,
140     SpvExecutionModeFinalizer = 34,
141     SpvExecutionModeSubgroupSize = 35,
142     SpvExecutionModeSubgroupsPerWorkgroup = 36,
143     SpvExecutionModeSubgroupsPerWorkgroupId = 37,
144     SpvExecutionModeLocalSizeId = 38,
145     SpvExecutionModeLocalSizeHintId = 39,
146     SpvExecutionModePostDepthCoverage = 4446,
147     SpvExecutionModeDenormPreserve = 4459,
148     SpvExecutionModeDenormFlushToZero = 4460,
149     SpvExecutionModeSignedZeroInfNanPreserve = 4461,
150     SpvExecutionModeRoundingModeRTE = 4462,
151     SpvExecutionModeRoundingModeRTZ = 4463,
152     SpvExecutionModeStencilRefReplacingEXT = 5027,
153     SpvExecutionModeOutputLinesNV = 5269,
154     SpvExecutionModeOutputPrimitivesNV = 5270,
155     SpvExecutionModeDerivativeGroupQuadsNV = 5289,
156     SpvExecutionModeDerivativeGroupLinearNV = 5290,
157     SpvExecutionModeOutputTrianglesNV = 5298,
158     SpvExecutionModeMax = 0x7fffffff,
159 } SpvExecutionMode;
160 
161 typedef enum SpvStorageClass_ {
162     SpvStorageClassUniformConstant = 0,
163     SpvStorageClassInput = 1,
164     SpvStorageClassUniform = 2,
165     SpvStorageClassOutput = 3,
166     SpvStorageClassWorkgroup = 4,
167     SpvStorageClassCrossWorkgroup = 5,
168     SpvStorageClassPrivate = 6,
169     SpvStorageClassFunction = 7,
170     SpvStorageClassGeneric = 8,
171     SpvStorageClassPushConstant = 9,
172     SpvStorageClassAtomicCounter = 10,
173     SpvStorageClassImage = 11,
174     SpvStorageClassStorageBuffer = 12,
175     SpvStorageClassCallableDataNV = 5328,
176     SpvStorageClassIncomingCallableDataNV = 5329,
177     SpvStorageClassRayPayloadNV = 5338,
178     SpvStorageClassHitAttributeNV = 5339,
179     SpvStorageClassIncomingRayPayloadNV = 5342,
180     SpvStorageClassShaderRecordBufferNV = 5343,
181     SpvStorageClassMax = 0x7fffffff,
182 } SpvStorageClass;
183 
184 typedef enum SpvDim_ {
185     SpvDim1D = 0,
186     SpvDim2D = 1,
187     SpvDim3D = 2,
188     SpvDimCube = 3,
189     SpvDimRect = 4,
190     SpvDimBuffer = 5,
191     SpvDimSubpassData = 6,
192     SpvDimMax = 0x7fffffff,
193 } SpvDim;
194 
195 typedef enum SpvSamplerAddressingMode_ {
196     SpvSamplerAddressingModeNone = 0,
197     SpvSamplerAddressingModeClampToEdge = 1,
198     SpvSamplerAddressingModeClamp = 2,
199     SpvSamplerAddressingModeRepeat = 3,
200     SpvSamplerAddressingModeRepeatMirrored = 4,
201     SpvSamplerAddressingModeMax = 0x7fffffff,
202 } SpvSamplerAddressingMode;
203 
204 typedef enum SpvSamplerFilterMode_ {
205     SpvSamplerFilterModeNearest = 0,
206     SpvSamplerFilterModeLinear = 1,
207     SpvSamplerFilterModeMax = 0x7fffffff,
208 } SpvSamplerFilterMode;
209 
210 typedef enum SpvImageFormat_ {
211     SpvImageFormatUnknown = 0,
212     SpvImageFormatRgba32f = 1,
213     SpvImageFormatRgba16f = 2,
214     SpvImageFormatR32f = 3,
215     SpvImageFormatRgba8 = 4,
216     SpvImageFormatRgba8Snorm = 5,
217     SpvImageFormatRg32f = 6,
218     SpvImageFormatRg16f = 7,
219     SpvImageFormatR11fG11fB10f = 8,
220     SpvImageFormatR16f = 9,
221     SpvImageFormatRgba16 = 10,
222     SpvImageFormatRgb10A2 = 11,
223     SpvImageFormatRg16 = 12,
224     SpvImageFormatRg8 = 13,
225     SpvImageFormatR16 = 14,
226     SpvImageFormatR8 = 15,
227     SpvImageFormatRgba16Snorm = 16,
228     SpvImageFormatRg16Snorm = 17,
229     SpvImageFormatRg8Snorm = 18,
230     SpvImageFormatR16Snorm = 19,
231     SpvImageFormatR8Snorm = 20,
232     SpvImageFormatRgba32i = 21,
233     SpvImageFormatRgba16i = 22,
234     SpvImageFormatRgba8i = 23,
235     SpvImageFormatR32i = 24,
236     SpvImageFormatRg32i = 25,
237     SpvImageFormatRg16i = 26,
238     SpvImageFormatRg8i = 27,
239     SpvImageFormatR16i = 28,
240     SpvImageFormatR8i = 29,
241     SpvImageFormatRgba32ui = 30,
242     SpvImageFormatRgba16ui = 31,
243     SpvImageFormatRgba8ui = 32,
244     SpvImageFormatR32ui = 33,
245     SpvImageFormatRgb10a2ui = 34,
246     SpvImageFormatRg32ui = 35,
247     SpvImageFormatRg16ui = 36,
248     SpvImageFormatRg8ui = 37,
249     SpvImageFormatR16ui = 38,
250     SpvImageFormatR8ui = 39,
251     SpvImageFormatMax = 0x7fffffff,
252 } SpvImageFormat;
253 
254 typedef enum SpvImageChannelOrder_ {
255     SpvImageChannelOrderR = 0,
256     SpvImageChannelOrderA = 1,
257     SpvImageChannelOrderRG = 2,
258     SpvImageChannelOrderRA = 3,
259     SpvImageChannelOrderRGB = 4,
260     SpvImageChannelOrderRGBA = 5,
261     SpvImageChannelOrderBGRA = 6,
262     SpvImageChannelOrderARGB = 7,
263     SpvImageChannelOrderIntensity = 8,
264     SpvImageChannelOrderLuminance = 9,
265     SpvImageChannelOrderRx = 10,
266     SpvImageChannelOrderRGx = 11,
267     SpvImageChannelOrderRGBx = 12,
268     SpvImageChannelOrderDepth = 13,
269     SpvImageChannelOrderDepthStencil = 14,
270     SpvImageChannelOrdersRGB = 15,
271     SpvImageChannelOrdersRGBx = 16,
272     SpvImageChannelOrdersRGBA = 17,
273     SpvImageChannelOrdersBGRA = 18,
274     SpvImageChannelOrderABGR = 19,
275     SpvImageChannelOrderMax = 0x7fffffff,
276 } SpvImageChannelOrder;
277 
278 typedef enum SpvImageChannelDataType_ {
279     SpvImageChannelDataTypeSnormInt8 = 0,
280     SpvImageChannelDataTypeSnormInt16 = 1,
281     SpvImageChannelDataTypeUnormInt8 = 2,
282     SpvImageChannelDataTypeUnormInt16 = 3,
283     SpvImageChannelDataTypeUnormShort565 = 4,
284     SpvImageChannelDataTypeUnormShort555 = 5,
285     SpvImageChannelDataTypeUnormInt101010 = 6,
286     SpvImageChannelDataTypeSignedInt8 = 7,
287     SpvImageChannelDataTypeSignedInt16 = 8,
288     SpvImageChannelDataTypeSignedInt32 = 9,
289     SpvImageChannelDataTypeUnsignedInt8 = 10,
290     SpvImageChannelDataTypeUnsignedInt16 = 11,
291     SpvImageChannelDataTypeUnsignedInt32 = 12,
292     SpvImageChannelDataTypeHalfFloat = 13,
293     SpvImageChannelDataTypeFloat = 14,
294     SpvImageChannelDataTypeUnormInt24 = 15,
295     SpvImageChannelDataTypeUnormInt101010_2 = 16,
296     SpvImageChannelDataTypeMax = 0x7fffffff,
297 } SpvImageChannelDataType;
298 
299 typedef enum SpvImageOperandsShift_ {
300     SpvImageOperandsBiasShift = 0,
301     SpvImageOperandsLodShift = 1,
302     SpvImageOperandsGradShift = 2,
303     SpvImageOperandsConstOffsetShift = 3,
304     SpvImageOperandsOffsetShift = 4,
305     SpvImageOperandsConstOffsetsShift = 5,
306     SpvImageOperandsSampleShift = 6,
307     SpvImageOperandsMinLodShift = 7,
308     SpvImageOperandsMakeTexelAvailableKHRShift = 8,
309     SpvImageOperandsMakeTexelVisibleKHRShift = 9,
310     SpvImageOperandsNonPrivateTexelKHRShift = 10,
311     SpvImageOperandsVolatileTexelKHRShift = 11,
312     SpvImageOperandsMax = 0x7fffffff,
313 } SpvImageOperandsShift;
314 
315 typedef enum SpvImageOperandsMask_ {
316     SpvImageOperandsMaskNone = 0,
317     SpvImageOperandsBiasMask = 0x00000001,
318     SpvImageOperandsLodMask = 0x00000002,
319     SpvImageOperandsGradMask = 0x00000004,
320     SpvImageOperandsConstOffsetMask = 0x00000008,
321     SpvImageOperandsOffsetMask = 0x00000010,
322     SpvImageOperandsConstOffsetsMask = 0x00000020,
323     SpvImageOperandsSampleMask = 0x00000040,
324     SpvImageOperandsMinLodMask = 0x00000080,
325     SpvImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
326     SpvImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
327     SpvImageOperandsNonPrivateTexelKHRMask = 0x00000400,
328     SpvImageOperandsVolatileTexelKHRMask = 0x00000800,
329 } SpvImageOperandsMask;
330 
331 typedef enum SpvFPFastMathModeShift_ {
332     SpvFPFastMathModeNotNaNShift = 0,
333     SpvFPFastMathModeNotInfShift = 1,
334     SpvFPFastMathModeNSZShift = 2,
335     SpvFPFastMathModeAllowRecipShift = 3,
336     SpvFPFastMathModeFastShift = 4,
337     SpvFPFastMathModeMax = 0x7fffffff,
338 } SpvFPFastMathModeShift;
339 
340 typedef enum SpvFPFastMathModeMask_ {
341     SpvFPFastMathModeMaskNone = 0,
342     SpvFPFastMathModeNotNaNMask = 0x00000001,
343     SpvFPFastMathModeNotInfMask = 0x00000002,
344     SpvFPFastMathModeNSZMask = 0x00000004,
345     SpvFPFastMathModeAllowRecipMask = 0x00000008,
346     SpvFPFastMathModeFastMask = 0x00000010,
347 } SpvFPFastMathModeMask;
348 
349 typedef enum SpvFPRoundingMode_ {
350     SpvFPRoundingModeRTE = 0,
351     SpvFPRoundingModeRTZ = 1,
352     SpvFPRoundingModeRTP = 2,
353     SpvFPRoundingModeRTN = 3,
354     SpvFPRoundingModeMax = 0x7fffffff,
355 } SpvFPRoundingMode;
356 
357 typedef enum SpvLinkageType_ {
358     SpvLinkageTypeExport = 0,
359     SpvLinkageTypeImport = 1,
360     SpvLinkageTypeMax = 0x7fffffff,
361 } SpvLinkageType;
362 
363 typedef enum SpvAccessQualifier_ {
364     SpvAccessQualifierReadOnly = 0,
365     SpvAccessQualifierWriteOnly = 1,
366     SpvAccessQualifierReadWrite = 2,
367     SpvAccessQualifierMax = 0x7fffffff,
368 } SpvAccessQualifier;
369 
370 typedef enum SpvFunctionParameterAttribute_ {
371     SpvFunctionParameterAttributeZext = 0,
372     SpvFunctionParameterAttributeSext = 1,
373     SpvFunctionParameterAttributeByVal = 2,
374     SpvFunctionParameterAttributeSret = 3,
375     SpvFunctionParameterAttributeNoAlias = 4,
376     SpvFunctionParameterAttributeNoCapture = 5,
377     SpvFunctionParameterAttributeNoWrite = 6,
378     SpvFunctionParameterAttributeNoReadWrite = 7,
379     SpvFunctionParameterAttributeMax = 0x7fffffff,
380 } SpvFunctionParameterAttribute;
381 
382 typedef enum SpvDecoration_ {
383     SpvDecorationRelaxedPrecision = 0,
384     SpvDecorationSpecId = 1,
385     SpvDecorationBlock = 2,
386     SpvDecorationBufferBlock = 3,
387     SpvDecorationRowMajor = 4,
388     SpvDecorationColMajor = 5,
389     SpvDecorationArrayStride = 6,
390     SpvDecorationMatrixStride = 7,
391     SpvDecorationGLSLShared = 8,
392     SpvDecorationGLSLPacked = 9,
393     SpvDecorationCPacked = 10,
394     SpvDecorationBuiltIn = 11,
395     SpvDecorationNoPerspective = 13,
396     SpvDecorationFlat = 14,
397     SpvDecorationPatch = 15,
398     SpvDecorationCentroid = 16,
399     SpvDecorationSample = 17,
400     SpvDecorationInvariant = 18,
401     SpvDecorationRestrict = 19,
402     SpvDecorationAliased = 20,
403     SpvDecorationVolatile = 21,
404     SpvDecorationConstant = 22,
405     SpvDecorationCoherent = 23,
406     SpvDecorationNonWritable = 24,
407     SpvDecorationNonReadable = 25,
408     SpvDecorationUniform = 26,
409     SpvDecorationSaturatedConversion = 28,
410     SpvDecorationStream = 29,
411     SpvDecorationLocation = 30,
412     SpvDecorationComponent = 31,
413     SpvDecorationIndex = 32,
414     SpvDecorationBinding = 33,
415     SpvDecorationDescriptorSet = 34,
416     SpvDecorationOffset = 35,
417     SpvDecorationXfbBuffer = 36,
418     SpvDecorationXfbStride = 37,
419     SpvDecorationFuncParamAttr = 38,
420     SpvDecorationFPRoundingMode = 39,
421     SpvDecorationFPFastMathMode = 40,
422     SpvDecorationLinkageAttributes = 41,
423     SpvDecorationNoContraction = 42,
424     SpvDecorationInputAttachmentIndex = 43,
425     SpvDecorationAlignment = 44,
426     SpvDecorationMaxByteOffset = 45,
427     SpvDecorationAlignmentId = 46,
428     SpvDecorationMaxByteOffsetId = 47,
429     SpvDecorationNoSignedWrap = 4469,
430     SpvDecorationNoUnsignedWrap = 4470,
431     SpvDecorationExplicitInterpAMD = 4999,
432     SpvDecorationOverrideCoverageNV = 5248,
433     SpvDecorationPassthroughNV = 5250,
434     SpvDecorationViewportRelativeNV = 5252,
435     SpvDecorationSecondaryViewportRelativeNV = 5256,
436     SpvDecorationPerPrimitiveNV = 5271,
437     SpvDecorationPerViewNV = 5272,
438     SpvDecorationPerTaskNV = 5273,
439     SpvDecorationPerVertexNV = 5285,
440     SpvDecorationNonUniformEXT = 5300,
441     SpvDecorationHlslCounterBufferGOOGLE = 5634,
442     SpvDecorationHlslSemanticGOOGLE = 5635,
443     SpvDecorationMax = 0x7fffffff,
444 } SpvDecoration;
445 
446 typedef enum SpvBuiltIn_ {
447     SpvBuiltInPosition = 0,
448     SpvBuiltInPointSize = 1,
449     SpvBuiltInClipDistance = 3,
450     SpvBuiltInCullDistance = 4,
451     SpvBuiltInVertexId = 5,
452     SpvBuiltInInstanceId = 6,
453     SpvBuiltInPrimitiveId = 7,
454     SpvBuiltInInvocationId = 8,
455     SpvBuiltInLayer = 9,
456     SpvBuiltInViewportIndex = 10,
457     SpvBuiltInTessLevelOuter = 11,
458     SpvBuiltInTessLevelInner = 12,
459     SpvBuiltInTessCoord = 13,
460     SpvBuiltInPatchVertices = 14,
461     SpvBuiltInFragCoord = 15,
462     SpvBuiltInPointCoord = 16,
463     SpvBuiltInFrontFacing = 17,
464     SpvBuiltInSampleId = 18,
465     SpvBuiltInSamplePosition = 19,
466     SpvBuiltInSampleMask = 20,
467     SpvBuiltInFragDepth = 22,
468     SpvBuiltInHelperInvocation = 23,
469     SpvBuiltInNumWorkgroups = 24,
470     SpvBuiltInWorkgroupSize = 25,
471     SpvBuiltInWorkgroupId = 26,
472     SpvBuiltInLocalInvocationId = 27,
473     SpvBuiltInGlobalInvocationId = 28,
474     SpvBuiltInLocalInvocationIndex = 29,
475     SpvBuiltInWorkDim = 30,
476     SpvBuiltInGlobalSize = 31,
477     SpvBuiltInEnqueuedWorkgroupSize = 32,
478     SpvBuiltInGlobalOffset = 33,
479     SpvBuiltInGlobalLinearId = 34,
480     SpvBuiltInSubgroupSize = 36,
481     SpvBuiltInSubgroupMaxSize = 37,
482     SpvBuiltInNumSubgroups = 38,
483     SpvBuiltInNumEnqueuedSubgroups = 39,
484     SpvBuiltInSubgroupId = 40,
485     SpvBuiltInSubgroupLocalInvocationId = 41,
486     SpvBuiltInVertexIndex = 42,
487     SpvBuiltInInstanceIndex = 43,
488     SpvBuiltInSubgroupEqMask = 4416,
489     SpvBuiltInSubgroupEqMaskKHR = 4416,
490     SpvBuiltInSubgroupGeMask = 4417,
491     SpvBuiltInSubgroupGeMaskKHR = 4417,
492     SpvBuiltInSubgroupGtMask = 4418,
493     SpvBuiltInSubgroupGtMaskKHR = 4418,
494     SpvBuiltInSubgroupLeMask = 4419,
495     SpvBuiltInSubgroupLeMaskKHR = 4419,
496     SpvBuiltInSubgroupLtMask = 4420,
497     SpvBuiltInSubgroupLtMaskKHR = 4420,
498     SpvBuiltInBaseVertex = 4424,
499     SpvBuiltInBaseInstance = 4425,
500     SpvBuiltInDrawIndex = 4426,
501     SpvBuiltInDeviceIndex = 4438,
502     SpvBuiltInViewIndex = 4440,
503     SpvBuiltInBaryCoordNoPerspAMD = 4992,
504     SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
505     SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
506     SpvBuiltInBaryCoordSmoothAMD = 4995,
507     SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
508     SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
509     SpvBuiltInBaryCoordPullModelAMD = 4998,
510     SpvBuiltInFragStencilRefEXT = 5014,
511     SpvBuiltInViewportMaskNV = 5253,
512     SpvBuiltInSecondaryPositionNV = 5257,
513     SpvBuiltInSecondaryViewportMaskNV = 5258,
514     SpvBuiltInPositionPerViewNV = 5261,
515     SpvBuiltInViewportMaskPerViewNV = 5262,
516     SpvBuiltInFullyCoveredEXT = 5264,
517     SpvBuiltInTaskCountNV = 5274,
518     SpvBuiltInPrimitiveCountNV = 5275,
519     SpvBuiltInPrimitiveIndicesNV = 5276,
520     SpvBuiltInClipDistancePerViewNV = 5277,
521     SpvBuiltInCullDistancePerViewNV = 5278,
522     SpvBuiltInLayerPerViewNV = 5279,
523     SpvBuiltInMeshViewCountNV = 5280,
524     SpvBuiltInMeshViewIndicesNV = 5281,
525     SpvBuiltInBaryCoordNV = 5286,
526     SpvBuiltInBaryCoordNoPerspNV = 5287,
527     SpvBuiltInFragSizeEXT = 5292,
528     SpvBuiltInFragmentSizeNV = 5292,
529     SpvBuiltInFragInvocationCountEXT = 5293,
530     SpvBuiltInInvocationsPerPixelNV = 5293,
531     SpvBuiltInLaunchIdNV = 5319,
532     SpvBuiltInLaunchSizeNV = 5320,
533     SpvBuiltInWorldRayOriginNV = 5321,
534     SpvBuiltInWorldRayDirectionNV = 5322,
535     SpvBuiltInObjectRayOriginNV = 5323,
536     SpvBuiltInObjectRayDirectionNV = 5324,
537     SpvBuiltInRayTminNV = 5325,
538     SpvBuiltInRayTmaxNV = 5326,
539     SpvBuiltInInstanceCustomIndexNV = 5327,
540     SpvBuiltInObjectToWorldNV = 5330,
541     SpvBuiltInWorldToObjectNV = 5331,
542     SpvBuiltInHitTNV = 5332,
543     SpvBuiltInHitKindNV = 5333,
544     SpvBuiltInIncomingRayFlagsNV = 5351,
545     SpvBuiltInMax = 0x7fffffff,
546 } SpvBuiltIn;
547 
548 typedef enum SpvSelectionControlShift_ {
549     SpvSelectionControlFlattenShift = 0,
550     SpvSelectionControlDontFlattenShift = 1,
551     SpvSelectionControlMax = 0x7fffffff,
552 } SpvSelectionControlShift;
553 
554 typedef enum SpvSelectionControlMask_ {
555     SpvSelectionControlMaskNone = 0,
556     SpvSelectionControlFlattenMask = 0x00000001,
557     SpvSelectionControlDontFlattenMask = 0x00000002,
558 } SpvSelectionControlMask;
559 
560 typedef enum SpvLoopControlShift_ {
561     SpvLoopControlUnrollShift = 0,
562     SpvLoopControlDontUnrollShift = 1,
563     SpvLoopControlDependencyInfiniteShift = 2,
564     SpvLoopControlDependencyLengthShift = 3,
565     SpvLoopControlMax = 0x7fffffff,
566 } SpvLoopControlShift;
567 
568 typedef enum SpvLoopControlMask_ {
569     SpvLoopControlMaskNone = 0,
570     SpvLoopControlUnrollMask = 0x00000001,
571     SpvLoopControlDontUnrollMask = 0x00000002,
572     SpvLoopControlDependencyInfiniteMask = 0x00000004,
573     SpvLoopControlDependencyLengthMask = 0x00000008,
574 } SpvLoopControlMask;
575 
576 typedef enum SpvFunctionControlShift_ {
577     SpvFunctionControlInlineShift = 0,
578     SpvFunctionControlDontInlineShift = 1,
579     SpvFunctionControlPureShift = 2,
580     SpvFunctionControlConstShift = 3,
581     SpvFunctionControlMax = 0x7fffffff,
582 } SpvFunctionControlShift;
583 
584 typedef enum SpvFunctionControlMask_ {
585     SpvFunctionControlMaskNone = 0,
586     SpvFunctionControlInlineMask = 0x00000001,
587     SpvFunctionControlDontInlineMask = 0x00000002,
588     SpvFunctionControlPureMask = 0x00000004,
589     SpvFunctionControlConstMask = 0x00000008,
590 } SpvFunctionControlMask;
591 
592 typedef enum SpvMemorySemanticsShift_ {
593     SpvMemorySemanticsAcquireShift = 1,
594     SpvMemorySemanticsReleaseShift = 2,
595     SpvMemorySemanticsAcquireReleaseShift = 3,
596     SpvMemorySemanticsSequentiallyConsistentShift = 4,
597     SpvMemorySemanticsUniformMemoryShift = 6,
598     SpvMemorySemanticsSubgroupMemoryShift = 7,
599     SpvMemorySemanticsWorkgroupMemoryShift = 8,
600     SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
601     SpvMemorySemanticsAtomicCounterMemoryShift = 10,
602     SpvMemorySemanticsImageMemoryShift = 11,
603     SpvMemorySemanticsOutputMemoryKHRShift = 12,
604     SpvMemorySemanticsMakeAvailableKHRShift = 13,
605     SpvMemorySemanticsMakeVisibleKHRShift = 14,
606     SpvMemorySemanticsMax = 0x7fffffff,
607 } SpvMemorySemanticsShift;
608 
609 typedef enum SpvMemorySemanticsMask_ {
610     SpvMemorySemanticsMaskNone = 0,
611     SpvMemorySemanticsAcquireMask = 0x00000002,
612     SpvMemorySemanticsReleaseMask = 0x00000004,
613     SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
614     SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
615     SpvMemorySemanticsUniformMemoryMask = 0x00000040,
616     SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
617     SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
618     SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
619     SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
620     SpvMemorySemanticsImageMemoryMask = 0x00000800,
621     SpvMemorySemanticsOutputMemoryKHRMask = 0x00001000,
622     SpvMemorySemanticsMakeAvailableKHRMask = 0x00002000,
623     SpvMemorySemanticsMakeVisibleKHRMask = 0x00004000,
624 } SpvMemorySemanticsMask;
625 
626 typedef enum SpvMemoryAccessShift_ {
627     SpvMemoryAccessVolatileShift = 0,
628     SpvMemoryAccessAlignedShift = 1,
629     SpvMemoryAccessNontemporalShift = 2,
630     SpvMemoryAccessMakePointerAvailableKHRShift = 3,
631     SpvMemoryAccessMakePointerVisibleKHRShift = 4,
632     SpvMemoryAccessNonPrivatePointerKHRShift = 5,
633     SpvMemoryAccessMax = 0x7fffffff,
634 } SpvMemoryAccessShift;
635 
636 typedef enum SpvMemoryAccessMask_ {
637     SpvMemoryAccessMaskNone = 0,
638     SpvMemoryAccessVolatileMask = 0x00000001,
639     SpvMemoryAccessAlignedMask = 0x00000002,
640     SpvMemoryAccessNontemporalMask = 0x00000004,
641     SpvMemoryAccessMakePointerAvailableKHRMask = 0x00000008,
642     SpvMemoryAccessMakePointerVisibleKHRMask = 0x00000010,
643     SpvMemoryAccessNonPrivatePointerKHRMask = 0x00000020,
644 } SpvMemoryAccessMask;
645 
646 typedef enum SpvScope_ {
647     SpvScopeCrossDevice = 0,
648     SpvScopeDevice = 1,
649     SpvScopeWorkgroup = 2,
650     SpvScopeSubgroup = 3,
651     SpvScopeInvocation = 4,
652     SpvScopeQueueFamilyKHR = 5,
653     SpvScopeMax = 0x7fffffff,
654 } SpvScope;
655 
656 typedef enum SpvGroupOperation_ {
657     SpvGroupOperationReduce = 0,
658     SpvGroupOperationInclusiveScan = 1,
659     SpvGroupOperationExclusiveScan = 2,
660     SpvGroupOperationClusteredReduce = 3,
661     SpvGroupOperationPartitionedReduceNV = 6,
662     SpvGroupOperationPartitionedInclusiveScanNV = 7,
663     SpvGroupOperationPartitionedExclusiveScanNV = 8,
664     SpvGroupOperationMax = 0x7fffffff,
665 } SpvGroupOperation;
666 
667 typedef enum SpvKernelEnqueueFlags_ {
668     SpvKernelEnqueueFlagsNoWait = 0,
669     SpvKernelEnqueueFlagsWaitKernel = 1,
670     SpvKernelEnqueueFlagsWaitWorkGroup = 2,
671     SpvKernelEnqueueFlagsMax = 0x7fffffff,
672 } SpvKernelEnqueueFlags;
673 
674 typedef enum SpvKernelProfilingInfoShift_ {
675     SpvKernelProfilingInfoCmdExecTimeShift = 0,
676     SpvKernelProfilingInfoMax = 0x7fffffff,
677 } SpvKernelProfilingInfoShift;
678 
679 typedef enum SpvKernelProfilingInfoMask_ {
680     SpvKernelProfilingInfoMaskNone = 0,
681     SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
682 } SpvKernelProfilingInfoMask;
683 
684 typedef enum SpvCapability_ {
685     SpvCapabilityMatrix = 0,
686     SpvCapabilityShader = 1,
687     SpvCapabilityGeometry = 2,
688     SpvCapabilityTessellation = 3,
689     SpvCapabilityAddresses = 4,
690     SpvCapabilityLinkage = 5,
691     SpvCapabilityKernel = 6,
692     SpvCapabilityVector16 = 7,
693     SpvCapabilityFloat16Buffer = 8,
694     SpvCapabilityFloat16 = 9,
695     SpvCapabilityFloat64 = 10,
696     SpvCapabilityInt64 = 11,
697     SpvCapabilityInt64Atomics = 12,
698     SpvCapabilityImageBasic = 13,
699     SpvCapabilityImageReadWrite = 14,
700     SpvCapabilityImageMipmap = 15,
701     SpvCapabilityPipes = 17,
702     SpvCapabilityGroups = 18,
703     SpvCapabilityDeviceEnqueue = 19,
704     SpvCapabilityLiteralSampler = 20,
705     SpvCapabilityAtomicStorage = 21,
706     SpvCapabilityInt16 = 22,
707     SpvCapabilityTessellationPointSize = 23,
708     SpvCapabilityGeometryPointSize = 24,
709     SpvCapabilityImageGatherExtended = 25,
710     SpvCapabilityStorageImageMultisample = 27,
711     SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
712     SpvCapabilitySampledImageArrayDynamicIndexing = 29,
713     SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
714     SpvCapabilityStorageImageArrayDynamicIndexing = 31,
715     SpvCapabilityClipDistance = 32,
716     SpvCapabilityCullDistance = 33,
717     SpvCapabilityImageCubeArray = 34,
718     SpvCapabilitySampleRateShading = 35,
719     SpvCapabilityImageRect = 36,
720     SpvCapabilitySampledRect = 37,
721     SpvCapabilityGenericPointer = 38,
722     SpvCapabilityInt8 = 39,
723     SpvCapabilityInputAttachment = 40,
724     SpvCapabilitySparseResidency = 41,
725     SpvCapabilityMinLod = 42,
726     SpvCapabilitySampled1D = 43,
727     SpvCapabilityImage1D = 44,
728     SpvCapabilitySampledCubeArray = 45,
729     SpvCapabilitySampledBuffer = 46,
730     SpvCapabilityImageBuffer = 47,
731     SpvCapabilityImageMSArray = 48,
732     SpvCapabilityStorageImageExtendedFormats = 49,
733     SpvCapabilityImageQuery = 50,
734     SpvCapabilityDerivativeControl = 51,
735     SpvCapabilityInterpolationFunction = 52,
736     SpvCapabilityTransformFeedback = 53,
737     SpvCapabilityGeometryStreams = 54,
738     SpvCapabilityStorageImageReadWithoutFormat = 55,
739     SpvCapabilityStorageImageWriteWithoutFormat = 56,
740     SpvCapabilityMultiViewport = 57,
741     SpvCapabilitySubgroupDispatch = 58,
742     SpvCapabilityNamedBarrier = 59,
743     SpvCapabilityPipeStorage = 60,
744     SpvCapabilityGroupNonUniform = 61,
745     SpvCapabilityGroupNonUniformVote = 62,
746     SpvCapabilityGroupNonUniformArithmetic = 63,
747     SpvCapabilityGroupNonUniformBallot = 64,
748     SpvCapabilityGroupNonUniformShuffle = 65,
749     SpvCapabilityGroupNonUniformShuffleRelative = 66,
750     SpvCapabilityGroupNonUniformClustered = 67,
751     SpvCapabilityGroupNonUniformQuad = 68,
752     SpvCapabilitySubgroupBallotKHR = 4423,
753     SpvCapabilityDrawParameters = 4427,
754     SpvCapabilitySubgroupVoteKHR = 4431,
755     SpvCapabilityStorageBuffer16BitAccess = 4433,
756     SpvCapabilityStorageUniformBufferBlock16 = 4433,
757     SpvCapabilityStorageUniform16 = 4434,
758     SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
759     SpvCapabilityStoragePushConstant16 = 4435,
760     SpvCapabilityStorageInputOutput16 = 4436,
761     SpvCapabilityDeviceGroup = 4437,
762     SpvCapabilityMultiView = 4439,
763     SpvCapabilityVariablePointersStorageBuffer = 4441,
764     SpvCapabilityVariablePointers = 4442,
765     SpvCapabilityAtomicStorageOps = 4445,
766     SpvCapabilitySampleMaskPostDepthCoverage = 4447,
767     SpvCapabilityStorageBuffer8BitAccess = 4448,
768     SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,
769     SpvCapabilityStoragePushConstant8 = 4450,
770     SpvCapabilityDenormPreserve = 4464,
771     SpvCapabilityDenormFlushToZero = 4465,
772     SpvCapabilitySignedZeroInfNanPreserve = 4466,
773     SpvCapabilityRoundingModeRTE = 4467,
774     SpvCapabilityRoundingModeRTZ = 4468,
775     SpvCapabilityFloat16ImageAMD = 5008,
776     SpvCapabilityImageGatherBiasLodAMD = 5009,
777     SpvCapabilityFragmentMaskAMD = 5010,
778     SpvCapabilityStencilExportEXT = 5013,
779     SpvCapabilityImageReadWriteLodAMD = 5015,
780     SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
781     SpvCapabilityGeometryShaderPassthroughNV = 5251,
782     SpvCapabilityShaderViewportIndexLayerEXT = 5254,
783     SpvCapabilityShaderViewportIndexLayerNV = 5254,
784     SpvCapabilityShaderViewportMaskNV = 5255,
785     SpvCapabilityShaderStereoViewNV = 5259,
786     SpvCapabilityPerViewAttributesNV = 5260,
787     SpvCapabilityFragmentFullyCoveredEXT = 5265,
788     SpvCapabilityMeshShadingNV = 5266,
789     SpvCapabilityImageFootprintNV = 5282,
790     SpvCapabilityFragmentBarycentricNV = 5284,
791     SpvCapabilityComputeDerivativeGroupQuadsNV = 5288,
792     SpvCapabilityFragmentDensityEXT = 5291,
793     SpvCapabilityShadingRateNV = 5291,
794     SpvCapabilityGroupNonUniformPartitionedNV = 5297,
795     SpvCapabilityShaderNonUniformEXT = 5301,
796     SpvCapabilityRuntimeDescriptorArrayEXT = 5302,
797     SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
798     SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
799     SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
800     SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
801     SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
802     SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
803     SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
804     SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
805     SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
806     SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
807     SpvCapabilityRayTracingNV = 5340,
808     SpvCapabilityVulkanMemoryModelKHR = 5345,
809     SpvCapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
810     SpvCapabilityComputeDerivativeGroupLinearNV = 5350,
811     SpvCapabilitySubgroupShuffleINTEL = 5568,
812     SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
813     SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
814     SpvCapabilityMax = 0x7fffffff,
815 } SpvCapability;
816 
817 typedef enum SpvOp_ {
818     SpvOpNop = 0,
819     SpvOpUndef = 1,
820     SpvOpSourceContinued = 2,
821     SpvOpSource = 3,
822     SpvOpSourceExtension = 4,
823     SpvOpName = 5,
824     SpvOpMemberName = 6,
825     SpvOpString = 7,
826     SpvOpLine = 8,
827     SpvOpExtension = 10,
828     SpvOpExtInstImport = 11,
829     SpvOpExtInst = 12,
830     SpvOpMemoryModel = 14,
831     SpvOpEntryPoint = 15,
832     SpvOpExecutionMode = 16,
833     SpvOpCapability = 17,
834     SpvOpTypeVoid = 19,
835     SpvOpTypeBool = 20,
836     SpvOpTypeInt = 21,
837     SpvOpTypeFloat = 22,
838     SpvOpTypeVector = 23,
839     SpvOpTypeMatrix = 24,
840     SpvOpTypeImage = 25,
841     SpvOpTypeSampler = 26,
842     SpvOpTypeSampledImage = 27,
843     SpvOpTypeArray = 28,
844     SpvOpTypeRuntimeArray = 29,
845     SpvOpTypeStruct = 30,
846     SpvOpTypeOpaque = 31,
847     SpvOpTypePointer = 32,
848     SpvOpTypeFunction = 33,
849     SpvOpTypeEvent = 34,
850     SpvOpTypeDeviceEvent = 35,
851     SpvOpTypeReserveId = 36,
852     SpvOpTypeQueue = 37,
853     SpvOpTypePipe = 38,
854     SpvOpTypeForwardPointer = 39,
855     SpvOpConstantTrue = 41,
856     SpvOpConstantFalse = 42,
857     SpvOpConstant = 43,
858     SpvOpConstantComposite = 44,
859     SpvOpConstantSampler = 45,
860     SpvOpConstantNull = 46,
861     SpvOpSpecConstantTrue = 48,
862     SpvOpSpecConstantFalse = 49,
863     SpvOpSpecConstant = 50,
864     SpvOpSpecConstantComposite = 51,
865     SpvOpSpecConstantOp = 52,
866     SpvOpFunction = 54,
867     SpvOpFunctionParameter = 55,
868     SpvOpFunctionEnd = 56,
869     SpvOpFunctionCall = 57,
870     SpvOpVariable = 59,
871     SpvOpImageTexelPointer = 60,
872     SpvOpLoad = 61,
873     SpvOpStore = 62,
874     SpvOpCopyMemory = 63,
875     SpvOpCopyMemorySized = 64,
876     SpvOpAccessChain = 65,
877     SpvOpInBoundsAccessChain = 66,
878     SpvOpPtrAccessChain = 67,
879     SpvOpArrayLength = 68,
880     SpvOpGenericPtrMemSemantics = 69,
881     SpvOpInBoundsPtrAccessChain = 70,
882     SpvOpDecorate = 71,
883     SpvOpMemberDecorate = 72,
884     SpvOpDecorationGroup = 73,
885     SpvOpGroupDecorate = 74,
886     SpvOpGroupMemberDecorate = 75,
887     SpvOpVectorExtractDynamic = 77,
888     SpvOpVectorInsertDynamic = 78,
889     SpvOpVectorShuffle = 79,
890     SpvOpCompositeConstruct = 80,
891     SpvOpCompositeExtract = 81,
892     SpvOpCompositeInsert = 82,
893     SpvOpCopyObject = 83,
894     SpvOpTranspose = 84,
895     SpvOpSampledImage = 86,
896     SpvOpImageSampleImplicitLod = 87,
897     SpvOpImageSampleExplicitLod = 88,
898     SpvOpImageSampleDrefImplicitLod = 89,
899     SpvOpImageSampleDrefExplicitLod = 90,
900     SpvOpImageSampleProjImplicitLod = 91,
901     SpvOpImageSampleProjExplicitLod = 92,
902     SpvOpImageSampleProjDrefImplicitLod = 93,
903     SpvOpImageSampleProjDrefExplicitLod = 94,
904     SpvOpImageFetch = 95,
905     SpvOpImageGather = 96,
906     SpvOpImageDrefGather = 97,
907     SpvOpImageRead = 98,
908     SpvOpImageWrite = 99,
909     SpvOpImage = 100,
910     SpvOpImageQueryFormat = 101,
911     SpvOpImageQueryOrder = 102,
912     SpvOpImageQuerySizeLod = 103,
913     SpvOpImageQuerySize = 104,
914     SpvOpImageQueryLod = 105,
915     SpvOpImageQueryLevels = 106,
916     SpvOpImageQuerySamples = 107,
917     SpvOpConvertFToU = 109,
918     SpvOpConvertFToS = 110,
919     SpvOpConvertSToF = 111,
920     SpvOpConvertUToF = 112,
921     SpvOpUConvert = 113,
922     SpvOpSConvert = 114,
923     SpvOpFConvert = 115,
924     SpvOpQuantizeToF16 = 116,
925     SpvOpConvertPtrToU = 117,
926     SpvOpSatConvertSToU = 118,
927     SpvOpSatConvertUToS = 119,
928     SpvOpConvertUToPtr = 120,
929     SpvOpPtrCastToGeneric = 121,
930     SpvOpGenericCastToPtr = 122,
931     SpvOpGenericCastToPtrExplicit = 123,
932     SpvOpBitcast = 124,
933     SpvOpSNegate = 126,
934     SpvOpFNegate = 127,
935     SpvOpIAdd = 128,
936     SpvOpFAdd = 129,
937     SpvOpISub = 130,
938     SpvOpFSub = 131,
939     SpvOpIMul = 132,
940     SpvOpFMul = 133,
941     SpvOpUDiv = 134,
942     SpvOpSDiv = 135,
943     SpvOpFDiv = 136,
944     SpvOpUMod = 137,
945     SpvOpSRem = 138,
946     SpvOpSMod = 139,
947     SpvOpFRem = 140,
948     SpvOpFMod = 141,
949     SpvOpVectorTimesScalar = 142,
950     SpvOpMatrixTimesScalar = 143,
951     SpvOpVectorTimesMatrix = 144,
952     SpvOpMatrixTimesVector = 145,
953     SpvOpMatrixTimesMatrix = 146,
954     SpvOpOuterProduct = 147,
955     SpvOpDot = 148,
956     SpvOpIAddCarry = 149,
957     SpvOpISubBorrow = 150,
958     SpvOpUMulExtended = 151,
959     SpvOpSMulExtended = 152,
960     SpvOpAny = 154,
961     SpvOpAll = 155,
962     SpvOpIsNan = 156,
963     SpvOpIsInf = 157,
964     SpvOpIsFinite = 158,
965     SpvOpIsNormal = 159,
966     SpvOpSignBitSet = 160,
967     SpvOpLessOrGreater = 161,
968     SpvOpOrdered = 162,
969     SpvOpUnordered = 163,
970     SpvOpLogicalEqual = 164,
971     SpvOpLogicalNotEqual = 165,
972     SpvOpLogicalOr = 166,
973     SpvOpLogicalAnd = 167,
974     SpvOpLogicalNot = 168,
975     SpvOpSelect = 169,
976     SpvOpIEqual = 170,
977     SpvOpINotEqual = 171,
978     SpvOpUGreaterThan = 172,
979     SpvOpSGreaterThan = 173,
980     SpvOpUGreaterThanEqual = 174,
981     SpvOpSGreaterThanEqual = 175,
982     SpvOpULessThan = 176,
983     SpvOpSLessThan = 177,
984     SpvOpULessThanEqual = 178,
985     SpvOpSLessThanEqual = 179,
986     SpvOpFOrdEqual = 180,
987     SpvOpFUnordEqual = 181,
988     SpvOpFOrdNotEqual = 182,
989     SpvOpFUnordNotEqual = 183,
990     SpvOpFOrdLessThan = 184,
991     SpvOpFUnordLessThan = 185,
992     SpvOpFOrdGreaterThan = 186,
993     SpvOpFUnordGreaterThan = 187,
994     SpvOpFOrdLessThanEqual = 188,
995     SpvOpFUnordLessThanEqual = 189,
996     SpvOpFOrdGreaterThanEqual = 190,
997     SpvOpFUnordGreaterThanEqual = 191,
998     SpvOpShiftRightLogical = 194,
999     SpvOpShiftRightArithmetic = 195,
1000     SpvOpShiftLeftLogical = 196,
1001     SpvOpBitwiseOr = 197,
1002     SpvOpBitwiseXor = 198,
1003     SpvOpBitwiseAnd = 199,
1004     SpvOpNot = 200,
1005     SpvOpBitFieldInsert = 201,
1006     SpvOpBitFieldSExtract = 202,
1007     SpvOpBitFieldUExtract = 203,
1008     SpvOpBitReverse = 204,
1009     SpvOpBitCount = 205,
1010     SpvOpDPdx = 207,
1011     SpvOpDPdy = 208,
1012     SpvOpFwidth = 209,
1013     SpvOpDPdxFine = 210,
1014     SpvOpDPdyFine = 211,
1015     SpvOpFwidthFine = 212,
1016     SpvOpDPdxCoarse = 213,
1017     SpvOpDPdyCoarse = 214,
1018     SpvOpFwidthCoarse = 215,
1019     SpvOpEmitVertex = 218,
1020     SpvOpEndPrimitive = 219,
1021     SpvOpEmitStreamVertex = 220,
1022     SpvOpEndStreamPrimitive = 221,
1023     SpvOpControlBarrier = 224,
1024     SpvOpMemoryBarrier = 225,
1025     SpvOpAtomicLoad = 227,
1026     SpvOpAtomicStore = 228,
1027     SpvOpAtomicExchange = 229,
1028     SpvOpAtomicCompareExchange = 230,
1029     SpvOpAtomicCompareExchangeWeak = 231,
1030     SpvOpAtomicIIncrement = 232,
1031     SpvOpAtomicIDecrement = 233,
1032     SpvOpAtomicIAdd = 234,
1033     SpvOpAtomicISub = 235,
1034     SpvOpAtomicSMin = 236,
1035     SpvOpAtomicUMin = 237,
1036     SpvOpAtomicSMax = 238,
1037     SpvOpAtomicUMax = 239,
1038     SpvOpAtomicAnd = 240,
1039     SpvOpAtomicOr = 241,
1040     SpvOpAtomicXor = 242,
1041     SpvOpPhi = 245,
1042     SpvOpLoopMerge = 246,
1043     SpvOpSelectionMerge = 247,
1044     SpvOpLabel = 248,
1045     SpvOpBranch = 249,
1046     SpvOpBranchConditional = 250,
1047     SpvOpSwitch = 251,
1048     SpvOpKill = 252,
1049     SpvOpReturn = 253,
1050     SpvOpReturnValue = 254,
1051     SpvOpUnreachable = 255,
1052     SpvOpLifetimeStart = 256,
1053     SpvOpLifetimeStop = 257,
1054     SpvOpGroupAsyncCopy = 259,
1055     SpvOpGroupWaitEvents = 260,
1056     SpvOpGroupAll = 261,
1057     SpvOpGroupAny = 262,
1058     SpvOpGroupBroadcast = 263,
1059     SpvOpGroupIAdd = 264,
1060     SpvOpGroupFAdd = 265,
1061     SpvOpGroupFMin = 266,
1062     SpvOpGroupUMin = 267,
1063     SpvOpGroupSMin = 268,
1064     SpvOpGroupFMax = 269,
1065     SpvOpGroupUMax = 270,
1066     SpvOpGroupSMax = 271,
1067     SpvOpReadPipe = 274,
1068     SpvOpWritePipe = 275,
1069     SpvOpReservedReadPipe = 276,
1070     SpvOpReservedWritePipe = 277,
1071     SpvOpReserveReadPipePackets = 278,
1072     SpvOpReserveWritePipePackets = 279,
1073     SpvOpCommitReadPipe = 280,
1074     SpvOpCommitWritePipe = 281,
1075     SpvOpIsValidReserveId = 282,
1076     SpvOpGetNumPipePackets = 283,
1077     SpvOpGetMaxPipePackets = 284,
1078     SpvOpGroupReserveReadPipePackets = 285,
1079     SpvOpGroupReserveWritePipePackets = 286,
1080     SpvOpGroupCommitReadPipe = 287,
1081     SpvOpGroupCommitWritePipe = 288,
1082     SpvOpEnqueueMarker = 291,
1083     SpvOpEnqueueKernel = 292,
1084     SpvOpGetKernelNDrangeSubGroupCount = 293,
1085     SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
1086     SpvOpGetKernelWorkGroupSize = 295,
1087     SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
1088     SpvOpRetainEvent = 297,
1089     SpvOpReleaseEvent = 298,
1090     SpvOpCreateUserEvent = 299,
1091     SpvOpIsValidEvent = 300,
1092     SpvOpSetUserEventStatus = 301,
1093     SpvOpCaptureEventProfilingInfo = 302,
1094     SpvOpGetDefaultQueue = 303,
1095     SpvOpBuildNDRange = 304,
1096     SpvOpImageSparseSampleImplicitLod = 305,
1097     SpvOpImageSparseSampleExplicitLod = 306,
1098     SpvOpImageSparseSampleDrefImplicitLod = 307,
1099     SpvOpImageSparseSampleDrefExplicitLod = 308,
1100     SpvOpImageSparseSampleProjImplicitLod = 309,
1101     SpvOpImageSparseSampleProjExplicitLod = 310,
1102     SpvOpImageSparseSampleProjDrefImplicitLod = 311,
1103     SpvOpImageSparseSampleProjDrefExplicitLod = 312,
1104     SpvOpImageSparseFetch = 313,
1105     SpvOpImageSparseGather = 314,
1106     SpvOpImageSparseDrefGather = 315,
1107     SpvOpImageSparseTexelsResident = 316,
1108     SpvOpNoLine = 317,
1109     SpvOpAtomicFlagTestAndSet = 318,
1110     SpvOpAtomicFlagClear = 319,
1111     SpvOpImageSparseRead = 320,
1112     SpvOpSizeOf = 321,
1113     SpvOpTypePipeStorage = 322,
1114     SpvOpConstantPipeStorage = 323,
1115     SpvOpCreatePipeFromPipeStorage = 324,
1116     SpvOpGetKernelLocalSizeForSubgroupCount = 325,
1117     SpvOpGetKernelMaxNumSubgroups = 326,
1118     SpvOpTypeNamedBarrier = 327,
1119     SpvOpNamedBarrierInitialize = 328,
1120     SpvOpMemoryNamedBarrier = 329,
1121     SpvOpModuleProcessed = 330,
1122     SpvOpExecutionModeId = 331,
1123     SpvOpDecorateId = 332,
1124     SpvOpGroupNonUniformElect = 333,
1125     SpvOpGroupNonUniformAll = 334,
1126     SpvOpGroupNonUniformAny = 335,
1127     SpvOpGroupNonUniformAllEqual = 336,
1128     SpvOpGroupNonUniformBroadcast = 337,
1129     SpvOpGroupNonUniformBroadcastFirst = 338,
1130     SpvOpGroupNonUniformBallot = 339,
1131     SpvOpGroupNonUniformInverseBallot = 340,
1132     SpvOpGroupNonUniformBallotBitExtract = 341,
1133     SpvOpGroupNonUniformBallotBitCount = 342,
1134     SpvOpGroupNonUniformBallotFindLSB = 343,
1135     SpvOpGroupNonUniformBallotFindMSB = 344,
1136     SpvOpGroupNonUniformShuffle = 345,
1137     SpvOpGroupNonUniformShuffleXor = 346,
1138     SpvOpGroupNonUniformShuffleUp = 347,
1139     SpvOpGroupNonUniformShuffleDown = 348,
1140     SpvOpGroupNonUniformIAdd = 349,
1141     SpvOpGroupNonUniformFAdd = 350,
1142     SpvOpGroupNonUniformIMul = 351,
1143     SpvOpGroupNonUniformFMul = 352,
1144     SpvOpGroupNonUniformSMin = 353,
1145     SpvOpGroupNonUniformUMin = 354,
1146     SpvOpGroupNonUniformFMin = 355,
1147     SpvOpGroupNonUniformSMax = 356,
1148     SpvOpGroupNonUniformUMax = 357,
1149     SpvOpGroupNonUniformFMax = 358,
1150     SpvOpGroupNonUniformBitwiseAnd = 359,
1151     SpvOpGroupNonUniformBitwiseOr = 360,
1152     SpvOpGroupNonUniformBitwiseXor = 361,
1153     SpvOpGroupNonUniformLogicalAnd = 362,
1154     SpvOpGroupNonUniformLogicalOr = 363,
1155     SpvOpGroupNonUniformLogicalXor = 364,
1156     SpvOpGroupNonUniformQuadBroadcast = 365,
1157     SpvOpGroupNonUniformQuadSwap = 366,
1158     SpvOpSubgroupBallotKHR = 4421,
1159     SpvOpSubgroupFirstInvocationKHR = 4422,
1160     SpvOpSubgroupAllKHR = 4428,
1161     SpvOpSubgroupAnyKHR = 4429,
1162     SpvOpSubgroupAllEqualKHR = 4430,
1163     SpvOpSubgroupReadInvocationKHR = 4432,
1164     SpvOpGroupIAddNonUniformAMD = 5000,
1165     SpvOpGroupFAddNonUniformAMD = 5001,
1166     SpvOpGroupFMinNonUniformAMD = 5002,
1167     SpvOpGroupUMinNonUniformAMD = 5003,
1168     SpvOpGroupSMinNonUniformAMD = 5004,
1169     SpvOpGroupFMaxNonUniformAMD = 5005,
1170     SpvOpGroupUMaxNonUniformAMD = 5006,
1171     SpvOpGroupSMaxNonUniformAMD = 5007,
1172     SpvOpFragmentMaskFetchAMD = 5011,
1173     SpvOpFragmentFetchAMD = 5012,
1174     SpvOpImageSampleFootprintNV = 5283,
1175     SpvOpGroupNonUniformPartitionNV = 5296,
1176     SpvOpWritePackedPrimitiveIndices4x8NV = 5299,
1177     SpvOpReportIntersectionNV = 5334,
1178     SpvOpIgnoreIntersectionNV = 5335,
1179     SpvOpTerminateRayNV = 5336,
1180     SpvOpTraceNV = 5337,
1181     SpvOpTypeAccelerationStructureNV = 5341,
1182     SpvOpExecuteCallableNV = 5344,
1183     SpvOpSubgroupShuffleINTEL = 5571,
1184     SpvOpSubgroupShuffleDownINTEL = 5572,
1185     SpvOpSubgroupShuffleUpINTEL = 5573,
1186     SpvOpSubgroupShuffleXorINTEL = 5574,
1187     SpvOpSubgroupBlockReadINTEL = 5575,
1188     SpvOpSubgroupBlockWriteINTEL = 5576,
1189     SpvOpSubgroupImageBlockReadINTEL = 5577,
1190     SpvOpSubgroupImageBlockWriteINTEL = 5578,
1191     SpvOpDecorateStringGOOGLE = 5632,
1192     SpvOpMemberDecorateStringGOOGLE = 5633,
1193     SpvOpMax = 0x7fffffff,
1194 } SpvOp;
1195 
1196 #endif  // #ifndef spirv_H
1197 
1198