~mmach/netext73/spirv-headers

« back to all changes in this revision

Viewing changes to include/spirv/1.1/spirv.hpp11

  • Committer: mmach
  • Date: 2020-02-05 18:41:33 UTC
  • Revision ID: netbit73@gmail.com-20200205184133-m07iqdth12970zel
1.5

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (c) 2014-2018 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
    HlslCounterBufferGOOGLE = 5634,
 
392
    HlslSemanticGOOGLE = 5635,
 
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
    BaryCoordNoPerspAMD = 4992,
 
449
    BaryCoordNoPerspCentroidAMD = 4993,
 
450
    BaryCoordNoPerspSampleAMD = 4994,
 
451
    BaryCoordSmoothAMD = 4995,
 
452
    BaryCoordSmoothCentroidAMD = 4996,
 
453
    BaryCoordSmoothSampleAMD = 4997,
 
454
    BaryCoordPullModelAMD = 4998,
 
455
    FragStencilRefEXT = 5014,
 
456
    ViewportMaskNV = 5253,
 
457
    SecondaryPositionNV = 5257,
 
458
    SecondaryViewportMaskNV = 5258,
 
459
    PositionPerViewNV = 5261,
 
460
    ViewportMaskPerViewNV = 5262,
 
461
    Max = 0x7fffffff,
 
462
};
 
463
 
 
464
enum class SelectionControlShift : unsigned {
 
465
    Flatten = 0,
 
466
    DontFlatten = 1,
 
467
    Max = 0x7fffffff,
 
468
};
 
469
 
 
470
enum class SelectionControlMask : unsigned {
 
471
    MaskNone = 0,
 
472
    Flatten = 0x00000001,
 
473
    DontFlatten = 0x00000002,
 
474
};
 
475
 
 
476
enum class LoopControlShift : unsigned {
 
477
    Unroll = 0,
 
478
    DontUnroll = 1,
 
479
    DependencyInfinite = 2,
 
480
    DependencyLength = 3,
 
481
    Max = 0x7fffffff,
 
482
};
 
483
 
 
484
enum class LoopControlMask : unsigned {
 
485
    MaskNone = 0,
 
486
    Unroll = 0x00000001,
 
487
    DontUnroll = 0x00000002,
 
488
    DependencyInfinite = 0x00000004,
 
489
    DependencyLength = 0x00000008,
 
490
};
 
491
 
 
492
enum class FunctionControlShift : unsigned {
 
493
    Inline = 0,
 
494
    DontInline = 1,
 
495
    Pure = 2,
 
496
    Const = 3,
 
497
    Max = 0x7fffffff,
 
498
};
 
499
 
 
500
enum class FunctionControlMask : unsigned {
 
501
    MaskNone = 0,
 
502
    Inline = 0x00000001,
 
503
    DontInline = 0x00000002,
 
504
    Pure = 0x00000004,
 
505
    Const = 0x00000008,
 
506
};
 
507
 
 
508
enum class MemorySemanticsShift : unsigned {
 
509
    Acquire = 1,
 
510
    Release = 2,
 
511
    AcquireRelease = 3,
 
512
    SequentiallyConsistent = 4,
 
513
    UniformMemory = 6,
 
514
    SubgroupMemory = 7,
 
515
    WorkgroupMemory = 8,
 
516
    CrossWorkgroupMemory = 9,
 
517
    AtomicCounterMemory = 10,
 
518
    ImageMemory = 11,
 
519
    Max = 0x7fffffff,
 
520
};
 
521
 
 
522
enum class MemorySemanticsMask : unsigned {
 
523
    MaskNone = 0,
 
524
    Acquire = 0x00000002,
 
525
    Release = 0x00000004,
 
526
    AcquireRelease = 0x00000008,
 
527
    SequentiallyConsistent = 0x00000010,
 
528
    UniformMemory = 0x00000040,
 
529
    SubgroupMemory = 0x00000080,
 
530
    WorkgroupMemory = 0x00000100,
 
531
    CrossWorkgroupMemory = 0x00000200,
 
532
    AtomicCounterMemory = 0x00000400,
 
533
    ImageMemory = 0x00000800,
 
534
};
 
