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