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