535
 
 
536
enum class MemoryAccessShift : unsigned {
 
537
    Volatile = 0,
 
538
    Aligned = 1,
 
539
    Nontemporal = 2,
 
540
    Max = 0x7fffffff,
 
541
};
 
542
 
 
543
enum class MemoryAccessMask : unsigned {
 
544
    MaskNone = 0,
 
545
    Volatile = 0x00000001,
 
546
    Aligned = 0x00000002,
 
547
    Nontemporal = 0x00000004,
 
548
};
 
549
 
 
550
enum class Scope : unsigned {
 
551
    CrossDevice = 0,
 
552
    Device = 1,
 
553
    Workgroup = 2,
 
554
    Subgroup = 3,
 
555
    Invocation = 4,
 
556
    Max = 0x7fffffff,
 
557
};
 
558
 
 
559
enum class GroupOperation : unsigned {
 
560
    Reduce = 0,
 
561
    InclusiveScan = 1,
 
562
    ExclusiveScan = 2,
 
563
    Max = 0x7fffffff,
 
564
};
 
565
 
 
566
enum class KernelEnqueueFlags : unsigned {
 
567
    NoWait = 0,
 
568
    WaitKernel = 1,
 
569
    WaitWorkGroup = 2,
 
570
    Max = 0x7fffffff,
 
571
};
 
572
 
 
573
enum class KernelProfilingInfoShift : unsigned {
 
574
    CmdExecTime = 0,
 
575
    Max = 0x7fffffff,
 
576
};
 
577
 
 
578
enum class KernelProfilingInfoMask : unsigned {
 
579
    MaskNone = 0,
 
580
    CmdExecTime = 0x00000001,
 
581
};
 
