• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 0x10300
54 #define SPV_REVISION 1
55 
56 static const unsigned int SpvMagicNumber = 0x07230203;
57 static const unsigned int SpvVersion = 0x00010300;
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     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     SpvDecorationNonUniformEXT = 5300,
401     SpvDecorationHlslCounterBufferGOOGLE = 5634,
402     SpvDecorationHlslSemanticGOOGLE = 5635,
403     SpvDecorationMax = 0x7fffffff,
404 } SpvDecoration;
405 
406 typedef enum SpvBuiltIn_ {
407     SpvBuiltInPosition = 0,
408     SpvBuiltInPointSize = 1,
409     SpvBuiltInClipDistance = 3,
410     SpvBuiltInCullDistance = 4,
411     SpvBuiltInVertexId = 5,
412     SpvBuiltInInstanceId = 6,
413     SpvBuiltInPrimitiveId = 7,
414     SpvBuiltInInvocationId = 8,
415     SpvBuiltInLayer = 9,
416     SpvBuiltInViewportIndex = 10,
417     SpvBuiltInTessLevelOuter = 11,
418     SpvBuiltInTessLevelInner = 12,
419     SpvBuiltInTessCoord = 13,
420     SpvBuiltInPatchVertices = 14,
421     SpvBuiltInFragCoord = 15,
422     SpvBuiltInPointCoord = 16,
423     SpvBuiltInFrontFacing = 17,
424     SpvBuiltInSampleId = 18,
425     SpvBuiltInSamplePosition = 19,
426     SpvBuiltInSampleMask = 20,
427     SpvBuiltInFragDepth = 22,
428     SpvBuiltInHelperInvocation = 23,
429     SpvBuiltInNumWorkgroups = 24,
430     SpvBuiltInWorkgroupSize = 25,
431     SpvBuiltInWorkgroupId = 26,
432     SpvBuiltInLocalInvocationId = 27,
433     SpvBuiltInGlobalInvocationId = 28,
434     SpvBuiltInLocalInvocationIndex = 29,
435     SpvBuiltInWorkDim = 30,
436     SpvBuiltInGlobalSize = 31,
437     SpvBuiltInEnqueuedWorkgroupSize = 32,
438     SpvBuiltInGlobalOffset = 33,
439     SpvBuiltInGlobalLinearId = 34,
440     SpvBuiltInSubgroupSize = 36,
441     SpvBuiltInSubgroupMaxSize = 37,
442     SpvBuiltInNumSubgroups = 38,
443     SpvBuiltInNumEnqueuedSubgroups = 39,
444     SpvBuiltInSubgroupId = 40,
445     SpvBuiltInSubgroupLocalInvocationId = 41,
446     SpvBuiltInVertexIndex = 42,
447     SpvBuiltInInstanceIndex = 43,
448     SpvBuiltInSubgroupEqMask = 4416,
449     SpvBuiltInSubgroupEqMaskKHR = 4416,
450     SpvBuiltInSubgroupGeMask = 4417,
451     SpvBuiltInSubgroupGeMaskKHR = 4417,
452     SpvBuiltInSubgroupGtMask = 4418,
453     SpvBuiltInSubgroupGtMaskKHR = 4418,
454     SpvBuiltInSubgroupLeMask = 4419,
455     SpvBuiltInSubgroupLeMaskKHR = 4419,
456     SpvBuiltInSubgroupLtMask = 4420,
457     SpvBuiltInSubgroupLtMaskKHR = 4420,
458     SpvBuiltInBaseVertex = 4424,
459     SpvBuiltInBaseInstance = 4425,
460     SpvBuiltInDrawIndex = 4426,
461     SpvBuiltInDeviceIndex = 4438,
462     SpvBuiltInViewIndex = 4440,
463     SpvBuiltInBaryCoordNoPerspAMD = 4992,
464     SpvBuiltInBaryCoordNoPerspCentroidAMD = 4993,
465     SpvBuiltInBaryCoordNoPerspSampleAMD = 4994,
466     SpvBuiltInBaryCoordSmoothAMD = 4995,
467     SpvBuiltInBaryCoordSmoothCentroidAMD = 4996,
468     SpvBuiltInBaryCoordSmoothSampleAMD = 4997,
469     SpvBuiltInBaryCoordPullModelAMD = 4998,
470     SpvBuiltInFragStencilRefEXT = 5014,
471     SpvBuiltInViewportMaskNV = 5253,
472     SpvBuiltInSecondaryPositionNV = 5257,
473     SpvBuiltInSecondaryViewportMaskNV = 5258,
474     SpvBuiltInPositionPerViewNV = 5261,
475     SpvBuiltInViewportMaskPerViewNV = 5262,
476     SpvBuiltInFullyCoveredEXT = 5264,
477     SpvBuiltInMax = 0x7fffffff,
478 } SpvBuiltIn;
479 
480 typedef enum SpvSelectionControlShift_ {
481     SpvSelectionControlFlattenShift = 0,
482     SpvSelectionControlDontFlattenShift = 1,
483     SpvSelectionControlMax = 0x7fffffff,
484 } SpvSelectionControlShift;
485 
486 typedef enum SpvSelectionControlMask_ {
487     SpvSelectionControlMaskNone = 0,
488     SpvSelectionControlFlattenMask = 0x00000001,
489     SpvSelectionControlDontFlattenMask = 0x00000002,
490 } SpvSelectionControlMask;
491 
492 typedef enum SpvLoopControlShift_ {
493     SpvLoopControlUnrollShift = 0,
494     SpvLoopControlDontUnrollShift = 1,
495     SpvLoopControlDependencyInfiniteShift = 2,
496     SpvLoopControlDependencyLengthShift = 3,
497     SpvLoopControlMax = 0x7fffffff,
498 } SpvLoopControlShift;
499 
500 typedef enum SpvLoopControlMask_ {
501     SpvLoopControlMaskNone = 0,
502     SpvLoopControlUnrollMask = 0x00000001,
503     SpvLoopControlDontUnrollMask = 0x00000002,
504     SpvLoopControlDependencyInfiniteMask = 0x00000004,
505     SpvLoopControlDependencyLengthMask = 0x00000008,
506 } SpvLoopControlMask;
507 
508 typedef enum SpvFunctionControlShift_ {
509     SpvFunctionControlInlineShift = 0,
510     SpvFunctionControlDontInlineShift = 1,
511     SpvFunctionControlPureShift = 2,
512     SpvFunctionControlConstShift = 3,
513     SpvFunctionControlMax = 0x7fffffff,
514 } SpvFunctionControlShift;
515 
516 typedef enum SpvFunctionControlMask_ {
517     SpvFunctionControlMaskNone = 0,
518     SpvFunctionControlInlineMask = 0x00000001,
519     SpvFunctionControlDontInlineMask = 0x00000002,
520     SpvFunctionControlPureMask = 0x00000004,
521     SpvFunctionControlConstMask = 0x00000008,
522 } SpvFunctionControlMask;
523 
524 typedef enum SpvMemorySemanticsShift_ {
525     SpvMemorySemanticsAcquireShift = 1,
526     SpvMemorySemanticsReleaseShift = 2,
527     SpvMemorySemanticsAcquireReleaseShift = 3,
528     SpvMemorySemanticsSequentiallyConsistentShift = 4,
529     SpvMemorySemanticsUniformMemoryShift = 6,
530     SpvMemorySemanticsSubgroupMemoryShift = 7,
531     SpvMemorySemanticsWorkgroupMemoryShift = 8,
532     SpvMemorySemanticsCrossWorkgroupMemoryShift = 9,
533     SpvMemorySemanticsAtomicCounterMemoryShift = 10,
534     SpvMemorySemanticsImageMemoryShift = 11,
535     SpvMemorySemanticsMax = 0x7fffffff,
536 } SpvMemorySemanticsShift;
537 
538 typedef enum SpvMemorySemanticsMask_ {
539     SpvMemorySemanticsMaskNone = 0,
540     SpvMemorySemanticsAcquireMask = 0x00000002,
541     SpvMemorySemanticsReleaseMask = 0x00000004,
542     SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
543     SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
544     SpvMemorySemanticsUniformMemoryMask = 0x00000040,
545     SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
546     SpvMemorySemanticsWorkgroupMemoryMask = 0x00000100,
547     SpvMemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
548     SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
549     SpvMemorySemanticsImageMemoryMask = 0x00000800,
550 } SpvMemorySemanticsMask;
551 
552 typedef enum SpvMemoryAccessShift_ {
553     SpvMemoryAccessVolatileShift = 0,
554     SpvMemoryAccessAlignedShift = 1,
555     SpvMemoryAccessNontemporalShift = 2,
556     SpvMemoryAccessMax = 0x7fffffff,
557 } SpvMemoryAccessShift;
558 
559 typedef enum SpvMemoryAccessMask_ {
560     SpvMemoryAccessMaskNone = 0,
561     SpvMemoryAccessVolatileMask = 0x00000001,
562     SpvMemoryAccessAlignedMask = 0x00000002,
563     SpvMemoryAccessNontemporalMask = 0x00000004,
564 } SpvMemoryAccessMask;
565 
566 typedef enum SpvScope_ {
567     SpvScopeCrossDevice = 0,
568     SpvScopeDevice = 1,
569     SpvScopeWorkgroup = 2,
570     SpvScopeSubgroup = 3,
571     SpvScopeInvocation = 4,
572     SpvScopeMax = 0x7fffffff,
573 } SpvScope;
574 
575 typedef enum SpvGroupOperation_ {
576     SpvGroupOperationReduce = 0,
577     SpvGroupOperationInclusiveScan = 1,
578     SpvGroupOperationExclusiveScan = 2,
579     SpvGroupOperationClusteredReduce = 3,
580     SpvGroupOperationPartitionedReduceNV = 6,
581     SpvGroupOperationPartitionedInclusiveScanNV = 7,
582     SpvGroupOperationPartitionedExclusiveScanNV = 8,
583     SpvGroupOperationMax = 0x7fffffff,
584 } SpvGroupOperation;
585 
586 typedef enum SpvKernelEnqueueFlags_ {
587     SpvKernelEnqueueFlagsNoWait = 0,
588     SpvKernelEnqueueFlagsWaitKernel = 1,
589     SpvKernelEnqueueFlagsWaitWorkGroup = 2,
590     SpvKernelEnqueueFlagsMax = 0x7fffffff,
591 } SpvKernelEnqueueFlags;
592 
593 typedef enum SpvKernelProfilingInfoShift_ {
594     SpvKernelProfilingInfoCmdExecTimeShift = 0,
595     SpvKernelProfilingInfoMax = 0x7fffffff,
596 } SpvKernelProfilingInfoShift;
597 
598 typedef enum SpvKernelProfilingInfoMask_ {
599     SpvKernelProfilingInfoMaskNone = 0,
600     SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
601 } SpvKernelProfilingInfoMask;
602 
603 typedef enum SpvCapability_ {
604     SpvCapabilityMatrix = 0,
605     SpvCapabilityShader = 1,
606     SpvCapabilityGeometry = 2,
607     SpvCapabilityTessellation = 3,
608     SpvCapabilityAddresses = 4,
609     SpvCapabilityLinkage = 5,
610     SpvCapabilityKernel = 6,
611     SpvCapabilityVector16 = 7,
612     SpvCapabilityFloat16Buffer = 8,
613     SpvCapabilityFloat16 = 9,
614     SpvCapabilityFloat64 = 10,
615     SpvCapabilityInt64 = 11,
616     SpvCapabilityInt64Atomics = 12,
617     SpvCapabilityImageBasic = 13,
618     SpvCapabilityImageReadWrite = 14,
619     SpvCapabilityImageMipmap = 15,
620     SpvCapabilityPipes = 17,
621     SpvCapabilityGroups = 18,
622     SpvCapabilityDeviceEnqueue = 19,
623     SpvCapabilityLiteralSampler = 20,
624     SpvCapabilityAtomicStorage = 21,
625     SpvCapabilityInt16 = 22,
626     SpvCapabilityTessellationPointSize = 23,
627     SpvCapabilityGeometryPointSize = 24,
628     SpvCapabilityImageGatherExtended = 25,
629     SpvCapabilityStorageImageMultisample = 27,
630     SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
631     SpvCapabilitySampledImageArrayDynamicIndexing = 29,
632     SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
633     SpvCapabilityStorageImageArrayDynamicIndexing = 31,
634     SpvCapabilityClipDistance = 32,
635     SpvCapabilityCullDistance = 33,
636     SpvCapabilityImageCubeArray = 34,
637     SpvCapabilitySampleRateShading = 35,
638     SpvCapabilityImageRect = 36,
639     SpvCapabilitySampledRect = 37,
640     SpvCapabilityGenericPointer = 38,
641     SpvCapabilityInt8 = 39,
642     SpvCapabilityInputAttachment = 40,
643     SpvCapabilitySparseResidency = 41,
644     SpvCapabilityMinLod = 42,
645     SpvCapabilitySampled1D = 43,
646     SpvCapabilityImage1D = 44,
647     SpvCapabilitySampledCubeArray = 45,
648     SpvCapabilitySampledBuffer = 46,
649     SpvCapabilityImageBuffer = 47,
650     SpvCapabilityImageMSArray = 48,
651     SpvCapabilityStorageImageExtendedFormats = 49,
652     SpvCapabilityImageQuery = 50,
653     SpvCapabilityDerivativeControl = 51,
654     SpvCapabilityInterpolationFunction = 52,
655     SpvCapabilityTransformFeedback = 53,
656     SpvCapabilityGeometryStreams = 54,
657     SpvCapabilityStorageImageReadWithoutFormat = 55,
658     SpvCapabilityStorageImageWriteWithoutFormat = 56,
659     SpvCapabilityMultiViewport = 57,
660     SpvCapabilitySubgroupDispatch = 58,
661     SpvCapabilityNamedBarrier = 59,
662     SpvCapabilityPipeStorage = 60,
663     SpvCapabilityGroupNonUniform = 61,
664     SpvCapabilityGroupNonUniformVote = 62,
665     SpvCapabilityGroupNonUniformArithmetic = 63,
666     SpvCapabilityGroupNonUniformBallot = 64,
667     SpvCapabilityGroupNonUniformShuffle = 65,
668     SpvCapabilityGroupNonUniformShuffleRelative = 66,
669     SpvCapabilityGroupNonUniformClustered = 67,
670     SpvCapabilityGroupNonUniformQuad = 68,
671     SpvCapabilitySubgroupBallotKHR = 4423,
672     SpvCapabilityDrawParameters = 4427,
673     SpvCapabilitySubgroupVoteKHR = 4431,
674     SpvCapabilityStorageBuffer16BitAccess = 4433,
675     SpvCapabilityStorageUniformBufferBlock16 = 4433,
676     SpvCapabilityStorageUniform16 = 4434,
677     SpvCapabilityUniformAndStorageBuffer16BitAccess = 4434,
678     SpvCapabilityStoragePushConstant16 = 4435,
679     SpvCapabilityStorageInputOutput16 = 4436,
680     SpvCapabilityDeviceGroup = 4437,
681     SpvCapabilityMultiView = 4439,
682     SpvCapabilityVariablePointersStorageBuffer = 4441,
683     SpvCapabilityVariablePointers = 4442,
684     SpvCapabilityAtomicStorageOps = 4445,
685     SpvCapabilitySampleMaskPostDepthCoverage = 4447,
686     SpvCapabilityStorageBuffer8BitAccess = 4448,
687     SpvCapabilityUniformAndStorageBuffer8BitAccess = 4449,
688     SpvCapabilityStoragePushConstant8 = 4450,
689     SpvCapabilityFloat16ImageAMD = 5008,
690     SpvCapabilityImageGatherBiasLodAMD = 5009,
691     SpvCapabilityFragmentMaskAMD = 5010,
692     SpvCapabilityStencilExportEXT = 5013,
693     SpvCapabilityImageReadWriteLodAMD = 5015,
694     SpvCapabilitySampleMaskOverrideCoverageNV = 5249,
695     SpvCapabilityGeometryShaderPassthroughNV = 5251,
696     SpvCapabilityShaderViewportIndexLayerEXT = 5254,
697     SpvCapabilityShaderViewportIndexLayerNV = 5254,
698     SpvCapabilityShaderViewportMaskNV = 5255,
699     SpvCapabilityShaderStereoViewNV = 5259,
700     SpvCapabilityPerViewAttributesNV = 5260,
701     SpvCapabilityFragmentFullyCoveredEXT = 5265,
702     SpvCapabilityGroupNonUniformPartitionedNV = 5297,
703     SpvCapabilityShaderNonUniformEXT = 5301,
704     SpvCapabilityRuntimeDescriptorArrayEXT = 5302,
705     SpvCapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
706     SpvCapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
707     SpvCapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
708     SpvCapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
709     SpvCapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
710     SpvCapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
711     SpvCapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
712     SpvCapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
713     SpvCapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
714     SpvCapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
715     SpvCapabilitySubgroupShuffleINTEL = 5568,
716     SpvCapabilitySubgroupBufferBlockIOINTEL = 5569,
717     SpvCapabilitySubgroupImageBlockIOINTEL = 5570,
718     SpvCapabilityMax = 0x7fffffff,
719 } SpvCapability;
720 
721 typedef enum SpvOp_ {
722     SpvOpNop = 0,
723     SpvOpUndef = 1,
724     SpvOpSourceContinued = 2,
725     SpvOpSource = 3,
726     SpvOpSourceExtension = 4,
727     SpvOpName = 5,
728     SpvOpMemberName = 6,
729     SpvOpString = 7,
730     SpvOpLine = 8,
731     SpvOpExtension = 10,
732     SpvOpExtInstImport = 11,
733     SpvOpExtInst = 12,
734     SpvOpMemoryModel = 14,
735     SpvOpEntryPoint = 15,
736     SpvOpExecutionMode = 16,
737     SpvOpCapability = 17,
738     SpvOpTypeVoid = 19,
739     SpvOpTypeBool = 20,
740     SpvOpTypeInt = 21,
741     SpvOpTypeFloat = 22,
742     SpvOpTypeVector = 23,
743     SpvOpTypeMatrix = 24,
744     SpvOpTypeImage = 25,
745     SpvOpTypeSampler = 26,
746     SpvOpTypeSampledImage = 27,
747     SpvOpTypeArray = 28,
748     SpvOpTypeRuntimeArray = 29,
749     SpvOpTypeStruct = 30,
750     SpvOpTypeOpaque = 31,
751     SpvOpTypePointer = 32,
752     SpvOpTypeFunction = 33,
753     SpvOpTypeEvent = 34,
754     SpvOpTypeDeviceEvent = 35,
755     SpvOpTypeReserveId = 36,
756     SpvOpTypeQueue = 37,
757     SpvOpTypePipe = 38,
758     SpvOpTypeForwardPointer = 39,
759     SpvOpConstantTrue = 41,
760     SpvOpConstantFalse = 42,
761     SpvOpConstant = 43,
762     SpvOpConstantComposite = 44,
763     SpvOpConstantSampler = 45,
764     SpvOpConstantNull = 46,
765     SpvOpSpecConstantTrue = 48,
766     SpvOpSpecConstantFalse = 49,
767     SpvOpSpecConstant = 50,
768     SpvOpSpecConstantComposite = 51,
769     SpvOpSpecConstantOp = 52,
770     SpvOpFunction = 54,
771     SpvOpFunctionParameter = 55,
772     SpvOpFunctionEnd = 56,
773     SpvOpFunctionCall = 57,
774     SpvOpVariable = 59,
775     SpvOpImageTexelPointer = 60,
776     SpvOpLoad = 61,
777     SpvOpStore = 62,
778     SpvOpCopyMemory = 63,
779     SpvOpCopyMemorySized = 64,
780     SpvOpAccessChain = 65,
781     SpvOpInBoundsAccessChain = 66,
782     SpvOpPtrAccessChain = 67,
783     SpvOpArrayLength = 68,
784     SpvOpGenericPtrMemSemantics = 69,
785     SpvOpInBoundsPtrAccessChain = 70,
786     SpvOpDecorate = 71,
787     SpvOpMemberDecorate = 72,
788     SpvOpDecorationGroup = 73,
789     SpvOpGroupDecorate = 74,
790     SpvOpGroupMemberDecorate = 75,
791     SpvOpVectorExtractDynamic = 77,
792     SpvOpVectorInsertDynamic = 78,
793     SpvOpVectorShuffle = 79,
794     SpvOpCompositeConstruct = 80,
795     SpvOpCompositeExtract = 81,
796     SpvOpCompositeInsert = 82,
797     SpvOpCopyObject = 83,
798     SpvOpTranspose = 84,
799     SpvOpSampledImage = 86,
800     SpvOpImageSampleImplicitLod = 87,
801     SpvOpImageSampleExplicitLod = 88,
802     SpvOpImageSampleDrefImplicitLod = 89,
803     SpvOpImageSampleDrefExplicitLod = 90,
804     SpvOpImageSampleProjImplicitLod = 91,
805     SpvOpImageSampleProjExplicitLod = 92,
806     SpvOpImageSampleProjDrefImplicitLod = 93,
807     SpvOpImageSampleProjDrefExplicitLod = 94,
808     SpvOpImageFetch = 95,
809     SpvOpImageGather = 96,
810     SpvOpImageDrefGather = 97,
811     SpvOpImageRead = 98,
812     SpvOpImageWrite = 99,
813     SpvOpImage = 100,
814     SpvOpImageQueryFormat = 101,
815     SpvOpImageQueryOrder = 102,
816     SpvOpImageQuerySizeLod = 103,
817     SpvOpImageQuerySize = 104,
818     SpvOpImageQueryLod = 105,
819     SpvOpImageQueryLevels = 106,
820     SpvOpImageQuerySamples = 107,
821     SpvOpConvertFToU = 109,
822     SpvOpConvertFToS = 110,
823     SpvOpConvertSToF = 111,
824     SpvOpConvertUToF = 112,
825     SpvOpUConvert = 113,
826     SpvOpSConvert = 114,
827     SpvOpFConvert = 115,
828     SpvOpQuantizeToF16 = 116,
829     SpvOpConvertPtrToU = 117,
830     SpvOpSatConvertSToU = 118,
831     SpvOpSatConvertUToS = 119,
832     SpvOpConvertUToPtr = 120,
833     SpvOpPtrCastToGeneric = 121,
834     SpvOpGenericCastToPtr = 122,
835     SpvOpGenericCastToPtrExplicit = 123,
836     SpvOpBitcast = 124,
837     SpvOpSNegate = 126,
838     SpvOpFNegate = 127,
839     SpvOpIAdd = 128,
840     SpvOpFAdd = 129,
841     SpvOpISub = 130,
842     SpvOpFSub = 131,
843     SpvOpIMul = 132,
844     SpvOpFMul = 133,
845     SpvOpUDiv = 134,
846     SpvOpSDiv = 135,
847     SpvOpFDiv = 136,
848     SpvOpUMod = 137,
849     SpvOpSRem = 138,
850     SpvOpSMod = 139,
851     SpvOpFRem = 140,
852     SpvOpFMod = 141,
853     SpvOpVectorTimesScalar = 142,
854     SpvOpMatrixTimesScalar = 143,
855     SpvOpVectorTimesMatrix = 144,
856     SpvOpMatrixTimesVector = 145,
857     SpvOpMatrixTimesMatrix = 146,
858     SpvOpOuterProduct = 147,
859     SpvOpDot = 148,
860     SpvOpIAddCarry = 149,
861     SpvOpISubBorrow = 150,
862     SpvOpUMulExtended = 151,
863     SpvOpSMulExtended = 152,
864     SpvOpAny = 154,
865     SpvOpAll = 155,
866     SpvOpIsNan = 156,
867     SpvOpIsInf = 157,
868     SpvOpIsFinite = 158,
869     SpvOpIsNormal = 159,
870     SpvOpSignBitSet = 160,
871     SpvOpLessOrGreater = 161,
872     SpvOpOrdered = 162,
873     SpvOpUnordered = 163,
874     SpvOpLogicalEqual = 164,
875     SpvOpLogicalNotEqual = 165,
876     SpvOpLogicalOr = 166,
877     SpvOpLogicalAnd = 167,
878     SpvOpLogicalNot = 168,
879     SpvOpSelect = 169,
880     SpvOpIEqual = 170,
881     SpvOpINotEqual = 171,
882     SpvOpUGreaterThan = 172,
883     SpvOpSGreaterThan = 173,
884     SpvOpUGreaterThanEqual = 174,
885     SpvOpSGreaterThanEqual = 175,
886     SpvOpULessThan = 176,
887     SpvOpSLessThan = 177,
888     SpvOpULessThanEqual = 178,
889     SpvOpSLessThanEqual = 179,
890     SpvOpFOrdEqual = 180,
891     SpvOpFUnordEqual = 181,
892     SpvOpFOrdNotEqual = 182,
893     SpvOpFUnordNotEqual = 183,
894     SpvOpFOrdLessThan = 184,
895     SpvOpFUnordLessThan = 185,
896     SpvOpFOrdGreaterThan = 186,
897     SpvOpFUnordGreaterThan = 187,
898     SpvOpFOrdLessThanEqual = 188,
899     SpvOpFUnordLessThanEqual = 189,
900     SpvOpFOrdGreaterThanEqual = 190,
901     SpvOpFUnordGreaterThanEqual = 191,
902     SpvOpShiftRightLogical = 194,
903     SpvOpShiftRightArithmetic = 195,
904     SpvOpShiftLeftLogical = 196,
905     SpvOpBitwiseOr = 197,
906     SpvOpBitwiseXor = 198,
907     SpvOpBitwiseAnd = 199,
908     SpvOpNot = 200,
909     SpvOpBitFieldInsert = 201,
910     SpvOpBitFieldSExtract = 202,
911     SpvOpBitFieldUExtract = 203,
912     SpvOpBitReverse = 204,
913     SpvOpBitCount = 205,
914     SpvOpDPdx = 207,
915     SpvOpDPdy = 208,
916     SpvOpFwidth = 209,
917     SpvOpDPdxFine = 210,
918     SpvOpDPdyFine = 211,
919     SpvOpFwidthFine = 212,
920     SpvOpDPdxCoarse = 213,
921     SpvOpDPdyCoarse = 214,
922     SpvOpFwidthCoarse = 215,
923     SpvOpEmitVertex = 218,
924     SpvOpEndPrimitive = 219,
925     SpvOpEmitStreamVertex = 220,
926     SpvOpEndStreamPrimitive = 221,
927     SpvOpControlBarrier = 224,
928     SpvOpMemoryBarrier = 225,
929     SpvOpAtomicLoad = 227,
930     SpvOpAtomicStore = 228,
931     SpvOpAtomicExchange = 229,
932     SpvOpAtomicCompareExchange = 230,
933     SpvOpAtomicCompareExchangeWeak = 231,
934     SpvOpAtomicIIncrement = 232,
935     SpvOpAtomicIDecrement = 233,
936     SpvOpAtomicIAdd = 234,
937     SpvOpAtomicISub = 235,
938     SpvOpAtomicSMin = 236,
939     SpvOpAtomicUMin = 237,
940     SpvOpAtomicSMax = 238,
941     SpvOpAtomicUMax = 239,
942     SpvOpAtomicAnd = 240,
943     SpvOpAtomicOr = 241,
944     SpvOpAtomicXor = 242,
945     SpvOpPhi = 245,
946     SpvOpLoopMerge = 246,
947     SpvOpSelectionMerge = 247,
948     SpvOpLabel = 248,
949     SpvOpBranch = 249,
950     SpvOpBranchConditional = 250,
951     SpvOpSwitch = 251,
952     SpvOpKill = 252,
953     SpvOpReturn = 253,
954     SpvOpReturnValue = 254,
955     SpvOpUnreachable = 255,
956     SpvOpLifetimeStart = 256,
957     SpvOpLifetimeStop = 257,
958     SpvOpGroupAsyncCopy = 259,
959     SpvOpGroupWaitEvents = 260,
960     SpvOpGroupAll = 261,
961     SpvOpGroupAny = 262,
962     SpvOpGroupBroadcast = 263,
963     SpvOpGroupIAdd = 264,
964     SpvOpGroupFAdd = 265,
965     SpvOpGroupFMin = 266,
966     SpvOpGroupUMin = 267,
967     SpvOpGroupSMin = 268,
968     SpvOpGroupFMax = 269,
969     SpvOpGroupUMax = 270,
970     SpvOpGroupSMax = 271,
971     SpvOpReadPipe = 274,
972     SpvOpWritePipe = 275,
973     SpvOpReservedReadPipe = 276,
974     SpvOpReservedWritePipe = 277,
975     SpvOpReserveReadPipePackets = 278,
976     SpvOpReserveWritePipePackets = 279,
977     SpvOpCommitReadPipe = 280,
978     SpvOpCommitWritePipe = 281,
979     SpvOpIsValidReserveId = 282,
980     SpvOpGetNumPipePackets = 283,
981     SpvOpGetMaxPipePackets = 284,
982     SpvOpGroupReserveReadPipePackets = 285,
983     SpvOpGroupReserveWritePipePackets = 286,
984     SpvOpGroupCommitReadPipe = 287,
985     SpvOpGroupCommitWritePipe = 288,
986     SpvOpEnqueueMarker = 291,
987     SpvOpEnqueueKernel = 292,
988     SpvOpGetKernelNDrangeSubGroupCount = 293,
989     SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
990     SpvOpGetKernelWorkGroupSize = 295,
991     SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
992     SpvOpRetainEvent = 297,
993     SpvOpReleaseEvent = 298,
994     SpvOpCreateUserEvent = 299,
995     SpvOpIsValidEvent = 300,
996     SpvOpSetUserEventStatus = 301,
997     SpvOpCaptureEventProfilingInfo = 302,
998     SpvOpGetDefaultQueue = 303,
999     SpvOpBuildNDRange = 304,
1000     SpvOpImageSparseSampleImplicitLod = 305,
1001     SpvOpImageSparseSampleExplicitLod = 306,
1002     SpvOpImageSparseSampleDrefImplicitLod = 307,
1003     SpvOpImageSparseSampleDrefExplicitLod = 308,
1004     SpvOpImageSparseSampleProjImplicitLod = 309,
1005     SpvOpImageSparseSampleProjExplicitLod = 310,
1006     SpvOpImageSparseSampleProjDrefImplicitLod = 311,
1007     SpvOpImageSparseSampleProjDrefExplicitLod = 312,
1008     SpvOpImageSparseFetch = 313,
1009     SpvOpImageSparseGather = 314,
1010     SpvOpImageSparseDrefGather = 315,
1011     SpvOpImageSparseTexelsResident = 316,
1012     SpvOpNoLine = 317,
1013     SpvOpAtomicFlagTestAndSet = 318,
1014     SpvOpAtomicFlagClear = 319,
1015     SpvOpImageSparseRead = 320,
1016     SpvOpSizeOf = 321,
1017     SpvOpTypePipeStorage = 322,
1018     SpvOpConstantPipeStorage = 323,
1019     SpvOpCreatePipeFromPipeStorage = 324,
1020     SpvOpGetKernelLocalSizeForSubgroupCount = 325,
1021     SpvOpGetKernelMaxNumSubgroups = 326,
1022     SpvOpTypeNamedBarrier = 327,
1023     SpvOpNamedBarrierInitialize = 328,
1024     SpvOpMemoryNamedBarrier = 329,
1025     SpvOpModuleProcessed = 330,
1026     SpvOpExecutionModeId = 331,
1027     SpvOpDecorateId = 332,
1028     SpvOpGroupNonUniformElect = 333,
1029     SpvOpGroupNonUniformAll = 334,
1030     SpvOpGroupNonUniformAny = 335,
1031     SpvOpGroupNonUniformAllEqual = 336,
1032     SpvOpGroupNonUniformBroadcast = 337,
1033     SpvOpGroupNonUniformBroadcastFirst = 338,
1034     SpvOpGroupNonUniformBallot = 339,
1035     SpvOpGroupNonUniformInverseBallot = 340,
1036     SpvOpGroupNonUniformBallotBitExtract = 341,
1037     SpvOpGroupNonUniformBallotBitCount = 342,
1038     SpvOpGroupNonUniformBallotFindLSB = 343,
1039     SpvOpGroupNonUniformBallotFindMSB = 344,
1040     SpvOpGroupNonUniformShuffle = 345,
1041     SpvOpGroupNonUniformShuffleXor = 346,
1042     SpvOpGroupNonUniformShuffleUp = 347,
1043     SpvOpGroupNonUniformShuffleDown = 348,
1044     SpvOpGroupNonUniformIAdd = 349,
1045     SpvOpGroupNonUniformFAdd = 350,
1046     SpvOpGroupNonUniformIMul = 351,
1047     SpvOpGroupNonUniformFMul = 352,
1048     SpvOpGroupNonUniformSMin = 353,
1049     SpvOpGroupNonUniformUMin = 354,
1050     SpvOpGroupNonUniformFMin = 355,
1051     SpvOpGroupNonUniformSMax = 356,
1052     SpvOpGroupNonUniformUMax = 357,
1053     SpvOpGroupNonUniformFMax = 358,
1054     SpvOpGroupNonUniformBitwiseAnd = 359,
1055     SpvOpGroupNonUniformBitwiseOr = 360,
1056     SpvOpGroupNonUniformBitwiseXor = 361,
1057     SpvOpGroupNonUniformLogicalAnd = 362,
1058     SpvOpGroupNonUniformLogicalOr = 363,
1059     SpvOpGroupNonUniformLogicalXor = 364,
1060     SpvOpGroupNonUniformQuadBroadcast = 365,
1061     SpvOpGroupNonUniformQuadSwap = 366,
1062     SpvOpSubgroupBallotKHR = 4421,
1063     SpvOpSubgroupFirstInvocationKHR = 4422,
1064     SpvOpSubgroupAllKHR = 4428,
1065     SpvOpSubgroupAnyKHR = 4429,
1066     SpvOpSubgroupAllEqualKHR = 4430,
1067     SpvOpSubgroupReadInvocationKHR = 4432,
1068     SpvOpGroupIAddNonUniformAMD = 5000,
1069     SpvOpGroupFAddNonUniformAMD = 5001,
1070     SpvOpGroupFMinNonUniformAMD = 5002,
1071     SpvOpGroupUMinNonUniformAMD = 5003,
1072     SpvOpGroupSMinNonUniformAMD = 5004,
1073     SpvOpGroupFMaxNonUniformAMD = 5005,
1074     SpvOpGroupUMaxNonUniformAMD = 5006,
1075     SpvOpGroupSMaxNonUniformAMD = 5007,
1076     SpvOpFragmentMaskFetchAMD = 5011,
1077     SpvOpFragmentFetchAMD = 5012,
1078     SpvOpGroupNonUniformPartitionNV = 5296,
1079     SpvOpSubgroupShuffleINTEL = 5571,
1080     SpvOpSubgroupShuffleDownINTEL = 5572,
1081     SpvOpSubgroupShuffleUpINTEL = 5573,
1082     SpvOpSubgroupShuffleXorINTEL = 5574,
1083     SpvOpSubgroupBlockReadINTEL = 5575,
1084     SpvOpSubgroupBlockWriteINTEL = 5576,
1085     SpvOpSubgroupImageBlockReadINTEL = 5577,
1086     SpvOpSubgroupImageBlockWriteINTEL = 5578,
1087     SpvOpDecorateStringGOOGLE = 5632,
1088     SpvOpMemberDecorateStringGOOGLE = 5633,
1089     SpvOpMax = 0x7fffffff,
1090 } SpvOp;
1091 
1092 #endif  // #ifndef spirv_H
1093 
1094