• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /+
2  + Copyright (c) 2014-2019 The Khronos Group Inc.
3  +
4  + Permission is hereby granted, free of charge, to any person obtaining a copy
5  + of this software and/or associated documentation files (the "Materials"),
6  + to deal in the Materials without restriction, including without limitation
7  + the rights to use, copy, modify, merge, publish, distribute, sublicense,
8  + and/or sell copies of the Materials, and to permit persons to whom the
9  + Materials are furnished to do so, subject to the following conditions:
10  +
11  + The above copyright notice and this permission notice shall be included in
12  + all copies or substantial portions of the Materials.
13  +
14  + MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15  + STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16  + HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
17  +
18  + THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19  + OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20  + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21  + THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22  + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23  + FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
24  + IN THE MATERIALS.
25  +/
26 
27 /+
28  + This header is automatically generated by the same tool that creates
29  + the Binary Section of the SPIR-V specification.
30  +/
31 
32 /+
33  + Enumeration tokens for SPIR-V, in various styles:
34  +   C, C++, C++11, JSON, Lua, Python, C#, D
35  +
36  + - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
37  + - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
38  + - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
39  + - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
40  + - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
41  + - C# will use enum classes in the Specification class located in the "Spv" namespace,
42  +     e.g.: Spv.Specification.SourceLanguage.GLSL
43  + - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
44  +
45  + Some tokens act like mask values, which can be OR'd together,
46  + while others are mutually exclusive.  The mask-like ones have
47  + "Mask" in their name, and a parallel enum that has the shift
48  + amount (1 << x) for each corresponding enumerant.
49  +/
50 
51 module spv;
52 
53 enum uint MagicNumber = 0x07230203;
54 enum uint Version = 0x00010300;
55 enum uint Revision = 6;
56 enum uint OpCodeMask = 0xffff;
57 enum uint WordCountShift = 16;
58 
59 enum SourceLanguage : uint
60 {
61     Unknown = 0,
62     ESSL = 1,
63     GLSL = 2,
64     OpenCL_C = 3,
65     OpenCL_CPP = 4,
66     HLSL = 5,
67 }
68 
69 enum ExecutionModel : uint
70 {
71     Vertex = 0,
72     TessellationControl = 1,
73     TessellationEvaluation = 2,
74     Geometry = 3,
75     Fragment = 4,
76     GLCompute = 5,
77     Kernel = 6,
78     TaskNV = 5267,
79     MeshNV = 5268,
80     RayGenerationNV = 5313,
81     IntersectionNV = 5314,
82     AnyHitNV = 5315,
83     ClosestHitNV = 5316,
84     MissNV = 5317,
85     CallableNV = 5318,
86 }
87 
88 enum AddressingModel : uint
89 {
90     Logical = 0,
91     Physical32 = 1,
92     Physical64 = 2,
93     PhysicalStorageBuffer64EXT = 5348,
94 }
95 
96 enum MemoryModel : uint
97 {
98     Simple = 0,
99     GLSL450 = 1,
100     OpenCL = 2,
101     VulkanKHR = 3,
102 }
103 
104 enum ExecutionMode : uint
105 {
106     Invocations = 0,
107     SpacingEqual = 1,
108     SpacingFractionalEven = 2,
109     SpacingFractionalOdd = 3,
110     VertexOrderCw = 4,
111     VertexOrderCcw = 5,
112     PixelCenterInteger = 6,
113     OriginUpperLeft = 7,
114     OriginLowerLeft = 8,
115     EarlyFragmentTests = 9,
116     PointMode = 10,
117     Xfb = 11,
118     DepthReplacing = 12,
119     DepthGreater = 14,
120     DepthLess = 15,
121     DepthUnchanged = 16,
122     LocalSize = 17,
123     LocalSizeHint = 18,
124     InputPoints = 19,
125     InputLines = 20,
126     InputLinesAdjacency = 21,
127     Triangles = 22,
128     InputTrianglesAdjacency = 23,
129     Quads = 24,
130     Isolines = 25,
131     OutputVertices = 26,
132     OutputPoints = 27,
133     OutputLineStrip = 28,
134     OutputTriangleStrip = 29,
135     VecTypeHint = 30,
136     ContractionOff = 31,
137     Initializer = 33,
138     Finalizer = 34,
139     SubgroupSize = 35,
140     SubgroupsPerWorkgroup = 36,
141     SubgroupsPerWorkgroupId = 37,
142     LocalSizeId = 38,
143     LocalSizeHintId = 39,
144     PostDepthCoverage = 4446,
145     DenormPreserve = 4459,
146     DenormFlushToZero = 4460,
147     SignedZeroInfNanPreserve = 4461,
148     RoundingModeRTE = 4462,
149     RoundingModeRTZ = 4463,
150     StencilRefReplacingEXT = 5027,
151     OutputLinesNV = 5269,
152     OutputPrimitivesNV = 5270,
153     DerivativeGroupQuadsNV = 5289,
154     DerivativeGroupLinearNV = 5290,
155     OutputTrianglesNV = 5298,
156 }
157 
158 enum StorageClass : uint
159 {
160     UniformConstant = 0,
161     Input = 1,
162     Uniform = 2,
163     Output = 3,
164     Workgroup = 4,
165     CrossWorkgroup = 5,
166     Private = 6,
167     Function = 7,
168     Generic = 8,
169     PushConstant = 9,
170     AtomicCounter = 10,
171     Image = 11,
172     StorageBuffer = 12,
173     CallableDataNV = 5328,
174     IncomingCallableDataNV = 5329,
175     RayPayloadNV = 5338,
176     HitAttributeNV = 5339,
177     IncomingRayPayloadNV = 5342,
178     ShaderRecordBufferNV = 5343,
179     PhysicalStorageBufferEXT = 5349,
180 }
181 
182 enum Dim : uint
183 {
184     _1D = 0,
185     _2D = 1,
186     _3D = 2,
187     Cube = 3,
188     Rect = 4,
189     Buffer = 5,
190     SubpassData = 6,
191 }
192 
193 enum SamplerAddressingMode : uint
194 {
195     None = 0,
196     ClampToEdge = 1,
197     Clamp = 2,
198     Repeat = 3,
199     RepeatMirrored = 4,
200 }
201 
202 enum SamplerFilterMode : uint
203 {
204     Nearest = 0,
205     Linear = 1,
206 }
207 
208 enum ImageFormat : uint
209 {
210     Unknown = 0,
211     Rgba32f = 1,
212     Rgba16f = 2,
213     R32f = 3,
214     Rgba8 = 4,
215     Rgba8Snorm = 5,
216     Rg32f = 6,
217     Rg16f = 7,
218     R11fG11fB10f = 8,
219     R16f = 9,
220     Rgba16 = 10,
221     Rgb10A2 = 11,
222     Rg16 = 12,
223     Rg8 = 13,
224     R16 = 14,
225     R8 = 15,
226     Rgba16Snorm = 16,
227     Rg16Snorm = 17,
228     Rg8Snorm = 18,
229     R16Snorm = 19,
230     R8Snorm = 20,
231     Rgba32i = 21,
232     Rgba16i = 22,
233     Rgba8i = 23,
234     R32i = 24,
235     Rg32i = 25,
236     Rg16i = 26,
237     Rg8i = 27,
238     R16i = 28,
239     R8i = 29,
240     Rgba32ui = 30,
241     Rgba16ui = 31,
242     Rgba8ui = 32,
243     R32ui = 33,
244     Rgb10a2ui = 34,
245     Rg32ui = 35,
246     Rg16ui = 36,
247     Rg8ui = 37,
248     R16ui = 38,
249     R8ui = 39,
250 }
251 
252 enum ImageChannelOrder : uint
253 {
254     R = 0,
255     A = 1,
256     RG = 2,
257     RA = 3,
258     RGB = 4,
259     RGBA = 5,
260     BGRA = 6,
261     ARGB = 7,
262     Intensity = 8,
263     Luminance = 9,
264     Rx = 10,
265     RGx = 11,
266     RGBx = 12,
267     Depth = 13,
268     DepthStencil = 14,
269     sRGB = 15,
270     sRGBx = 16,
271     sRGBA = 17,
272     sBGRA = 18,
273     ABGR = 19,
274 }
275 
276 enum ImageChannelDataType : uint
277 {
278     SnormInt8 = 0,
279     SnormInt16 = 1,
280     UnormInt8 = 2,
281     UnormInt16 = 3,
282     UnormShort565 = 4,
283     UnormShort555 = 5,
284     UnormInt101010 = 6,
285     SignedInt8 = 7,
286     SignedInt16 = 8,
287     SignedInt32 = 9,
288     UnsignedInt8 = 10,
289     UnsignedInt16 = 11,
290     UnsignedInt32 = 12,
291     HalfFloat = 13,
292     Float = 14,
293     UnormInt24 = 15,
294     UnormInt101010_2 = 16,
295 }
296 
297 enum ImageOperandsShift : uint
298 {
299     Bias = 0,
300     Lod = 1,
301     Grad = 2,
302     ConstOffset = 3,
303     Offset = 4,
304     ConstOffsets = 5,
305     Sample = 6,
306     MinLod = 7,
307     MakeTexelAvailableKHR = 8,
308     MakeTexelVisibleKHR = 9,
309     NonPrivateTexelKHR = 10,
310     VolatileTexelKHR = 11,
311 }
312 
313 enum ImageOperandsMask : uint
314 {
315     MaskNone = 0,
316     Bias = 0x00000001,
317     Lod = 0x00000002,
318     Grad = 0x00000004,
319     ConstOffset = 0x00000008,
320     Offset = 0x00000010,
321     ConstOffsets = 0x00000020,
322     Sample = 0x00000040,
323     MinLod = 0x00000080,
324     MakeTexelAvailableKHR = 0x00000100,
325     MakeTexelVisibleKHR = 0x00000200,
326     NonPrivateTexelKHR = 0x00000400,
327     VolatileTexelKHR = 0x00000800,
328 }
329 
330 enum FPFastMathModeShift : uint
331 {
332     NotNaN = 0,
333     NotInf = 1,
334     NSZ = 2,
335     AllowRecip = 3,
336     Fast = 4,
337 }
338 
339 enum FPFastMathModeMask : uint
340 {
341     MaskNone = 0,
342     NotNaN = 0x00000001,
343     NotInf = 0x00000002,
344     NSZ = 0x00000004,
345     AllowRecip = 0x00000008,
346     Fast = 0x00000010,
347 }
348 
349 enum FPRoundingMode : uint
350 {
351     RTE = 0,
352     RTZ = 1,
353     RTP = 2,
354     RTN = 3,
355 }
356 
357 enum LinkageType : uint
358 {
359     Export = 0,
360     Import = 1,
361 }
362 
363 enum AccessQualifier : uint
364 {
365     ReadOnly = 0,
366     WriteOnly = 1,
367     ReadWrite = 2,
368 }
369 
370 enum FunctionParameterAttribute : uint
371 {
372     Zext = 0,
373     Sext = 1,
374     ByVal = 2,
375     Sret = 3,
376     NoAlias = 4,
377     NoCapture = 5,
378     NoWrite = 6,
379     NoReadWrite = 7,
380 }
381 
382 enum Decoration : uint
383 {
384     RelaxedPrecision = 0,
385     SpecId = 1,
386     Block = 2,
387     BufferBlock = 3,
388     RowMajor = 4,
389     ColMajor = 5,
390     ArrayStride = 6,
391     MatrixStride = 7,
392     GLSLShared = 8,
393     GLSLPacked = 9,
394     CPacked = 10,
395     BuiltIn = 11,
396     NoPerspective = 13,
397     Flat = 14,
398     Patch = 15,
399     Centroid = 16,
400     Sample = 17,
401     Invariant = 18,
402     Restrict = 19,
403     Aliased = 20,
404     Volatile = 21,
405     Constant = 22,
406     Coherent = 23,
407     NonWritable = 24,
408     NonReadable = 25,
409     Uniform = 26,
410     SaturatedConversion = 28,
411     Stream = 29,
412     Location = 30,
413     Component = 31,
414     Index = 32,
415     Binding = 33,
416     DescriptorSet = 34,
417     Offset = 35,
418     XfbBuffer = 36,
419     XfbStride = 37,
420     FuncParamAttr = 38,
421     FPRoundingMode = 39,
422     FPFastMathMode = 40,
423     LinkageAttributes = 41,
424     NoContraction = 42,
425     InputAttachmentIndex = 43,
426     Alignment = 44,
427     MaxByteOffset = 45,
428     AlignmentId = 46,
429     MaxByteOffsetId = 47,
430     NoSignedWrap = 4469,
431     NoUnsignedWrap = 4470,
432     ExplicitInterpAMD = 4999,
433     OverrideCoverageNV = 5248,
434     PassthroughNV = 5250,
435     ViewportRelativeNV = 5252,
436     SecondaryViewportRelativeNV = 5256,
437     PerPrimitiveNV = 5271,
438     PerViewNV = 5272,
439     PerTaskNV = 5273,
440     PerVertexNV = 5285,
441     NonUniformEXT = 5300,
442     RestrictPointerEXT = 5355,
443     AliasedPointerEXT = 5356,
444     HlslCounterBufferGOOGLE = 5634,
445     HlslSemanticGOOGLE = 5635,
446 }
447 
448 enum BuiltIn : uint
449 {
450     Position = 0,
451     PointSize = 1,
452     ClipDistance = 3,
453     CullDistance = 4,
454     VertexId = 5,
455     InstanceId = 6,
456     PrimitiveId = 7,
457     InvocationId = 8,
458     Layer = 9,
459     ViewportIndex = 10,
460     TessLevelOuter = 11,
461     TessLevelInner = 12,
462     TessCoord = 13,
463     PatchVertices = 14,
464     FragCoord = 15,
465     PointCoord = 16,
466     FrontFacing = 17,
467     SampleId = 18,
468     SamplePosition = 19,
469     SampleMask = 20,
470     FragDepth = 22,
471     HelperInvocation = 23,
472     NumWorkgroups = 24,
473     WorkgroupSize = 25,
474     WorkgroupId = 26,
475     LocalInvocationId = 27,
476     GlobalInvocationId = 28,
477     LocalInvocationIndex = 29,
478     WorkDim = 30,
479     GlobalSize = 31,
480     EnqueuedWorkgroupSize = 32,
481     GlobalOffset = 33,
482     GlobalLinearId = 34,
483     SubgroupSize = 36,
484     SubgroupMaxSize = 37,
485     NumSubgroups = 38,
486     NumEnqueuedSubgroups = 39,
487     SubgroupId = 40,
488     SubgroupLocalInvocationId = 41,
489     VertexIndex = 42,
490     InstanceIndex = 43,
491     SubgroupEqMask = 4416,
492     SubgroupEqMaskKHR = 4416,
493     SubgroupGeMask = 4417,
494     SubgroupGeMaskKHR = 4417,
495     SubgroupGtMask = 4418,
496     SubgroupGtMaskKHR = 4418,
497     SubgroupLeMask = 4419,
498     SubgroupLeMaskKHR = 4419,
499     SubgroupLtMask = 4420,
500     SubgroupLtMaskKHR = 4420,
501     BaseVertex = 4424,
502     BaseInstance = 4425,
503     DrawIndex = 4426,
504     DeviceIndex = 4438,
505     ViewIndex = 4440,
506     BaryCoordNoPerspAMD = 4992,
507     BaryCoordNoPerspCentroidAMD = 4993,
508     BaryCoordNoPerspSampleAMD = 4994,
509     BaryCoordSmoothAMD = 4995,
510     BaryCoordSmoothCentroidAMD = 4996,
511     BaryCoordSmoothSampleAMD = 4997,
512     BaryCoordPullModelAMD = 4998,
513     FragStencilRefEXT = 5014,
514     ViewportMaskNV = 5253,
515     SecondaryPositionNV = 5257,
516     SecondaryViewportMaskNV = 5258,
517     PositionPerViewNV = 5261,
518     ViewportMaskPerViewNV = 5262,
519     FullyCoveredEXT = 5264,
520     TaskCountNV = 5274,
521     PrimitiveCountNV = 5275,
522     PrimitiveIndicesNV = 5276,
523     ClipDistancePerViewNV = 5277,
524     CullDistancePerViewNV = 5278,
525     LayerPerViewNV = 5279,
526     MeshViewCountNV = 5280,
527     MeshViewIndicesNV = 5281,
528     BaryCoordNV = 5286,
529     BaryCoordNoPerspNV = 5287,
530     FragSizeEXT = 5292,
531     FragmentSizeNV = 5292,
532     FragInvocationCountEXT = 5293,
533     InvocationsPerPixelNV = 5293,
534     LaunchIdNV = 5319,
535     LaunchSizeNV = 5320,
536     WorldRayOriginNV = 5321,
537     WorldRayDirectionNV = 5322,
538     ObjectRayOriginNV = 5323,
539     ObjectRayDirectionNV = 5324,
540     RayTminNV = 5325,
541     RayTmaxNV = 5326,
542     InstanceCustomIndexNV = 5327,
543     ObjectToWorldNV = 5330,
544     WorldToObjectNV = 5331,
545     HitTNV = 5332,
546     HitKindNV = 5333,
547     IncomingRayFlagsNV = 5351,
548 }
549 
550 enum SelectionControlShift : uint
551 {
552     Flatten = 0,
553     DontFlatten = 1,
554 }
555 
556 enum SelectionControlMask : uint
557 {
558     MaskNone = 0,
559     Flatten = 0x00000001,
560     DontFlatten = 0x00000002,
561 }
562 
563 enum LoopControlShift : uint
564 {
565     Unroll = 0,
566     DontUnroll = 1,
567     DependencyInfinite = 2,
568     DependencyLength = 3,
569 }
570 
571 enum LoopControlMask : uint
572 {
573     MaskNone = 0,
574     Unroll = 0x00000001,
575     DontUnroll = 0x00000002,
576     DependencyInfinite = 0x00000004,
577     DependencyLength = 0x00000008,
578 }
579 
580 enum FunctionControlShift : uint
581 {
582     Inline = 0,
583     DontInline = 1,
584     Pure = 2,
585     Const = 3,
586 }
587 
588 enum FunctionControlMask : uint
589 {
590     MaskNone = 0,
591     Inline = 0x00000001,
592     DontInline = 0x00000002,
593     Pure = 0x00000004,
594     Const = 0x00000008,
595 }
596 
597 enum MemorySemanticsShift : uint
598 {
599     Acquire = 1,
600     Release = 2,
601     AcquireRelease = 3,
602     SequentiallyConsistent = 4,
603     UniformMemory = 6,
604     SubgroupMemory = 7,
605     WorkgroupMemory = 8,
606     CrossWorkgroupMemory = 9,
607     AtomicCounterMemory = 10,
608     ImageMemory = 11,
609     OutputMemoryKHR = 12,
610     MakeAvailableKHR = 13,
611     MakeVisibleKHR = 14,
612 }
613 
614 enum MemorySemanticsMask : uint
615 {
616     MaskNone = 0,
617     Acquire = 0x00000002,
618     Release = 0x00000004,
619     AcquireRelease = 0x00000008,
620     SequentiallyConsistent = 0x00000010,
621     UniformMemory = 0x00000040,
622     SubgroupMemory = 0x00000080,
623     WorkgroupMemory = 0x00000100,
624     CrossWorkgroupMemory = 0x00000200,
625     AtomicCounterMemory = 0x00000400,
626     ImageMemory = 0x00000800,
627     OutputMemoryKHR = 0x00001000,
628     MakeAvailableKHR = 0x00002000,
629     MakeVisibleKHR = 0x00004000,
630 }
631 
632 enum MemoryAccessShift : uint
633 {
634     Volatile = 0,
635     Aligned = 1,
636     Nontemporal = 2,
637     MakePointerAvailableKHR = 3,
638     MakePointerVisibleKHR = 4,
639     NonPrivatePointerKHR = 5,
640 }
641 
642 enum MemoryAccessMask : uint
643 {
644     MaskNone = 0,
645     Volatile = 0x00000001,
646     Aligned = 0x00000002,
647     Nontemporal = 0x00000004,
648     MakePointerAvailableKHR = 0x00000008,
649     MakePointerVisibleKHR = 0x00000010,
650     NonPrivatePointerKHR = 0x00000020,
651 }
652 
653 enum Scope : uint
654 {
655     CrossDevice = 0,
656     Device = 1,
657     Workgroup = 2,
658     Subgroup = 3,
659     Invocation = 4,
660     QueueFamilyKHR = 5,
661 }
662 
663 enum GroupOperation : uint
664 {
665     Reduce = 0,
666     InclusiveScan = 1,
667     ExclusiveScan = 2,
668     ClusteredReduce = 3,
669     PartitionedReduceNV = 6,
670     PartitionedInclusiveScanNV = 7,
671     PartitionedExclusiveScanNV = 8,
672 }
673 
674 enum KernelEnqueueFlags : uint
675 {
676     NoWait = 0,
677     WaitKernel = 1,
678     WaitWorkGroup = 2,
679 }
680 
681 enum KernelProfilingInfoShift : uint
682 {
683     CmdExecTime = 0,
684 }
685 
686 enum KernelProfilingInfoMask : uint
687 {
688     MaskNone = 0,
689     CmdExecTime = 0x00000001,
690 }
691 
692 enum Capability : uint
693 {
694     Matrix = 0,
695     Shader = 1,
696     Geometry = 2,
697     Tessellation = 3,
698     Addresses = 4,
699     Linkage = 5,
700     Kernel = 6,
701     Vector16 = 7,
702     Float16Buffer = 8,
703     Float16 = 9,
704     Float64 = 10,
705     Int64 = 11,
706     Int64Atomics = 12,
707     ImageBasic = 13,
708     ImageReadWrite = 14,
709     ImageMipmap = 15,
710     Pipes = 17,
711     Groups = 18,
712     DeviceEnqueue = 19,
713     LiteralSampler = 20,
714     AtomicStorage = 21,
715     Int16 = 22,
716     TessellationPointSize = 23,
717     GeometryPointSize = 24,
718     ImageGatherExtended = 25,
719     StorageImageMultisample = 27,
720     UniformBufferArrayDynamicIndexing = 28,
721     SampledImageArrayDynamicIndexing = 29,
722     StorageBufferArrayDynamicIndexing = 30,
723     StorageImageArrayDynamicIndexing = 31,
724     ClipDistance = 32,
725     CullDistance = 33,
726     ImageCubeArray = 34,
727     SampleRateShading = 35,
728     ImageRect = 36,
729     SampledRect = 37,
730     GenericPointer = 38,
731     Int8 = 39,
732     InputAttachment = 40,
733     SparseResidency = 41,
734     MinLod = 42,
735     Sampled1D = 43,
736     Image1D = 44,
737     SampledCubeArray = 45,
738     SampledBuffer = 46,
739     ImageBuffer = 47,
740     ImageMSArray = 48,
741     StorageImageExtendedFormats = 49,
742     ImageQuery = 50,
743     DerivativeControl = 51,
744     InterpolationFunction = 52,
745     TransformFeedback = 53,
746     GeometryStreams = 54,
747     StorageImageReadWithoutFormat = 55,
748     StorageImageWriteWithoutFormat = 56,
749     MultiViewport = 57,
750     SubgroupDispatch = 58,
751     NamedBarrier = 59,
752     PipeStorage = 60,
753     GroupNonUniform = 61,
754     GroupNonUniformVote = 62,
755     GroupNonUniformArithmetic = 63,
756     GroupNonUniformBallot = 64,
757     GroupNonUniformShuffle = 65,
758     GroupNonUniformShuffleRelative = 66,
759     GroupNonUniformClustered = 67,
760     GroupNonUniformQuad = 68,
761     SubgroupBallotKHR = 4423,
762     DrawParameters = 4427,
763     SubgroupVoteKHR = 4431,
764     StorageBuffer16BitAccess = 4433,
765     StorageUniformBufferBlock16 = 4433,
766     StorageUniform16 = 4434,
767     UniformAndStorageBuffer16BitAccess = 4434,
768     StoragePushConstant16 = 4435,
769     StorageInputOutput16 = 4436,
770     DeviceGroup = 4437,
771     MultiView = 4439,
772     VariablePointersStorageBuffer = 4441,
773     VariablePointers = 4442,
774     AtomicStorageOps = 4445,
775     SampleMaskPostDepthCoverage = 4447,
776     StorageBuffer8BitAccess = 4448,
777     UniformAndStorageBuffer8BitAccess = 4449,
778     StoragePushConstant8 = 4450,
779     DenormPreserve = 4464,
780     DenormFlushToZero = 4465,
781     SignedZeroInfNanPreserve = 4466,
782     RoundingModeRTE = 4467,
783     RoundingModeRTZ = 4468,
784     Float16ImageAMD = 5008,
785     ImageGatherBiasLodAMD = 5009,
786     FragmentMaskAMD = 5010,
787     StencilExportEXT = 5013,
788     ImageReadWriteLodAMD = 5015,
789     SampleMaskOverrideCoverageNV = 5249,
790     GeometryShaderPassthroughNV = 5251,
791     ShaderViewportIndexLayerEXT = 5254,
792     ShaderViewportIndexLayerNV = 5254,
793     ShaderViewportMaskNV = 5255,
794     ShaderStereoViewNV = 5259,
795     PerViewAttributesNV = 5260,
796     FragmentFullyCoveredEXT = 5265,
797     MeshShadingNV = 5266,
798     ImageFootprintNV = 5282,
799     FragmentBarycentricNV = 5284,
800     ComputeDerivativeGroupQuadsNV = 5288,
801     FragmentDensityEXT = 5291,
802     ShadingRateNV = 5291,
803     GroupNonUniformPartitionedNV = 5297,
804     ShaderNonUniformEXT = 5301,
805     RuntimeDescriptorArrayEXT = 5302,
806     InputAttachmentArrayDynamicIndexingEXT = 5303,
807     UniformTexelBufferArrayDynamicIndexingEXT = 5304,
808     StorageTexelBufferArrayDynamicIndexingEXT = 5305,
809     UniformBufferArrayNonUniformIndexingEXT = 5306,
810     SampledImageArrayNonUniformIndexingEXT = 5307,
811     StorageBufferArrayNonUniformIndexingEXT = 5308,
812     StorageImageArrayNonUniformIndexingEXT = 5309,
813     InputAttachmentArrayNonUniformIndexingEXT = 5310,
814     UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
815     StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
816     RayTracingNV = 5340,
817     VulkanMemoryModelKHR = 5345,
818     VulkanMemoryModelDeviceScopeKHR = 5346,
819     PhysicalStorageBufferAddressesEXT = 5347,
820     ComputeDerivativeGroupLinearNV = 5350,
821     SubgroupShuffleINTEL = 5568,
822     SubgroupBufferBlockIOINTEL = 5569,
823     SubgroupImageBlockIOINTEL = 5570,
824 }
825 
826 enum Op : uint
827 {
828     OpNop = 0,
829     OpUndef = 1,
830     OpSourceContinued = 2,
831     OpSource = 3,
832     OpSourceExtension = 4,
833     OpName = 5,
834     OpMemberName = 6,
835     OpString = 7,
836     OpLine = 8,
837     OpExtension = 10,
838     OpExtInstImport = 11,
839     OpExtInst = 12,
840     OpMemoryModel = 14,
841     OpEntryPoint = 15,
842     OpExecutionMode = 16,
843     OpCapability = 17,
844     OpTypeVoid = 19,
845     OpTypeBool = 20,
846     OpTypeInt = 21,
847     OpTypeFloat = 22,
848     OpTypeVector = 23,
849     OpTypeMatrix = 24,
850     OpTypeImage = 25,
851     OpTypeSampler = 26,
852     OpTypeSampledImage = 27,
853     OpTypeArray = 28,
854     OpTypeRuntimeArray = 29,
855     OpTypeStruct = 30,
856     OpTypeOpaque = 31,
857     OpTypePointer = 32,
858     OpTypeFunction = 33,
859     OpTypeEvent = 34,
860     OpTypeDeviceEvent = 35,
861     OpTypeReserveId = 36,
862     OpTypeQueue = 37,
863     OpTypePipe = 38,
864     OpTypeForwardPointer = 39,
865     OpConstantTrue = 41,
866     OpConstantFalse = 42,
867     OpConstant = 43,
868     OpConstantComposite = 44,
869     OpConstantSampler = 45,
870     OpConstantNull = 46,
871     OpSpecConstantTrue = 48,
872     OpSpecConstantFalse = 49,
873     OpSpecConstant = 50,
874     OpSpecConstantComposite = 51,
875     OpSpecConstantOp = 52,
876     OpFunction = 54,
877     OpFunctionParameter = 55,
878     OpFunctionEnd = 56,
879     OpFunctionCall = 57,
880     OpVariable = 59,
881     OpImageTexelPointer = 60,
882     OpLoad = 61,
883     OpStore = 62,
884     OpCopyMemory = 63,
885     OpCopyMemorySized = 64,
886     OpAccessChain = 65,
887     OpInBoundsAccessChain = 66,
888     OpPtrAccessChain = 67,
889     OpArrayLength = 68,
890     OpGenericPtrMemSemantics = 69,
891     OpInBoundsPtrAccessChain = 70,
892     OpDecorate = 71,
893     OpMemberDecorate = 72,
894     OpDecorationGroup = 73,
895     OpGroupDecorate = 74,
896     OpGroupMemberDecorate = 75,
897     OpVectorExtractDynamic = 77,
898     OpVectorInsertDynamic = 78,
899     OpVectorShuffle = 79,
900     OpCompositeConstruct = 80,
901     OpCompositeExtract = 81,
902     OpCompositeInsert = 82,
903     OpCopyObject = 83,
904     OpTranspose = 84,
905     OpSampledImage = 86,
906     OpImageSampleImplicitLod = 87,
907     OpImageSampleExplicitLod = 88,
908     OpImageSampleDrefImplicitLod = 89,
909     OpImageSampleDrefExplicitLod = 90,
910     OpImageSampleProjImplicitLod = 91,
911     OpImageSampleProjExplicitLod = 92,
912     OpImageSampleProjDrefImplicitLod = 93,
913     OpImageSampleProjDrefExplicitLod = 94,
914     OpImageFetch = 95,
915     OpImageGather = 96,
916     OpImageDrefGather = 97,
917     OpImageRead = 98,
918     OpImageWrite = 99,
919     OpImage = 100,
920     OpImageQueryFormat = 101,
921     OpImageQueryOrder = 102,
922     OpImageQuerySizeLod = 103,
923     OpImageQuerySize = 104,
924     OpImageQueryLod = 105,
925     OpImageQueryLevels = 106,
926     OpImageQuerySamples = 107,
927     OpConvertFToU = 109,
928     OpConvertFToS = 110,
929     OpConvertSToF = 111,
930     OpConvertUToF = 112,
931     OpUConvert = 113,
932     OpSConvert = 114,
933     OpFConvert = 115,
934     OpQuantizeToF16 = 116,
935     OpConvertPtrToU = 117,
936     OpSatConvertSToU = 118,
937     OpSatConvertUToS = 119,
938     OpConvertUToPtr = 120,
939     OpPtrCastToGeneric = 121,
940     OpGenericCastToPtr = 122,
941     OpGenericCastToPtrExplicit = 123,
942     OpBitcast = 124,
943     OpSNegate = 126,
944     OpFNegate = 127,
945     OpIAdd = 128,
946     OpFAdd = 129,
947     OpISub = 130,
948     OpFSub = 131,
949     OpIMul = 132,
950     OpFMul = 133,
951     OpUDiv = 134,
952     OpSDiv = 135,
953     OpFDiv = 136,
954     OpUMod = 137,
955     OpSRem = 138,
956     OpSMod = 139,
957     OpFRem = 140,
958     OpFMod = 141,
959     OpVectorTimesScalar = 142,
960     OpMatrixTimesScalar = 143,
961     OpVectorTimesMatrix = 144,
962     OpMatrixTimesVector = 145,
963     OpMatrixTimesMatrix = 146,
964     OpOuterProduct = 147,
965     OpDot = 148,
966     OpIAddCarry = 149,
967     OpISubBorrow = 150,
968     OpUMulExtended = 151,
969     OpSMulExtended = 152,
970     OpAny = 154,
971     OpAll = 155,
972     OpIsNan = 156,
973     OpIsInf = 157,
974     OpIsFinite = 158,
975     OpIsNormal = 159,
976     OpSignBitSet = 160,
977     OpLessOrGreater = 161,
978     OpOrdered = 162,
979     OpUnordered = 163,
980     OpLogicalEqual = 164,
981     OpLogicalNotEqual = 165,
982     OpLogicalOr = 166,
983     OpLogicalAnd = 167,
984     OpLogicalNot = 168,
985     OpSelect = 169,
986     OpIEqual = 170,
987     OpINotEqual = 171,
988     OpUGreaterThan = 172,
989     OpSGreaterThan = 173,
990     OpUGreaterThanEqual = 174,
991     OpSGreaterThanEqual = 175,
992     OpULessThan = 176,
993     OpSLessThan = 177,
994     OpULessThanEqual = 178,
995     OpSLessThanEqual = 179,
996     OpFOrdEqual = 180,
997     OpFUnordEqual = 181,
998     OpFOrdNotEqual = 182,
999     OpFUnordNotEqual = 183,
1000     OpFOrdLessThan = 184,
1001     OpFUnordLessThan = 185,
1002     OpFOrdGreaterThan = 186,
1003     OpFUnordGreaterThan = 187,
1004     OpFOrdLessThanEqual = 188,
1005     OpFUnordLessThanEqual = 189,
1006     OpFOrdGreaterThanEqual = 190,
1007     OpFUnordGreaterThanEqual = 191,
1008     OpShiftRightLogical = 194,
1009     OpShiftRightArithmetic = 195,
1010     OpShiftLeftLogical = 196,
1011     OpBitwiseOr = 197,
1012     OpBitwiseXor = 198,
1013     OpBitwiseAnd = 199,
1014     OpNot = 200,
1015     OpBitFieldInsert = 201,
1016     OpBitFieldSExtract = 202,
1017     OpBitFieldUExtract = 203,
1018     OpBitReverse = 204,
1019     OpBitCount = 205,
1020     OpDPdx = 207,
1021     OpDPdy = 208,
1022     OpFwidth = 209,
1023     OpDPdxFine = 210,
1024     OpDPdyFine = 211,
1025     OpFwidthFine = 212,
1026     OpDPdxCoarse = 213,
1027     OpDPdyCoarse = 214,
1028     OpFwidthCoarse = 215,
1029     OpEmitVertex = 218,
1030     OpEndPrimitive = 219,
1031     OpEmitStreamVertex = 220,
1032     OpEndStreamPrimitive = 221,
1033     OpControlBarrier = 224,
1034     OpMemoryBarrier = 225,
1035     OpAtomicLoad = 227,
1036     OpAtomicStore = 228,
1037     OpAtomicExchange = 229,
1038     OpAtomicCompareExchange = 230,
1039     OpAtomicCompareExchangeWeak = 231,
1040     OpAtomicIIncrement = 232,
1041     OpAtomicIDecrement = 233,
1042     OpAtomicIAdd = 234,
1043     OpAtomicISub = 235,
1044     OpAtomicSMin = 236,
1045     OpAtomicUMin = 237,
1046     OpAtomicSMax = 238,
1047     OpAtomicUMax = 239,
1048     OpAtomicAnd = 240,
1049     OpAtomicOr = 241,
1050     OpAtomicXor = 242,
1051     OpPhi = 245,
1052     OpLoopMerge = 246,
1053     OpSelectionMerge = 247,
1054     OpLabel = 248,
1055     OpBranch = 249,
1056     OpBranchConditional = 250,
1057     OpSwitch = 251,
1058     OpKill = 252,
1059     OpReturn = 253,
1060     OpReturnValue = 254,
1061     OpUnreachable = 255,
1062     OpLifetimeStart = 256,
1063     OpLifetimeStop = 257,
1064     OpGroupAsyncCopy = 259,
1065     OpGroupWaitEvents = 260,
1066     OpGroupAll = 261,
1067     OpGroupAny = 262,
1068     OpGroupBroadcast = 263,
1069     OpGroupIAdd = 264,
1070     OpGroupFAdd = 265,
1071     OpGroupFMin = 266,
1072     OpGroupUMin = 267,
1073     OpGroupSMin = 268,
1074     OpGroupFMax = 269,
1075     OpGroupUMax = 270,
1076     OpGroupSMax = 271,
1077     OpReadPipe = 274,
1078     OpWritePipe = 275,
1079     OpReservedReadPipe = 276,
1080     OpReservedWritePipe = 277,
1081     OpReserveReadPipePackets = 278,
1082     OpReserveWritePipePackets = 279,
1083     OpCommitReadPipe = 280,
1084     OpCommitWritePipe = 281,
1085     OpIsValidReserveId = 282,
1086     OpGetNumPipePackets = 283,
1087     OpGetMaxPipePackets = 284,
1088     OpGroupReserveReadPipePackets = 285,
1089     OpGroupReserveWritePipePackets = 286,
1090     OpGroupCommitReadPipe = 287,
1091     OpGroupCommitWritePipe = 288,
1092     OpEnqueueMarker = 291,
1093     OpEnqueueKernel = 292,
1094     OpGetKernelNDrangeSubGroupCount = 293,
1095     OpGetKernelNDrangeMaxSubGroupSize = 294,
1096     OpGetKernelWorkGroupSize = 295,
1097     OpGetKernelPreferredWorkGroupSizeMultiple = 296,
1098     OpRetainEvent = 297,
1099     OpReleaseEvent = 298,
1100     OpCreateUserEvent = 299,
1101     OpIsValidEvent = 300,
1102     OpSetUserEventStatus = 301,
1103     OpCaptureEventProfilingInfo = 302,
1104     OpGetDefaultQueue = 303,
1105     OpBuildNDRange = 304,
1106     OpImageSparseSampleImplicitLod = 305,
1107     OpImageSparseSampleExplicitLod = 306,
1108     OpImageSparseSampleDrefImplicitLod = 307,
1109     OpImageSparseSampleDrefExplicitLod = 308,
1110     OpImageSparseSampleProjImplicitLod = 309,
1111     OpImageSparseSampleProjExplicitLod = 310,
1112     OpImageSparseSampleProjDrefImplicitLod = 311,
1113     OpImageSparseSampleProjDrefExplicitLod = 312,
1114     OpImageSparseFetch = 313,
1115     OpImageSparseGather = 314,
1116     OpImageSparseDrefGather = 315,
1117     OpImageSparseTexelsResident = 316,
1118     OpNoLine = 317,
1119     OpAtomicFlagTestAndSet = 318,
1120     OpAtomicFlagClear = 319,
1121     OpImageSparseRead = 320,
1122     OpSizeOf = 321,
1123     OpTypePipeStorage = 322,
1124     OpConstantPipeStorage = 323,
1125     OpCreatePipeFromPipeStorage = 324,
1126     OpGetKernelLocalSizeForSubgroupCount = 325,
1127     OpGetKernelMaxNumSubgroups = 326,
1128     OpTypeNamedBarrier = 327,
1129     OpNamedBarrierInitialize = 328,
1130     OpMemoryNamedBarrier = 329,
1131     OpModuleProcessed = 330,
1132     OpExecutionModeId = 331,
1133     OpDecorateId = 332,
1134     OpGroupNonUniformElect = 333,
1135     OpGroupNonUniformAll = 334,
1136     OpGroupNonUniformAny = 335,
1137     OpGroupNonUniformAllEqual = 336,
1138     OpGroupNonUniformBroadcast = 337,
1139     OpGroupNonUniformBroadcastFirst = 338,
1140     OpGroupNonUniformBallot = 339,
1141     OpGroupNonUniformInverseBallot = 340,
1142     OpGroupNonUniformBallotBitExtract = 341,
1143     OpGroupNonUniformBallotBitCount = 342,
1144     OpGroupNonUniformBallotFindLSB = 343,
1145     OpGroupNonUniformBallotFindMSB = 344,
1146     OpGroupNonUniformShuffle = 345,
1147     OpGroupNonUniformShuffleXor = 346,
1148     OpGroupNonUniformShuffleUp = 347,
1149     OpGroupNonUniformShuffleDown = 348,
1150     OpGroupNonUniformIAdd = 349,
1151     OpGroupNonUniformFAdd = 350,
1152     OpGroupNonUniformIMul = 351,
1153     OpGroupNonUniformFMul = 352,
1154     OpGroupNonUniformSMin = 353,
1155     OpGroupNonUniformUMin = 354,
1156     OpGroupNonUniformFMin = 355,
1157     OpGroupNonUniformSMax = 356,
1158     OpGroupNonUniformUMax = 357,
1159     OpGroupNonUniformFMax = 358,
1160     OpGroupNonUniformBitwiseAnd = 359,
1161     OpGroupNonUniformBitwiseOr = 360,
1162     OpGroupNonUniformBitwiseXor = 361,
1163     OpGroupNonUniformLogicalAnd = 362,
1164     OpGroupNonUniformLogicalOr = 363,
1165     OpGroupNonUniformLogicalXor = 364,
1166     OpGroupNonUniformQuadBroadcast = 365,
1167     OpGroupNonUniformQuadSwap = 366,
1168     OpSubgroupBallotKHR = 4421,
1169     OpSubgroupFirstInvocationKHR = 4422,
1170     OpSubgroupAllKHR = 4428,
1171     OpSubgroupAnyKHR = 4429,
1172     OpSubgroupAllEqualKHR = 4430,
1173     OpSubgroupReadInvocationKHR = 4432,
1174     OpGroupIAddNonUniformAMD = 5000,
1175     OpGroupFAddNonUniformAMD = 5001,
1176     OpGroupFMinNonUniformAMD = 5002,
1177     OpGroupUMinNonUniformAMD = 5003,
1178     OpGroupSMinNonUniformAMD = 5004,
1179     OpGroupFMaxNonUniformAMD = 5005,
1180     OpGroupUMaxNonUniformAMD = 5006,
1181     OpGroupSMaxNonUniformAMD = 5007,
1182     OpFragmentMaskFetchAMD = 5011,
1183     OpFragmentFetchAMD = 5012,
1184     OpImageSampleFootprintNV = 5283,
1185     OpGroupNonUniformPartitionNV = 5296,
1186     OpWritePackedPrimitiveIndices4x8NV = 5299,
1187     OpReportIntersectionNV = 5334,
1188     OpIgnoreIntersectionNV = 5335,
1189     OpTerminateRayNV = 5336,
1190     OpTraceNV = 5337,
1191     OpTypeAccelerationStructureNV = 5341,
1192     OpExecuteCallableNV = 5344,
1193     OpSubgroupShuffleINTEL = 5571,
1194     OpSubgroupShuffleDownINTEL = 5572,
1195     OpSubgroupShuffleUpINTEL = 5573,
1196     OpSubgroupShuffleXorINTEL = 5574,
1197     OpSubgroupBlockReadINTEL = 5575,
1198     OpSubgroupBlockWriteINTEL = 5576,
1199     OpSubgroupImageBlockReadINTEL = 5577,
1200     OpSubgroupImageBlockWriteINTEL = 5578,
1201     OpDecorateStringGOOGLE = 5632,
1202     OpMemberDecorateStringGOOGLE = 5633,
1203 }
1204 
1205 
1206