Incremental update for multiple recent extensions.
[platform/upstream/SPIRV-Headers.git] / include / spirv / 1.1 / spirv.hpp11
1 // Copyright (c) 2014-2017 The Khronos Group Inc.
2 // 
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and/or associated documentation files (the "Materials"),
5 // to deal in the Materials without restriction, including without limitation
6 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 // and/or sell copies of the Materials, and to permit persons to whom the
8 // Materials are furnished to do so, subject to the following conditions:
9 // 
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Materials.
12 // 
13 // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
14 // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
15 // HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 
16 // 
17 // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 // FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
23 // IN THE MATERIALS.
24
25 // This header is automatically generated by the same tool that creates
26 // the Binary Section of the SPIR-V specification.
27
28 // Enumeration tokens for SPIR-V, in various styles:
29 //   C, C++, C++11, JSON, Lua, Python
30 // 
31 // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
32 // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
33 // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
34 // - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
35 // - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
36 // 
37 // Some tokens act like mask values, which can be OR'd together,
38 // while others are mutually exclusive.  The mask-like ones have
39 // "Mask" in their name, and a parallel enum that has the shift
40 // amount (1 << x) for each corresponding enumerant.
41
42 #ifndef spirv_HPP
43 #define spirv_HPP
44
45 namespace spv {
46
47 typedef unsigned int Id;
48
49 #define SPV_VERSION 0x10100
50 #define SPV_REVISION 7
51
52 static const unsigned int MagicNumber = 0x07230203;
53 static const unsigned int Version = 0x00010100;
54 static const unsigned int Revision = 7;
55 static const unsigned int OpCodeMask = 0xffff;
56 static const unsigned int WordCountShift = 16;
57
58 enum class SourceLanguage : unsigned {
59     Unknown = 0,
60     ESSL = 1,
61     GLSL = 2,
62     OpenCL_C = 3,
63     OpenCL_CPP = 4,
64     HLSL = 5,
65     Max = 0x7fffffff,
66 };
67
68 enum class ExecutionModel : unsigned {
69     Vertex = 0,
70     TessellationControl = 1,
71     TessellationEvaluation = 2,
72     Geometry = 3,
73     Fragment = 4,
74     GLCompute = 5,
75     Kernel = 6,
76     Max = 0x7fffffff,
77 };
78
79 enum class AddressingModel : unsigned {
80     Logical = 0,
81     Physical32 = 1,
82     Physical64 = 2,
83     Max = 0x7fffffff,
84 };
85
86 enum class MemoryModel : unsigned {
87     Simple = 0,
88     GLSL450 = 1,
89     OpenCL = 2,
90     Max = 0x7fffffff,
91 };
92
93 enum class ExecutionMode : unsigned {
94     Invocations = 0,
95     SpacingEqual = 1,
96     SpacingFractionalEven = 2,
97     SpacingFractionalOdd = 3,
98     VertexOrderCw = 4,
99     VertexOrderCcw = 5,
100     PixelCenterInteger = 6,
101     OriginUpperLeft = 7,
102     OriginLowerLeft = 8,
103     EarlyFragmentTests = 9,
104     PointMode = 10,
105     Xfb = 11,
106     DepthReplacing = 12,
107     DepthGreater = 14,
108     DepthLess = 15,
109     DepthUnchanged = 16,
110     LocalSize = 17,
111     LocalSizeHint = 18,
112     InputPoints = 19,
113     InputLines = 20,
114     InputLinesAdjacency = 21,
115     Triangles = 22,
116     InputTrianglesAdjacency = 23,
117     Quads = 24,
118     Isolines = 25,
119     OutputVertices = 26,
120     OutputPoints = 27,
121     OutputLineStrip = 28,
122     OutputTriangleStrip = 29,
123     VecTypeHint = 30,
124     ContractionOff = 31,
125     Initializer = 33,
126     Finalizer = 34,
127     SubgroupSize = 35,
128     SubgroupsPerWorkgroup = 36,
129     PostDepthCoverage = 4446,
130     Max = 0x7fffffff,
131 };
132
133 enum class StorageClass : unsigned {
134     UniformConstant = 0,
135     Input = 1,
136     Uniform = 2,
137     Output = 3,
138     Workgroup = 4,
139     CrossWorkgroup = 5,
140     Private = 6,
141     Function = 7,
142     Generic = 8,
143     PushConstant = 9,
144     AtomicCounter = 10,
145     Image = 11,
146     StorageBuffer = 12,
147     Max = 0x7fffffff,
148 };
149
150 enum class Dim : unsigned {
151     Dim1D = 0,
152     Dim2D = 1,
153     Dim3D = 2,
154     Cube = 3,
155     Rect = 4,
156     Buffer = 5,
157     SubpassData = 6,
158     Max = 0x7fffffff,
159 };
160
161 enum class SamplerAddressingMode : unsigned {
162     None = 0,
163     ClampToEdge = 1,
164     Clamp = 2,
165     Repeat = 3,
166     RepeatMirrored = 4,
167     Max = 0x7fffffff,
168 };
169
170 enum class SamplerFilterMode : unsigned {
171     Nearest = 0,
172     Linear = 1,
173     Max = 0x7fffffff,
174 };
175
176 enum class ImageFormat : unsigned {
177     Unknown = 0,
178     Rgba32f = 1,
179     Rgba16f = 2,
180     R32f = 3,
181     Rgba8 = 4,
182     Rgba8Snorm = 5,
183     Rg32f = 6,
184     Rg16f = 7,
185     R11fG11fB10f = 8,
186     R16f = 9,
187     Rgba16 = 10,
188     Rgb10A2 = 11,
189     Rg16 = 12,
190     Rg8 = 13,
191     R16 = 14,
192     R8 = 15,
193     Rgba16Snorm = 16,
194     Rg16Snorm = 17,
195     Rg8Snorm = 18,
196     R16Snorm = 19,
197     R8Snorm = 20,
198     Rgba32i = 21,
199     Rgba16i = 22,
200     Rgba8i = 23,
201     R32i = 24,
202     Rg32i = 25,
203     Rg16i = 26,
204     Rg8i = 27,
205     R16i = 28,
206     R8i = 29,
207     Rgba32ui = 30,
208     Rgba16ui = 31,
209     Rgba8ui = 32,
210     R32ui = 33,
211     Rgb10a2ui = 34,
212     Rg32ui = 35,
213     Rg16ui = 36,
214     Rg8ui = 37,
215     R16ui = 38,
216     R8ui = 39,
217     Max = 0x7fffffff,
218 };
219
220 enum class ImageChannelOrder : unsigned {
221     R = 0,
222     A = 1,
223     RG = 2,
224     RA = 3,
225     RGB = 4,
226     RGBA = 5,
227     BGRA = 6,
228     ARGB = 7,
229     Intensity = 8,
230     Luminance = 9,
231     Rx = 10,
232     RGx = 11,
233     RGBx = 12,
234     Depth = 13,
235     DepthStencil = 14,
236     sRGB = 15,
237     sRGBx = 16,
238     sRGBA = 17,
239     sBGRA = 18,
240     ABGR = 19,
241     Max = 0x7fffffff,
242 };
243
244 enum class ImageChannelDataType : unsigned {
245     SnormInt8 = 0,
246     SnormInt16 = 1,
247     UnormInt8 = 2,
248     UnormInt16 = 3,
249     UnormShort565 = 4,
250     UnormShort555 = 5,
251     UnormInt101010 = 6,
252     SignedInt8 = 7,
253     SignedInt16 = 8,
254     SignedInt32 = 9,
255     UnsignedInt8 = 10,
256     UnsignedInt16 = 11,
257     UnsignedInt32 = 12,
258     HalfFloat = 13,
259     Float = 14,
260     UnormInt24 = 15,
261     UnormInt101010_2 = 16,
262     Max = 0x7fffffff,
263 };
264
265 enum class ImageOperandsShift : unsigned {
266     Bias = 0,
267     Lod = 1,
268     Grad = 2,
269     ConstOffset = 3,
270     Offset = 4,
271     ConstOffsets = 5,
272     Sample = 6,
273     MinLod = 7,
274     Max = 0x7fffffff,
275 };
276
277 enum class ImageOperandsMask : unsigned {
278     MaskNone = 0,
279     Bias = 0x00000001,
280     Lod = 0x00000002,
281     Grad = 0x00000004,
282     ConstOffset = 0x00000008,
283     Offset = 0x00000010,
284     ConstOffsets = 0x00000020,
285     Sample = 0x00000040,
286     MinLod = 0x00000080,
287 };
288
289 enum class FPFastMathModeShift : unsigned {
290     NotNaN = 0,
291     NotInf = 1,
292     NSZ = 2,
293     AllowRecip = 3,
294     Fast = 4,
295     Max = 0x7fffffff,
296 };
297
298 enum class FPFastMathModeMask : unsigned {
299     MaskNone = 0,
300     NotNaN = 0x00000001,
301     NotInf = 0x00000002,
302     NSZ = 0x00000004,
303     AllowRecip = 0x00000008,
304     Fast = 0x00000010,
305 };
306
307 enum class FPRoundingMode : unsigned {
308     RTE = 0,
309     RTZ = 1,
310     RTP = 2,
311     RTN = 3,
312     Max = 0x7fffffff,
313 };
314
315 enum class LinkageType : unsigned {
316     Export = 0,
317     Import = 1,
318     Max = 0x7fffffff,
319 };
320
321 enum class AccessQualifier : unsigned {
322     ReadOnly = 0,
323     WriteOnly = 1,
324     ReadWrite = 2,
325     Max = 0x7fffffff,
326 };
327
328 enum class FunctionParameterAttribute : unsigned {
329     Zext = 0,
330     Sext = 1,
331     ByVal = 2,
332     Sret = 3,
333     NoAlias = 4,
334     NoCapture = 5,
335     NoWrite = 6,
336     NoReadWrite = 7,
337     Max = 0x7fffffff,
338 };
339
340 enum class Decoration : unsigned {
341     RelaxedPrecision = 0,
342     SpecId = 1,
343     Block = 2,
344     BufferBlock = 3,
345     RowMajor = 4,
346     ColMajor = 5,
347     ArrayStride = 6,
348     MatrixStride = 7,
349     GLSLShared = 8,
350     GLSLPacked = 9,
351     CPacked = 10,
352     BuiltIn = 11,
353     NoPerspective = 13,
354     Flat = 14,
355     Patch = 15,
356     Centroid = 16,
357     Sample = 17,
358     Invariant = 18,
359     Restrict = 19,
360     Aliased = 20,
361     Volatile = 21,
362     Constant = 22,
363     Coherent = 23,
364     NonWritable = 24,
365     NonReadable = 25,
366     Uniform = 26,
367     SaturatedConversion = 28,
368     Stream = 29,
369     Location = 30,
370     Component = 31,
371     Index = 32,
372     Binding = 33,
373     DescriptorSet = 34,
374     Offset = 35,
375     XfbBuffer = 36,
376     XfbStride = 37,
377     FuncParamAttr = 38,
378     FPRoundingMode = 39,
379     FPFastMathMode = 40,
380     LinkageAttributes = 41,
381     NoContraction = 42,
382     InputAttachmentIndex = 43,
383     Alignment = 44,
384     MaxByteOffset = 45,
385     ExplicitInterpAMD = 4999,
386     OverrideCoverageNV = 5248,
387     PassthroughNV = 5250,
388     ViewportRelativeNV = 5252,
389     SecondaryViewportRelativeNV = 5256,
390     Max = 0x7fffffff,
391 };
392
393 enum class BuiltIn : unsigned {
394     Position = 0,
395     PointSize = 1,
396     ClipDistance = 3,
397     CullDistance = 4,
398     VertexId = 5,
399     InstanceId = 6,
400     PrimitiveId = 7,
401     InvocationId = 8,
402     Layer = 9,
403     ViewportIndex = 10,
404     TessLevelOuter = 11,
405     TessLevelInner = 12,
406     TessCoord = 13,
407     PatchVertices = 14,
408     FragCoord = 15,
409     PointCoord = 16,
410     FrontFacing = 17,
411     SampleId = 18,
412     SamplePosition = 19,
413     SampleMask = 20,
414     FragDepth = 22,
415     HelperInvocation = 23,
416     NumWorkgroups = 24,
417     WorkgroupSize = 25,
418     WorkgroupId = 26,
419     LocalInvocationId = 27,
420     GlobalInvocationId = 28,
421     LocalInvocationIndex = 29,
422     WorkDim = 30,
423     GlobalSize = 31,
424     EnqueuedWorkgroupSize = 32,
425     GlobalOffset = 33,
426     GlobalLinearId = 34,
427     SubgroupSize = 36,
428     SubgroupMaxSize = 37,
429     NumSubgroups = 38,
430     NumEnqueuedSubgroups = 39,
431     SubgroupId = 40,
432     SubgroupLocalInvocationId = 41,
433     VertexIndex = 42,
434     InstanceIndex = 43,
435     SubgroupEqMaskKHR = 4416,
436     SubgroupGeMaskKHR = 4417,
437     SubgroupGtMaskKHR = 4418,
438     SubgroupLeMaskKHR = 4419,
439     SubgroupLtMaskKHR = 4420,
440     BaseVertex = 4424,
441     BaseInstance = 4425,
442     DrawIndex = 4426,
443     DeviceIndex = 4438,
444     ViewIndex = 4440,
445     BaryCoordNoPerspAMD = 4992,
446     BaryCoordNoPerspCentroidAMD = 4993,
447     BaryCoordNoPerspSampleAMD = 4994,
448     BaryCoordSmoothAMD = 4995,
449     BaryCoordSmoothCentroidAMD = 4996,
450     BaryCoordSmoothSampleAMD = 4997,
451     BaryCoordPullModelAMD = 4998,
452     ViewportMaskNV = 5253,
453     SecondaryPositionNV = 5257,
454     SecondaryViewportMaskNV = 5258,
455     PositionPerViewNV = 5261,
456     ViewportMaskPerViewNV = 5262,
457     Max = 0x7fffffff,
458 };
459
460 enum class SelectionControlShift : unsigned {
461     Flatten = 0,
462     DontFlatten = 1,
463     Max = 0x7fffffff,
464 };
465
466 enum class SelectionControlMask : unsigned {
467     MaskNone = 0,
468     Flatten = 0x00000001,
469     DontFlatten = 0x00000002,
470 };
471
472 enum class LoopControlShift : unsigned {
473     Unroll = 0,
474     DontUnroll = 1,
475     DependencyInfinite = 2,
476     DependencyLength = 3,
477     Max = 0x7fffffff,
478 };
479
480 enum class LoopControlMask : unsigned {
481     MaskNone = 0,
482     Unroll = 0x00000001,
483     DontUnroll = 0x00000002,
484     DependencyInfinite = 0x00000004,
485     DependencyLength = 0x00000008,
486 };
487
488 enum class FunctionControlShift : unsigned {
489     Inline = 0,
490     DontInline = 1,
491     Pure = 2,
492     Const = 3,
493     Max = 0x7fffffff,
494 };
495
496 enum class FunctionControlMask : unsigned {
497     MaskNone = 0,
498     Inline = 0x00000001,
499     DontInline = 0x00000002,
500     Pure = 0x00000004,
501     Const = 0x00000008,
502 };
503
504 enum class MemorySemanticsShift : unsigned {
505     Acquire = 1,
506     Release = 2,
507     AcquireRelease = 3,
508     SequentiallyConsistent = 4,
509     UniformMemory = 6,
510     SubgroupMemory = 7,
511     WorkgroupMemory = 8,
512     CrossWorkgroupMemory = 9,
513     AtomicCounterMemory = 10,
514     ImageMemory = 11,
515     Max = 0x7fffffff,
516 };
517
518 enum class MemorySemanticsMask : unsigned {
519     MaskNone = 0,
520     Acquire = 0x00000002,
521     Release = 0x00000004,
522     AcquireRelease = 0x00000008,
523     SequentiallyConsistent = 0x00000010,
524     UniformMemory = 0x00000040,
525     SubgroupMemory = 0x00000080,
526     WorkgroupMemory = 0x00000100,
527     CrossWorkgroupMemory = 0x00000200,
528     AtomicCounterMemory = 0x00000400,
529     ImageMemory = 0x00000800,
530 };
531
532 enum class MemoryAccessShift : unsigned {
533     Volatile = 0,
534     Aligned = 1,
535     Nontemporal = 2,
536     Max = 0x7fffffff,
537 };
538
539 enum class MemoryAccessMask : unsigned {
540     MaskNone = 0,
541     Volatile = 0x00000001,
542     Aligned = 0x00000002,
543     Nontemporal = 0x00000004,
544 };
545
546 enum class Scope : unsigned {
547     CrossDevice = 0,
548     Device = 1,
549     Workgroup = 2,
550     Subgroup = 3,
551     Invocation = 4,
552     Max = 0x7fffffff,
553 };
554
555 enum class GroupOperation : unsigned {
556     Reduce = 0,
557     InclusiveScan = 1,
558     ExclusiveScan = 2,
559     Max = 0x7fffffff,
560 };
561
562 enum class KernelEnqueueFlags : unsigned {
563     NoWait = 0,
564     WaitKernel = 1,
565     WaitWorkGroup = 2,
566     Max = 0x7fffffff,
567 };
568
569 enum class KernelProfilingInfoShift : unsigned {
570     CmdExecTime = 0,
571     Max = 0x7fffffff,
572 };
573
574 enum class KernelProfilingInfoMask : unsigned {
575     MaskNone = 0,
576     CmdExecTime = 0x00000001,
577 };
578
579 enum class Capability : unsigned {
580     Matrix = 0,
581     Shader = 1,
582     Geometry = 2,
583     Tessellation = 3,
584     Addresses = 4,
585     Linkage = 5,
586     Kernel = 6,
587     Vector16 = 7,
588     Float16Buffer = 8,
589     Float16 = 9,
590     Float64 = 10,
591     Int64 = 11,
592     Int64Atomics = 12,
593     ImageBasic = 13,
594     ImageReadWrite = 14,
595     ImageMipmap = 15,
596     Pipes = 17,
597     Groups = 18,
598     DeviceEnqueue = 19,
599     LiteralSampler = 20,
600     AtomicStorage = 21,
601     Int16 = 22,
602     TessellationPointSize = 23,
603     GeometryPointSize = 24,
604     ImageGatherExtended = 25,
605     StorageImageMultisample = 27,
606     UniformBufferArrayDynamicIndexing = 28,
607     SampledImageArrayDynamicIndexing = 29,
608     StorageBufferArrayDynamicIndexing = 30,
609     StorageImageArrayDynamicIndexing = 31,
610     ClipDistance = 32,
611     CullDistance = 33,
612     ImageCubeArray = 34,
613     SampleRateShading = 35,
614     ImageRect = 36,
615     SampledRect = 37,
616     GenericPointer = 38,
617     Int8 = 39,
618     InputAttachment = 40,
619     SparseResidency = 41,
620     MinLod = 42,
621     Sampled1D = 43,
622     Image1D = 44,
623     SampledCubeArray = 45,
624     SampledBuffer = 46,
625     ImageBuffer = 47,
626     ImageMSArray = 48,
627     StorageImageExtendedFormats = 49,
628     ImageQuery = 50,
629     DerivativeControl = 51,
630     InterpolationFunction = 52,
631     TransformFeedback = 53,
632     GeometryStreams = 54,
633     StorageImageReadWithoutFormat = 55,
634     StorageImageWriteWithoutFormat = 56,
635     MultiViewport = 57,
636     SubgroupDispatch = 58,
637     NamedBarrier = 59,
638     PipeStorage = 60,
639     SubgroupBallotKHR = 4423,
640     DrawParameters = 4427,
641     SubgroupVoteKHR = 4431,
642     StorageBuffer16BitAccess = 4433,
643     StorageUniformBufferBlock16 = 4433,
644     StorageUniform16 = 4434,
645     UniformAndStorageBuffer16BitAccess = 4434,
646     StoragePushConstant16 = 4435,
647     StorageInputOutput16 = 4436,
648     DeviceGroup = 4437,
649     MultiView = 4439,
650     VariablePointersStorageBuffer = 4441,
651     VariablePointers = 4442,
652     AtomicStorageOps = 4445,
653     SampleMaskPostDepthCoverage = 4447,
654     ImageGatherBiasLodAMD = 5009,
655     SampleMaskOverrideCoverageNV = 5249,
656     GeometryShaderPassthroughNV = 5251,
657     ShaderViewportIndexLayerNV = 5254,
658     ShaderViewportMaskNV = 5255,
659     ShaderStereoViewNV = 5259,
660     PerViewAttributesNV = 5260,
661     Max = 0x7fffffff,
662 };
663
664 enum class Op : unsigned {
665     OpNop = 0,
666     OpUndef = 1,
667     OpSourceContinued = 2,
668     OpSource = 3,
669     OpSourceExtension = 4,
670     OpName = 5,
671     OpMemberName = 6,
672     OpString = 7,
673     OpLine = 8,
674     OpExtension = 10,
675     OpExtInstImport = 11,
676     OpExtInst = 12,
677     OpMemoryModel = 14,
678     OpEntryPoint = 15,
679     OpExecutionMode = 16,
680     OpCapability = 17,
681     OpTypeVoid = 19,
682     OpTypeBool = 20,
683     OpTypeInt = 21,
684     OpTypeFloat = 22,
685     OpTypeVector = 23,
686     OpTypeMatrix = 24,
687     OpTypeImage = 25,
688     OpTypeSampler = 26,
689     OpTypeSampledImage = 27,
690     OpTypeArray = 28,
691     OpTypeRuntimeArray = 29,
692     OpTypeStruct = 30,
693     OpTypeOpaque = 31,
694     OpTypePointer = 32,
695     OpTypeFunction = 33,
696     OpTypeEvent = 34,
697     OpTypeDeviceEvent = 35,
698     OpTypeReserveId = 36,
699     OpTypeQueue = 37,
700     OpTypePipe = 38,
701     OpTypeForwardPointer = 39,
702     OpConstantTrue = 41,
703     OpConstantFalse = 42,
704     OpConstant = 43,
705     OpConstantComposite = 44,
706     OpConstantSampler = 45,
707     OpConstantNull = 46,
708     OpSpecConstantTrue = 48,
709     OpSpecConstantFalse = 49,
710     OpSpecConstant = 50,
711     OpSpecConstantComposite = 51,
712     OpSpecConstantOp = 52,
713     OpFunction = 54,
714     OpFunctionParameter = 55,
715     OpFunctionEnd = 56,
716     OpFunctionCall = 57,
717     OpVariable = 59,
718     OpImageTexelPointer = 60,
719     OpLoad = 61,
720     OpStore = 62,
721     OpCopyMemory = 63,
722     OpCopyMemorySized = 64,
723     OpAccessChain = 65,
724     OpInBoundsAccessChain = 66,
725     OpPtrAccessChain = 67,
726     OpArrayLength = 68,
727     OpGenericPtrMemSemantics = 69,
728     OpInBoundsPtrAccessChain = 70,
729     OpDecorate = 71,
730     OpMemberDecorate = 72,
731     OpDecorationGroup = 73,
732     OpGroupDecorate = 74,
733     OpGroupMemberDecorate = 75,
734     OpVectorExtractDynamic = 77,
735     OpVectorInsertDynamic = 78,
736     OpVectorShuffle = 79,
737     OpCompositeConstruct = 80,
738     OpCompositeExtract = 81,
739     OpCompositeInsert = 82,
740     OpCopyObject = 83,
741     OpTranspose = 84,
742     OpSampledImage = 86,
743     OpImageSampleImplicitLod = 87,
744     OpImageSampleExplicitLod = 88,
745     OpImageSampleDrefImplicitLod = 89,
746     OpImageSampleDrefExplicitLod = 90,
747     OpImageSampleProjImplicitLod = 91,
748     OpImageSampleProjExplicitLod = 92,
749     OpImageSampleProjDrefImplicitLod = 93,
750     OpImageSampleProjDrefExplicitLod = 94,
751     OpImageFetch = 95,
752     OpImageGather = 96,
753     OpImageDrefGather = 97,
754     OpImageRead = 98,
755     OpImageWrite = 99,
756     OpImage = 100,
757     OpImageQueryFormat = 101,
758     OpImageQueryOrder = 102,
759     OpImageQuerySizeLod = 103,
760     OpImageQuerySize = 104,
761     OpImageQueryLod = 105,
762     OpImageQueryLevels = 106,
763     OpImageQuerySamples = 107,
764     OpConvertFToU = 109,
765     OpConvertFToS = 110,
766     OpConvertSToF = 111,
767     OpConvertUToF = 112,
768     OpUConvert = 113,
769     OpSConvert = 114,
770     OpFConvert = 115,
771     OpQuantizeToF16 = 116,
772     OpConvertPtrToU = 117,
773     OpSatConvertSToU = 118,
774     OpSatConvertUToS = 119,
775     OpConvertUToPtr = 120,
776     OpPtrCastToGeneric = 121,
777     OpGenericCastToPtr = 122,
778     OpGenericCastToPtrExplicit = 123,
779     OpBitcast = 124,
780     OpSNegate = 126,
781     OpFNegate = 127,
782     OpIAdd = 128,
783     OpFAdd = 129,
784     OpISub = 130,
785     OpFSub = 131,
786     OpIMul = 132,
787     OpFMul = 133,
788     OpUDiv = 134,
789     OpSDiv = 135,
790     OpFDiv = 136,
791     OpUMod = 137,
792     OpSRem = 138,
793     OpSMod = 139,
794     OpFRem = 140,
795     OpFMod = 141,
796     OpVectorTimesScalar = 142,
797     OpMatrixTimesScalar = 143,
798     OpVectorTimesMatrix = 144,
799     OpMatrixTimesVector = 145,
800     OpMatrixTimesMatrix = 146,
801     OpOuterProduct = 147,
802     OpDot = 148,
803     OpIAddCarry = 149,
804     OpISubBorrow = 150,
805     OpUMulExtended = 151,
806     OpSMulExtended = 152,
807     OpAny = 154,
808     OpAll = 155,
809     OpIsNan = 156,
810     OpIsInf = 157,
811     OpIsFinite = 158,
812     OpIsNormal = 159,
813     OpSignBitSet = 160,
814     OpLessOrGreater = 161,
815     OpOrdered = 162,
816     OpUnordered = 163,
817     OpLogicalEqual = 164,
818     OpLogicalNotEqual = 165,
819     OpLogicalOr = 166,
820     OpLogicalAnd = 167,
821     OpLogicalNot = 168,
822     OpSelect = 169,
823     OpIEqual = 170,
824     OpINotEqual = 171,
825     OpUGreaterThan = 172,
826     OpSGreaterThan = 173,
827     OpUGreaterThanEqual = 174,
828     OpSGreaterThanEqual = 175,
829     OpULessThan = 176,
830     OpSLessThan = 177,
831     OpULessThanEqual = 178,
832     OpSLessThanEqual = 179,
833     OpFOrdEqual = 180,
834     OpFUnordEqual = 181,
835     OpFOrdNotEqual = 182,
836     OpFUnordNotEqual = 183,
837     OpFOrdLessThan = 184,
838     OpFUnordLessThan = 185,
839     OpFOrdGreaterThan = 186,
840     OpFUnordGreaterThan = 187,
841     OpFOrdLessThanEqual = 188,
842     OpFUnordLessThanEqual = 189,
843     OpFOrdGreaterThanEqual = 190,
844     OpFUnordGreaterThanEqual = 191,
845     OpShiftRightLogical = 194,
846     OpShiftRightArithmetic = 195,
847     OpShiftLeftLogical = 196,
848     OpBitwiseOr = 197,
849     OpBitwiseXor = 198,
850     OpBitwiseAnd = 199,
851     OpNot = 200,
852     OpBitFieldInsert = 201,
853     OpBitFieldSExtract = 202,
854     OpBitFieldUExtract = 203,
855     OpBitReverse = 204,
856     OpBitCount = 205,
857     OpDPdx = 207,
858     OpDPdy = 208,
859     OpFwidth = 209,
860     OpDPdxFine = 210,
861     OpDPdyFine = 211,
862     OpFwidthFine = 212,
863     OpDPdxCoarse = 213,
864     OpDPdyCoarse = 214,
865     OpFwidthCoarse = 215,
866     OpEmitVertex = 218,
867     OpEndPrimitive = 219,
868     OpEmitStreamVertex = 220,
869     OpEndStreamPrimitive = 221,
870     OpControlBarrier = 224,
871     OpMemoryBarrier = 225,
872     OpAtomicLoad = 227,
873     OpAtomicStore = 228,
874     OpAtomicExchange = 229,
875     OpAtomicCompareExchange = 230,
876     OpAtomicCompareExchangeWeak = 231,
877     OpAtomicIIncrement = 232,
878     OpAtomicIDecrement = 233,
879     OpAtomicIAdd = 234,
880     OpAtomicISub = 235,
881     OpAtomicSMin = 236,
882     OpAtomicUMin = 237,
883     OpAtomicSMax = 238,
884     OpAtomicUMax = 239,
885     OpAtomicAnd = 240,
886     OpAtomicOr = 241,
887     OpAtomicXor = 242,
888     OpPhi = 245,
889     OpLoopMerge = 246,
890     OpSelectionMerge = 247,
891     OpLabel = 248,
892     OpBranch = 249,
893     OpBranchConditional = 250,
894     OpSwitch = 251,
895     OpKill = 252,
896     OpReturn = 253,
897     OpReturnValue = 254,
898     OpUnreachable = 255,
899     OpLifetimeStart = 256,
900     OpLifetimeStop = 257,
901     OpGroupAsyncCopy = 259,
902     OpGroupWaitEvents = 260,
903     OpGroupAll = 261,
904     OpGroupAny = 262,
905     OpGroupBroadcast = 263,
906     OpGroupIAdd = 264,
907     OpGroupFAdd = 265,
908     OpGroupFMin = 266,
909     OpGroupUMin = 267,
910     OpGroupSMin = 268,
911     OpGroupFMax = 269,
912     OpGroupUMax = 270,
913     OpGroupSMax = 271,
914     OpReadPipe = 274,
915     OpWritePipe = 275,
916     OpReservedReadPipe = 276,
917     OpReservedWritePipe = 277,
918     OpReserveReadPipePackets = 278,
919     OpReserveWritePipePackets = 279,
920     OpCommitReadPipe = 280,
921     OpCommitWritePipe = 281,
922     OpIsValidReserveId = 282,
923     OpGetNumPipePackets = 283,
924     OpGetMaxPipePackets = 284,
925     OpGroupReserveReadPipePackets = 285,
926     OpGroupReserveWritePipePackets = 286,
927     OpGroupCommitReadPipe = 287,
928     OpGroupCommitWritePipe = 288,
929     OpEnqueueMarker = 291,
930     OpEnqueueKernel = 292,
931     OpGetKernelNDrangeSubGroupCount = 293,
932     OpGetKernelNDrangeMaxSubGroupSize = 294,
933     OpGetKernelWorkGroupSize = 295,
934     OpGetKernelPreferredWorkGroupSizeMultiple = 296,
935     OpRetainEvent = 297,
936     OpReleaseEvent = 298,
937     OpCreateUserEvent = 299,
938     OpIsValidEvent = 300,
939     OpSetUserEventStatus = 301,
940     OpCaptureEventProfilingInfo = 302,
941     OpGetDefaultQueue = 303,
942     OpBuildNDRange = 304,
943     OpImageSparseSampleImplicitLod = 305,
944     OpImageSparseSampleExplicitLod = 306,
945     OpImageSparseSampleDrefImplicitLod = 307,
946     OpImageSparseSampleDrefExplicitLod = 308,
947     OpImageSparseSampleProjImplicitLod = 309,
948     OpImageSparseSampleProjExplicitLod = 310,
949     OpImageSparseSampleProjDrefImplicitLod = 311,
950     OpImageSparseSampleProjDrefExplicitLod = 312,
951     OpImageSparseFetch = 313,
952     OpImageSparseGather = 314,
953     OpImageSparseDrefGather = 315,
954     OpImageSparseTexelsResident = 316,
955     OpNoLine = 317,
956     OpAtomicFlagTestAndSet = 318,
957     OpAtomicFlagClear = 319,
958     OpImageSparseRead = 320,
959     OpSizeOf = 321,
960     OpTypePipeStorage = 322,
961     OpConstantPipeStorage = 323,
962     OpCreatePipeFromPipeStorage = 324,
963     OpGetKernelLocalSizeForSubgroupCount = 325,
964     OpGetKernelMaxNumSubgroups = 326,
965     OpTypeNamedBarrier = 327,
966     OpNamedBarrierInitialize = 328,
967     OpMemoryNamedBarrier = 329,
968     OpModuleProcessed = 330,
969     OpSubgroupBallotKHR = 4421,
970     OpSubgroupFirstInvocationKHR = 4422,
971     OpSubgroupAllKHR = 4428,
972     OpSubgroupAnyKHR = 4429,
973     OpSubgroupAllEqualKHR = 4430,
974     OpSubgroupReadInvocationKHR = 4432,
975     OpGroupIAddNonUniformAMD = 5000,
976     OpGroupFAddNonUniformAMD = 5001,
977     OpGroupFMinNonUniformAMD = 5002,
978     OpGroupUMinNonUniformAMD = 5003,
979     OpGroupSMinNonUniformAMD = 5004,
980     OpGroupFMaxNonUniformAMD = 5005,
981     OpGroupUMaxNonUniformAMD = 5006,
982     OpGroupSMaxNonUniformAMD = 5007,
983     Max = 0x7fffffff,
984 };
985
986 // Overload operator| for mask bit combining
987
988 inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
989 inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
990 inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
991 inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
992 inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
993 inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
994 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
995 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
996
997 }  // end namespace spv
998
999 #endif  // #ifndef spirv_HPP
1000