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