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