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