1 // Copyright (c) 2014-2018 The Khronos Group Inc.
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and/or associated documentation files (the "Materials"),
5 // to deal in the Materials without restriction, including without limitation
6 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 // and/or sell copies of the Materials, and to permit persons to whom the
8 // Materials are furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Materials.
12 //
13 // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
14 // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
15 // HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
16 //
17 // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 // FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
23 // IN THE MATERIALS.
24 
25 // This header is automatically generated by the same tool that creates
26 // the Binary Section of the SPIR-V specification.
27 
28 // Enumeration tokens for SPIR-V, in various styles:
29 //   C, C++, C++11, JSON, Lua, Python
30 //
31 // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
32 // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
33 // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
34 // - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
35 // - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
36 //
37 // Some tokens act like mask values, which can be OR'd together,
38 // while others are mutually exclusive.  The mask-like ones have
39 // "Mask" in their name, and a parallel enum that has the shift
40 // amount (1 << x) for each corresponding enumerant.
41 
42 #ifndef spirv_HPP
43 #define spirv_HPP
44 
45 namespace spv {
46 
47 typedef unsigned int Id;
48 
49 #define SPV_VERSION 0x10300
50 #define SPV_REVISION 1
51 
52 static const unsigned int MagicNumber = 0x07230203;
53 static const unsigned int Version = 0x00010300;
54 static const unsigned int Revision = 1;
55 static const unsigned int OpCodeMask = 0xffff;
56 static const unsigned int WordCountShift = 16;
57 
58 enum SourceLanguage {
59     SourceLanguageUnknown = 0,
60     SourceLanguageESSL = 1,
61     SourceLanguageGLSL = 2,
62     SourceLanguageOpenCL_C = 3,
63     SourceLanguageOpenCL_CPP = 4,
64     SourceLanguageHLSL = 5,
65     SourceLanguageMax = 0x7fffffff,
66 };
67 
68 enum ExecutionModel {
69     ExecutionModelVertex = 0,
70     ExecutionModelTessellationControl = 1,
71     ExecutionModelTessellationEvaluation = 2,
72     ExecutionModelGeometry = 3,
73     ExecutionModelFragment = 4,
74     ExecutionModelGLCompute = 5,
75     ExecutionModelKernel = 6,
76     ExecutionModelTaskNV = 5267,
77     ExecutionModelMeshNV = 5268,
78     ExecutionModelRayGenerationNVX = 5313,
79     ExecutionModelIntersectionNVX = 5314,
80     ExecutionModelAnyHitNVX = 5315,
81     ExecutionModelClosestHitNVX = 5316,
82     ExecutionModelMissNVX = 5317,
83     ExecutionModelCallableNVX = 5318,
84     ExecutionModelMax = 0x7fffffff,
85 };
86 
87 enum AddressingModel {
88     AddressingModelLogical = 0,
89     AddressingModelPhysical32 = 1,
90     AddressingModelPhysical64 = 2,
91     AddressingModelMax = 0x7fffffff,
92 };
93 
94 enum MemoryModel {
95     MemoryModelSimple = 0,
96     MemoryModelGLSL450 = 1,
97     MemoryModelOpenCL = 2,
98     MemoryModelVulkanKHR = 3,
99     MemoryModelMax = 0x7fffffff,
100 };
101 
102 enum ExecutionMode {
103     ExecutionModeInvocations = 0,
104     ExecutionModeSpacingEqual = 1,
105     ExecutionModeSpacingFractionalEven = 2,
106     ExecutionModeSpacingFractionalOdd = 3,
107     ExecutionModeVertexOrderCw = 4,
108     ExecutionModeVertexOrderCcw = 5,
109     ExecutionModePixelCenterInteger = 6,
110     ExecutionModeOriginUpperLeft = 7,
111     ExecutionModeOriginLowerLeft = 8,
112     ExecutionModeEarlyFragmentTests = 9,
113     ExecutionModePointMode = 10,
114     ExecutionModeXfb = 11,
115     ExecutionModeDepthReplacing = 12,
116     ExecutionModeDepthGreater = 14,
117     ExecutionModeDepthLess = 15,
118     ExecutionModeDepthUnchanged = 16,
119     ExecutionModeLocalSize = 17,
120     ExecutionModeLocalSizeHint = 18,
121     ExecutionModeInputPoints = 19,
122     ExecutionModeInputLines = 20,
123     ExecutionModeInputLinesAdjacency = 21,
124     ExecutionModeTriangles = 22,
125     ExecutionModeInputTrianglesAdjacency = 23,
126     ExecutionModeQuads = 24,
127     ExecutionModeIsolines = 25,
128     ExecutionModeOutputVertices = 26,
129     ExecutionModeOutputPoints = 27,
130     ExecutionModeOutputLineStrip = 28,
131     ExecutionModeOutputTriangleStrip = 29,
132     ExecutionModeVecTypeHint = 30,
133     ExecutionModeContractionOff = 31,
134     ExecutionModeInitializer = 33,
135     ExecutionModeFinalizer = 34,
136     ExecutionModeSubgroupSize = 35,
137     ExecutionModeSubgroupsPerWorkgroup = 36,
138     ExecutionModeSubgroupsPerWorkgroupId = 37,
139     ExecutionModeLocalSizeId = 38,
140     ExecutionModeLocalSizeHintId = 39,
141     ExecutionModePostDepthCoverage = 4446,
142     ExecutionModeStencilRefReplacingEXT = 5027,
143     ExecutionModeOutputLinesNV = 5269,
144     ExecutionModeOutputPrimitivesNV = 5270,
145     ExecutionModeDerivativeGroupQuadsNV = 5289,
146     ExecutionModeDerivativeGroupLinearNV = 5290,
147     ExecutionModeOutputTrianglesNV = 5298,
148     ExecutionModeMax = 0x7fffffff,
149 };
150 
151 enum StorageClass {
152     StorageClassUniformConstant = 0,
153     StorageClassInput = 1,
154     StorageClassUniform = 2,
155     StorageClassOutput = 3,
156     StorageClassWorkgroup = 4,
157     StorageClassCrossWorkgroup = 5,
158     StorageClassPrivate = 6,
159     StorageClassFunction = 7,
160     StorageClassGeneric = 8,
161     StorageClassPushConstant = 9,
162     StorageClassAtomicCounter = 10,
163     StorageClassImage = 11,
164     StorageClassStorageBuffer = 12,
165     StorageClassRayPayloadNVX = 5338,
166     StorageClassHitAttributeNVX = 5339,
167     StorageClassIncomingRayPayloadNVX = 5342,
168     StorageClassShaderRecordBufferNVX = 5343,
169     StorageClassMax = 0x7fffffff,
170 };
171 
172 enum Dim {
173     Dim1D = 0,
174     Dim2D = 1,
175     Dim3D = 2,
176     DimCube = 3,
177     DimRect = 4,
178     DimBuffer = 5,
179     DimSubpassData = 6,
180     DimMax = 0x7fffffff,
181 };
182 
183 enum SamplerAddressingMode {
184     SamplerAddressingModeNone = 0,
185     SamplerAddressingModeClampToEdge = 1,
186     SamplerAddressingModeClamp = 2,
187     SamplerAddressingModeRepeat = 3,
188     SamplerAddressingModeRepeatMirrored = 4,
189     SamplerAddressingModeMax = 0x7fffffff,
190 };
191 
192 enum SamplerFilterMode {
193     SamplerFilterModeNearest = 0,
194     SamplerFilterModeLinear = 1,
195     SamplerFilterModeMax = 0x7fffffff,
196 };
197 
198 enum ImageFormat {
199     ImageFormatUnknown = 0,
200     ImageFormatRgba32f = 1,
201     ImageFormatRgba16f = 2,
202     ImageFormatR32f = 3,
203     ImageFormatRgba8 = 4,
204     ImageFormatRgba8Snorm = 5,
205     ImageFormatRg32f = 6,
206     ImageFormatRg16f = 7,
207     ImageFormatR11fG11fB10f = 8,
208     ImageFormatR16f = 9,
209     ImageFormatRgba16 = 10,
210     ImageFormatRgb10A2 = 11,
211     ImageFormatRg16 = 12,
212     ImageFormatRg8 = 13,
213     ImageFormatR16 = 14,
214     ImageFormatR8 = 15,
215     ImageFormatRgba16Snorm = 16,
216     ImageFormatRg16Snorm = 17,
217     ImageFormatRg8Snorm = 18,
218     ImageFormatR16Snorm = 19,
219     ImageFormatR8Snorm = 20,
220     ImageFormatRgba32i = 21,
221     ImageFormatRgba16i = 22,
222     ImageFormatRgba8i = 23,
223     ImageFormatR32i = 24,
224     ImageFormatRg32i = 25,
225     ImageFormatRg16i = 26,
226     ImageFormatRg8i = 27,
227     ImageFormatR16i = 28,
228     ImageFormatR8i = 29,
229     ImageFormatRgba32ui = 30,
230     ImageFormatRgba16ui = 31,
231     ImageFormatRgba8ui = 32,
232     ImageFormatR32ui = 33,
233     ImageFormatRgb10a2ui = 34,
234     ImageFormatRg32ui = 35,
235     ImageFormatRg16ui = 36,
236     ImageFormatRg8ui = 37,
237     ImageFormatR16ui = 38,
238     ImageFormatR8ui = 39,
239     ImageFormatMax = 0x7fffffff,
240 };
241 
242 enum ImageChannelOrder {
243     ImageChannelOrderR = 0,
244     ImageChannelOrderA = 1,
245     ImageChannelOrderRG = 2,
246     ImageChannelOrderRA = 3,
247     ImageChannelOrderRGB = 4,
248     ImageChannelOrderRGBA = 5,
249     ImageChannelOrderBGRA = 6,
250     ImageChannelOrderARGB = 7,
251     ImageChannelOrderIntensity = 8,
252     ImageChannelOrderLuminance = 9,
253     ImageChannelOrderRx = 10,
254     ImageChannelOrderRGx = 11,
255     ImageChannelOrderRGBx = 12,
256     ImageChannelOrderDepth = 13,
257     ImageChannelOrderDepthStencil = 14,
258     ImageChannelOrdersRGB = 15,
259     ImageChannelOrdersRGBx = 16,
260     ImageChannelOrdersRGBA = 17,
261     ImageChannelOrdersBGRA = 18,
262     ImageChannelOrderABGR = 19,
263     ImageChannelOrderMax = 0x7fffffff,
264 };
265 
266 enum ImageChannelDataType {
267     ImageChannelDataTypeSnormInt8 = 0,
268     ImageChannelDataTypeSnormInt16 = 1,
269     ImageChannelDataTypeUnormInt8 = 2,
270     ImageChannelDataTypeUnormInt16 = 3,
271     ImageChannelDataTypeUnormShort565 = 4,
272     ImageChannelDataTypeUnormShort555 = 5,
273     ImageChannelDataTypeUnormInt101010 = 6,
274     ImageChannelDataTypeSignedInt8 = 7,
275     ImageChannelDataTypeSignedInt16 = 8,
276     ImageChannelDataTypeSignedInt32 = 9,
277     ImageChannelDataTypeUnsignedInt8 = 10,
278     ImageChannelDataTypeUnsignedInt16 = 11,
279     ImageChannelDataTypeUnsignedInt32 = 12,
280     ImageChannelDataTypeHalfFloat = 13,
281     ImageChannelDataTypeFloat = 14,
282     ImageChannelDataTypeUnormInt24 = 15,
283     ImageChannelDataTypeUnormInt101010_2 = 16,
284     ImageChannelDataTypeMax = 0x7fffffff,
285 };
286 
287 enum ImageOperandsShift {
288     ImageOperandsBiasShift = 0,
289     ImageOperandsLodShift = 1,
290     ImageOperandsGradShift = 2,
291     ImageOperandsConstOffsetShift = 3,
292     ImageOperandsOffsetShift = 4,
293     ImageOperandsConstOffsetsShift = 5,
294     ImageOperandsSampleShift = 6,
295     ImageOperandsMinLodShift = 7,
296     ImageOperandsMakeTexelAvailableKHRShift = 8,
297     ImageOperandsMakeTexelVisibleKHRShift = 9,
298     ImageOperandsNonPrivateTexelKHRShift = 10,
299     ImageOperandsVolatileTexelKHRShift = 11,
300     ImageOperandsMax = 0x7fffffff,
301 };
302 
303 enum ImageOperandsMask {
304     ImageOperandsMaskNone = 0,
305     ImageOperandsBiasMask = 0x00000001,
306     ImageOperandsLodMask = 0x00000002,
307     ImageOperandsGradMask = 0x00000004,
308     ImageOperandsConstOffsetMask = 0x00000008,
309     ImageOperandsOffsetMask = 0x00000010,
310     ImageOperandsConstOffsetsMask = 0x00000020,
311     ImageOperandsSampleMask = 0x00000040,
312     ImageOperandsMinLodMask = 0x00000080,
313     ImageOperandsMakeTexelAvailableKHRMask = 0x00000100,
314     ImageOperandsMakeTexelVisibleKHRMask = 0x00000200,
315     ImageOperandsNonPrivateTexelKHRMask = 0x00000400,
316     ImageOperandsVolatileTexelKHRMask = 0x00000800,
317 };
318 
319 enum FPFastMathModeShift {
320     FPFastMathModeNotNaNShift = 0,
321     FPFastMathModeNotInfShift = 1,
322     FPFastMathModeNSZShift = 2,
323     FPFastMathModeAllowRecipShift = 3,
324     FPFastMathModeFastShift = 4,
325     FPFastMathModeMax = 0x7fffffff,
326 };
327 
328 enum FPFastMathModeMask {
329     FPFastMathModeMaskNone = 0,
330     FPFastMathModeNotNaNMask = 0x00000001,
331     FPFastMathModeNotInfMask = 0x00000002,
332     FPFastMathModeNSZMask = 0x00000004,
333     FPFastMathModeAllowRecipMask = 0x00000008,
334     FPFastMathModeFastMask = 0x00000010,
335 };
336 
337 enum FPRoundingMode {
338     FPRoundingModeRTE = 0,
339     FPRoundingModeRTZ = 1,
340     FPRoundingModeRTP = 2,
341     FPRoundingModeRTN = 3,
342     FPRoundingModeMax = 0x7fffffff,
343 };
344 
345 enum LinkageType {
346     LinkageTypeExport = 0,
347     LinkageTypeImport = 1,
348     LinkageTypeMax = 0x7fffffff,
349 };
350 
351 enum AccessQualifier {
352     AccessQualifierReadOnly = 0,
353     AccessQualifierWriteOnly = 1,
354     AccessQualifierReadWrite = 2,
355     AccessQualifierMax = 0x7fffffff,
356 };
357 
358 enum FunctionParameterAttribute {
359     FunctionParameterAttributeZext = 0,
360     FunctionParameterAttributeSext = 1,
361     FunctionParameterAttributeByVal = 2,
362     FunctionParameterAttributeSret = 3,
363     FunctionParameterAttributeNoAlias = 4,
364     FunctionParameterAttributeNoCapture = 5,
365     FunctionParameterAttributeNoWrite = 6,
366     FunctionParameterAttributeNoReadWrite = 7,
367     FunctionParameterAttributeMax = 0x7fffffff,
368 };
369 
370 enum Decoration {
371     DecorationRelaxedPrecision = 0,
372     DecorationSpecId = 1,
373     DecorationBlock = 2,
374     DecorationBufferBlock = 3,
375     DecorationRowMajor = 4,
376     DecorationColMajor = 5,
377     DecorationArrayStride = 6,
378     DecorationMatrixStride = 7,
379     DecorationGLSLShared = 8,
380     DecorationGLSLPacked = 9,
381     DecorationCPacked = 10,
382     DecorationBuiltIn = 11,
383     DecorationNoPerspective = 13,
384     DecorationFlat = 14,
385     DecorationPatch = 15,
386     DecorationCentroid = 16,
387     DecorationSample = 17,
388     DecorationInvariant = 18,
389     DecorationRestrict = 19,
390     DecorationAliased = 20,
391     DecorationVolatile = 21,
392     DecorationConstant = 22,
393     DecorationCoherent = 23,
394     DecorationNonWritable = 24,
395     DecorationNonReadable = 25,
396     DecorationUniform = 26,
397     DecorationSaturatedConversion = 28,
398     DecorationStream = 29,
399     DecorationLocation = 30,
400     DecorationComponent = 31,
401     DecorationIndex = 32,
402     DecorationBinding = 33,
403     DecorationDescriptorSet = 34,
404     DecorationOffset = 35,
405     DecorationXfbBuffer = 36,
406     DecorationXfbStride = 37,
407     DecorationFuncParamAttr = 38,
408     DecorationFPRoundingMode = 39,
409     DecorationFPFastMathMode = 40,
410     DecorationLinkageAttributes = 41,
411     DecorationNoContraction = 42,
412     DecorationInputAttachmentIndex = 43,
413     DecorationAlignment = 44,
414     DecorationMaxByteOffset = 45,
415     DecorationAlignmentId = 46,
416     DecorationMaxByteOffsetId = 47,
417     DecorationExplicitInterpAMD = 4999,
418     DecorationOverrideCoverageNV = 5248,
419     DecorationPassthroughNV = 5250,
420     DecorationViewportRelativeNV = 5252,
421     DecorationSecondaryViewportRelativeNV = 5256,
422     DecorationPerPrimitiveNV = 5271,
423     DecorationPerViewNV = 5272,
424     DecorationPerTaskNV = 5273,
425     DecorationPerVertexNV = 5285,
426     DecorationNonUniformEXT = 5300,
427     DecorationHlslCounterBufferGOOGLE = 5634,
428     DecorationHlslSemanticGOOGLE = 5635,
429     DecorationMax = 0x7fffffff,
430 };
431 
432 enum BuiltIn {
433     BuiltInPosition = 0,
434     BuiltInPointSize = 1,
435     BuiltInClipDistance = 3,
436     BuiltInCullDistance = 4,
437     BuiltInVertexId = 5,
438     BuiltInInstanceId = 6,
439     BuiltInPrimitiveId = 7,
440     BuiltInInvocationId = 8,
441     BuiltInLayer = 9,
442     BuiltInViewportIndex = 10,
443     BuiltInTessLevelOuter = 11,
444     BuiltInTessLevelInner = 12,
445     BuiltInTessCoord = 13,
446     BuiltInPatchVertices = 14,
447     BuiltInFragCoord = 15,
448     BuiltInPointCoord = 16,
449     BuiltInFrontFacing = 17,
450     BuiltInSampleId = 18,
451     BuiltInSamplePosition = 19,
452     BuiltInSampleMask = 20,
453     BuiltInFragDepth = 22,
454     BuiltInHelperInvocation = 23,
455     BuiltInNumWorkgroups = 24,
456     BuiltInWorkgroupSize = 25,
457     BuiltInWorkgroupId = 26,
458     BuiltInLocalInvocationId = 27,
459     BuiltInGlobalInvocationId = 28,
460     BuiltInLocalInvocationIndex = 29,
461     BuiltInWorkDim = 30,
462     BuiltInGlobalSize = 31,
463     BuiltInEnqueuedWorkgroupSize = 32,
464     BuiltInGlobalOffset = 33,
465     BuiltInGlobalLinearId = 34,
466     BuiltInSubgroupSize = 36,
467     BuiltInSubgroupMaxSize = 37,
468     BuiltInNumSubgroups = 38,
469     BuiltInNumEnqueuedSubgroups = 39,
470     BuiltInSubgroupId = 40,
471     BuiltInSubgroupLocalInvocationId = 41,
472     BuiltInVertexIndex = 42,
473     BuiltInInstanceIndex = 43,
474     BuiltInSubgroupEqMask = 4416,
475     BuiltInSubgroupEqMaskKHR = 4416,
476     BuiltInSubgroupGeMask = 4417,
477     BuiltInSubgroupGeMaskKHR = 4417,
478     BuiltInSubgroupGtMask = 4418,
479     BuiltInSubgroupGtMaskKHR = 4418,
480     BuiltInSubgroupLeMask = 4419,
481     BuiltInSubgroupLeMaskKHR = 4419,
482     BuiltInSubgroupLtMask = 4420,
483     BuiltInSubgroupLtMaskKHR = 4420,
484     BuiltInBaseVertex = 4424,
485     BuiltInBaseInstance = 4425,
486     BuiltInDrawIndex = 4426,
487     BuiltInDeviceIndex = 4438,
488     BuiltInViewIndex = 4440,
489     BuiltInBaryCoordNoPerspAMD = 4992,
490     BuiltInBaryCoordNoPerspCentroidAMD = 4993,
491     BuiltInBaryCoordNoPerspSampleAMD = 4994,
492     BuiltInBaryCoordSmoothAMD = 4995,
493     BuiltInBaryCoordSmoothCentroidAMD = 4996,
494     BuiltInBaryCoordSmoothSampleAMD = 4997,
495     BuiltInBaryCoordPullModelAMD = 4998,
496     BuiltInFragStencilRefEXT = 5014,
497     BuiltInViewportMaskNV = 5253,
498     BuiltInSecondaryPositionNV = 5257,
499     BuiltInSecondaryViewportMaskNV = 5258,
500     BuiltInPositionPerViewNV = 5261,
501     BuiltInViewportMaskPerViewNV = 5262,
502     BuiltInFullyCoveredEXT = 5264,
503     BuiltInTaskCountNV = 5274,
504     BuiltInPrimitiveCountNV = 5275,
505     BuiltInPrimitiveIndicesNV = 5276,
506     BuiltInClipDistancePerViewNV = 5277,
507     BuiltInCullDistancePerViewNV = 5278,
508     BuiltInLayerPerViewNV = 5279,
509     BuiltInMeshViewCountNV = 5280,
510     BuiltInMeshViewIndicesNV = 5281,
511     BuiltInBaryCoordNV = 5286,
512     BuiltInBaryCoordNoPerspNV = 5287,
513     BuiltInFragmentSizeNV = 5292,
514     BuiltInInvocationsPerPixelNV = 5293,
515     BuiltInLaunchIdNVX = 5319,
516     BuiltInLaunchSizeNVX = 5320,
517     BuiltInWorldRayOriginNVX = 5321,
518     BuiltInWorldRayDirectionNVX = 5322,
519     BuiltInObjectRayOriginNVX = 5323,
520     BuiltInObjectRayDirectionNVX = 5324,
521     BuiltInRayTminNVX = 5325,
522     BuiltInRayTmaxNVX = 5326,
523     BuiltInInstanceCustomIndexNVX = 5327,
524     BuiltInObjectToWorldNVX = 5330,
525     BuiltInWorldToObjectNVX = 5331,
526     BuiltInHitTNVX = 5332,
527     BuiltInHitKindNVX = 5333,
528     BuiltInMax = 0x7fffffff,
529 };
530 
531 enum SelectionControlShift {
532     SelectionControlFlattenShift = 0,
533     SelectionControlDontFlattenShift = 1,
534     SelectionControlMax = 0x7fffffff,
535 };
536 
537 enum SelectionControlMask {
538     SelectionControlMaskNone = 0,
539     SelectionControlFlattenMask = 0x00000001,
540     SelectionControlDontFlattenMask = 0x00000002,
541 };
542 
543 enum LoopControlShift {
544     LoopControlUnrollShift = 0,
545     LoopControlDontUnrollShift = 1,
546     LoopControlDependencyInfiniteShift = 2,
547     LoopControlDependencyLengthShift = 3,
548     LoopControlMax = 0x7fffffff,
549 };
550 
551 enum LoopControlMask {
552     LoopControlMaskNone = 0,
553     LoopControlUnrollMask = 0x00000001,
554     LoopControlDontUnrollMask = 0x00000002,
555     LoopControlDependencyInfiniteMask = 0x00000004,
556     LoopControlDependencyLengthMask = 0x00000008,
557 };
558 
559 enum FunctionControlShift {
560     FunctionControlInlineShift = 0,
561     FunctionControlDontInlineShift = 1,
562     FunctionControlPureShift = 2,
563     FunctionControlConstShift = 3,
564     FunctionControlMax = 0x7fffffff,
565 };
566 
567 enum FunctionControlMask {
568     FunctionControlMaskNone = 0,
569     FunctionControlInlineMask = 0x00000001,
570     FunctionControlDontInlineMask = 0x00000002,
571     FunctionControlPureMask = 0x00000004,
572     FunctionControlConstMask = 0x00000008,
573 };
574 
575 enum MemorySemanticsShift {
576     MemorySemanticsAcquireShift = 1,
577     MemorySemanticsReleaseShift = 2,
578     MemorySemanticsAcquireReleaseShift = 3,
579     MemorySemanticsSequentiallyConsistentShift = 4,
580     MemorySemanticsUniformMemoryShift = 6,
581     MemorySemanticsSubgroupMemoryShift = 7,
582     MemorySemanticsWorkgroupMemoryShift = 8,
583     MemorySemanticsCrossWorkgroupMemoryShift = 9,
584     MemorySemanticsAtomicCounterMemoryShift = 10,
585     MemorySemanticsImageMemoryShift = 11,
586     MemorySemanticsOutputMemoryKHRShift = 12,
587     MemorySemanticsMakeAvailableKHRShift = 13,
588     MemorySemanticsMakeVisibleKHRShift = 14,
589     MemorySemanticsMax = 0x7fffffff,
590 };
591 
592 enum MemorySemanticsMask {
593     MemorySemanticsMaskNone = 0,
594     MemorySemanticsAcquireMask = 0x00000002,
595     MemorySemanticsReleaseMask = 0x00000004,
596     MemorySemanticsAcquireReleaseMask = 0x00000008,
597     MemorySemanticsSequentiallyConsistentMask = 0x00000010,
598     MemorySemanticsUniformMemoryMask = 0x00000040,
599     MemorySemanticsSubgroupMemoryMask = 0x00000080,
600     MemorySemanticsWorkgroupMemoryMask = 0x00000100,
601     MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
602     MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
603     MemorySemanticsImageMemoryMask = 0x00000800,
604     MemorySemanticsOutputMemoryKHRMask = 0x00001000,
605     MemorySemanticsMakeAvailableKHRMask = 0x00002000,
606     MemorySemanticsMakeVisibleKHRMask = 0x00004000,
607 };
608 
609 enum MemoryAccessShift {
610     MemoryAccessVolatileShift = 0,
611     MemoryAccessAlignedShift = 1,
612     MemoryAccessNontemporalShift = 2,
613     MemoryAccessMakePointerAvailableKHRShift = 3,
614     MemoryAccessMakePointerVisibleKHRShift = 4,
615     MemoryAccessNonPrivatePointerKHRShift = 5,
616     MemoryAccessMax = 0x7fffffff,
617 };
618 
619 enum MemoryAccessMask {
620     MemoryAccessMaskNone = 0,
621     MemoryAccessVolatileMask = 0x00000001,
622     MemoryAccessAlignedMask = 0x00000002,
623     MemoryAccessNontemporalMask = 0x00000004,
624     MemoryAccessMakePointerAvailableKHRMask = 0x00000008,
625     MemoryAccessMakePointerVisibleKHRMask = 0x00000010,
626     MemoryAccessNonPrivatePointerKHRMask = 0x00000020,
627 };
628 
629 enum Scope {
630     ScopeCrossDevice = 0,
631     ScopeDevice = 1,
632     ScopeWorkgroup = 2,
633     ScopeSubgroup = 3,
634     ScopeInvocation = 4,
635     ScopeQueueFamilyKHR = 5,
636     ScopeMax = 0x7fffffff,
637 };
638 
639 enum GroupOperation {
640     GroupOperationReduce = 0,
641     GroupOperationInclusiveScan = 1,
642     GroupOperationExclusiveScan = 2,
643     GroupOperationClusteredReduce = 3,
644     GroupOperationPartitionedReduceNV = 6,
645     GroupOperationPartitionedInclusiveScanNV = 7,
646     GroupOperationPartitionedExclusiveScanNV = 8,
647     GroupOperationMax = 0x7fffffff,
648 };
649 
650 enum KernelEnqueueFlags {
651     KernelEnqueueFlagsNoWait = 0,
652     KernelEnqueueFlagsWaitKernel = 1,
653     KernelEnqueueFlagsWaitWorkGroup = 2,
654     KernelEnqueueFlagsMax = 0x7fffffff,
655 };
656 
657 enum KernelProfilingInfoShift {
658     KernelProfilingInfoCmdExecTimeShift = 0,
659     KernelProfilingInfoMax = 0x7fffffff,
660 };
661 
662 enum KernelProfilingInfoMask {
663     KernelProfilingInfoMaskNone = 0,
664     KernelProfilingInfoCmdExecTimeMask = 0x00000001,
665 };
666 
667 enum Capability {
668     CapabilityMatrix = 0,
669     CapabilityShader = 1,
670     CapabilityGeometry = 2,
671     CapabilityTessellation = 3,
672     CapabilityAddresses = 4,
673     CapabilityLinkage = 5,
674     CapabilityKernel = 6,
675     CapabilityVector16 = 7,
676     CapabilityFloat16Buffer = 8,
677     CapabilityFloat16 = 9,
678     CapabilityFloat64 = 10,
679     CapabilityInt64 = 11,
680     CapabilityInt64Atomics = 12,
681     CapabilityImageBasic = 13,
682     CapabilityImageReadWrite = 14,
683     CapabilityImageMipmap = 15,
684     CapabilityPipes = 17,
685     CapabilityGroups = 18,
686     CapabilityDeviceEnqueue = 19,
687     CapabilityLiteralSampler = 20,
688     CapabilityAtomicStorage = 21,
689     CapabilityInt16 = 22,
690     CapabilityTessellationPointSize = 23,
691     CapabilityGeometryPointSize = 24,
692     CapabilityImageGatherExtended = 25,
693     CapabilityStorageImageMultisample = 27,
694     CapabilityUniformBufferArrayDynamicIndexing = 28,
695     CapabilitySampledImageArrayDynamicIndexing = 29,
696     CapabilityStorageBufferArrayDynamicIndexing = 30,
697     CapabilityStorageImageArrayDynamicIndexing = 31,
698     CapabilityClipDistance = 32,
699     CapabilityCullDistance = 33,
700     CapabilityImageCubeArray = 34,
701     CapabilitySampleRateShading = 35,
702     CapabilityImageRect = 36,
703     CapabilitySampledRect = 37,
704     CapabilityGenericPointer = 38,
705     CapabilityInt8 = 39,
706     CapabilityInputAttachment = 40,
707     CapabilitySparseResidency = 41,
708     CapabilityMinLod = 42,
709     CapabilitySampled1D = 43,
710     CapabilityImage1D = 44,
711     CapabilitySampledCubeArray = 45,
712     CapabilitySampledBuffer = 46,
713     CapabilityImageBuffer = 47,
714     CapabilityImageMSArray = 48,
715     CapabilityStorageImageExtendedFormats = 49,
716     CapabilityImageQuery = 50,
717     CapabilityDerivativeControl = 51,
718     CapabilityInterpolationFunction = 52,
719     CapabilityTransformFeedback = 53,
720     CapabilityGeometryStreams = 54,
721     CapabilityStorageImageReadWithoutFormat = 55,
722     CapabilityStorageImageWriteWithoutFormat = 56,
723     CapabilityMultiViewport = 57,
724     CapabilitySubgroupDispatch = 58,
725     CapabilityNamedBarrier = 59,
726     CapabilityPipeStorage = 60,
727     CapabilityGroupNonUniform = 61,
728     CapabilityGroupNonUniformVote = 62,
729     CapabilityGroupNonUniformArithmetic = 63,
730     CapabilityGroupNonUniformBallot = 64,
731     CapabilityGroupNonUniformShuffle = 65,
732     CapabilityGroupNonUniformShuffleRelative = 66,
733     CapabilityGroupNonUniformClustered = 67,
734     CapabilityGroupNonUniformQuad = 68,
735     CapabilitySubgroupBallotKHR = 4423,
736     CapabilityDrawParameters = 4427,
737     CapabilitySubgroupVoteKHR = 4431,
738     CapabilityStorageBuffer16BitAccess = 4433,
739     CapabilityStorageUniformBufferBlock16 = 4433,
740     CapabilityStorageUniform16 = 4434,
741     CapabilityUniformAndStorageBuffer16BitAccess = 4434,
742     CapabilityStoragePushConstant16 = 4435,
743     CapabilityStorageInputOutput16 = 4436,
744     CapabilityDeviceGroup = 4437,
745     CapabilityMultiView = 4439,
746     CapabilityVariablePointersStorageBuffer = 4441,
747     CapabilityVariablePointers = 4442,
748     CapabilityAtomicStorageOps = 4445,
749     CapabilitySampleMaskPostDepthCoverage = 4447,
750     CapabilityStorageBuffer8BitAccess = 4448,
751     CapabilityUniformAndStorageBuffer8BitAccess = 4449,
752     CapabilityStoragePushConstant8 = 4450,
753     CapabilityFloat16ImageAMD = 5008,
754     CapabilityImageGatherBiasLodAMD = 5009,
755     CapabilityFragmentMaskAMD = 5010,
756     CapabilityStencilExportEXT = 5013,
757     CapabilityImageReadWriteLodAMD = 5015,
758     CapabilitySampleMaskOverrideCoverageNV = 5249,
759     CapabilityGeometryShaderPassthroughNV = 5251,
760     CapabilityShaderViewportIndexLayerEXT = 5254,
761     CapabilityShaderViewportIndexLayerNV = 5254,
762     CapabilityShaderViewportMaskNV = 5255,
763     CapabilityShaderStereoViewNV = 5259,
764     CapabilityPerViewAttributesNV = 5260,
765     CapabilityFragmentFullyCoveredEXT = 5265,
766     CapabilityMeshShadingNV = 5266,
767     CapabilityImageFootprintNV = 5282,
768     CapabilityFragmentBarycentricNV = 5284,
769     CapabilityComputeDerivativeGroupQuadsNV = 5288,
770     CapabilityShadingRateNV = 5291,
771     CapabilityGroupNonUniformPartitionedNV = 5297,
772     CapabilityShaderNonUniformEXT = 5301,
773     CapabilityRuntimeDescriptorArrayEXT = 5302,
774     CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
775     CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
776     CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
777     CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
778     CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
779     CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
780     CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
781     CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
782     CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
783     CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
784     CapabilityRaytracingNVX = 5340,
785     CapabilityVulkanMemoryModelKHR = 5345,
786     CapabilityVulkanMemoryModelDeviceScopeKHR = 5346,
787     CapabilityComputeDerivativeGroupLinearNV = 5350,
788     CapabilitySubgroupShuffleINTEL = 5568,
789     CapabilitySubgroupBufferBlockIOINTEL = 5569,
790     CapabilitySubgroupImageBlockIOINTEL = 5570,
791     CapabilityMax = 0x7fffffff,
792 };
793 
794 enum Op {
795     OpNop = 0,
796     OpUndef = 1,
797     OpSourceContinued = 2,
798     OpSource = 3,
799     OpSourceExtension = 4,
800     OpName = 5,
801     OpMemberName = 6,
802     OpString = 7,
803     OpLine = 8,
804     OpExtension = 10,
805     OpExtInstImport = 11,
806     OpExtInst = 12,
807     OpMemoryModel = 14,
808     OpEntryPoint = 15,
809     OpExecutionMode = 16,
810     OpCapability = 17,
811     OpTypeVoid = 19,
812     OpTypeBool = 20,
813     OpTypeInt = 21,
814     OpTypeFloat = 22,
815     OpTypeVector = 23,
816     OpTypeMatrix = 24,
817     OpTypeImage = 25,
818     OpTypeSampler = 26,
819     OpTypeSampledImage = 27,
820     OpTypeArray = 28,
821     OpTypeRuntimeArray = 29,
822     OpTypeStruct = 30,
823     OpTypeOpaque = 31,
824     OpTypePointer = 32,
825     OpTypeFunction = 33,
826     OpTypeEvent = 34,
827     OpTypeDeviceEvent = 35,
828     OpTypeReserveId = 36,
829     OpTypeQueue = 37,
830     OpTypePipe = 38,
831     OpTypeForwardPointer = 39,
832     OpConstantTrue = 41,
833     OpConstantFalse = 42,
834     OpConstant = 43,
835     OpConstantComposite = 44,
836     OpConstantSampler = 45,
837     OpConstantNull = 46,
838     OpSpecConstantTrue = 48,
839     OpSpecConstantFalse = 49,
840     OpSpecConstant = 50,
841     OpSpecConstantComposite = 51,
842     OpSpecConstantOp = 52,
843     OpFunction = 54,
844     OpFunctionParameter = 55,
845     OpFunctionEnd = 56,
846     OpFunctionCall = 57,
847     OpVariable = 59,
848     OpImageTexelPointer = 60,
849     OpLoad = 61,
850     OpStore = 62,
851     OpCopyMemory = 63,
852     OpCopyMemorySized = 64,
853     OpAccessChain = 65,
854     OpInBoundsAccessChain = 66,
855     OpPtrAccessChain = 67,
856     OpArrayLength = 68,
857     OpGenericPtrMemSemantics = 69,
858     OpInBoundsPtrAccessChain = 70,
859     OpDecorate = 71,
860     OpMemberDecorate = 72,
861     OpDecorationGroup = 73,
862     OpGroupDecorate = 74,
863     OpGroupMemberDecorate = 75,
864     OpVectorExtractDynamic = 77,
865     OpVectorInsertDynamic = 78,
866     OpVectorShuffle = 79,
867     OpCompositeConstruct = 80,
868     OpCompositeExtract = 81,
869     OpCompositeInsert = 82,
870     OpCopyObject = 83,
871     OpTranspose = 84,
872     OpSampledImage = 86,
873     OpImageSampleImplicitLod = 87,
874     OpImageSampleExplicitLod = 88,
875     OpImageSampleDrefImplicitLod = 89,
876     OpImageSampleDrefExplicitLod = 90,
877     OpImageSampleProjImplicitLod = 91,
878     OpImageSampleProjExplicitLod = 92,
879     OpImageSampleProjDrefImplicitLod = 93,
880     OpImageSampleProjDrefExplicitLod = 94,
881     OpImageFetch = 95,
882     OpImageGather = 96,
883     OpImageDrefGather = 97,
884     OpImageRead = 98,
885     OpImageWrite = 99,
886     OpImage = 100,
887     OpImageQueryFormat = 101,
888     OpImageQueryOrder = 102,
889     OpImageQuerySizeLod = 103,
890     OpImageQuerySize = 104,
891     OpImageQueryLod = 105,
892     OpImageQueryLevels = 106,
893     OpImageQuerySamples = 107,
894     OpConvertFToU = 109,
895     OpConvertFToS = 110,
896     OpConvertSToF = 111,
897     OpConvertUToF = 112,
898     OpUConvert = 113,
899     OpSConvert = 114,
900     OpFConvert = 115,
901     OpQuantizeToF16 = 116,
902     OpConvertPtrToU = 117,
903     OpSatConvertSToU = 118,
904     OpSatConvertUToS = 119,
905     OpConvertUToPtr = 120,
906     OpPtrCastToGeneric = 121,
907     OpGenericCastToPtr = 122,
908     OpGenericCastToPtrExplicit = 123,
909     OpBitcast = 124,
910     OpSNegate = 126,
911     OpFNegate = 127,
912     OpIAdd = 128,
913     OpFAdd = 129,
914     OpISub = 130,
915     OpFSub = 131,
916     OpIMul = 132,
917     OpFMul = 133,
918     OpUDiv = 134,
919     OpSDiv = 135,
920     OpFDiv = 136,
921     OpUMod = 137,
922     OpSRem = 138,
923     OpSMod = 139,
924     OpFRem = 140,
925     OpFMod = 141,
926     OpVectorTimesScalar = 142,
927     OpMatrixTimesScalar = 143,
928     OpVectorTimesMatrix = 144,
929     OpMatrixTimesVector = 145,
930     OpMatrixTimesMatrix = 146,
931     OpOuterProduct = 147,
932     OpDot = 148,
933     OpIAddCarry = 149,
934     OpISubBorrow = 150,
935     OpUMulExtended = 151,
936     OpSMulExtended = 152,
937     OpAny = 154,
938     OpAll = 155,
939     OpIsNan = 156,
940     OpIsInf = 157,
941     OpIsFinite = 158,
942     OpIsNormal = 159,
943     OpSignBitSet = 160,
944     OpLessOrGreater = 161,
945     OpOrdered = 162,
946     OpUnordered = 163,
947     OpLogicalEqual = 164,
948     OpLogicalNotEqual = 165,
949     OpLogicalOr = 166,
950     OpLogicalAnd = 167,
951     OpLogicalNot = 168,
952     OpSelect = 169,
953     OpIEqual = 170,
954     OpINotEqual = 171,
955     OpUGreaterThan = 172,
956     OpSGreaterThan = 173,
957     OpUGreaterThanEqual = 174,
958     OpSGreaterThanEqual = 175,
959     OpULessThan = 176,
960     OpSLessThan = 177,
961     OpULessThanEqual = 178,
962     OpSLessThanEqual = 179,
963     OpFOrdEqual = 180,
964     OpFUnordEqual = 181,
965     OpFOrdNotEqual = 182,
966     OpFUnordNotEqual = 183,
967     OpFOrdLessThan = 184,
968     OpFUnordLessThan = 185,
969     OpFOrdGreaterThan = 186,
970     OpFUnordGreaterThan = 187,
971     OpFOrdLessThanEqual = 188,
972     OpFUnordLessThanEqual = 189,
973     OpFOrdGreaterThanEqual = 190,
974     OpFUnordGreaterThanEqual = 191,
975     OpShiftRightLogical = 194,
976     OpShiftRightArithmetic = 195,
977     OpShiftLeftLogical = 196,
978     OpBitwiseOr = 197,
979     OpBitwiseXor = 198,
980     OpBitwiseAnd = 199,
981     OpNot = 200,
982     OpBitFieldInsert = 201,
983     OpBitFieldSExtract = 202,
984     OpBitFieldUExtract = 203,
985     OpBitReverse = 204,
986     OpBitCount = 205,
987     OpDPdx = 207,
988     OpDPdy = 208,
989     OpFwidth = 209,
990     OpDPdxFine = 210,
991     OpDPdyFine = 211,
992     OpFwidthFine = 212,
993     OpDPdxCoarse = 213,
994     OpDPdyCoarse = 214,
995     OpFwidthCoarse = 215,
996     OpEmitVertex = 218,
997     OpEndPrimitive = 219,
998     OpEmitStreamVertex = 220,
999     OpEndStreamPrimitive = 221,
1000     OpControlBarrier = 224,
1001     OpMemoryBarrier = 225,
1002     OpAtomicLoad = 227,
1003     OpAtomicStore = 228,
1004     OpAtomicExchange = 229,
1005     OpAtomicCompareExchange = 230,
1006     OpAtomicCompareExchangeWeak = 231,
1007     OpAtomicIIncrement = 232,
1008     OpAtomicIDecrement = 233,
1009     OpAtomicIAdd = 234,
1010     OpAtomicISub = 235,
1011     OpAtomicSMin = 236,
1012     OpAtomicUMin = 237,
1013     OpAtomicSMax = 238,
1014     OpAtomicUMax = 239,
1015     OpAtomicAnd = 240,
1016     OpAtomicOr = 241,
1017     OpAtomicXor = 242,
1018     OpPhi = 245,
1019     OpLoopMerge = 246,
1020     OpSelectionMerge = 247,
1021     OpLabel = 248,
1022     OpBranch = 249,
1023     OpBranchConditional = 250,
1024     OpSwitch = 251,
1025     OpKill = 252,
1026     OpReturn = 253,
1027     OpReturnValue = 254,
1028     OpUnreachable = 255,
1029     OpLifetimeStart = 256,
1030     OpLifetimeStop = 257,
1031     OpGroupAsyncCopy = 259,
1032     OpGroupWaitEvents = 260,
1033     OpGroupAll = 261,
1034     OpGroupAny = 262,
1035     OpGroupBroadcast = 263,
1036     OpGroupIAdd = 264,
1037     OpGroupFAdd = 265,
1038     OpGroupFMin = 266,
1039     OpGroupUMin = 267,
1040     OpGroupSMin = 268,
1041     OpGroupFMax = 269,
1042     OpGroupUMax = 270,
1043     OpGroupSMax = 271,
1044     OpReadPipe = 274,
1045     OpWritePipe = 275,
1046     OpReservedReadPipe = 276,
1047     OpReservedWritePipe = 277,
1048     OpReserveReadPipePackets = 278,
1049     OpReserveWritePipePackets = 279,
1050     OpCommitReadPipe = 280,
1051     OpCommitWritePipe = 281,
1052     OpIsValidReserveId = 282,
1053     OpGetNumPipePackets = 283,
1054     OpGetMaxPipePackets = 284,
1055     OpGroupReserveReadPipePackets = 285,
1056     OpGroupReserveWritePipePackets = 286,
1057     OpGroupCommitReadPipe = 287,
1058     OpGroupCommitWritePipe = 288,
1059     OpEnqueueMarker = 291,
1060     OpEnqueueKernel = 292,
1061     OpGetKernelNDrangeSubGroupCount = 293,
1062     OpGetKernelNDrangeMaxSubGroupSize = 294,
1063     OpGetKernelWorkGroupSize = 295,
1064     OpGetKernelPreferredWorkGroupSizeMultiple = 296,
1065     OpRetainEvent = 297,
1066     OpReleaseEvent = 298,
1067     OpCreateUserEvent = 299,
1068     OpIsValidEvent = 300,
1069     OpSetUserEventStatus = 301,
1070     OpCaptureEventProfilingInfo = 302,
1071     OpGetDefaultQueue = 303,
1072     OpBuildNDRange = 304,
1073     OpImageSparseSampleImplicitLod = 305,
1074     OpImageSparseSampleExplicitLod = 306,
1075     OpImageSparseSampleDrefImplicitLod = 307,
1076     OpImageSparseSampleDrefExplicitLod = 308,
1077     OpImageSparseSampleProjImplicitLod = 309,
1078     OpImageSparseSampleProjExplicitLod = 310,
1079     OpImageSparseSampleProjDrefImplicitLod = 311,
1080     OpImageSparseSampleProjDrefExplicitLod = 312,
1081     OpImageSparseFetch = 313,
1082     OpImageSparseGather = 314,
1083     OpImageSparseDrefGather = 315,
1084     OpImageSparseTexelsResident = 316,
1085     OpNoLine = 317,
1086     OpAtomicFlagTestAndSet = 318,
1087     OpAtomicFlagClear = 319,
1088     OpImageSparseRead = 320,
1089     OpSizeOf = 321,
1090     OpTypePipeStorage = 322,
1091     OpConstantPipeStorage = 323,
1092     OpCreatePipeFromPipeStorage = 324,
1093     OpGetKernelLocalSizeForSubgroupCount = 325,
1094     OpGetKernelMaxNumSubgroups = 326,
1095     OpTypeNamedBarrier = 327,
1096     OpNamedBarrierInitialize = 328,
1097     OpMemoryNamedBarrier = 329,
1098     OpModuleProcessed = 330,
1099     OpExecutionModeId = 331,
1100     OpDecorateId = 332,
1101     OpGroupNonUniformElect = 333,
1102     OpGroupNonUniformAll = 334,
1103     OpGroupNonUniformAny = 335,
1104     OpGroupNonUniformAllEqual = 336,
1105     OpGroupNonUniformBroadcast = 337,
1106     OpGroupNonUniformBroadcastFirst = 338,
1107     OpGroupNonUniformBallot = 339,
1108     OpGroupNonUniformInverseBallot = 340,
1109     OpGroupNonUniformBallotBitExtract = 341,
1110     OpGroupNonUniformBallotBitCount = 342,
1111     OpGroupNonUniformBallotFindLSB = 343,
1112     OpGroupNonUniformBallotFindMSB = 344,
1113     OpGroupNonUniformShuffle = 345,
1114     OpGroupNonUniformShuffleXor = 346,
1115     OpGroupNonUniformShuffleUp = 347,
1116     OpGroupNonUniformShuffleDown = 348,
1117     OpGroupNonUniformIAdd = 349,
1118     OpGroupNonUniformFAdd = 350,
1119     OpGroupNonUniformIMul = 351,
1120     OpGroupNonUniformFMul = 352,
1121     OpGroupNonUniformSMin = 353,
1122     OpGroupNonUniformUMin = 354,
1123     OpGroupNonUniformFMin = 355,
1124     OpGroupNonUniformSMax = 356,
1125     OpGroupNonUniformUMax = 357,
1126     OpGroupNonUniformFMax = 358,
1127     OpGroupNonUniformBitwiseAnd = 359,
1128     OpGroupNonUniformBitwiseOr = 360,
1129     OpGroupNonUniformBitwiseXor = 361,
1130     OpGroupNonUniformLogicalAnd = 362,
1131     OpGroupNonUniformLogicalOr = 363,
1132     OpGroupNonUniformLogicalXor = 364,
1133     OpGroupNonUniformQuadBroadcast = 365,
1134     OpGroupNonUniformQuadSwap = 366,
1135     OpSubgroupBallotKHR = 4421,
1136     OpSubgroupFirstInvocationKHR = 4422,
1137     OpSubgroupAllKHR = 4428,
1138     OpSubgroupAnyKHR = 4429,
1139     OpSubgroupAllEqualKHR = 4430,
1140     OpSubgroupReadInvocationKHR = 4432,
1141     OpGroupIAddNonUniformAMD = 5000,
1142     OpGroupFAddNonUniformAMD = 5001,
1143     OpGroupFMinNonUniformAMD = 5002,
1144     OpGroupUMinNonUniformAMD = 5003,
1145     OpGroupSMinNonUniformAMD = 5004,
1146     OpGroupFMaxNonUniformAMD = 5005,
1147     OpGroupUMaxNonUniformAMD = 5006,
1148     OpGroupSMaxNonUniformAMD = 5007,
1149     OpFragmentMaskFetchAMD = 5011,
1150     OpFragmentFetchAMD = 5012,
1151     OpImageSampleFootprintNV = 5283,
1152     OpGroupNonUniformPartitionNV = 5296,
1153     OpWritePackedPrimitiveIndices4x8NV = 5299,
1154     OpReportIntersectionNVX = 5334,
1155     OpIgnoreIntersectionNVX = 5335,
1156     OpTerminateRayNVX = 5336,
1157     OpTraceNVX = 5337,
1158     OpTypeAccelerationStructureNVX = 5341,
1159     OpSubgroupShuffleINTEL = 5571,
1160     OpSubgroupShuffleDownINTEL = 5572,
1161     OpSubgroupShuffleUpINTEL = 5573,
1162     OpSubgroupShuffleXorINTEL = 5574,
1163     OpSubgroupBlockReadINTEL = 5575,
1164     OpSubgroupBlockWriteINTEL = 5576,
1165     OpSubgroupImageBlockReadINTEL = 5577,
1166     OpSubgroupImageBlockWriteINTEL = 5578,
1167     OpDecorateStringGOOGLE = 5632,
1168     OpMemberDecorateStringGOOGLE = 5633,
1169     OpMax = 0x7fffffff,
1170 };
1171 
1172 // Overload operator| for mask bit combining
1173 
operator |(ImageOperandsMask a,ImageOperandsMask b)1174 inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
operator |(FPFastMathModeMask a,FPFastMathModeMask b)1175 inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
operator |(SelectionControlMask a,SelectionControlMask b)1176 inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
operator |(LoopControlMask a,LoopControlMask b)1177 inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
operator |(FunctionControlMask a,FunctionControlMask b)1178 inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
operator |(MemorySemanticsMask a,MemorySemanticsMask b)1179 inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
operator |(MemoryAccessMask a,MemoryAccessMask b)1180 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
operator |(KernelProfilingInfoMask a,KernelProfilingInfoMask b)1181 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
1182 
1183 }  // end namespace spv
1184 
1185 #endif  // #ifndef spirv_HPP
1186 
1187