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