582
 
 
583
enum class Capability : unsigned {
 
584
    Matrix = 0,
 
585
    Shader = 1,
 
586
    Geometry = 2,
 
587
    Tessellation = 3,
 
588
    Addresses = 4,
 
589
    Linkage = 5,
 
590
    Kernel = 6,
 
591
    Vector16 = 7,
 
592
    Float16Buffer = 8,
 
593
    Float16 = 9,
 
594
    Float64 = 10,
 
595
    Int64 = 11,
 
596
    Int64Atomics = 12,
 
597
    ImageBasic = 13,
 
598
    ImageReadWrite = 14,
 
599
    ImageMipmap = 15,
 
600
    Pipes = 17,
 
601
    Groups = 18,
 
602
    DeviceEnqueue = 19,
 
603
    LiteralSampler = 20,
 
604
    AtomicStorage = 21,
 
605
    Int16 = 22,
 
606
    TessellationPointSize = 23,
 
607
    GeometryPointSize = 24,
 
608
    ImageGatherExtended = 25,
 
609
    StorageImageMultisample = 27,
 
610
    UniformBufferArrayDynamicIndexing = 28,
 
611
    SampledImageArrayDynamicIndexing = 29,
 
612
    StorageBufferArrayDynamicIndexing = 30,
 
613
    StorageImageArrayDynamicIndexing = 31,
 
614
    ClipDistance = 32,
 
615
    CullDistance = 33,
 
616
    ImageCubeArray = 34,
 
617
    SampleRateShading = 35,
 
618
    ImageRect = 36,
 
619
    SampledRect = 37,
 
620
    GenericPointer = 38,
 
621
    Int8 = 39,
 
622
    InputAttachment = 40,
 
623
    SparseResidency = 41,
 
624
    MinLod = 42,
 
625
    Sampled1D = 43,
 
626
    Image1D = 44,
 
627
    SampledCubeArray = 45,
 
628
    SampledBuffer = 46,
 
629
    ImageBuffer = 47,
 
630
    ImageMSArray = 48,
 
631
    StorageImageExtendedFormats = 49,
 
632
    ImageQuery = 50,
 
633
    DerivativeControl = 51,
 
634
    InterpolationFunction = 52,
 
635
    TransformFeedback = 53,
 
636
    GeometryStreams = 54,
 
637
    StorageImageReadWithoutFormat = 55,
 
638
    StorageImageWriteWithoutFormat = 56,
 
639
    MultiViewport = 57,
 
640
    SubgroupDispatch = 58,
 
641
    NamedBarrier = 59,
 
642
    PipeStorage = 60,
 
643
    SubgroupBallotKHR = 4423,
 
644
    DrawParameters = 4427,
 
645
    SubgroupVoteKHR = 4431,
 
646
    StorageBuffer16BitAccess = 4433,
 
647
    StorageUniformBufferBlock16 = 4433,
 
648
    StorageUniform16 = 4434,
 
649
    UniformAndStorageBuffer16BitAccess = 4434,
 
650
    StoragePushConstant16 = 4435,
 
651
    StorageInputOutput16 = 4436,
 
652
    DeviceGroup = 4437,
 
653
    MultiView = 4439,
 
654
    VariablePointersStorageBuffer = 4441,
 
655
    VariablePointers = 4442,
 
656
    AtomicStorageOps = 4445,
 
657
    SampleMaskPostDepthCoverage = 4447,
 
658
    ImageGatherBiasLodAMD = 5009,
 
659
    FragmentMaskAMD = 5010,
 
660
    StencilExportEXT = 5013,
 
661
    ImageReadWriteLodAMD = 5015,
 
662
    SampleMaskOverrideCoverageNV = 5249,
 
663
    GeometryShaderPassthroughNV = 5251,
 
664
    ShaderViewportIndexLayerEXT = 5254,
 
665
    ShaderViewportIndexLayerNV = 5254,
 
666
    ShaderViewportMaskNV = 5255,
 
667
    ShaderStereoViewNV = 5259,
 
668
    PerViewAttributesNV = 5260,
 
669
    SubgroupShuffleINTEL = 5568,
 
670
    SubgroupBufferBlockIOINTEL = 5569,
 
671
    SubgroupImageBlockIOINTEL = 5570,
 
672
    Max = 0x7fffffff,
 
673
};
 
