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