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