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