674
 
 
675
enum class Op : unsigned {
 
676
    OpNop = 0,
 
677
    OpUndef = 1,
 
678
    OpSourceContinued = 2,
 
679
    OpSource = 3,
 
680
    OpSourceExtension = 4,
 
681
    OpName = 5,
 
682
    OpMemberName = 6,
 
683
    OpString = 7,
 
684
    OpLine = 8,
 
685
    OpExtension = 10,
 
686
    OpExtInstImport = 11,
 
687
    OpExtInst = 12,
 
688
    OpMemoryModel = 14,
 
689
    OpEntryPoint = 15,
 
690
    OpExecutionMode = 16,
 
691
    OpCapability = 17,
 
692
    OpTypeVoid = 19,
 
693
    OpTypeBool = 20,
 
694
    OpTypeInt = 21,
 
695
    OpTypeFloat = 22,
 
696
    OpTypeVector = 23,
 
697
    OpTypeMatrix = 24,
 
698
    OpTypeImage = 25,
 
699
    OpTypeSampler = 26,
 
700
    OpTypeSampledImage = 27,
 
701
    OpTypeArray = 28,
 
702
    OpTypeRuntimeArray = 29,
 
703
    OpTypeStruct = 30,
 
704
    OpTypeOpaque = 31,
 
705
    OpTypePointer = 32,
 
706
    OpTypeFunction = 33,
 
707
    OpTypeEvent = 34,
 
708
    OpTypeDeviceEvent = 35,
 
709
    OpTypeReserveId = 36,
 
710
    OpTypeQueue = 37,
 
711
    OpTypePipe = 38,
 
712
    OpTypeForwardPointer = 39,
 
713
    OpConstantTrue = 41,
 
714
    OpConstantFalse = 42,
 
715
    OpConstant = 43,
 
716
    OpConstantComposite = 44,
 
717
    OpConstantSampler = 45,
 
718
    OpConstantNull = 46,
 
719
    OpSpecConstantTrue = 48,
 
720
    OpSpecConstantFalse = 49,
 
721
    OpSpecConstant = 50,
 
722
    OpSpecConstantComposite = 51,
 
723
    OpSpecConstantOp = 52,
 
724
    OpFunction = 54,
 
725
    OpFunctionParameter = 55,
 
726
    OpFunctionEnd = 56,
 
727
    OpFunctionCall = 57,
 
728
    OpVariable = 59,
 
729
    OpImageTexelPointer = 60,
 
730
    OpLoad = 61,
 
731
    OpStore = 62,
 
732
    OpCopyMemory = 63,
 
733
    OpCopyMemorySized = 64,
 
734
    OpAccessChain = 65,
 
735
    OpInBoundsAccessChain = 66,
 
736
    OpPtrAccessChain = 67,
 
737
    OpArrayLength = 68,
 
738
    OpGenericPtrMemSemantics = 69,
 
739
    OpInBoundsPtrAccessChain = 70,
 
740
    OpDecorate = 71,
 
741
    OpMemberDecorate = 72,
 
742
    OpDecorationGroup = 73,
 
743
    OpGroupDecorate = 74,
 
744
    OpGroupMemberDecorate = 75,
 
745
    OpVectorExtractDynamic = 77,
 
746
    OpVectorInsertDynamic = 78,
 
747
    OpVectorShuffle = 79,
 
748
    OpCompositeConstruct = 80,
 
749
    OpCompositeExtract = 81,
 
750
    OpCompositeInsert = 82,
 
751
    OpCopyObject = 83,
 
752
    OpTranspose = 84,
 
753
    OpSampledImage = 86,
 
754
    OpImageSampleImplicitLod = 87,
 
755
    OpImageSampleExplicitLod = 88,
 
756
    OpImageSampleDrefImplicitLod = 89,
 
757
    OpImageSampleDrefExplicitLod = 90,
 
758
    OpImageSampleProjImplicitLod = 91,
 
759
    OpImageSampleProjExplicitLod = 92,
 
760
    OpImageSampleProjDrefImplicitLod = 93,
 
761
    OpImageSampleProjDrefExplicitLod = 94,
 
762
    OpImageFetch = 95,
 
763
    OpImageGather = 96,
 
764
    OpImageDrefGather = 97,
 
765
    OpImageRead = 98,
 
766
    OpImageWrite = 99,
 
767
    OpImage = 100,
 
768
    OpImageQueryFormat = 101,
 
769
    OpImageQueryOrder = 102,
 
770
    OpImageQuerySizeLod = 103,
 
771
    OpImageQuerySize = 104,
 
772
    OpImageQueryLod = 105,
 
773
    OpImageQueryLevels = 106,
 
774
    OpImageQuerySamples = 107,
 
775
    OpConvertFToU = 109,
 
776
    OpConvertFToS = 110,
 
777
    OpConvertSToF = 111,
 
778
    OpConvertUToF = 112,
 
779
    OpUConvert = 113,
 
780
    OpSConvert = 114,
 
781
    OpFConvert = 115,
 
782
    OpQuantizeToF16 = 116,
 
783
    OpConvertPtrToU = 117,
 
784
    OpSatConvertSToU = 118,
 
785
    OpSatConvertUToS = 119,
 
786
    OpConvertUToPtr = 120,
 
787
    OpPtrCastToGeneric = 121,
 
788
    OpGenericCastToPtr = 122,
 
789
    OpGenericCastToPtrExplicit = 123,
 
790
    OpBitcast = 124,
 
791
    OpSNegate = 126,
 
792
    OpFNegate = 127,
 
793
    OpIAdd = 128,
 
794
    OpFAdd = 129,
 
795
    OpISub = 130,
 
796
    OpFSub = 131,
 
797
    OpIMul = 132,
 
798
    OpFMul = 133,
 
799
    OpUDiv = 134,
 
800
    OpSDiv = 135,
 
801
    OpFDiv = 136,
 
802
    OpUMod = 137,
 
803
    OpSRem = 138,
 
804
    OpSMod = 139,
 
805
    OpFRem = 140,
 
806
    OpFMod = 141,
 
807
    OpVectorTimesScalar = 142,
 
808
    OpMatrixTimesScalar = 143,
 
809
    OpVectorTimesMatrix = 144,
 
810
    OpMatrixTimesVector = 145,
 
811
    OpMatrixTimesMatrix = 146,
 
812
    OpOuterProduct = 147,
 
813
    OpDot = 148,
 
814
    OpIAddCarry = 149,
 
815
    OpISubBorrow = 150,
 
816
    OpUMulExtended = 151,
 
817
    OpSMulExtended = 152,
 
818
    OpAny = 154,
 
819
    OpAll = 155,
 
820
    OpIsNan = 156,
 
821
    OpIsInf = 157,
 
822
    OpIsFinite = 158,
 
823
    OpIsNormal = 159,
 
824
    OpSignBitSet = 160,
 
825
    OpLessOrGreater = 161,
 
826
    OpOrdered = 162,
 
827
    OpUnordered = 163,
 
828
    OpLogicalEqual = 164,
 
829
    OpLogicalNotEqual = 165,
 
830
    OpLogicalOr = 166,
 
831
    OpLogicalAnd = 167,
 
832
    OpLogicalNot = 168,
 
833
    OpSelect = 169,
 
834
    OpIEqual = 170,
 
835
    OpINotEqual = 171,
 
836
    OpUGreaterThan = 172,
 
837
    OpSGreaterThan = 173,
 
838
    OpUGreaterThanEqual = 174,
 
839
    OpSGreaterThanEqual = 175,
 
840
    OpULessThan = 176,
 
841
    OpSLessThan = 177,
 
842
    OpULessThanEqual = 178,
 
843
    OpSLessThanEqual = 179,
 
844
    OpFOrdEqual = 180,
 
845
    OpFUnordEqual = 181,
 
846
    OpFOrdNotEqual = 182,
 
847
    OpFUnordNotEqual = 183,
 
848
    OpFOrdLessThan = 184,
 
849
    OpFUnordLessThan = 185,
 
850
    OpFOrdGreaterThan = 186,
 
851
    OpFUnordGreaterThan = 187,
 
852
    OpFOrdLessThanEqual = 188,
 
853
    OpFUnordLessThanEqual = 189,
 
854
    OpFOrdGreaterThanEqual = 190,
 
855
    OpFUnordGreaterThanEqual = 191,
 
856
    OpShiftRightLogical = 194,
 
857
    OpShiftRightArithmetic = 195,
 
858
    OpShiftLeftLogical = 196,
 
859
    OpBitwiseOr = 197,
 
860
    OpBitwiseXor = 198,
 
861
    OpBitwiseAnd = 199,
 
862
    OpNot = 200,
 
863
    OpBitFieldInsert = 201,
 
864
    OpBitFieldSExtract = 202,
 
865
    OpBitFieldUExtract = 203,
 
866
    OpBitReverse = 204,
 
867
    OpBitCount = 205,
 
868
    OpDPdx = 207,
 
869
    OpDPdy = 208,
 
870
    OpFwidth = 209,
 
871
    OpDPdxFine = 210,
 
872
    OpDPdyFine = 211,
 
873
    OpFwidthFine = 212,
 
874
    OpDPdxCoarse = 213,
 
875
    OpDPdyCoarse = 214,
 
876
    OpFwidthCoarse = 215,
 
877
    OpEmitVertex = 218,
 
878
    OpEndPrimitive = 219,
 
879
    OpEmitStreamVertex = 220,
 
880
    OpEndStreamPrimitive = 221,
 
881
    OpControlBarrier = 224,
 
882
    OpMemoryBarrier = 225,
 
883
    OpAtomicLoad = 227,
 
884
    OpAtomicStore = 228,
 
885
    OpAtomicExchange = 229,
 
886
    OpAtomicCompareExchange = 230,
 
887
    OpAtomicCompareExchangeWeak = 231,
 
888
    OpAtomicIIncrement = 232,
 
889
    OpAtomicIDecrement = 233,
 
890
    OpAtomicIAdd = 234,
 
891
    OpAtomicISub = 235,
 
892
    OpAtomicSMin = 236,
 
893
    OpAtomicUMin = 237,
 
894
    OpAtomicSMax = 238,
 
895
    OpAtomicUMax = 239,
 
896
    OpAtomicAnd = 240,
 
897
    OpAtomicOr = 241,
 
898
    OpAtomicXor = 242,
 
899
    OpPhi = 245,
 
900
    OpLoopMerge = 246,
 
901
    OpSelectionMerge = 247,
 
902
    OpLabel = 248,
 
903
    OpBranch = 249,
 
904
    OpBranchConditional = 250,
 
905
    OpSwitch = 251,
 
906
    OpKill = 252,
 
907
    OpReturn = 253,
 
908
    OpReturnValue = 254,
 
909
    OpUnreachable = 255,
 
910
    OpLifetimeStart = 256,
 
911
    OpLifetimeStop = 257,
 
912
    OpGroupAsyncCopy = 259,
 
913
    OpGroupWaitEvents = 260,
 
914
    OpGroupAll = 261,
 
915
    OpGroupAny = 262,
 
916
    OpGroupBroadcast = 263,
 
917
    OpGroupIAdd = 264,
 
918
    OpGroupFAdd = 265,
 
919
    OpGroupFMin = 266,
 
920
    OpGroupUMin = 267,
 
921
    OpGroupSMin = 268,
 
922
    OpGroupFMax = 269,
 
923
    OpGroupUMax = 270,
 
924
    OpGroupSMax = 271,
 
925
    OpReadPipe = 274,
 
926
    OpWritePipe = 275,
 
927
    OpReservedReadPipe = 276,
 
928
    OpReservedWritePipe = 277,
 
929
    OpReserveReadPipePackets = 278,
 
930
    OpReserveWritePipePackets = 279,
 
931
    OpCommitReadPipe = 280,
 
932
    OpCommitWritePipe = 281,
 
933
    OpIsValidReserveId = 282,
 
934
    OpGetNumPipePackets = 283,
 
935
    OpGetMaxPipePackets = 284,
 
936
    OpGroupReserveReadPipePackets = 285,
 
937
    OpGroupReserveWritePipePackets = 286,
 
938
    OpGroupCommitReadPipe = 287,
 
939
    OpGroupCommitWritePipe = 288,
 
940
    OpEnqueueMarker = 291,
 
941
    OpEnqueueKernel = 292,
 
942
    OpGetKernelNDrangeSubGroupCount = 293,
 
943
    OpGetKernelNDrangeMaxSubGroupSize = 294,
 
944
    OpGetKernelWorkGroupSize = 295,
 
945
    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
 
946
    OpRetainEvent = 297,
 
947
    OpReleaseEvent = 298,
 
948
    OpCreateUserEvent = 299,
 
949
    OpIsValidEvent = 300,
 
950
    OpSetUserEventStatus = 301,
 
951
    OpCaptureEventProfilingInfo = 302,
 
952
    OpGetDefaultQueue = 303,
 
953
    OpBuildNDRange = 304,
 
954
    OpImageSparseSampleImplicitLod = 305,
 
955
    OpImageSparseSampleExplicitLod = 306,
 
956
    OpImageSparseSampleDrefImplicitLod = 307,
 
957
    OpImageSparseSampleDrefExplicitLod = 308,
 
958
    OpImageSparseSampleProjImplicitLod = 309,
 
959
    OpImageSparseSampleProjExplicitLod = 310,
 
960
    OpImageSparseSampleProjDrefImplicitLod = 311,
 
961
    OpImageSparseSampleProjDrefExplicitLod = 312,
 
962
    OpImageSparseFetch = 313,
 
963
    OpImageSparseGather = 314,
 
964
    OpImageSparseDrefGather = 315,
 
965
    OpImageSparseTexelsResident = 316,
 
966
    OpNoLine = 317,
 
967
    OpAtomicFlagTestAndSet = 318,
 
968
    OpAtomicFlagClear = 319,
 
969
    OpImageSparseRead = 320,
 
970
    OpSizeOf = 321,
 
971
    OpTypePipeStorage = 322,
 
972
    OpConstantPipeStorage = 323,
 
973
    OpCreatePipeFromPipeStorage = 324,
 
974
    OpGetKernelLocalSizeForSubgroupCount = 325,
 
975
    OpGetKernelMaxNumSubgroups = 326,
 
976
    OpTypeNamedBarrier = 327,
 
977
    OpNamedBarrierInitialize = 328,
 
978
    OpMemoryNamedBarrier = 329,
 
979
    OpModuleProcessed = 330,
 
980
    OpDecorateId = 332,
 
981
    OpSubgroupBallotKHR = 4421,
 
982
    OpSubgroupFirstInvocationKHR = 4422,
 
983
    OpSubgroupAllKHR = 4428,
 
984
    OpSubgroupAnyKHR = 4429,
 
985
    OpSubgroupAllEqualKHR = 4430,
 
986
    OpSubgroupReadInvocationKHR = 4432,
 
987
    OpGroupIAddNonUniformAMD = 5000,
 
988
    OpGroupFAddNonUniformAMD = 5001,
 
989
    OpGroupFMinNonUniformAMD = 5002,
 
990
    OpGroupUMinNonUniformAMD = 5003,
 
991
    OpGroupSMinNonUniformAMD = 5004,
 
992
    OpGroupFMaxNonUniformAMD = 5005,
 
993
    OpGroupUMaxNonUniformAMD = 5006,
 
994
    OpGroupSMaxNonUniformAMD = 5007,
 
995
    OpFragmentMaskFetchAMD = 5011,
 
996
    OpFragmentFetchAMD = 5012,
 
997
    OpSubgroupShuffleINTEL = 5571,
 
998
    OpSubgroupShuffleDownINTEL = 5572,
 
999
    OpSubgroupShuffleUpINTEL = 5573,
 
1000
    OpSubgroupShuffleXorINTEL = 5574,
 
1001
    OpSubgroupBlockReadINTEL = 5575,
 
1002
    OpSubgroupBlockWriteINTEL = 5576,
 
1003
    OpSubgroupImageBlockReadINTEL = 5577,
 
1004
    OpSubgroupImageBlockWriteINTEL = 5578,
 
1005
    OpDecorateStringGOOGLE = 5632,
 
1006
    OpMemberDecorateStringGOOGLE = 5633,
 
1007
    Max = 0x7fffffff,
 
1008
};
 
1009
 
 
1010
// Overload operator| for mask bit combining
 
1011
 
 
1012
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
 
1013
inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
 
1014
inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
 
1015
inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
 
1016
inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
 
1017
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
 
1018
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
 
1019
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
 
1020
 
 
1021
}  // end namespace spv
 
1022
 
 
1023
#endif  // #ifndef spirv_HPP
 
1024