~mmach/netext73/spirv-headers

« back to all changes in this revision

Viewing changes to include/spirv/unified1/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-2019 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, C#, D
 
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
// - C# will use enum classes in the Specification class located in the "Spv" namespace,
 
37
//     e.g.: Spv.Specification.SourceLanguage.GLSL
 
38
// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL
 
39
// 
 
40
// Some tokens act like mask values, which can be OR'd together,
 
41
// while others are mutually exclusive.  The mask-like ones have
 
42
// "Mask" in their name, and a parallel enum that has the shift
 
43
// amount (1 << x) for each corresponding enumerant.
 
44
 
 
45
#ifndef spirv_HPP
 
46
#define spirv_HPP
 
47
 
 
48
namespace spv {
 
49
 
 
50
typedef unsigned int Id;
 
51
 
 
52
#define SPV_VERSION 0x10500
 
53
#define SPV_REVISION 1
 
54
 
 
55
static const unsigned int MagicNumber = 0x07230203;
 
56
static const unsigned int Version = 0x00010500;
 
57
static const unsigned int Revision = 1;
 
58
static const unsigned int OpCodeMask = 0xffff;
 
59
static const unsigned int WordCountShift = 16;
 
60
 
 
61
enum class SourceLanguage : unsigned {
 
62
    Unknown = 0,
 
63
    ESSL = 1,
 
64
    GLSL = 2,
 
65
    OpenCL_C = 3,
 
66
    OpenCL_CPP = 4,
 
67
    HLSL = 5,
 
68
    Max = 0x7fffffff,
 
69
};
 
70
 
 
71
enum class ExecutionModel : unsigned {
 
72
    Vertex = 0,
 
73
    TessellationControl = 1,
 
74
    TessellationEvaluation = 2,
 
75
    Geometry = 3,
 
76
    Fragment = 4,
 
77
    GLCompute = 5,
 
78
    Kernel = 6,
 
79
    TaskNV = 5267,
 
80
    MeshNV = 5268,
 
81
    RayGenerationNV = 5313,
 
82
    IntersectionNV = 5314,
 
83
    AnyHitNV = 5315,
 
84
    ClosestHitNV = 5316,
 
85
    MissNV = 5317,
 
86
    CallableNV = 5318,
 
87
    Max = 0x7fffffff,
 
88
};
 
89
 
 
90
enum class AddressingModel : unsigned {
 
91
    Logical = 0,
 
92
    Physical32 = 1,
 
93
    Physical64 = 2,
 
94
    PhysicalStorageBuffer64 = 5348,
 
95
    PhysicalStorageBuffer64EXT = 5348,
 
96
    Max = 0x7fffffff,
 
97
};
 
98
 
 
99
enum class MemoryModel : unsigned {
 
100
    Simple = 0,
 
101
    GLSL450 = 1,
 
102
    OpenCL = 2,
 
103
    Vulkan = 3,
 
104
    VulkanKHR = 3,
 
105
    Max = 0x7fffffff,
 
106
};
 
107
 
 
108
enum class ExecutionMode : unsigned {
 
109
    Invocations = 0,
 
110
    SpacingEqual = 1,
 
111
    SpacingFractionalEven = 2,
 
112
    SpacingFractionalOdd = 3,
 
113
    VertexOrderCw = 4,
 
114
    VertexOrderCcw = 5,
 
115
    PixelCenterInteger = 6,
 
116
    OriginUpperLeft = 7,
 
117
    OriginLowerLeft = 8,
 
118
    EarlyFragmentTests = 9,
 
119
    PointMode = 10,
 
120
    Xfb = 11,
 
121
    DepthReplacing = 12,
 
122
    DepthGreater = 14,
 
123
    DepthLess = 15,
 
124
    DepthUnchanged = 16,
 
125
    LocalSize = 17,
 
126
    LocalSizeHint = 18,
 
127
    InputPoints = 19,
 
128
    InputLines = 20,
 
129
    InputLinesAdjacency = 21,
 
130
    Triangles = 22,
 
131
    InputTrianglesAdjacency = 23,
 
132
    Quads = 24,
 
133
    Isolines = 25,
 
134
    OutputVertices = 26,
 
135
    OutputPoints = 27,
 
136
    OutputLineStrip = 28,
 
137
    OutputTriangleStrip = 29,
 
138
    VecTypeHint = 30,
 
139
    ContractionOff = 31,
 
140
    Initializer = 33,
 
141
    Finalizer = 34,
 
142
    SubgroupSize = 35,
 
143
    SubgroupsPerWorkgroup = 36,
 
144
    SubgroupsPerWorkgroupId = 37,
 
145
    LocalSizeId = 38,
 
146
    LocalSizeHintId = 39,
 
147
    PostDepthCoverage = 4446,
 
148
    DenormPreserve = 4459,
 
149
    DenormFlushToZero = 4460,
 
150
    SignedZeroInfNanPreserve = 4461,
 
151
    RoundingModeRTE = 4462,
 
152
    RoundingModeRTZ = 4463,
 
153
    StencilRefReplacingEXT = 5027,
 
154
    OutputLinesNV = 5269,
 
155
    OutputPrimitivesNV = 5270,
 
156
    DerivativeGroupQuadsNV = 5289,
 
157
    DerivativeGroupLinearNV = 5290,
 
158
    OutputTrianglesNV = 5298,
 
159
    PixelInterlockOrderedEXT = 5366,
 
160
    PixelInterlockUnorderedEXT = 5367,
 
161
    SampleInterlockOrderedEXT = 5368,
 
162
    SampleInterlockUnorderedEXT = 5369,
 
163
    ShadingRateInterlockOrderedEXT = 5370,
 
164
    ShadingRateInterlockUnorderedEXT = 5371,
 
165
    Max = 0x7fffffff,
 
166
};
 
167
 
 
168
enum class StorageClass : unsigned {
 
169
    UniformConstant = 0,
 
170
    Input = 1,
 
171
    Uniform = 2,
 
172
    Output = 3,
 
173
    Workgroup = 4,
 
174
    CrossWorkgroup = 5,
 
175
    Private = 6,
 
176
    Function = 7,
 
177
    Generic = 8,
 
178
    PushConstant = 9,
 
179
    AtomicCounter = 10,
 
180
    Image = 11,
 
181
    StorageBuffer = 12,
 
182
    CallableDataNV = 5328,
 
183
    IncomingCallableDataNV = 5329,
 
184
    RayPayloadNV = 5338,
 
185
    HitAttributeNV = 5339,
 
186
    IncomingRayPayloadNV = 5342,
 
187
    ShaderRecordBufferNV = 5343,
 
188
    PhysicalStorageBuffer = 5349,
 
189
    PhysicalStorageBufferEXT = 5349,
 
190
    Max = 0x7fffffff,
 
191
};
 
192
 
 
193
enum class Dim : unsigned {
 
194
    Dim1D = 0,
 
195
    Dim2D = 1,
 
196
    Dim3D = 2,
 
197
    Cube = 3,
 
198
    Rect = 4,
 
199
    Buffer = 5,
 
200
    SubpassData = 6,
 
201
    Max = 0x7fffffff,
 
202
};
 
203
 
 
204
enum class SamplerAddressingMode : unsigned {
 
205
    None = 0,
 
206
    ClampToEdge = 1,
 
207
    Clamp = 2,
 
208
    Repeat = 3,
 
209
    RepeatMirrored = 4,
 
210
    Max = 0x7fffffff,
 
211
};
 
212
 
 
213
enum class SamplerFilterMode : unsigned {
 
214
    Nearest = 0,
 
215
    Linear = 1,
 
216
    Max = 0x7fffffff,
 
217
};
 
218
 
 
219
enum class ImageFormat : unsigned {
 
220
    Unknown = 0,
 
221
    Rgba32f = 1,
 
222
    Rgba16f = 2,
 
223
    R32f = 3,
 
224
    Rgba8 = 4,
 
225
    Rgba8Snorm = 5,
 
226
    Rg32f = 6,
 
227
    Rg16f = 7,
 
228
    R11fG11fB10f = 8,
 
229
    R16f = 9,
 
230
    Rgba16 = 10,
 
231
    Rgb10A2 = 11,
 
232
    Rg16 = 12,
 
233
    Rg8 = 13,
 
234
    R16 = 14,
 
235
    R8 = 15,
 
236
    Rgba16Snorm = 16,
 
237
    Rg16Snorm = 17,
 
238
    Rg8Snorm = 18,
 
239
    R16Snorm = 19,
 
240
    R8Snorm = 20,
 
241
    Rgba32i = 21,
 
242
    Rgba16i = 22,
 
243
    Rgba8i = 23,
 
244
    R32i = 24,
 
245
    Rg32i = 25,
 
246
    Rg16i = 26,
 
247
    Rg8i = 27,
 
248
    R16i = 28,
 
249
    R8i = 29,
 
250
    Rgba32ui = 30,
 
251
    Rgba16ui = 31,
 
252
    Rgba8ui = 32,
 
253
    R32ui = 33,
 
254
    Rgb10a2ui = 34,
 
255
    Rg32ui = 35,
 
256
    Rg16ui = 36,
 
257
    Rg8ui = 37,
 
258
    R16ui = 38,
 
259
    R8ui = 39,
 
260
    Max = 0x7fffffff,
 
261
};
 
262
 
 
263
enum class ImageChannelOrder : unsigned {
 
264
    R = 0,
 
265
    A = 1,
 
266
    RG = 2,
 
267
    RA = 3,
 
268
    RGB = 4,
 
269
    RGBA = 5,
 
270
    BGRA = 6,
 
271
    ARGB = 7,
 
272
    Intensity = 8,
 
273
    Luminance = 9,
 
274
    Rx = 10,
 
275
    RGx = 11,
 
276
    RGBx = 12,
 
277
    Depth = 13,
 
278
    DepthStencil = 14,
 
279
    sRGB = 15,
 
280
    sRGBx = 16,
 
281
    sRGBA = 17,
 
282
    sBGRA = 18,
 
283
    ABGR = 19,
 
284
    Max = 0x7fffffff,
 
285
};
 
286
 
 
287
enum class ImageChannelDataType : unsigned {
 
288
    SnormInt8 = 0,
 
289
    SnormInt16 = 1,
 
290
    UnormInt8 = 2,
 
291
    UnormInt16 = 3,
 
292
    UnormShort565 = 4,
 
293
    UnormShort555 = 5,
 
294
    UnormInt101010 = 6,
 
295
    SignedInt8 = 7,
 
296
    SignedInt16 = 8,
 
297
    SignedInt32 = 9,
 
298
    UnsignedInt8 = 10,
 
299
    UnsignedInt16 = 11,
 
300
    UnsignedInt32 = 12,
 
301
    HalfFloat = 13,
 
302
    Float = 14,
 
303
    UnormInt24 = 15,
 
304
    UnormInt101010_2 = 16,
 
305
    Max = 0x7fffffff,
 
306
};
 
307
 
 
308
enum class ImageOperandsShift : unsigned {
 
309
    Bias = 0,
 
310
    Lod = 1,
 
311
    Grad = 2,
 
312
    ConstOffset = 3,
 
313
    Offset = 4,
 
314
    ConstOffsets = 5,
 
315
    Sample = 6,
 
316
    MinLod = 7,
 
317
    MakeTexelAvailable = 8,
 
318
    MakeTexelAvailableKHR = 8,
 
319
    MakeTexelVisible = 9,
 
320
    MakeTexelVisibleKHR = 9,
 
321
    NonPrivateTexel = 10,
 
322
    NonPrivateTexelKHR = 10,
 
323
    VolatileTexel = 11,
 
324
    VolatileTexelKHR = 11,
 
325
    SignExtend = 12,
 
326
    ZeroExtend = 13,
 
327
    Max = 0x7fffffff,
 
328
};
 
329
 
 
330
enum class ImageOperandsMask : unsigned {
 
331
    MaskNone = 0,
 
332
    Bias = 0x00000001,
 
333
    Lod = 0x00000002,
 
334
    Grad = 0x00000004,
 
335
    ConstOffset = 0x00000008,
 
336
    Offset = 0x00000010,
 
337
    ConstOffsets = 0x00000020,
 
338
    Sample = 0x00000040,
 
339
    MinLod = 0x00000080,
 
340
    MakeTexelAvailable = 0x00000100,
 
341
    MakeTexelAvailableKHR = 0x00000100,
 
342
    MakeTexelVisible = 0x00000200,
 
343
    MakeTexelVisibleKHR = 0x00000200,
 
344
    NonPrivateTexel = 0x00000400,
 
345
    NonPrivateTexelKHR = 0x00000400,
 
346
    VolatileTexel = 0x00000800,
 
347
    VolatileTexelKHR = 0x00000800,
 
348
    SignExtend = 0x00001000,
 
349
    ZeroExtend = 0x00002000,
 
350
};
 
351
 
 
352
enum class FPFastMathModeShift : unsigned {
 
353
    NotNaN = 0,
 
354
    NotInf = 1,
 
355
    NSZ = 2,
 
356
    AllowRecip = 3,
 
357
    Fast = 4,
 
358
    Max = 0x7fffffff,
 
359
};
 
360
 
 
361
enum class FPFastMathModeMask : unsigned {
 
362
    MaskNone = 0,
 
363
    NotNaN = 0x00000001,
 
364
    NotInf = 0x00000002,
 
365
    NSZ = 0x00000004,
 
366
    AllowRecip = 0x00000008,
 
367
    Fast = 0x00000010,
 
368
};
 
369
 
 
370
enum class FPRoundingMode : unsigned {
 
371
    RTE = 0,
 
372
    RTZ = 1,
 
373
    RTP = 2,
 
374
    RTN = 3,
 
375
    Max = 0x7fffffff,
 
376
};
 
377
 
 
378
enum class LinkageType : unsigned {
 
379
    Export = 0,
 
380
    Import = 1,
 
381
    Max = 0x7fffffff,
 
382
};
 
383
 
 
384
enum class AccessQualifier : unsigned {
 
385
    ReadOnly = 0,
 
386
    WriteOnly = 1,
 
387
    ReadWrite = 2,
 
388
    Max = 0x7fffffff,
 
389
};
 
390
 
 
391
enum class FunctionParameterAttribute : unsigned {
 
392
    Zext = 0,
 
393
    Sext = 1,
 
394
    ByVal = 2,
 
395
    Sret = 3,
 
396
    NoAlias = 4,
 
397
    NoCapture = 5,
 
398
    NoWrite = 6,
 
399
    NoReadWrite = 7,
 
400
    Max = 0x7fffffff,
 
401
};
 
402
 
 
403
enum class Decoration : unsigned {
 
404
    RelaxedPrecision = 0,
 
405
    SpecId = 1,
 
406
    Block = 2,
 
407
    BufferBlock = 3,
 
408
    RowMajor = 4,
 
409
    ColMajor = 5,
 
410
    ArrayStride = 6,
 
411
    MatrixStride = 7,
 
412
    GLSLShared = 8,
 
413
    GLSLPacked = 9,
 
414
    CPacked = 10,
 
415
    BuiltIn = 11,
 
416
    NoPerspective = 13,
 
417
    Flat = 14,
 
418
    Patch = 15,
 
419
    Centroid = 16,
 
420
    Sample = 17,
 
421
    Invariant = 18,
 
422
    Restrict = 19,
 
423
    Aliased = 20,
 
424
    Volatile = 21,
 
425
    Constant = 22,
 
426
    Coherent = 23,
 
427
    NonWritable = 24,
 
428
    NonReadable = 25,
 
429
    Uniform = 26,
 
430
    UniformId = 27,
 
431
    SaturatedConversion = 28,
 
432
    Stream = 29,
 
433
    Location = 30,
 
434
    Component = 31,
 
435
    Index = 32,
 
436
    Binding = 33,
 
437
    DescriptorSet = 34,
 
438
    Offset = 35,
 
439
    XfbBuffer = 36,
 
440
    XfbStride = 37,
 
441
    FuncParamAttr = 38,
 
442
    FPRoundingMode = 39,
 
443
    FPFastMathMode = 40,
 
444
    LinkageAttributes = 41,
 
445
    NoContraction = 42,
 
446
    InputAttachmentIndex = 43,
 
447
    Alignment = 44,
 
448
    MaxByteOffset = 45,
 
449
    AlignmentId = 46,
 
450
    MaxByteOffsetId = 47,
 
451
    NoSignedWrap = 4469,
 
452
    NoUnsignedWrap = 4470,
 
453
    ExplicitInterpAMD = 4999,
 
454
    OverrideCoverageNV = 5248,
 
455
    PassthroughNV = 5250,
 
456
    ViewportRelativeNV = 5252,
 
457
    SecondaryViewportRelativeNV = 5256,
 
458
    PerPrimitiveNV = 5271,
 
459
    PerViewNV = 5272,
 
460
    PerTaskNV = 5273,
 
461
    PerVertexNV = 5285,
 
462
    NonUniform = 5300,
 
463
    NonUniformEXT = 5300,
 
464
    RestrictPointer = 5355,
 
465
    RestrictPointerEXT = 5355,
 
466
    AliasedPointer = 5356,
 
467
    AliasedPointerEXT = 5356,
 
468
    CounterBuffer = 5634,
 
469
    HlslCounterBufferGOOGLE = 5634,
 
470
    HlslSemanticGOOGLE = 5635,
 
471
    UserSemantic = 5635,
 
472
    UserTypeGOOGLE = 5636,
 
473
    Max = 0x7fffffff,
 
474
};
 
475
 
 
476
enum class BuiltIn : unsigned {
 
477
    Position = 0,
 
478
    PointSize = 1,
 
479
    ClipDistance = 3,
 
480
    CullDistance = 4,
 
481
    VertexId = 5,
 
482
    InstanceId = 6,
 
483
    PrimitiveId = 7,
 
484
    InvocationId = 8,
 
485
    Layer = 9,
 
486
    ViewportIndex = 10,
 
487
    TessLevelOuter = 11,
 
488
    TessLevelInner = 12,
 
489
    TessCoord = 13,
 
490
    PatchVertices = 14,
 
491
    FragCoord = 15,
 
492
    PointCoord = 16,
 
493
    FrontFacing = 17,
 
494
    SampleId = 18,
 
495
    SamplePosition = 19,
 
496
    SampleMask = 20,
 
497
    FragDepth = 22,
 
498
    HelperInvocation = 23,
 
499
    NumWorkgroups = 24,
 
500
    WorkgroupSize = 25,
 
501
    WorkgroupId = 26,
 
502
    LocalInvocationId = 27,
 
503
    GlobalInvocationId = 28,
 
504
    LocalInvocationIndex = 29,
 
505
    WorkDim = 30,
 
506
    GlobalSize = 31,
 
507
    EnqueuedWorkgroupSize = 32,
 
508
    GlobalOffset = 33,
 
509
    GlobalLinearId = 34,
 
510
    SubgroupSize = 36,
 
511
    SubgroupMaxSize = 37,
 
512
    NumSubgroups = 38,
 
513
    NumEnqueuedSubgroups = 39,
 
514
    SubgroupId = 40,
 
515
    SubgroupLocalInvocationId = 41,
 
516
    VertexIndex = 42,
 
517
    InstanceIndex = 43,
 
518
    SubgroupEqMask = 4416,
 
519
    SubgroupEqMaskKHR = 4416,
 
520
    SubgroupGeMask = 4417,
 
521
    SubgroupGeMaskKHR = 4417,
 
522
    SubgroupGtMask = 4418,
 
523
    SubgroupGtMaskKHR = 4418,
 
524
    SubgroupLeMask = 4419,
 
525
    SubgroupLeMaskKHR = 4419,
 
526
    SubgroupLtMask = 4420,
 
527
    SubgroupLtMaskKHR = 4420,
 
528
    BaseVertex = 4424,
 
529
    BaseInstance = 4425,
 
530
    DrawIndex = 4426,
 
531
    DeviceIndex = 4438,
 
532
    ViewIndex = 4440,
 
533
    BaryCoordNoPerspAMD = 4992,
 
534
    BaryCoordNoPerspCentroidAMD = 4993,
 
535
    BaryCoordNoPerspSampleAMD = 4994,
 
536
    BaryCoordSmoothAMD = 4995,
 
537
    BaryCoordSmoothCentroidAMD = 4996,
 
538
    BaryCoordSmoothSampleAMD = 4997,
 
539
    BaryCoordPullModelAMD = 4998,
 
540
    FragStencilRefEXT = 5014,
 
541
    ViewportMaskNV = 5253,
 
542
    SecondaryPositionNV = 5257,
 
543
    SecondaryViewportMaskNV = 5258,
 
544
    PositionPerViewNV = 5261,
 
545
    ViewportMaskPerViewNV = 5262,
 
546
    FullyCoveredEXT = 5264,
 
547
    TaskCountNV = 5274,
 
548
    PrimitiveCountNV = 5275,
 
549
    PrimitiveIndicesNV = 5276,
 
550
    ClipDistancePerViewNV = 5277,
 
551
    CullDistancePerViewNV = 5278,
 
552
    LayerPerViewNV = 5279,
 
553
    MeshViewCountNV = 5280,
 
554
    MeshViewIndicesNV = 5281,
 
555
    BaryCoordNV = 5286,
 
556
    BaryCoordNoPerspNV = 5287,
 
557
    FragSizeEXT = 5292,
 
558
    FragmentSizeNV = 5292,
 
559
    FragInvocationCountEXT = 5293,
 
560
    InvocationsPerPixelNV = 5293,
 
561
    LaunchIdNV = 5319,
 
562
    LaunchSizeNV = 5320,
 
563
    WorldRayOriginNV = 5321,
 
564
    WorldRayDirectionNV = 5322,
 
565
    ObjectRayOriginNV = 5323,
 
566
    ObjectRayDirectionNV = 5324,
 
567
    RayTminNV = 5325,
 
568
    RayTmaxNV = 5326,
 
569
    InstanceCustomIndexNV = 5327,
 
570
    ObjectToWorldNV = 5330,
 
571
    WorldToObjectNV = 5331,
 
572
    HitTNV = 5332,
 
573
    HitKindNV = 5333,
 
574
    IncomingRayFlagsNV = 5351,
 
575
    WarpsPerSMNV = 5374,
 
576
    SMCountNV = 5375,
 
577
    WarpIDNV = 5376,
 
578
    SMIDNV = 5377,
 
579
    Max = 0x7fffffff,
 
580
};
 
581
 
 
582
enum class SelectionControlShift : unsigned {
 
583
    Flatten = 0,
 
584
    DontFlatten = 1,
 
585
    Max = 0x7fffffff,
 
586
};
 
587
 
 
588
enum class SelectionControlMask : unsigned {
 
589
    MaskNone = 0,
 
590
    Flatten = 0x00000001,
 
591
    DontFlatten = 0x00000002,
 
592
};
 
593
 
 
594
enum class LoopControlShift : unsigned {
 
595
    Unroll = 0,
 
596
    DontUnroll = 1,
 
597
    DependencyInfinite = 2,
 
598
    DependencyLength = 3,
 
599
    MinIterations = 4,
 
600
    MaxIterations = 5,
 
601
    IterationMultiple = 6,
 
602
    PeelCount = 7,
 
603
    PartialCount = 8,
 
604
    Max = 0x7fffffff,
 
605
};
 
606
 
 
607
enum class LoopControlMask : unsigned {
 
608
    MaskNone = 0,
 
609
    Unroll = 0x00000001,
 
610
    DontUnroll = 0x00000002,
 
611
    DependencyInfinite = 0x00000004,
 
612
    DependencyLength = 0x00000008,
 
613
    MinIterations = 0x00000010,
 
614
    MaxIterations = 0x00000020,
 
615
    IterationMultiple = 0x00000040,
 
616
    PeelCount = 0x00000080,
 
617
    PartialCount = 0x00000100,
 
618
};
 
619
 
 
620
enum class FunctionControlShift : unsigned {
 
621
    Inline = 0,
 
622
    DontInline = 1,
 
623
    Pure = 2,
 
624
    Const = 3,
 
625
    Max = 0x7fffffff,
 
626
};
 
627
 
 
628
enum class FunctionControlMask : unsigned {
 
629
    MaskNone = 0,
 
630
    Inline = 0x00000001,
 
631
    DontInline = 0x00000002,
 
632
    Pure = 0x00000004,
 
633
    Const = 0x00000008,
 
634
};
 
635
 
 
636
enum class MemorySemanticsShift : unsigned {
 
637
    Acquire = 1,
 
638
    Release = 2,
 
639
    AcquireRelease = 3,
 
640
    SequentiallyConsistent = 4,
 
641
    UniformMemory = 6,
 
642
    SubgroupMemory = 7,
 
643
    WorkgroupMemory = 8,
 
644
    CrossWorkgroupMemory = 9,
 
645
    AtomicCounterMemory = 10,
 
646
    ImageMemory = 11,
 
647
    OutputMemory = 12,
 
648
    OutputMemoryKHR = 12,
 
649
    MakeAvailable = 13,
 
650
    MakeAvailableKHR = 13,
 
651
    MakeVisible = 14,
 
652
    MakeVisibleKHR = 14,
 
653
    Volatile = 15,
 
654
    Max = 0x7fffffff,
 
655
};
 
656
 
 
657
enum class MemorySemanticsMask : unsigned {
 
658
    MaskNone = 0,
 
659
    Acquire = 0x00000002,
 
660
    Release = 0x00000004,
 
661
    AcquireRelease = 0x00000008,
 
662
    SequentiallyConsistent = 0x00000010,
 
663
    UniformMemory = 0x00000040,
 
664
    SubgroupMemory = 0x00000080,
 
665
    WorkgroupMemory = 0x00000100,
 
666
    CrossWorkgroupMemory = 0x00000200,
 
667
    AtomicCounterMemory = 0x00000400,
 
668
    ImageMemory = 0x00000800,
 
669
    OutputMemory = 0x00001000,
 
670
    OutputMemoryKHR = 0x00001000,
 
671
    MakeAvailable = 0x00002000,
 
672
    MakeAvailableKHR = 0x00002000,
 
673
    MakeVisible = 0x00004000,
 
674
    MakeVisibleKHR = 0x00004000,
 
675
    Volatile = 0x00008000,
 
676
};
 
677
 
 
678
enum class MemoryAccessShift : unsigned {
 
679
    Volatile = 0,
 
680
    Aligned = 1,
 
681
    Nontemporal = 2,
 
682
    MakePointerAvailable = 3,
 
683
    MakePointerAvailableKHR = 3,
 
684
    MakePointerVisible = 4,
 
685
    MakePointerVisibleKHR = 4,
 
686
    NonPrivatePointer = 5,
 
687
    NonPrivatePointerKHR = 5,
 
688
    Max = 0x7fffffff,
 
689
};
 
690
 
 
691
enum class MemoryAccessMask : unsigned {
 
692
    MaskNone = 0,
 
693
    Volatile = 0x00000001,
 
694
    Aligned = 0x00000002,
 
695
    Nontemporal = 0x00000004,
 
696
    MakePointerAvailable = 0x00000008,
 
697
    MakePointerAvailableKHR = 0x00000008,
 
698
    MakePointerVisible = 0x00000010,
 
699
    MakePointerVisibleKHR = 0x00000010,
 
700
    NonPrivatePointer = 0x00000020,
 
701
    NonPrivatePointerKHR = 0x00000020,
 
702
};
 
703
 
 
704
enum class Scope : unsigned {
 
705
    CrossDevice = 0,
 
706
    Device = 1,
 
707
    Workgroup = 2,
 
708
    Subgroup = 3,
 
709
    Invocation = 4,
 
710
    QueueFamily = 5,
 
711
    QueueFamilyKHR = 5,
 
712
    Max = 0x7fffffff,
 
713
};
 
714
 
 
715
enum class GroupOperation : unsigned {
 
716
    Reduce = 0,
 
717
    InclusiveScan = 1,
 
718
    ExclusiveScan = 2,
 
719
    ClusteredReduce = 3,
 
720
    PartitionedReduceNV = 6,
 
721
    PartitionedInclusiveScanNV = 7,
 
722
    PartitionedExclusiveScanNV = 8,
 
723
    Max = 0x7fffffff,
 
724
};
 
725
 
 
726
enum class KernelEnqueueFlags : unsigned {
 
727
    NoWait = 0,
 
728
    WaitKernel = 1,
 
729
    WaitWorkGroup = 2,
 
730
    Max = 0x7fffffff,
 
731
};
 
732
 
 
733
enum class KernelProfilingInfoShift : unsigned {
 
734
    CmdExecTime = 0,
 
735
    Max = 0x7fffffff,
 
736
};
 
737
 
 
738
enum class KernelProfilingInfoMask : unsigned {
 
739
    MaskNone = 0,
 
740
    CmdExecTime = 0x00000001,
 
741
};
 
742
 
 
743
enum class Capability : unsigned {
 
744
    Matrix = 0,
 
745
    Shader = 1,
 
746
    Geometry = 2,
 
747
    Tessellation = 3,
 
748
    Addresses = 4,
 
749
    Linkage = 5,
 
750
    Kernel = 6,
 
751
    Vector16 = 7,
 
752
    Float16Buffer = 8,
 
753
    Float16 = 9,
 
754
    Float64 = 10,
 
755
    Int64 = 11,
 
756
    Int64Atomics = 12,
 
757
    ImageBasic = 13,
 
758
    ImageReadWrite = 14,
 
759
    ImageMipmap = 15,
 
760
    Pipes = 17,
 
761
    Groups = 18,
 
762
    DeviceEnqueue = 19,
 
763
    LiteralSampler = 20,
 
764
    AtomicStorage = 21,
 
765
    Int16 = 22,
 
766
    TessellationPointSize = 23,
 
767
    GeometryPointSize = 24,
 
768
    ImageGatherExtended = 25,
 
769
    StorageImageMultisample = 27,
 
770
    UniformBufferArrayDynamicIndexing = 28,
 
771
    SampledImageArrayDynamicIndexing = 29,
 
772
    StorageBufferArrayDynamicIndexing = 30,
 
773
    StorageImageArrayDynamicIndexing = 31,
 
774
    ClipDistance = 32,
 
775
    CullDistance = 33,
 
776
    ImageCubeArray = 34,
 
777
    SampleRateShading = 35,
 
778
    ImageRect = 36,
 
779
    SampledRect = 37,
 
780
    GenericPointer = 38,
 
781
    Int8 = 39,
 
782
    InputAttachment = 40,
 
783
    SparseResidency = 41,
 
784
    MinLod = 42,
 
785
    Sampled1D = 43,
 
786
    Image1D = 44,
 
787
    SampledCubeArray = 45,
 
788
    SampledBuffer = 46,
 
789
    ImageBuffer = 47,
 
790
    ImageMSArray = 48,
 
791
    StorageImageExtendedFormats = 49,
 
792
    ImageQuery = 50,
 
793
    DerivativeControl = 51,
 
794
    InterpolationFunction = 52,
 
795
    TransformFeedback = 53,
 
796
    GeometryStreams = 54,
 
797
    StorageImageReadWithoutFormat = 55,
 
798
    StorageImageWriteWithoutFormat = 56,
 
799
    MultiViewport = 57,
 
800
    SubgroupDispatch = 58,
 
801
    NamedBarrier = 59,
 
802
    PipeStorage = 60,
 
803
    GroupNonUniform = 61,
 
804
    GroupNonUniformVote = 62,
 
805
    GroupNonUniformArithmetic = 63,
 
806
    GroupNonUniformBallot = 64,
 
807
    GroupNonUniformShuffle = 65,
 
808
    GroupNonUniformShuffleRelative = 66,
 
809
    GroupNonUniformClustered = 67,
 
810
    GroupNonUniformQuad = 68,
 
811
    ShaderLayer = 69,
 
812
    ShaderViewportIndex = 70,
 
813
    SubgroupBallotKHR = 4423,
 
814
    DrawParameters = 4427,
 
815
    SubgroupVoteKHR = 4431,
 
816
    StorageBuffer16BitAccess = 4433,
 
817
    StorageUniformBufferBlock16 = 4433,
 
818
    StorageUniform16 = 4434,
 
819
    UniformAndStorageBuffer16BitAccess = 4434,
 
820
    StoragePushConstant16 = 4435,
 
821
    StorageInputOutput16 = 4436,
 
822
    DeviceGroup = 4437,
 
823
    MultiView = 4439,
 
824
    VariablePointersStorageBuffer = 4441,
 
825
    VariablePointers = 4442,
 
826
    AtomicStorageOps = 4445,
 
827
    SampleMaskPostDepthCoverage = 4447,
 
828
    StorageBuffer8BitAccess = 4448,
 
829
    UniformAndStorageBuffer8BitAccess = 4449,
 
830
    StoragePushConstant8 = 4450,
 
831
    DenormPreserve = 4464,
 
832
    DenormFlushToZero = 4465,
 
833
    SignedZeroInfNanPreserve = 4466,
 
834
    RoundingModeRTE = 4467,
 
835
    RoundingModeRTZ = 4468,
 
836
    Float16ImageAMD = 5008,
 
837
    ImageGatherBiasLodAMD = 5009,
 
838
    FragmentMaskAMD = 5010,
 
839
    StencilExportEXT = 5013,
 
840
    ImageReadWriteLodAMD = 5015,
 
841
    ShaderClockKHR = 5055,
 
842
    SampleMaskOverrideCoverageNV = 5249,
 
843
    GeometryShaderPassthroughNV = 5251,
 
844
    ShaderViewportIndexLayerEXT = 5254,
 
845
    ShaderViewportIndexLayerNV = 5254,
 
846
    ShaderViewportMaskNV = 5255,
 
847
    ShaderStereoViewNV = 5259,
 
848
    PerViewAttributesNV = 5260,
 
849
    FragmentFullyCoveredEXT = 5265,
 
850
    MeshShadingNV = 5266,
 
851
    ImageFootprintNV = 5282,
 
852
    FragmentBarycentricNV = 5284,
 
853
    ComputeDerivativeGroupQuadsNV = 5288,
 
854
    FragmentDensityEXT = 5291,
 
855
    ShadingRateNV = 5291,
 
856
    GroupNonUniformPartitionedNV = 5297,
 
857
    ShaderNonUniform = 5301,
 
858
    ShaderNonUniformEXT = 5301,
 
859
    RuntimeDescriptorArray = 5302,
 
860
    RuntimeDescriptorArrayEXT = 5302,
 
861
    InputAttachmentArrayDynamicIndexing = 5303,
 
862
    InputAttachmentArrayDynamicIndexingEXT = 5303,
 
863
    UniformTexelBufferArrayDynamicIndexing = 5304,
 
864
    UniformTexelBufferArrayDynamicIndexingEXT = 5304,
 
865
    StorageTexelBufferArrayDynamicIndexing = 5305,
 
866
    StorageTexelBufferArrayDynamicIndexingEXT = 5305,
 
867
    UniformBufferArrayNonUniformIndexing = 5306,
 
868
    UniformBufferArrayNonUniformIndexingEXT = 5306,
 
869
    SampledImageArrayNonUniformIndexing = 5307,
 
870
    SampledImageArrayNonUniformIndexingEXT = 5307,
 
871
    StorageBufferArrayNonUniformIndexing = 5308,
 
872
    StorageBufferArrayNonUniformIndexingEXT = 5308,
 
873
    StorageImageArrayNonUniformIndexing = 5309,
 
874
    StorageImageArrayNonUniformIndexingEXT = 5309,
 
875
    InputAttachmentArrayNonUniformIndexing = 5310,
 
876
    InputAttachmentArrayNonUniformIndexingEXT = 5310,
 
877
    UniformTexelBufferArrayNonUniformIndexing = 5311,
 
878
    UniformTexelBufferArrayNonUniformIndexingEXT = 5311,
 
879
    StorageTexelBufferArrayNonUniformIndexing = 5312,
 
880
    StorageTexelBufferArrayNonUniformIndexingEXT = 5312,
 
881
    RayTracingNV = 5340,
 
882
    VulkanMemoryModel = 5345,
 
883
    VulkanMemoryModelKHR = 5345,
 
884
    VulkanMemoryModelDeviceScope = 5346,
 
885
    VulkanMemoryModelDeviceScopeKHR = 5346,
 
886
    PhysicalStorageBufferAddresses = 5347,
 
887
    PhysicalStorageBufferAddressesEXT = 5347,
 
888
    ComputeDerivativeGroupLinearNV = 5350,
 
889
    CooperativeMatrixNV = 5357,
 
890
    FragmentShaderSampleInterlockEXT = 5363,
 
891
    FragmentShaderShadingRateInterlockEXT = 5372,
 
892
    ShaderSMBuiltinsNV = 5373,
 
893
    FragmentShaderPixelInterlockEXT = 5378,
 
894
    DemoteToHelperInvocationEXT = 5379,
 
895
    SubgroupShuffleINTEL = 5568,
 
896
    SubgroupBufferBlockIOINTEL = 5569,
 
897
    SubgroupImageBlockIOINTEL = 5570,
 
898
    SubgroupImageMediaBlockIOINTEL = 5579,
 
899
    IntegerFunctions2INTEL = 5584,
 
900
    SubgroupAvcMotionEstimationINTEL = 5696,
 
901
    SubgroupAvcMotionEstimationIntraINTEL = 5697,
 
902
    SubgroupAvcMotionEstimationChromaINTEL = 5698,
 
903
    Max = 0x7fffffff,
 
904
};
 
905
 
 
906
enum class Op : unsigned {
 
907
    OpNop = 0,
 
908
    OpUndef = 1,
 
909
    OpSourceContinued = 2,
 
910
    OpSource = 3,
 
911
    OpSourceExtension = 4,
 
912
    OpName = 5,
 
913
    OpMemberName = 6,
 
914
    OpString = 7,
 
915
    OpLine = 8,
 
916
    OpExtension = 10,
 
917
    OpExtInstImport = 11,
 
918
    OpExtInst = 12,
 
919
    OpMemoryModel = 14,
 
920
    OpEntryPoint = 15,
 
921
    OpExecutionMode = 16,
 
922
    OpCapability = 17,
 
923
    OpTypeVoid = 19,
 
924
    OpTypeBool = 20,
 
925
    OpTypeInt = 21,
 
926
    OpTypeFloat = 22,
 
927
    OpTypeVector = 23,
 
928
    OpTypeMatrix = 24,
 
929
    OpTypeImage = 25,
 
930
    OpTypeSampler = 26,
 
931
    OpTypeSampledImage = 27,
 
932
    OpTypeArray = 28,
 
933
    OpTypeRuntimeArray = 29,
 
934
    OpTypeStruct = 30,
 
935
    OpTypeOpaque = 31,
 
936
    OpTypePointer = 32,
 
937
    OpTypeFunction = 33,
 
938
    OpTypeEvent = 34,
 
939
    OpTypeDeviceEvent = 35,
 
940
    OpTypeReserveId = 36,
 
941
    OpTypeQueue = 37,
 
942
    OpTypePipe = 38,
 
943
    OpTypeForwardPointer = 39,
 
944
    OpConstantTrue = 41,
 
945
    OpConstantFalse = 42,
 
946
    OpConstant = 43,
 
947
    OpConstantComposite = 44,
 
948
    OpConstantSampler = 45,
 
949
    OpConstantNull = 46,
 
950
    OpSpecConstantTrue = 48,
 
951
    OpSpecConstantFalse = 49,
 
952
    OpSpecConstant = 50,
 
953
    OpSpecConstantComposite = 51,
 
954
    OpSpecConstantOp = 52,
 
955
    OpFunction = 54,
 
956
    OpFunctionParameter = 55,
 
957
    OpFunctionEnd = 56,
 
958
    OpFunctionCall = 57,
 
959
    OpVariable = 59,
 
960
    OpImageTexelPointer = 60,
 
961
    OpLoad = 61,
 
962
    OpStore = 62,
 
963
    OpCopyMemory = 63,
 
964
    OpCopyMemorySized = 64,
 
965
    OpAccessChain = 65,
 
966
    OpInBoundsAccessChain = 66,
 
967
    OpPtrAccessChain = 67,
 
968
    OpArrayLength = 68,
 
969
    OpGenericPtrMemSemantics = 69,
 
970
    OpInBoundsPtrAccessChain = 70,
 
971
    OpDecorate = 71,
 
972
    OpMemberDecorate = 72,
 
973
    OpDecorationGroup = 73,
 
974
    OpGroupDecorate = 74,
 
975
    OpGroupMemberDecorate = 75,
 
976
    OpVectorExtractDynamic = 77,
 
977
    OpVectorInsertDynamic = 78,
 
978
    OpVectorShuffle = 79,
 
979
    OpCompositeConstruct = 80,
 
980
    OpCompositeExtract = 81,
 
981
    OpCompositeInsert = 82,
 
982
    OpCopyObject = 83,
 
983
    OpTranspose = 84,
 
984
    OpSampledImage = 86,
 
985
    OpImageSampleImplicitLod = 87,
 
986
    OpImageSampleExplicitLod = 88,
 
987
    OpImageSampleDrefImplicitLod = 89,
 
988
    OpImageSampleDrefExplicitLod = 90,
 
989
    OpImageSampleProjImplicitLod = 91,
 
990
    OpImageSampleProjExplicitLod = 92,
 
991
    OpImageSampleProjDrefImplicitLod = 93,
 
992
    OpImageSampleProjDrefExplicitLod = 94,
 
993
    OpImageFetch = 95,
 
994
    OpImageGather = 96,
 
995
    OpImageDrefGather = 97,
 
996
    OpImageRead = 98,
 
997
    OpImageWrite = 99,
 
998
    OpImage = 100,
 
999
    OpImageQueryFormat = 101,
 
1000
    OpImageQueryOrder = 102,
 
1001
    OpImageQuerySizeLod = 103,
 
1002
    OpImageQuerySize = 104,
 
1003
    OpImageQueryLod = 105,
 
1004
    OpImageQueryLevels = 106,
 
1005
    OpImageQuerySamples = 107,
 
1006
    OpConvertFToU = 109,
 
1007
    OpConvertFToS = 110,
 
1008
    OpConvertSToF = 111,
 
1009
    OpConvertUToF = 112,
 
1010
    OpUConvert = 113,
 
1011
    OpSConvert = 114,
 
1012
    OpFConvert = 115,
 
1013
    OpQuantizeToF16 = 116,
 
1014
    OpConvertPtrToU = 117,
 
1015
    OpSatConvertSToU = 118,
 
1016
    OpSatConvertUToS = 119,
 
1017
    OpConvertUToPtr = 120,
 
1018
    OpPtrCastToGeneric = 121,
 
1019
    OpGenericCastToPtr = 122,
 
1020
    OpGenericCastToPtrExplicit = 123,
 
1021
    OpBitcast = 124,
 
1022
    OpSNegate = 126,
 
1023
    OpFNegate = 127,
 
1024
    OpIAdd = 128,
 
1025
    OpFAdd = 129,
 
1026
    OpISub = 130,
 
1027
    OpFSub = 131,
 
1028
    OpIMul = 132,
 
1029
    OpFMul = 133,
 
1030
    OpUDiv = 134,
 
1031
    OpSDiv = 135,
 
1032
    OpFDiv = 136,
 
1033
    OpUMod = 137,
 
1034
    OpSRem = 138,
 
1035
    OpSMod = 139,
 
1036
    OpFRem = 140,
 
1037
    OpFMod = 141,
 
1038
    OpVectorTimesScalar = 142,
 
1039
    OpMatrixTimesScalar = 143,
 
1040
    OpVectorTimesMatrix = 144,
 
1041
    OpMatrixTimesVector = 145,
 
1042
    OpMatrixTimesMatrix = 146,
 
1043
    OpOuterProduct = 147,
 
1044
    OpDot = 148,
 
1045
    OpIAddCarry = 149,
 
1046
    OpISubBorrow = 150,
 
1047
    OpUMulExtended = 151,
 
1048
    OpSMulExtended = 152,
 
1049
    OpAny = 154,
 
1050
    OpAll = 155,
 
1051
    OpIsNan = 156,
 
1052
    OpIsInf = 157,
 
1053
    OpIsFinite = 158,
 
1054
    OpIsNormal = 159,
 
1055
    OpSignBitSet = 160,
 
1056
    OpLessOrGreater = 161,
 
1057
    OpOrdered = 162,
 
1058
    OpUnordered = 163,
 
1059
    OpLogicalEqual = 164,
 
1060
    OpLogicalNotEqual = 165,
 
1061
    OpLogicalOr = 166,
 
1062
    OpLogicalAnd = 167,
 
1063
    OpLogicalNot = 168,
 
1064
    OpSelect = 169,
 
1065
    OpIEqual = 170,
 
1066
    OpINotEqual = 171,
 
1067
    OpUGreaterThan = 172,
 
1068
    OpSGreaterThan = 173,
 
1069
    OpUGreaterThanEqual = 174,
 
1070
    OpSGreaterThanEqual = 175,
 
1071
    OpULessThan = 176,
 
1072
    OpSLessThan = 177,
 
1073
    OpULessThanEqual = 178,
 
1074
    OpSLessThanEqual = 179,
 
1075
    OpFOrdEqual = 180,
 
1076
    OpFUnordEqual = 181,
 
1077
    OpFOrdNotEqual = 182,
 
1078
    OpFUnordNotEqual = 183,
 
1079
    OpFOrdLessThan = 184,
 
1080
    OpFUnordLessThan = 185,
 
1081
    OpFOrdGreaterThan = 186,
 
1082
    OpFUnordGreaterThan = 187,
 
1083
    OpFOrdLessThanEqual = 188,
 
1084
    OpFUnordLessThanEqual = 189,
 
1085
    OpFOrdGreaterThanEqual = 190,
 
1086
    OpFUnordGreaterThanEqual = 191,
 
1087
    OpShiftRightLogical = 194,
 
1088
    OpShiftRightArithmetic = 195,
 
1089
    OpShiftLeftLogical = 196,
 
1090
    OpBitwiseOr = 197,
 
1091
    OpBitwiseXor = 198,
 
1092
    OpBitwiseAnd = 199,
 
1093
    OpNot = 200,
 
1094
    OpBitFieldInsert = 201,
 
1095
    OpBitFieldSExtract = 202,
 
1096
    OpBitFieldUExtract = 203,
 
1097
    OpBitReverse = 204,
 
1098
    OpBitCount = 205,
 
1099
    OpDPdx = 207,
 
1100
    OpDPdy = 208,
 
1101
    OpFwidth = 209,
 
1102
    OpDPdxFine = 210,
 
1103
    OpDPdyFine = 211,
 
1104
    OpFwidthFine = 212,
 
1105
    OpDPdxCoarse = 213,
 
1106
    OpDPdyCoarse = 214,
 
1107
    OpFwidthCoarse = 215,
 
1108
    OpEmitVertex = 218,
 
1109
    OpEndPrimitive = 219,
 
1110
    OpEmitStreamVertex = 220,
 
1111
    OpEndStreamPrimitive = 221,
 
1112
    OpControlBarrier = 224,
 
1113
    OpMemoryBarrier = 225,
 
1114
    OpAtomicLoad = 227,
 
1115
    OpAtomicStore = 228,
 
1116
    OpAtomicExchange = 229,
 
1117
    OpAtomicCompareExchange = 230,
 
1118
    OpAtomicCompareExchangeWeak = 231,
 
1119
    OpAtomicIIncrement = 232,
 
1120
    OpAtomicIDecrement = 233,
 
1121
    OpAtomicIAdd = 234,
 
1122
    OpAtomicISub = 235,
 
1123
    OpAtomicSMin = 236,
 
1124
    OpAtomicUMin = 237,
 
1125
    OpAtomicSMax = 238,
 
1126
    OpAtomicUMax = 239,
 
1127
    OpAtomicAnd = 240,
 
1128
    OpAtomicOr = 241,
 
1129
    OpAtomicXor = 242,
 
1130
    OpPhi = 245,
 
1131
    OpLoopMerge = 246,
 
1132
    OpSelectionMerge = 247,
 
1133
    OpLabel = 248,
 
1134
    OpBranch = 249,
 
1135
    OpBranchConditional = 250,
 
1136
    OpSwitch = 251,
 
1137
    OpKill = 252,
 
1138
    OpReturn = 253,
 
1139
    OpReturnValue = 254,
 
1140
    OpUnreachable = 255,
 
1141
    OpLifetimeStart = 256,
 
1142
    OpLifetimeStop = 257,
 
1143
    OpGroupAsyncCopy = 259,
 
1144
    OpGroupWaitEvents = 260,
 
1145
    OpGroupAll = 261,
 
1146
    OpGroupAny = 262,
 
1147
    OpGroupBroadcast = 263,
 
1148
    OpGroupIAdd = 264,
 
1149
    OpGroupFAdd = 265,
 
1150
    OpGroupFMin = 266,
 
1151
    OpGroupUMin = 267,
 
1152
    OpGroupSMin = 268,
 
1153
    OpGroupFMax = 269,
 
1154
    OpGroupUMax = 270,
 
1155
    OpGroupSMax = 271,
 
1156
    OpReadPipe = 274,
 
1157
    OpWritePipe = 275,
 
1158
    OpReservedReadPipe = 276,
 
1159
    OpReservedWritePipe = 277,
 
1160
    OpReserveReadPipePackets = 278,
 
1161
    OpReserveWritePipePackets = 279,
 
1162
    OpCommitReadPipe = 280,
 
1163
    OpCommitWritePipe = 281,
 
1164
    OpIsValidReserveId = 282,
 
1165
    OpGetNumPipePackets = 283,
 
1166
    OpGetMaxPipePackets = 284,
 
1167
    OpGroupReserveReadPipePackets = 285,
 
1168
    OpGroupReserveWritePipePackets = 286,
 
1169
    OpGroupCommitReadPipe = 287,
 
1170
    OpGroupCommitWritePipe = 288,
 
1171
    OpEnqueueMarker = 291,
 
1172
    OpEnqueueKernel = 292,
 
1173
    OpGetKernelNDrangeSubGroupCount = 293,
 
1174
    OpGetKernelNDrangeMaxSubGroupSize = 294,
 
1175
    OpGetKernelWorkGroupSize = 295,
 
1176
    OpGetKernelPreferredWorkGroupSizeMultiple = 296,
 
1177
    OpRetainEvent = 297,
 
1178
    OpReleaseEvent = 298,
 
1179
    OpCreateUserEvent = 299,
 
1180
    OpIsValidEvent = 300,
 
1181
    OpSetUserEventStatus = 301,
 
1182
    OpCaptureEventProfilingInfo = 302,
 
1183
    OpGetDefaultQueue = 303,
 
1184
    OpBuildNDRange = 304,
 
1185
    OpImageSparseSampleImplicitLod = 305,
 
1186
    OpImageSparseSampleExplicitLod = 306,
 
1187
    OpImageSparseSampleDrefImplicitLod = 307,
 
1188
    OpImageSparseSampleDrefExplicitLod = 308,
 
1189
    OpImageSparseSampleProjImplicitLod = 309,
 
1190
    OpImageSparseSampleProjExplicitLod = 310,
 
1191
    OpImageSparseSampleProjDrefImplicitLod = 311,
 
1192
    OpImageSparseSampleProjDrefExplicitLod = 312,
 
1193
    OpImageSparseFetch = 313,
 
1194
    OpImageSparseGather = 314,
 
1195
    OpImageSparseDrefGather = 315,
 
1196
    OpImageSparseTexelsResident = 316,
 
1197
    OpNoLine = 317,
 
1198
    OpAtomicFlagTestAndSet = 318,
 
1199
    OpAtomicFlagClear = 319,
 
1200
    OpImageSparseRead = 320,
 
1201
    OpSizeOf = 321,
 
1202
    OpTypePipeStorage = 322,
 
1203
    OpConstantPipeStorage = 323,
 
1204
    OpCreatePipeFromPipeStorage = 324,
 
1205
    OpGetKernelLocalSizeForSubgroupCount = 325,
 
1206
    OpGetKernelMaxNumSubgroups = 326,
 
1207
    OpTypeNamedBarrier = 327,
 
1208
    OpNamedBarrierInitialize = 328,
 
1209
    OpMemoryNamedBarrier = 329,
 
1210
    OpModuleProcessed = 330,
 
1211
    OpExecutionModeId = 331,
 
1212
    OpDecorateId = 332,
 
1213
    OpGroupNonUniformElect = 333,
 
1214
    OpGroupNonUniformAll = 334,
 
1215
    OpGroupNonUniformAny = 335,
 
1216
    OpGroupNonUniformAllEqual = 336,
 
1217
    OpGroupNonUniformBroadcast = 337,
 
1218
    OpGroupNonUniformBroadcastFirst = 338,
 
1219
    OpGroupNonUniformBallot = 339,
 
1220
    OpGroupNonUniformInverseBallot = 340,
 
1221
    OpGroupNonUniformBallotBitExtract = 341,
 
1222
    OpGroupNonUniformBallotBitCount = 342,
 
1223
    OpGroupNonUniformBallotFindLSB = 343,
 
1224
    OpGroupNonUniformBallotFindMSB = 344,
 
1225
    OpGroupNonUniformShuffle = 345,
 
1226
    OpGroupNonUniformShuffleXor = 346,
 
1227
    OpGroupNonUniformShuffleUp = 347,
 
1228
    OpGroupNonUniformShuffleDown = 348,
 
1229
    OpGroupNonUniformIAdd = 349,
 
1230
    OpGroupNonUniformFAdd = 350,
 
1231
    OpGroupNonUniformIMul = 351,
 
1232
    OpGroupNonUniformFMul = 352,
 
1233
    OpGroupNonUniformSMin = 353,
 
1234
    OpGroupNonUniformUMin = 354,
 
1235
    OpGroupNonUniformFMin = 355,
 
1236
    OpGroupNonUniformSMax = 356,
 
1237
    OpGroupNonUniformUMax = 357,
 
1238
    OpGroupNonUniformFMax = 358,
 
1239
    OpGroupNonUniformBitwiseAnd = 359,
 
1240
    OpGroupNonUniformBitwiseOr = 360,
 
1241
    OpGroupNonUniformBitwiseXor = 361,
 
1242
    OpGroupNonUniformLogicalAnd = 362,
 
1243
    OpGroupNonUniformLogicalOr = 363,
 
1244
    OpGroupNonUniformLogicalXor = 364,
 
1245
    OpGroupNonUniformQuadBroadcast = 365,
 
1246
    OpGroupNonUniformQuadSwap = 366,
 
1247
    OpCopyLogical = 400,
 
1248
    OpPtrEqual = 401,
 
1249
    OpPtrNotEqual = 402,
 
1250
    OpPtrDiff = 403,
 
1251
    OpSubgroupBallotKHR = 4421,
 
1252
    OpSubgroupFirstInvocationKHR = 4422,
 
1253
    OpSubgroupAllKHR = 4428,
 
1254
    OpSubgroupAnyKHR = 4429,
 
1255
    OpSubgroupAllEqualKHR = 4430,
 
1256
    OpSubgroupReadInvocationKHR = 4432,
 
1257
    OpGroupIAddNonUniformAMD = 5000,
 
1258
    OpGroupFAddNonUniformAMD = 5001,
 
1259
    OpGroupFMinNonUniformAMD = 5002,
 
1260
    OpGroupUMinNonUniformAMD = 5003,
 
1261
    OpGroupSMinNonUniformAMD = 5004,
 
1262
    OpGroupFMaxNonUniformAMD = 5005,
 
1263
    OpGroupUMaxNonUniformAMD = 5006,
 
1264
    OpGroupSMaxNonUniformAMD = 5007,
 
1265
    OpFragmentMaskFetchAMD = 5011,
 
1266
    OpFragmentFetchAMD = 5012,
 
1267
    OpReadClockKHR = 5056,
 
1268
    OpImageSampleFootprintNV = 5283,
 
1269
    OpGroupNonUniformPartitionNV = 5296,
 
1270
    OpWritePackedPrimitiveIndices4x8NV = 5299,
 
1271
    OpReportIntersectionNV = 5334,
 
1272
    OpIgnoreIntersectionNV = 5335,
 
1273
    OpTerminateRayNV = 5336,
 
1274
    OpTraceNV = 5337,
 
1275
    OpTypeAccelerationStructureNV = 5341,
 
1276
    OpExecuteCallableNV = 5344,
 
1277
    OpTypeCooperativeMatrixNV = 5358,
 
1278
    OpCooperativeMatrixLoadNV = 5359,
 
1279
    OpCooperativeMatrixStoreNV = 5360,
 
1280
    OpCooperativeMatrixMulAddNV = 5361,
 
1281
    OpCooperativeMatrixLengthNV = 5362,
 
1282
    OpBeginInvocationInterlockEXT = 5364,
 
1283
    OpEndInvocationInterlockEXT = 5365,
 
1284
    OpDemoteToHelperInvocationEXT = 5380,
 
1285
    OpIsHelperInvocationEXT = 5381,
 
1286
    OpSubgroupShuffleINTEL = 5571,
 
1287
    OpSubgroupShuffleDownINTEL = 5572,
 
1288
    OpSubgroupShuffleUpINTEL = 5573,
 
1289
    OpSubgroupShuffleXorINTEL = 5574,
 
1290
    OpSubgroupBlockReadINTEL = 5575,
 
1291
    OpSubgroupBlockWriteINTEL = 5576,
 
1292
    OpSubgroupImageBlockReadINTEL = 5577,
 
1293
    OpSubgroupImageBlockWriteINTEL = 5578,
 
1294
    OpSubgroupImageMediaBlockReadINTEL = 5580,
 
1295
    OpSubgroupImageMediaBlockWriteINTEL = 5581,
 
1296
    OpUCountLeadingZerosINTEL = 5585,
 
1297
    OpUCountTrailingZerosINTEL = 5586,
 
1298
    OpAbsISubINTEL = 5587,
 
1299
    OpAbsUSubINTEL = 5588,
 
1300
    OpIAddSatINTEL = 5589,
 
1301
    OpUAddSatINTEL = 5590,
 
1302
    OpIAverageINTEL = 5591,
 
1303
    OpUAverageINTEL = 5592,
 
1304
    OpIAverageRoundedINTEL = 5593,
 
1305
    OpUAverageRoundedINTEL = 5594,
 
1306
    OpISubSatINTEL = 5595,
 
1307
    OpUSubSatINTEL = 5596,
 
1308
    OpIMul32x16INTEL = 5597,
 
1309
    OpUMul32x16INTEL = 5598,
 
1310
    OpDecorateString = 5632,
 
1311
    OpDecorateStringGOOGLE = 5632,
 
1312
    OpMemberDecorateString = 5633,
 
1313
    OpMemberDecorateStringGOOGLE = 5633,
 
1314
    OpVmeImageINTEL = 5699,
 
1315
    OpTypeVmeImageINTEL = 5700,
 
1316
    OpTypeAvcImePayloadINTEL = 5701,
 
1317
    OpTypeAvcRefPayloadINTEL = 5702,
 
1318
    OpTypeAvcSicPayloadINTEL = 5703,
 
1319
    OpTypeAvcMcePayloadINTEL = 5704,
 
1320
    OpTypeAvcMceResultINTEL = 5705,
 
1321
    OpTypeAvcImeResultINTEL = 5706,
 
1322
    OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707,
 
1323
    OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708,
 
1324
    OpTypeAvcImeSingleReferenceStreaminINTEL = 5709,
 
1325
    OpTypeAvcImeDualReferenceStreaminINTEL = 5710,
 
1326
    OpTypeAvcRefResultINTEL = 5711,
 
1327
    OpTypeAvcSicResultINTEL = 5712,
 
1328
    OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713,
 
1329
    OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714,
 
1330
    OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715,
 
1331
    OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716,
 
1332
    OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717,
 
1333
    OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718,
 
1334
    OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719,
 
1335
    OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720,
 
1336
    OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721,
 
1337
    OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722,
 
1338
    OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723,
 
1339
    OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724,
 
1340
    OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725,
 
1341
    OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726,
 
1342
    OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727,
 
1343
    OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728,
 
1344
    OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729,
 
1345
    OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730,
 
1346
    OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731,
 
1347
    OpSubgroupAvcMceConvertToImePayloadINTEL = 5732,
 
1348
    OpSubgroupAvcMceConvertToImeResultINTEL = 5733,
 
1349
    OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734,
 
1350
    OpSubgroupAvcMceConvertToRefResultINTEL = 5735,
 
1351
    OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736,
 
1352
    OpSubgroupAvcMceConvertToSicResultINTEL = 5737,
 
1353
    OpSubgroupAvcMceGetMotionVectorsINTEL = 5738,
 
1354
    OpSubgroupAvcMceGetInterDistortionsINTEL = 5739,
 
1355
    OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740,
 
1356
    OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741,
 
1357
    OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742,
 
1358
    OpSubgroupAvcMceGetInterDirectionsINTEL = 5743,
 
1359
    OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744,
 
1360
    OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745,
 
1361
    OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746,
 
1362
    OpSubgroupAvcImeInitializeINTEL = 5747,
 
1363
    OpSubgroupAvcImeSetSingleReferenceINTEL = 5748,
 
1364
    OpSubgroupAvcImeSetDualReferenceINTEL = 5749,
 
1365
    OpSubgroupAvcImeRefWindowSizeINTEL = 5750,
 
1366
    OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751,
 
1367
    OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752,
 
1368
    OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753,
 
1369
    OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754,
 
1370
    OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755,
 
1371
    OpSubgroupAvcImeSetWeightedSadINTEL = 5756,
 
1372
    OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757,
 
1373
    OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758,
 
1374
    OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759,
 
1375
    OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760,
 
1376
    OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761,
 
1377
    OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762,
 
1378
    OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763,
 
1379
    OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764,
 
1380
    OpSubgroupAvcImeConvertToMceResultINTEL = 5765,
 
1381
    OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766,
 
1382
    OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767,
 
1383
    OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768,
 
1384
    OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769,
 
1385
    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770,
 
1386
    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771,
 
1387
    OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772,
 
1388
    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773,
 
1389
    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774,
 
1390
    OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775,
 
1391
    OpSubgroupAvcImeGetBorderReachedINTEL = 5776,
 
1392
    OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777,
 
1393
    OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778,
 
1394
    OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779,
 
1395
    OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780,
 
1396
    OpSubgroupAvcFmeInitializeINTEL = 5781,
 
1397
    OpSubgroupAvcBmeInitializeINTEL = 5782,
 
1398
    OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783,
 
1399
    OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784,
 
1400
    OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785,
 
1401
    OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786,
 
1402
    OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787,
 
1403
    OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788,
 
1404
    OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789,
 
1405
    OpSubgroupAvcRefConvertToMceResultINTEL = 5790,
 
1406
    OpSubgroupAvcSicInitializeINTEL = 5791,
 
1407
    OpSubgroupAvcSicConfigureSkcINTEL = 5792,
 
1408
    OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793,
 
1409
    OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794,
 
1410
    OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795,
 
1411
    OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796,
 
1412
    OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797,
 
1413
    OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798,
 
1414
    OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799,
 
1415
    OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800,
 
1416
    OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801,
 
1417
    OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802,
 
1418
    OpSubgroupAvcSicEvaluateIpeINTEL = 5803,
 
1419
    OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804,
 
1420
    OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805,
 
1421
    OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806,
 
1422
    OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807,
 
1423
    OpSubgroupAvcSicConvertToMceResultINTEL = 5808,
 
1424
    OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809,
 
1425
    OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810,
 
1426
    OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811,
 
1427
    OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812,
 
1428
    OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813,
 
1429
    OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814,
 
1430
    OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815,
 
1431
    OpSubgroupAvcSicGetInterRawSadsINTEL = 5816,
 
1432
    Max = 0x7fffffff,
 
1433
};
 
1434
 
 
1435
#ifdef SPV_ENABLE_UTILITY_CODE
 
1436
inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
 
1437
    *hasResult = *hasResultType = false;
 
1438
    switch (opcode) {
 
1439
    default: /* unknown opcode */ break;
 
1440
    case Op::OpNop: *hasResult = false; *hasResultType = false; break;
 
1441
    case Op::OpUndef: *hasResult = true; *hasResultType = true; break;
 
1442
    case Op::OpSourceContinued: *hasResult = false; *hasResultType = false; break;
 
1443
    case Op::OpSource: *hasResult = false; *hasResultType = false; break;
 
1444
    case Op::OpSourceExtension: *hasResult = false; *hasResultType = false; break;
 
1445
    case Op::OpName: *hasResult = false; *hasResultType = false; break;
 
1446
    case Op::OpMemberName: *hasResult = false; *hasResultType = false; break;
 
1447
    case Op::OpString: *hasResult = true; *hasResultType = false; break;
 
1448
    case Op::OpLine: *hasResult = false; *hasResultType = false; break;
 
1449
    case Op::OpExtension: *hasResult = false; *hasResultType = false; break;
 
1450
    case Op::OpExtInstImport: *hasResult = true; *hasResultType = false; break;
 
1451
    case Op::OpExtInst: *hasResult = true; *hasResultType = true; break;
 
1452
    case Op::OpMemoryModel: *hasResult = false; *hasResultType = false; break;
 
1453
    case Op::OpEntryPoint: *hasResult = false; *hasResultType = false; break;
 
1454
    case Op::OpExecutionMode: *hasResult = false; *hasResultType = false; break;
 
1455
    case Op::OpCapability: *hasResult = false; *hasResultType = false; break;
 
1456
    case Op::OpTypeVoid: *hasResult = true; *hasResultType = false; break;
 
1457
    case Op::OpTypeBool: *hasResult = true; *hasResultType = false; break;
 
1458
    case Op::OpTypeInt: *hasResult = true; *hasResultType = false; break;
 
1459
    case Op::OpTypeFloat: *hasResult = true; *hasResultType = false; break;
 
1460
    case Op::OpTypeVector: *hasResult = true; *hasResultType = false; break;
 
1461
    case Op::OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
 
1462
    case Op::OpTypeImage: *hasResult = true; *hasResultType = false; break;
 
1463
    case Op::OpTypeSampler: *hasResult = true; *hasResultType = false; break;
 
1464
    case Op::OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
 
1465
    case Op::OpTypeArray: *hasResult = true; *hasResultType = false; break;
 
1466
    case Op::OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
 
1467
    case Op::OpTypeStruct: *hasResult = true; *hasResultType = false; break;
 
1468
    case Op::OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
 
1469
    case Op::OpTypePointer: *hasResult = true; *hasResultType = false; break;
 
1470
    case Op::OpTypeFunction: *hasResult = true; *hasResultType = false; break;
 
1471
    case Op::OpTypeEvent: *hasResult = true; *hasResultType = false; break;
 
1472
    case Op::OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
 
1473
    case Op::OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
 
1474
    case Op::OpTypeQueue: *hasResult = true; *hasResultType = false; break;
 
1475
    case Op::OpTypePipe: *hasResult = true; *hasResultType = false; break;
 
1476
    case Op::OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
 
1477
    case Op::OpConstantTrue: *hasResult = true; *hasResultType = true; break;
 
1478
    case Op::OpConstantFalse: *hasResult = true; *hasResultType = true; break;
 
1479
    case Op::OpConstant: *hasResult = true; *hasResultType = true; break;
 
1480
    case Op::OpConstantComposite: *hasResult = true; *hasResultType = true; break;
 
1481
    case Op::OpConstantSampler: *hasResult = true; *hasResultType = true; break;
 
1482
    case Op::OpConstantNull: *hasResult = true; *hasResultType = true; break;
 
1483
    case Op::OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
 
1484
    case Op::OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
 
1485
    case Op::OpSpecConstant: *hasResult = true; *hasResultType = true; break;
 
1486
    case Op::OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
 
1487
    case Op::OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
 
1488
    case Op::OpFunction: *hasResult = true; *hasResultType = true; break;
 
1489
    case Op::OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
 
1490
    case Op::OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
 
1491
    case Op::OpFunctionCall: *hasResult = true; *hasResultType = true; break;
 
1492
    case Op::OpVariable: *hasResult = true; *hasResultType = true; break;
 
1493
    case Op::OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
 
1494
    case Op::OpLoad: *hasResult = true; *hasResultType = true; break;
 
1495
    case Op::OpStore: *hasResult = false; *hasResultType = false; break;
 
1496
    case Op::OpCopyMemory: *hasResult = false; *hasResultType = false; break;
 
1497
    case Op::OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
 
1498
    case Op::OpAccessChain: *hasResult = true; *hasResultType = true; break;
 
1499
    case Op::OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
 
1500
    case Op::OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
 
1501
    case Op::OpArrayLength: *hasResult = true; *hasResultType = true; break;
 
1502
    case Op::OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
 
1503
    case Op::OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
 
1504
    case Op::OpDecorate: *hasResult = false; *hasResultType = false; break;
 
1505
    case Op::OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
 
1506
    case Op::OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
 
1507
    case Op::OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
 
1508
    case Op::OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
 
1509
    case Op::OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
 
1510
    case Op::OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
 
1511
    case Op::OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
 
1512
    case Op::OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
 
1513
    case Op::OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
 
1514
    case Op::OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
 
1515
    case Op::OpCopyObject: *hasResult = true; *hasResultType = true; break;
 
1516
    case Op::OpTranspose: *hasResult = true; *hasResultType = true; break;
 
1517
    case Op::OpSampledImage: *hasResult = true; *hasResultType = true; break;
 
1518
    case Op::OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
 
1519
    case Op::OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
 
1520
    case Op::OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
 
1521
    case Op::OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
 
1522
    case Op::OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
 
1523
    case Op::OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
 
1524
    case Op::OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
 
1525
    case Op::OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
 
1526
    case Op::OpImageFetch: *hasResult = true; *hasResultType = true; break;
 
1527
    case Op::OpImageGather: *hasResult = true; *hasResultType = true; break;
 
1528
    case Op::OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
 
1529
    case Op::OpImageRead: *hasResult = true; *hasResultType = true; break;
 
1530
    case Op::OpImageWrite: *hasResult = false; *hasResultType = false; break;
 
1531
    case Op::OpImage: *hasResult = true; *hasResultType = true; break;
 
1532
    case Op::OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
 
1533
    case Op::OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
 
1534
    case Op::OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
 
1535
    case Op::OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
 
1536
    case Op::OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
 
1537
    case Op::OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
 
1538
    case Op::OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
 
1539
    case Op::OpConvertFToU: *hasResult = true; *hasResultType = true; break;
 
1540
    case Op::OpConvertFToS: *hasResult = true; *hasResultType = true; break;
 
1541
    case Op::OpConvertSToF: *hasResult = true; *hasResultType = true; break;
 
1542
    case Op::OpConvertUToF: *hasResult = true; *hasResultType = true; break;
 
1543
    case Op::OpUConvert: *hasResult = true; *hasResultType = true; break;
 
1544
    case Op::OpSConvert: *hasResult = true; *hasResultType = true; break;
 
1545
    case Op::OpFConvert: *hasResult = true; *hasResultType = true; break;
 
1546
    case Op::OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
 
1547
    case Op::OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
 
1548
    case Op::OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
 
1549
    case Op::OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
 
1550
    case Op::OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
 
1551
    case Op::OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
 
1552
    case Op::OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
 
1553
    case Op::OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
 
1554
    case Op::OpBitcast: *hasResult = true; *hasResultType = true; break;
 
1555
    case Op::OpSNegate: *hasResult = true; *hasResultType = true; break;
 
1556
    case Op::OpFNegate: *hasResult = true; *hasResultType = true; break;
 
1557
    case Op::OpIAdd: *hasResult = true; *hasResultType = true; break;
 
1558
    case Op::OpFAdd: *hasResult = true; *hasResultType = true; break;
 
1559
    case Op::OpISub: *hasResult = true; *hasResultType = true; break;
 
1560
    case Op::OpFSub: *hasResult = true; *hasResultType = true; break;
 
1561
    case Op::OpIMul: *hasResult = true; *hasResultType = true; break;
 
1562
    case Op::OpFMul: *hasResult = true; *hasResultType = true; break;
 
1563
    case Op::OpUDiv: *hasResult = true; *hasResultType = true; break;
 
1564
    case Op::OpSDiv: *hasResult = true; *hasResultType = true; break;
 
1565
    case Op::OpFDiv: *hasResult = true; *hasResultType = true; break;
 
1566
    case Op::OpUMod: *hasResult = true; *hasResultType = true; break;
 
1567
    case Op::OpSRem: *hasResult = true; *hasResultType = true; break;
 
1568
    case Op::OpSMod: *hasResult = true; *hasResultType = true; break;
 
1569
    case Op::OpFRem: *hasResult = true; *hasResultType = true; break;
 
1570
    case Op::OpFMod: *hasResult = true; *hasResultType = true; break;
 
1571
    case Op::OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
 
1572
    case Op::OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
 
1573
    case Op::OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
 
1574
    case Op::OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
 
1575
    case Op::OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
 
1576
    case Op::OpOuterProduct: *hasResult = true; *hasResultType = true; break;
 
1577
    case Op::OpDot: *hasResult = true; *hasResultType = true; break;
 
1578
    case Op::OpIAddCarry: *hasResult = true; *hasResultType = true; break;
 
1579
    case Op::OpISubBorrow: *hasResult = true; *hasResultType = true; break;
 
1580
    case Op::OpUMulExtended: *hasResult = true; *hasResultType = true; break;
 
1581
    case Op::OpSMulExtended: *hasResult = true; *hasResultType = true; break;
 
1582
    case Op::OpAny: *hasResult = true; *hasResultType = true; break;
 
1583
    case Op::OpAll: *hasResult = true; *hasResultType = true; break;
 
1584
    case Op::OpIsNan: *hasResult = true; *hasResultType = true; break;
 
1585
    case Op::OpIsInf: *hasResult = true; *hasResultType = true; break;
 
1586
    case Op::OpIsFinite: *hasResult = true; *hasResultType = true; break;
 
1587
    case Op::OpIsNormal: *hasResult = true; *hasResultType = true; break;
 
1588
    case Op::OpSignBitSet: *hasResult = true; *hasResultType = true; break;
 
1589
    case Op::OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
 
1590
    case Op::OpOrdered: *hasResult = true; *hasResultType = true; break;
 
1591
    case Op::OpUnordered: *hasResult = true; *hasResultType = true; break;
 
1592
    case Op::OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
 
1593
    case Op::OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
 
1594
    case Op::OpLogicalOr: *hasResult = true; *hasResultType = true; break;
 
1595
    case Op::OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
 
1596
    case Op::OpLogicalNot: *hasResult = true; *hasResultType = true; break;
 
1597
    case Op::OpSelect: *hasResult = true; *hasResultType = true; break;
 
1598
    case Op::OpIEqual: *hasResult = true; *hasResultType = true; break;
 
1599
    case Op::OpINotEqual: *hasResult = true; *hasResultType = true; break;
 
1600
    case Op::OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
 
1601
    case Op::OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
 
1602
    case Op::OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
 
1603
    case Op::OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
 
1604
    case Op::OpULessThan: *hasResult = true; *hasResultType = true; break;
 
1605
    case Op::OpSLessThan: *hasResult = true; *hasResultType = true; break;
 
1606
    case Op::OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
 
1607
    case Op::OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
 
1608
    case Op::OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
 
1609
    case Op::OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
 
1610
    case Op::OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
 
1611
    case Op::OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
 
1612
    case Op::OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
 
1613
    case Op::OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
 
1614
    case Op::OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
 
1615
    case Op::OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
 
1616
    case Op::OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
 
1617
    case Op::OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
 
1618
    case Op::OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
 
1619
    case Op::OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
 
1620
    case Op::OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
 
1621
    case Op::OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
 
1622
    case Op::OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
 
1623
    case Op::OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
 
1624
    case Op::OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
 
1625
    case Op::OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
 
1626
    case Op::OpNot: *hasResult = true; *hasResultType = true; break;
 
1627
    case Op::OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
 
1628
    case Op::OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
 
1629
    case Op::OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
 
1630
    case Op::OpBitReverse: *hasResult = true; *hasResultType = true; break;
 
1631
    case Op::OpBitCount: *hasResult = true; *hasResultType = true; break;
 
1632
    case Op::OpDPdx: *hasResult = true; *hasResultType = true; break;
 
1633
    case Op::OpDPdy: *hasResult = true; *hasResultType = true; break;
 
1634
    case Op::OpFwidth: *hasResult = true; *hasResultType = true; break;
 
1635
    case Op::OpDPdxFine: *hasResult = true; *hasResultType = true; break;
 
1636
    case Op::OpDPdyFine: *hasResult = true; *hasResultType = true; break;
 
1637
    case Op::OpFwidthFine: *hasResult = true; *hasResultType = true; break;
 
1638
    case Op::OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
 
1639
    case Op::OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
 
1640
    case Op::OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
 
1641
    case Op::OpEmitVertex: *hasResult = false; *hasResultType = false; break;
 
1642
    case Op::OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
 
1643
    case Op::OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
 
1644
    case Op::OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
 
1645
    case Op::OpControlBarrier: *hasResult = false; *hasResultType = false; break;
 
1646
    case Op::OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
 
1647
    case Op::OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
 
1648
    case Op::OpAtomicStore: *hasResult = false; *hasResultType = false; break;
 
1649
    case Op::OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
 
1650
    case Op::OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
 
1651
    case Op::OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
 
1652
    case Op::OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
 
1653
    case Op::OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
 
1654
    case Op::OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
 
1655
    case Op::OpAtomicISub: *hasResult = true; *hasResultType = true; break;
 
1656
    case Op::OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
 
1657
    case Op::OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
 
1658
    case Op::OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
 
1659
    case Op::OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
 
1660
    case Op::OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
 
1661
    case Op::OpAtomicOr: *hasResult = true; *hasResultType = true; break;
 
1662
    case Op::OpAtomicXor: *hasResult = true; *hasResultType = true; break;
 
1663
    case Op::OpPhi: *hasResult = true; *hasResultType = true; break;
 
1664
    case Op::OpLoopMerge: *hasResult = false; *hasResultType = false; break;
 
1665
    case Op::OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
 
1666
    case Op::OpLabel: *hasResult = true; *hasResultType = false; break;
 
1667
    case Op::OpBranch: *hasResult = false; *hasResultType = false; break;
 
1668
    case Op::OpBranchConditional: *hasResult = false; *hasResultType = false; break;
 
1669
    case Op::OpSwitch: *hasResult = false; *hasResultType = false; break;
 
1670
    case Op::OpKill: *hasResult = false; *hasResultType = false; break;
 
1671
    case Op::OpReturn: *hasResult = false; *hasResultType = false; break;
 
1672
    case Op::OpReturnValue: *hasResult = false; *hasResultType = false; break;
 
1673
    case Op::OpUnreachable: *hasResult = false; *hasResultType = false; break;
 
1674
    case Op::OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
 
1675
    case Op::OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
 
1676
    case Op::OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
 
1677
    case Op::OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
 
1678
    case Op::OpGroupAll: *hasResult = true; *hasResultType = true; break;
 
1679
    case Op::OpGroupAny: *hasResult = true; *hasResultType = true; break;
 
1680
    case Op::OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
 
1681
    case Op::OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
 
1682
    case Op::OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
 
1683
    case Op::OpGroupFMin: *hasResult = true; *hasResultType = true; break;
 
1684
    case Op::OpGroupUMin: *hasResult = true; *hasResultType = true; break;
 
1685
    case Op::OpGroupSMin: *hasResult = true; *hasResultType = true; break;
 
1686
    case Op::OpGroupFMax: *hasResult = true; *hasResultType = true; break;
 
1687
    case Op::OpGroupUMax: *hasResult = true; *hasResultType = true; break;
 
1688
    case Op::OpGroupSMax: *hasResult = true; *hasResultType = true; break;
 
1689
    case Op::OpReadPipe: *hasResult = true; *hasResultType = true; break;
 
1690
    case Op::OpWritePipe: *hasResult = true; *hasResultType = true; break;
 
1691
    case Op::OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
 
1692
    case Op::OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
 
1693
    case Op::OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
 
1694
    case Op::OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
 
1695
    case Op::OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
 
1696
    case Op::OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
 
1697
    case Op::OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
 
1698
    case Op::OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
 
1699
    case Op::OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
 
1700
    case Op::OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
 
1701
    case Op::OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
 
1702
    case Op::OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
 
1703
    case Op::OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
 
1704
    case Op::OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
 
1705
    case Op::OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
 
1706
    case Op::OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
 
1707
    case Op::OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
 
1708
    case Op::OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
 
1709
    case Op::OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
 
1710
    case Op::OpRetainEvent: *hasResult = false; *hasResultType = false; break;
 
1711
    case Op::OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
 
1712
    case Op::OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
 
1713
    case Op::OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
 
1714
    case Op::OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
 
1715
    case Op::OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
 
1716
    case Op::OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
 
1717
    case Op::OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
 
1718
    case Op::OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
 
1719
    case Op::OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
 
1720
    case Op::OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
 
1721
    case Op::OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
 
1722
    case Op::OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
 
1723
    case Op::OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
 
1724
    case Op::OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
 
1725
    case Op::OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
 
1726
    case Op::OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
 
1727
    case Op::OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
 
1728
    case Op::OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
 
1729
    case Op::OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
 
1730
    case Op::OpNoLine: *hasResult = false; *hasResultType = false; break;
 
1731
    case Op::OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
 
1732
    case Op::OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
 
1733
    case Op::OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
 
1734
    case Op::OpSizeOf: *hasResult = true; *hasResultType = true; break;
 
1735
    case Op::OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
 
1736
    case Op::OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
 
1737
    case Op::OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
 
1738
    case Op::OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
 
1739
    case Op::OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
 
1740
    case Op::OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
 
1741
    case Op::OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
 
1742
    case Op::OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
 
1743
    case Op::OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
 
1744
    case Op::OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
 
1745
    case Op::OpDecorateId: *hasResult = false; *hasResultType = false; break;
 
1746
    case Op::OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
 
1747
    case Op::OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
 
1748
    case Op::OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
 
1749
    case Op::OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
 
1750
    case Op::OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
 
1751
    case Op::OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
 
1752
    case Op::OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
 
1753
    case Op::OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
 
1754
    case Op::OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
 
1755
    case Op::OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
 
1756
    case Op::OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
 
1757
    case Op::OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
 
1758
    case Op::OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
 
1759
    case Op::OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
 
1760
    case Op::OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
 
1761
    case Op::OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
 
1762
    case Op::OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
 
1763
    case Op::OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
 
1764
    case Op::OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
 
1765
    case Op::OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
 
1766
    case Op::OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
 
1767
    case Op::OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
 
1768
    case Op::OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
 
1769
    case Op::OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
 
1770
    case Op::OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
 
1771
    case Op::OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
 
1772
    case Op::OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
 
1773
    case Op::OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
 
1774
    case Op::OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
 
1775
    case Op::OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
 
1776
    case Op::OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
 
1777
    case Op::OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
 
1778
    case Op::OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
 
1779
    case Op::OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
 
1780
    case Op::OpCopyLogical: *hasResult = true; *hasResultType = true; break;
 
1781
    case Op::OpPtrEqual: *hasResult = true; *hasResultType = true; break;
 
1782
    case Op::OpPtrNotEqual: *hasResult = true; *hasResultType = true; break;
 
1783
    case Op::OpPtrDiff: *hasResult = true; *hasResultType = true; break;
 
1784
    case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
 
1785
    case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
 
1786
    case Op::OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
 
1787
    case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
 
1788
    case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
 
1789
    case Op::OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
 
1790
    case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
 
1791
    case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
 
1792
    case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
 
1793
    case Op::OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
 
1794
    case Op::OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
 
1795
    case Op::OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
 
1796
    case Op::OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
 
1797
    case Op::OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
 
1798
    case Op::OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
 
1799
    case Op::OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
 
1800
    case Op::OpReadClockKHR: *hasResult = true; *hasResultType = true; break;
 
1801
    case Op::OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
 
1802
    case Op::OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
 
1803
    case Op::OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
 
1804
    case Op::OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
 
1805
    case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
 
1806
    case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
 
1807
    case Op::OpTraceNV: *hasResult = false; *hasResultType = false; break;
 
1808
    case Op::OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
 
1809
    case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
 
1810
    case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
 
1811
    case Op::OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
 
1812
    case Op::OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
 
1813
    case Op::OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
 
1814
    case Op::OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
 
1815
    case Op::OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
 
1816
    case Op::OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break;
 
1817
    case Op::OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break;
 
1818
    case Op::OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break;
 
1819
    case Op::OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
 
1820
    case Op::OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
 
1821
    case Op::OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
 
1822
    case Op::OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
 
1823
    case Op::OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
 
1824
    case Op::OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
 
1825
    case Op::OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
 
1826
    case Op::OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
 
1827
    case Op::OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
 
1828
    case Op::OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
 
1829
    case Op::OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break;
 
1830
    case Op::OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break;
 
1831
    case Op::OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break;
 
1832
    case Op::OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break;
 
1833
    case Op::OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break;
 
1834
    case Op::OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break;
 
1835
    case Op::OpIAverageINTEL: *hasResult = true; *hasResultType = true; break;
 
1836
    case Op::OpUAverageINTEL: *hasResult = true; *hasResultType = true; break;
 
1837
    case Op::OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
 
1838
    case Op::OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break;
 
1839
    case Op::OpISubSatINTEL: *hasResult = true; *hasResultType = true; break;
 
1840
    case Op::OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break;
 
1841
    case Op::OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
 
1842
    case Op::OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break;
 
1843
    case Op::OpDecorateString: *hasResult = false; *hasResultType = false; break;
 
1844
    case Op::OpMemberDecorateString: *hasResult = false; *hasResultType = false; break;
 
1845
    case Op::OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
 
1846
    case Op::OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
 
1847
    case Op::OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
 
1848
    case Op::OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
 
1849
    case Op::OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
 
1850
    case Op::OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
 
1851
    case Op::OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
 
1852
    case Op::OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
 
1853
    case Op::OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
 
1854
    case Op::OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
 
1855
    case Op::OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
 
1856
    case Op::OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
 
1857
    case Op::OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
 
1858
    case Op::OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
 
1859
    case Op::OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1860
    case Op::OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1861
    case Op::OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1862
    case Op::OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1863
    case Op::OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1864
    case Op::OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1865
    case Op::OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1866
    case Op::OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
 
1867
    case Op::OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
 
1868
    case Op::OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
 
1869
    case Op::OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
 
1870
    case Op::OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
 
1871
    case Op::OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1872
    case Op::OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1873
    case Op::OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1874
    case Op::OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
 
1875
    case Op::OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
 
1876
    case Op::OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
 
1877
    case Op::OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
 
1878
    case Op::OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
 
1879
    case Op::OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
 
1880
    case Op::OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
 
1881
    case Op::OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
 
1882
    case Op::OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
 
1883
    case Op::OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
 
1884
    case Op::OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
 
1885
    case Op::OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
 
1886
    case Op::OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
 
1887
    case Op::OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
 
1888
    case Op::OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
 
1889
    case Op::OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
 
1890
    case Op::OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
 
1891
    case Op::OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
 
1892
    case Op::OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
 
1893
    case Op::OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
 
1894
    case Op::OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1895
    case Op::OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1896
    case Op::OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
 
1897
    case Op::OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
 
1898
    case Op::OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
 
1899
    case Op::OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
 
1900
    case Op::OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
 
1901
    case Op::OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
 
1902
    case Op::OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
 
1903
    case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1904
    case Op::OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1905
    case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
 
1906
    case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
 
1907
    case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
 
1908
    case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
 
1909
    case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
 
1910
    case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
 
1911
    case Op::OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
 
1912
    case Op::OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
 
1913
    case Op::OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
 
1914
    case Op::OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
 
1915
    case Op::OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
 
1916
    case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
 
1917
    case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
 
1918
    case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
 
1919
    case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
 
1920
    case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
 
1921
    case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
 
1922
    case Op::OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
 
1923
    case Op::OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
 
1924
    case Op::OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
 
1925
    case Op::OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
 
1926
    case Op::OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
 
1927
    case Op::OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
 
1928
    case Op::OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
 
1929
    case Op::OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
 
1930
    case Op::OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
 
1931
    case Op::OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
 
1932
    case Op::OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1933
    case Op::OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1934
    case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1935
    case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
 
1936
    case Op::OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
 
1937
    case Op::OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
 
1938
    case Op::OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
 
1939
    case Op::OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
 
1940
    case Op::OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
 
1941
    case Op::OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
 
1942
    case Op::OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
 
1943
    case Op::OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
 
1944
    case Op::OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
 
1945
    case Op::OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
 
1946
    case Op::OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
 
1947
    case Op::OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
 
1948
    case Op::OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
 
1949
    case Op::OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
 
1950
    case Op::OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1951
    case Op::OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1952
    case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
 
1953
    case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
 
1954
    case Op::OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
 
1955
    case Op::OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
 
1956
    case Op::OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
 
1957
    case Op::OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
 
1958
    case Op::OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
 
1959
    case Op::OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
 
1960
    case Op::OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
 
1961
    case Op::OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
 
1962
    case Op::OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
 
1963
    }
 
1964
}
 
1965
#endif /* SPV_ENABLE_UTILITY_CODE */
 
1966
 
 
1967
// Overload operator| for mask bit combining
 
1968
 
 
1969
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
 
1970
inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
 
1971
inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
 
1972
inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
 
1973
inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
 
1974
inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
 
1975
inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
 
1976
inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
 
1977
 
 
1978
}  // end namespace spv
 
1979
 
 
1980
#endif  // #ifndef spirv_HPP
 
1981