• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2014-2018 The Khronos Group Inc.
2 //
3 // Permission is hereby granted, free of charge, to any person obtaining a copy
4 // of this software and/or associated documentation files (the "Materials"),
5 // to deal in the Materials without restriction, including without limitation
6 // the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 // and/or sell copies of the Materials, and to permit persons to whom the
8 // Materials are furnished to do so, subject to the following conditions:
9 //
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Materials.
12 //
13 // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
14 // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
15 // HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
16 //
17 // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18 // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20 // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22 // FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
23 // IN THE MATERIALS.
24 
25 // This header is automatically generated by the same tool that creates
26 // the Binary Section of the SPIR-V specification.
27 
28 // Enumeration tokens for SPIR-V, in various styles:
29 //   C, C++, C++11, JSON, Lua, Python
30 //
31 // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
32 // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
33 // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
34 // - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
35 // - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
36 //
37 // Some tokens act like mask values, which can be OR'd together,
38 // while others are mutually exclusive.  The mask-like ones have
39 // "Mask" in their name, and a parallel enum that has the shift
40 // amount (1 << x) for each corresponding enumerant.
41 
42 #ifndef spirv_HPP
43 #define spirv_HPP
44 
45 namespace spv {
46 
47 typedef unsigned int Id;
48 
49 #define SPV_VERSION 0x10300
50 #define SPV_REVISION 1
51 
52 static const unsigned int MagicNumber = 0x07230203;
53 static const unsigned int Version = 0x00010300;
54 static const unsigned int Revision = 1;
55 static const unsigned int OpCodeMask = 0xffff;
56 static const unsigned int WordCountShift = 16;
57 
58 enum SourceLanguage {
59     SourceLanguageUnknown = 0,
60     SourceLanguageESSL = 1,
61     SourceLanguageGLSL = 2,
62     SourceLanguageOpenCL_C = 3,
63     SourceLanguageOpenCL_CPP = 4,
64     SourceLanguageHLSL = 5,
65     SourceLanguageMax = 0x7fffffff,
66 };
67 
68 enum ExecutionModel {
69     ExecutionModelVertex = 0,
70     ExecutionModelTessellationControl = 1,
71     ExecutionModelTessellationEvaluation = 2,
72     ExecutionModelGeometry = 3,
73     ExecutionModelFragment = 4,
74     ExecutionModelGLCompute = 5,
75     ExecutionModelKernel = 6,
76     ExecutionModelMax = 0x7fffffff,
77 };
78 
79 enum AddressingModel {
80     AddressingModelLogical = 0,
81     AddressingModelPhysical32 = 1,
82     AddressingModelPhysical64 = 2,
83     AddressingModelMax = 0x7fffffff,
84 };
85 
86 enum MemoryModel {
87     MemoryModelSimple = 0,
88     MemoryModelGLSL450 = 1,
89     MemoryModelOpenCL = 2,
90     MemoryModelMax = 0x7fffffff,
91 };
92 
93 enum ExecutionMode {
94     ExecutionModeInvocations = 0,
95     ExecutionModeSpacingEqual = 1,
96     ExecutionModeSpacingFractionalEven = 2,
97     ExecutionModeSpacingFractionalOdd = 3,
98     ExecutionModeVertexOrderCw = 4,
99     ExecutionModeVertexOrderCcw = 5,
100     ExecutionModePixelCenterInteger = 6,
101     ExecutionModeOriginUpperLeft = 7,
102     ExecutionModeOriginLowerLeft = 8,
103     ExecutionModeEarlyFragmentTests = 9,
104     ExecutionModePointMode = 10,
105     ExecutionModeXfb = 11,
106     ExecutionModeDepthReplacing = 12,
107     ExecutionModeDepthGreater = 14,
108     ExecutionModeDepthLess = 15,
109     ExecutionModeDepthUnchanged = 16,
110     ExecutionModeLocalSize = 17,
111     ExecutionModeLocalSizeHint = 18,
112     ExecutionModeInputPoints = 19,
113     ExecutionModeInputLines = 20,
114     ExecutionModeInputLinesAdjacency = 21,
115     ExecutionModeTriangles = 22,
116     ExecutionModeInputTrianglesAdjacency = 23,
117     ExecutionModeQuads = 24,
118     ExecutionModeIsolines = 25,
119     ExecutionModeOutputVertices = 26,
120     ExecutionModeOutputPoints = 27,
121     ExecutionModeOutputLineStrip = 28,
122     ExecutionModeOutputTriangleStrip = 29,
123     ExecutionModeVecTypeHint = 30,
124     ExecutionModeContractionOff = 31,
125     ExecutionModeInitializer = 33,
126     ExecutionModeFinalizer = 34,
127     ExecutionModeSubgroupSize = 35,
128     ExecutionModeSubgroupsPerWorkgroup = 36,
129     ExecutionModeSubgroupsPerWorkgroupId = 37,
130     ExecutionModeLocalSizeId = 38,
131     ExecutionModeLocalSizeHintId = 39,
132     ExecutionModePostDepthCoverage = 4446,
133     ExecutionModeStencilRefReplacingEXT = 5027,
134     ExecutionModeMax = 0x7fffffff,
135 };
136 
137 enum StorageClass {
138     StorageClassUniformConstant = 0,
139     StorageClassInput = 1,
140     StorageClassUniform = 2,
141     StorageClassOutput = 3,
142     StorageClassWorkgroup = 4,
143     StorageClassCrossWorkgroup = 5,
144     StorageClassPrivate = 6,
145     StorageClassFunction = 7,
146     StorageClassGeneric = 8,
147     StorageClassPushConstant = 9,
148     StorageClassAtomicCounter = 10,
149     StorageClassImage = 11,
150     StorageClassStorageBuffer = 12,
151     StorageClassMax = 0x7fffffff,
152 };
153 
154 enum Dim {
155     Dim1D = 0,
156     Dim2D = 1,
157     Dim3D = 2,
158     DimCube = 3,
159     DimRect = 4,
160     DimBuffer = 5,
161     DimSubpassData = 6,
162     DimMax = 0x7fffffff,
163 };
164 
165 enum SamplerAddressingMode {
166     SamplerAddressingModeNone = 0,
167     SamplerAddressingModeClampToEdge = 1,
168     SamplerAddressingModeClamp = 2,
169     SamplerAddressingModeRepeat = 3,
170     SamplerAddressingModeRepeatMirrored = 4,
171     SamplerAddressingModeMax = 0x7fffffff,
172 };
173 
174 enum SamplerFilterMode {
175     SamplerFilterModeNearest = 0,
176     SamplerFilterModeLinear = 1,
177     SamplerFilterModeMax = 0x7fffffff,
178 };
179 
180 enum ImageFormat {
181     ImageFormatUnknown = 0,
182     ImageFormatRgba32f = 1,
183     ImageFormatRgba16f = 2,
184     ImageFormatR32f = 3,
185     ImageFormatRgba8 = 4,
186     ImageFormatRgba8Snorm = 5,
187     ImageFormatRg32f = 6,
188     ImageFormatRg16f = 7,
189     ImageFormatR11fG11fB10f = 8,
190     ImageFormatR16f = 9,
191     ImageFormatRgba16 = 10,
192     ImageFormatRgb10A2 = 11,
193     ImageFormatRg16 = 12,
194     ImageFormatRg8 = 13,
195     ImageFormatR16 = 14,
196     ImageFormatR8 = 15,
197     ImageFormatRgba16Snorm = 16,
198     ImageFormatRg16Snorm = 17,
199     ImageFormatRg8Snorm = 18,
200     ImageFormatR16Snorm = 19,
201     ImageFormatR8Snorm = 20,
202     ImageFormatRgba32i = 21,
203     ImageFormatRgba16i = 22,
204     ImageFormatRgba8i = 23,
205     ImageFormatR32i = 24,
206     ImageFormatRg32i = 25,
207     ImageFormatRg16i = 26,
208     ImageFormatRg8i = 27,
209     ImageFormatR16i = 28,
210     ImageFormatR8i = 29,
211     ImageFormatRgba32ui = 30,
212     ImageFormatRgba16ui = 31,
213     ImageFormatRgba8ui = 32,
214     ImageFormatR32ui = 33,
215     ImageFormatRgb10a2ui = 34,
216     ImageFormatRg32ui = 35,
217     ImageFormatRg16ui = 36,
218     ImageFormatRg8ui = 37,
219     ImageFormatR16ui = 38,
220     ImageFormatR8ui = 39,
221     ImageFormatMax = 0x7fffffff,
222 };
223 
224 enum ImageChannelOrder {
225     ImageChannelOrderR = 0,
226     ImageChannelOrderA = 1,
227     ImageChannelOrderRG = 2,
228     ImageChannelOrderRA = 3,
229     ImageChannelOrderRGB = 4,
230     ImageChannelOrderRGBA = 5,
231     ImageChannelOrderBGRA = 6,
232     ImageChannelOrderARGB = 7,
233     ImageChannelOrderIntensity = 8,
234     ImageChannelOrderLuminance = 9,
235     ImageChannelOrderRx = 10,
236     ImageChannelOrderRGx = 11,
237     ImageChannelOrderRGBx = 12,
238     ImageChannelOrderDepth = 13,
239     ImageChannelOrderDepthStencil = 14,
240     ImageChannelOrdersRGB = 15,
241     ImageChannelOrdersRGBx = 16,
242     ImageChannelOrdersRGBA = 17,
243     ImageChannelOrdersBGRA = 18,
244     ImageChannelOrderABGR = 19,
245     ImageChannelOrderMax = 0x7fffffff,
246 };
247 
248 enum ImageChannelDataType {
249     ImageChannelDataTypeSnormInt8 = 0,
250     ImageChannelDataTypeSnormInt16 = 1,
251     ImageChannelDataTypeUnormInt8 = 2,
252     ImageChannelDataTypeUnormInt16 = 3,
253     ImageChannelDataTypeUnormShort565 = 4,
254     ImageChannelDataTypeUnormShort555 = 5,
255     ImageChannelDataTypeUnormInt101010 = 6,
256     ImageChannelDataTypeSignedInt8 = 7,
257     ImageChannelDataTypeSignedInt16 = 8,
258     ImageChannelDataTypeSignedInt32 = 9,
259     ImageChannelDataTypeUnsignedInt8 = 10,
260     ImageChannelDataTypeUnsignedInt16 = 11,
261     ImageChannelDataTypeUnsignedInt32 = 12,
262     ImageChannelDataTypeHalfFloat = 13,
263     ImageChannelDataTypeFloat = 14,
264     ImageChannelDataTypeUnormInt24 = 15,
265     ImageChannelDataTypeUnormInt101010_2 = 16,
266     ImageChannelDataTypeMax = 0x7fffffff,
267 };
268 
269 enum ImageOperandsShift {
270     ImageOperandsBiasShift = 0,
271     ImageOperandsLodShift = 1,
272     ImageOperandsGradShift = 2,
273     ImageOperandsConstOffsetShift = 3,
274     ImageOperandsOffsetShift = 4,
275     ImageOperandsConstOffsetsShift = 5,
276     ImageOperandsSampleShift = 6,
277     ImageOperandsMinLodShift = 7,
278     ImageOperandsMax = 0x7fffffff,
279 };
280 
281 enum ImageOperandsMask {
282     ImageOperandsMaskNone = 0,
283     ImageOperandsBiasMask = 0x00000001,
284     ImageOperandsLodMask = 0x00000002,
285     ImageOperandsGradMask = 0x00000004,
286     ImageOperandsConstOffsetMask = 0x00000008,
287     ImageOperandsOffsetMask = 0x00000010,
288     ImageOperandsConstOffsetsMask = 0x00000020,
289     ImageOperandsSampleMask = 0x00000040,
290     ImageOperandsMinLodMask = 0x00000080,
291 };
292 
293 enum FPFastMathModeShift {
294     FPFastMathModeNotNaNShift = 0,
295     FPFastMathModeNotInfShift = 1,
296     FPFastMathModeNSZShift = 2,
297     FPFastMathModeAllowRecipShift = 3,
298     FPFastMathModeFastShift = 4,
299     FPFastMathModeMax = 0x7fffffff,
300 };
301 
302 enum FPFastMathModeMask {
303     FPFastMathModeMaskNone = 0,
304     FPFastMathModeNotNaNMask = 0x00000001,
305     FPFastMathModeNotInfMask = 0x00000002,
306     FPFastMathModeNSZMask = 0x00000004,
307     FPFastMathModeAllowRecipMask = 0x00000008,
308     FPFastMathModeFastMask = 0x00000010,
309 };
310 
311 enum FPRoundingMode {
312     FPRoundingModeRTE = 0,
313     FPRoundingModeRTZ = 1,
314     FPRoundingModeRTP = 2,
315     FPRoundingModeRTN = 3,
316     FPRoundingModeMax = 0x7fffffff,
317 };
318 
319 enum LinkageType {
320     LinkageTypeExport = 0,
321     LinkageTypeImport = 1,
322     LinkageTypeMax = 0x7fffffff,
323 };
324 
325 enum AccessQualifier {
326     AccessQualifierReadOnly = 0,
327     AccessQualifierWriteOnly = 1,
328     AccessQualifierReadWrite = 2,
329     AccessQualifierMax = 0x7fffffff,
330 };
331 
332 enum FunctionParameterAttribute {
333     FunctionParameterAttributeZext = 0,
334     FunctionParameterAttributeSext = 1,
335     FunctionParameterAttributeByVal = 2,
336     FunctionParameterAttributeSret = 3,
337     FunctionParameterAttributeNoAlias = 4,
338     FunctionParameterAttributeNoCapture = 5,
339     FunctionParameterAttributeNoWrite = 6,
340     FunctionParameterAttributeNoReadWrite = 7,
341     FunctionParameterAttributeMax = 0x7fffffff,
342 };
343 
344 enum Decoration {
345     DecorationRelaxedPrecision = 0,
346     DecorationSpecId = 1,
347     DecorationBlock = 2,
348     DecorationBufferBlock = 3,
349     DecorationRowMajor = 4,
350     DecorationColMajor = 5,
351     DecorationArrayStride = 6,
352     DecorationMatrixStride = 7,
353     DecorationGLSLShared = 8,
354     DecorationGLSLPacked = 9,
355     DecorationCPacked = 10,
356     DecorationBuiltIn = 11,
357     DecorationNoPerspective = 13,
358     DecorationFlat = 14,
359     DecorationPatch = 15,
360     DecorationCentroid = 16,
361     DecorationSample = 17,
362     DecorationInvariant = 18,
363     DecorationRestrict = 19,
364     DecorationAliased = 20,
365     DecorationVolatile = 21,
366     DecorationConstant = 22,
367     DecorationCoherent = 23,
368     DecorationNonWritable = 24,
369     DecorationNonReadable = 25,
370     DecorationUniform = 26,
371     DecorationSaturatedConversion = 28,
372     DecorationStream = 29,
373     DecorationLocation = 30,
374     DecorationComponent = 31,
375     DecorationIndex = 32,
376     DecorationBinding = 33,
377     DecorationDescriptorSet = 34,
378     DecorationOffset = 35,
379     DecorationXfbBuffer = 36,
380     DecorationXfbStride = 37,
381     DecorationFuncParamAttr = 38,
382     DecorationFPRoundingMode = 39,
383     DecorationFPFastMathMode = 40,
384     DecorationLinkageAttributes = 41,
385     DecorationNoContraction = 42,
386     DecorationInputAttachmentIndex = 43,
387     DecorationAlignment = 44,
388     DecorationMaxByteOffset = 45,
389     DecorationAlignmentId = 46,
390     DecorationMaxByteOffsetId = 47,
391     DecorationExplicitInterpAMD = 4999,
392     DecorationOverrideCoverageNV = 5248,
393     DecorationPassthroughNV = 5250,
394     DecorationViewportRelativeNV = 5252,
395     DecorationSecondaryViewportRelativeNV = 5256,
396     DecorationNonUniformEXT = 5300,
397     DecorationHlslCounterBufferGOOGLE = 5634,
398     DecorationHlslSemanticGOOGLE = 5635,
399     DecorationMax = 0x7fffffff,
400 };
401 
402 enum BuiltIn {
403     BuiltInPosition = 0,
404     BuiltInPointSize = 1,
405     BuiltInClipDistance = 3,
406     BuiltInCullDistance = 4,
407     BuiltInVertexId = 5,
408     BuiltInInstanceId = 6,
409     BuiltInPrimitiveId = 7,
410     BuiltInInvocationId = 8,
411     BuiltInLayer = 9,
412     BuiltInViewportIndex = 10,
413     BuiltInTessLevelOuter = 11,
414     BuiltInTessLevelInner = 12,
415     BuiltInTessCoord = 13,
416     BuiltInPatchVertices = 14,
417     BuiltInFragCoord = 15,
418     BuiltInPointCoord = 16,
419     BuiltInFrontFacing = 17,
420     BuiltInSampleId = 18,
421     BuiltInSamplePosition = 19,
422     BuiltInSampleMask = 20,
423     BuiltInFragDepth = 22,
424     BuiltInHelperInvocation = 23,
425     BuiltInNumWorkgroups = 24,
426     BuiltInWorkgroupSize = 25,
427     BuiltInWorkgroupId = 26,
428     BuiltInLocalInvocationId = 27,
429     BuiltInGlobalInvocationId = 28,
430     BuiltInLocalInvocationIndex = 29,
431     BuiltInWorkDim = 30,
432     BuiltInGlobalSize = 31,
433     BuiltInEnqueuedWorkgroupSize = 32,
434     BuiltInGlobalOffset = 33,
435     BuiltInGlobalLinearId = 34,
436     BuiltInSubgroupSize = 36,
437     BuiltInSubgroupMaxSize = 37,
438     BuiltInNumSubgroups = 38,
439     BuiltInNumEnqueuedSubgroups = 39,
440     BuiltInSubgroupId = 40,
441     BuiltInSubgroupLocalInvocationId = 41,
442     BuiltInVertexIndex = 42,
443     BuiltInInstanceIndex = 43,
444     BuiltInSubgroupEqMask = 4416,
445     BuiltInSubgroupEqMaskKHR = 4416,
446     BuiltInSubgroupGeMask = 4417,
447     BuiltInSubgroupGeMaskKHR = 4417,
448     BuiltInSubgroupGtMask = 4418,
449     BuiltInSubgroupGtMaskKHR = 4418,
450     BuiltInSubgroupLeMask = 4419,
451     BuiltInSubgroupLeMaskKHR = 4419,
452     BuiltInSubgroupLtMask = 4420,
453     BuiltInSubgroupLtMaskKHR = 4420,
454     BuiltInBaseVertex = 4424,
455     BuiltInBaseInstance = 4425,
456     BuiltInDrawIndex = 4426,
457     BuiltInDeviceIndex = 4438,
458     BuiltInViewIndex = 4440,
459     BuiltInBaryCoordNoPerspAMD = 4992,
460     BuiltInBaryCoordNoPerspCentroidAMD = 4993,
461     BuiltInBaryCoordNoPerspSampleAMD = 4994,
462     BuiltInBaryCoordSmoothAMD = 4995,
463     BuiltInBaryCoordSmoothCentroidAMD = 4996,
464     BuiltInBaryCoordSmoothSampleAMD = 4997,
465     BuiltInBaryCoordPullModelAMD = 4998,
466     BuiltInFragStencilRefEXT = 5014,
467     BuiltInViewportMaskNV = 5253,
468     BuiltInSecondaryPositionNV = 5257,
469     BuiltInSecondaryViewportMaskNV = 5258,
470     BuiltInPositionPerViewNV = 5261,
471     BuiltInViewportMaskPerViewNV = 5262,
472     BuiltInFullyCoveredEXT = 5264,
473     BuiltInMax = 0x7fffffff,
474 };
475 
476 enum SelectionControlShift {
477     SelectionControlFlattenShift = 0,
478     SelectionControlDontFlattenShift = 1,
479     SelectionControlMax = 0x7fffffff,
480 };
481 
482 enum SelectionControlMask {
483     SelectionControlMaskNone = 0,
484     SelectionControlFlattenMask = 0x00000001,
485     SelectionControlDontFlattenMask = 0x00000002,
486 };
487 
488 enum LoopControlShift {
489     LoopControlUnrollShift = 0,
490     LoopControlDontUnrollShift = 1,
491     LoopControlDependencyInfiniteShift = 2,
492     LoopControlDependencyLengthShift = 3,
493     LoopControlMax = 0x7fffffff,
494 };
495 
496 enum LoopControlMask {
497     LoopControlMaskNone = 0,
498     LoopControlUnrollMask = 0x00000001,
499     LoopControlDontUnrollMask = 0x00000002,
500     LoopControlDependencyInfiniteMask = 0x00000004,
501     LoopControlDependencyLengthMask = 0x00000008,
502 };
503 
504 enum FunctionControlShift {
505     FunctionControlInlineShift = 0,
506     FunctionControlDontInlineShift = 1,
507     FunctionControlPureShift = 2,
508     FunctionControlConstShift = 3,
509     FunctionControlMax = 0x7fffffff,
510 };
511 
512 enum FunctionControlMask {
513     FunctionControlMaskNone = 0,
514     FunctionControlInlineMask = 0x00000001,
515     FunctionControlDontInlineMask = 0x00000002,
516     FunctionControlPureMask = 0x00000004,
517     FunctionControlConstMask = 0x00000008,
518 };
519 
520 enum MemorySemanticsShift {
521     MemorySemanticsAcquireShift = 1,
522     MemorySemanticsReleaseShift = 2,
523     MemorySemanticsAcquireReleaseShift = 3,
524     MemorySemanticsSequentiallyConsistentShift = 4,
525     MemorySemanticsUniformMemoryShift = 6,
526     MemorySemanticsSubgroupMemoryShift = 7,
527     MemorySemanticsWorkgroupMemoryShift = 8,
528     MemorySemanticsCrossWorkgroupMemoryShift = 9,
529     MemorySemanticsAtomicCounterMemoryShift = 10,
530     MemorySemanticsImageMemoryShift = 11,
531     MemorySemanticsMax = 0x7fffffff,
532 };
533 
534 enum MemorySemanticsMask {
535     MemorySemanticsMaskNone = 0,
536     MemorySemanticsAcquireMask = 0x00000002,
537     MemorySemanticsReleaseMask = 0x00000004,
538     MemorySemanticsAcquireReleaseMask = 0x00000008,
539     MemorySemanticsSequentiallyConsistentMask = 0x00000010,
540     MemorySemanticsUniformMemoryMask = 0x00000040,
541     MemorySemanticsSubgroupMemoryMask = 0x00000080,
542     MemorySemanticsWorkgroupMemoryMask = 0x00000100,
543     MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
544     MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
545     MemorySemanticsImageMemoryMask = 0x00000800,
546 };
547 
548 enum MemoryAccessShift {
549     MemoryAccessVolatileShift = 0,
550     MemoryAccessAlignedShift = 1,
551     MemoryAccessNontemporalShift = 2,
552     MemoryAccessMax = 0x7fffffff,
553 };
554 
555 enum MemoryAccessMask {
556     MemoryAccessMaskNone = 0,
557     MemoryAccessVolatileMask = 0x00000001,
558     MemoryAccessAlignedMask = 0x00000002,
559     MemoryAccessNontemporalMask = 0x00000004,
560 };
561 
562 enum Scope {
563     ScopeCrossDevice = 0,
564     ScopeDevice = 1,
565     ScopeWorkgroup = 2,
566     ScopeSubgroup = 3,
567     ScopeInvocation = 4,
568     ScopeMax = 0x7fffffff,
569 };
570 
571 enum GroupOperation {
572     GroupOperationReduce = 0,
573     GroupOperationInclusiveScan = 1,
574     GroupOperationExclusiveScan = 2,
575     GroupOperationClusteredReduce = 3,
576     GroupOperationPartitionedReduceNV = 6,
577     GroupOperationPartitionedInclusiveScanNV = 7,
578     GroupOperationPartitionedExclusiveScanNV = 8,
579     GroupOperationMax = 0x7fffffff,
580 };
581 
582 enum KernelEnqueueFlags {
583     KernelEnqueueFlagsNoWait = 0,
584     KernelEnqueueFlagsWaitKernel = 1,
585     KernelEnqueueFlagsWaitWorkGroup = 2,
586     KernelEnqueueFlagsMax = 0x7fffffff,
587 };
588 
589 enum KernelProfilingInfoShift {
590     KernelProfilingInfoCmdExecTimeShift = 0,
591     KernelProfilingInfoMax = 0x7fffffff,
592 };
593 
594 enum KernelProfilingInfoMask {
595     KernelProfilingInfoMaskNone = 0,
596     KernelProfilingInfoCmdExecTimeMask = 0x00000001,
597 };
598 
599 enum Capability {
600     CapabilityMatrix = 0,
601     CapabilityShader = 1,
602     CapabilityGeometry = 2,
603     CapabilityTessellation = 3,
604     CapabilityAddresses = 4,
605     CapabilityLinkage = 5,
606     CapabilityKernel = 6,
607     CapabilityVector16 = 7,
608     CapabilityFloat16Buffer = 8,
609     CapabilityFloat16 = 9,
610     CapabilityFloat64 = 10,
611     CapabilityInt64 = 11,
612     CapabilityInt64Atomics = 12,
613     CapabilityImageBasic = 13,
614     CapabilityImageReadWrite = 14,
615     CapabilityImageMipmap = 15,
616     CapabilityPipes = 17,
617     CapabilityGroups = 18,
618     CapabilityDeviceEnqueue = 19,
619     CapabilityLiteralSampler = 20,
620     CapabilityAtomicStorage = 21,
621     CapabilityInt16 = 22,
622     CapabilityTessellationPointSize = 23,
623     CapabilityGeometryPointSize = 24,
624     CapabilityImageGatherExtended = 25,
625     CapabilityStorageImageMultisample = 27,
626     CapabilityUniformBufferArrayDynamicIndexing = 28,
627     CapabilitySampledImageArrayDynamicIndexing = 29,
628     CapabilityStorageBufferArrayDynamicIndexing = 30,
629     CapabilityStorageImageArrayDynamicIndexing = 31,
630     CapabilityClipDistance = 32,
631     CapabilityCullDistance = 33,
632     CapabilityImageCubeArray = 34,
633     CapabilitySampleRateShading = 35,
634     CapabilityImageRect = 36,
635     CapabilitySampledRect = 37,
636     CapabilityGenericPointer = 38,
637     CapabilityInt8 = 39,
638     CapabilityInputAttachment = 40,
639     CapabilitySparseResidency = 41,
640     CapabilityMinLod = 42,
641     CapabilitySampled1D = 43,
642     CapabilityImage1D = 44,
643     CapabilitySampledCubeArray = 45,
644     CapabilitySampledBuffer = 46,
645     CapabilityImageBuffer = 47,
646     CapabilityImageMSArray = 48,
647     CapabilityStorageImageExtendedFormats = 49,
648     CapabilityImageQuery = 50,
649     CapabilityDerivativeControl = 51,
650     CapabilityInterpolationFunction = 52,
651     CapabilityTransformFeedback = 53,
652     CapabilityGeometryStreams = 54,
653     CapabilityStorageImageReadWithoutFormat = 55,
654     CapabilityStorageImageWriteWithoutFormat = 56,
655     CapabilityMultiViewport = 57,
656     CapabilitySubgroupDispatch = 58,
657     CapabilityNamedBarrier = 59,
658     CapabilityPipeStorage = 60,
659     CapabilityGroupNonUniform = 61,
660     CapabilityGroupNonUniformVote = 62,
661     CapabilityGroupNonUniformArithmetic = 63,
662     CapabilityGroupNonUniformBallot = 64,
663     CapabilityGroupNonUniformShuffle = 65,
664     CapabilityGroupNonUniformShuffleRelative = 66,
665     CapabilityGroupNonUniformClustered = 67,
666     CapabilityGroupNonUniformQuad = 68,
667     CapabilitySubgroupBallotKHR = 4423,
668     CapabilityDrawParameters = 4427,
669     CapabilitySubgroupVoteKHR = 4431,
670     CapabilityStorageBuffer16BitAccess = 4433,
671     CapabilityStorageUniformBufferBlock16 = 4433,
672     CapabilityStorageUniform16 = 4434,
673     CapabilityUniformAndStorageBuffer16BitAccess = 4434,
674     CapabilityStoragePushConstant16 = 4435,
675     CapabilityStorageInputOutput16 = 4436,
676     CapabilityDeviceGroup = 4437,
677     CapabilityMultiView = 4439,
678     CapabilityVariablePointersStorageBuffer = 4441,
679     CapabilityVariablePointers = 4442,
680     CapabilityAtomicStorageOps = 4445,
681     CapabilitySampleMaskPostDepthCoverage = 4447,
682     CapabilityStorageBuffer8BitAccess = 4448,
683     CapabilityUniformAndStorageBuffer8BitAccess = 4449,
684     CapabilityStoragePushConstant8 = 4450,
685     CapabilityFloat16ImageAMD = 5008,
686     CapabilityImageGatherBiasLodAMD = 5009,
687     CapabilityFragmentMaskAMD = 5010,
688     CapabilityStencilExportEXT = 5013,
689     CapabilityImageReadWriteLodAMD = 5015,
690     CapabilitySampleMaskOverrideCoverageNV = 5249,
691     CapabilityGeometryShaderPassthroughNV = 5251,
692     CapabilityShaderViewportIndexLayerEXT = 5254,
693     CapabilityShaderViewportIndexLayerNV = 5254,
694     CapabilityShaderViewportMaskNV = 5255,
695     CapabilityShaderStereoViewNV = 5259,
696     CapabilityPerViewAttributesNV = 5260,
697     CapabilityFragmentFullyCoveredEXT = 5265,
698     CapabilityGroupNonUniformPartitionedNV = 5297,
699     CapabilityShaderNonUniformEXT = 5301,
700     CapabilityRuntimeDescriptorArrayEXT = 5302,
701     CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303,
702     CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304,
703     CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305,
704     CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306,
705     CapabilitySampledImageArrayNonUniformIndexingEXT = 5307,
706     CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308,
707     CapabilityStorageImageArrayNonUniformIndexingEXT = 5309,
708     CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310,
709     CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311,
710     CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312,
711     CapabilitySubgroupShuffleINTEL = 5568,
712     CapabilitySubgroupBufferBlockIOINTEL = 5569,
713     CapabilitySubgroupImageBlockIOINTEL = 5570,
714     CapabilityMax = 0x7fffffff,
715 };
716 
717 enum Op {
718     OpNop = 0,
719     OpUndef = 1,
720     OpSourceContinued = 2,
721     OpSource = 3,
722     OpSourceExtension = 4,
723     OpName = 5,
724     OpMemberName = 6,
725     OpString = 7,
726     OpLine = 8,
727     OpExtension = 10,
728     OpExtInstImport = 11,
729     OpExtInst = 12,
730     OpMemoryModel = 14,
731     OpEntryPoint = 15,
732     OpExecutionMode = 16,
733     OpCapability = 17,
734     OpTypeVoid = 19,
735     OpTypeBool = 20,
736     OpTypeInt = 21,
737     OpTypeFloat = 22,
738     OpTypeVector = 23,
739     OpTypeMatrix = 24,
740     OpTypeImage = 25,
741     OpTypeSampler = 26,
742     OpTypeSampledImage = 27,
743     OpTypeArray = 28,
744     OpTypeRuntimeArray = 29,
745     OpTypeStruct = 30,
746     OpTypeOpaque = 31,
747     OpTypePointer = 32,
748     OpTypeFunction = 33,
749     OpTypeEvent = 34,
750     OpTypeDeviceEvent = 35,
751     OpTypeReserveId = 36,
752     OpTypeQueue = 37,
753     OpTypePipe = 38,
754     OpTypeForwardPointer = 39,
755     OpConstantTrue = 41,
756     OpConstantFalse = 42,
757     OpConstant = 43,
758     OpConstantComposite = 44,
759     OpConstantSampler = 45,
760     OpConstantNull = 46,
761     OpSpecConstantTrue = 48,
762     OpSpecConstantFalse = 49,
763     OpSpecConstant = 50,
764     OpSpecConstantComposite = 51,
765     OpSpecConstantOp = 52,
766     OpFunction = 54,
767     OpFunctionParameter = 55,
768     OpFunctionEnd = 56,
769     OpFunctionCall = 57,
770     OpVariable = 59,
771     OpImageTexelPointer = 60,
772     OpLoad = 61,
773     OpStore = 62,
774     OpCopyMemory = 63,
775     OpCopyMemorySized = 64,
776     OpAccessChain = 65,
777     OpInBoundsAccessChain = 66,
778     OpPtrAccessChain = 67,
779     OpArrayLength = 68,
780     OpGenericPtrMemSemantics = 69,
781     OpInBoundsPtrAccessChain = 70,
782     OpDecorate = 71,
783     OpMemberDecorate = 72,
784     OpDecorationGroup = 73,
785     OpGroupDecorate = 74,
786     OpGroupMemberDecorate = 75,
787     OpVectorExtractDynamic = 77,
788     OpVectorInsertDynamic = 78,
789     OpVectorShuffle = 79,
790     OpCompositeConstruct = 80,
791     OpCompositeExtract = 81,
792     OpCompositeInsert = 82,
793     OpCopyObject = 83,
794     OpTranspose = 84,
795     OpSampledImage = 86,
796     OpImageSampleImplicitLod = 87,
797     OpImageSampleExplicitLod = 88,
798     OpImageSampleDrefImplicitLod = 89,
799     OpImageSampleDrefExplicitLod = 90,
800     OpImageSampleProjImplicitLod = 91,
801     OpImageSampleProjExplicitLod = 92,
802     OpImageSampleProjDrefImplicitLod = 93,
803     OpImageSampleProjDrefExplicitLod = 94,
804     OpImageFetch = 95,
805     OpImageGather = 96,
806     OpImageDrefGather = 97,
807     OpImageRead = 98,
808     OpImageWrite = 99,
809     OpImage = 100,
810     OpImageQueryFormat = 101,
811     OpImageQueryOrder = 102,
812     OpImageQuerySizeLod = 103,
813     OpImageQuerySize = 104,
814     OpImageQueryLod = 105,
815     OpImageQueryLevels = 106,
816     OpImageQuerySamples = 107,
817     OpConvertFToU = 109,
818     OpConvertFToS = 110,
819     OpConvertSToF = 111,
820     OpConvertUToF = 112,
821     OpUConvert = 113,
822     OpSConvert = 114,
823     OpFConvert = 115,
824     OpQuantizeToF16 = 116,
825     OpConvertPtrToU = 117,
826     OpSatConvertSToU = 118,
827     OpSatConvertUToS = 119,
828     OpConvertUToPtr = 120,
829     OpPtrCastToGeneric = 121,
830     OpGenericCastToPtr = 122,
831     OpGenericCastToPtrExplicit = 123,
832     OpBitcast = 124,
833     OpSNegate = 126,
834     OpFNegate = 127,
835     OpIAdd = 128,
836     OpFAdd = 129,
837     OpISub = 130,
838     OpFSub = 131,
839     OpIMul = 132,
840     OpFMul = 133,
841     OpUDiv = 134,
842     OpSDiv = 135,
843     OpFDiv = 136,
844     OpUMod = 137,
845     OpSRem = 138,
846     OpSMod = 139,
847     OpFRem = 140,
848     OpFMod = 141,
849     OpVectorTimesScalar = 142,
850     OpMatrixTimesScalar = 143,
851     OpVectorTimesMatrix = 144,
852     OpMatrixTimesVector = 145,
853     OpMatrixTimesMatrix = 146,
854     OpOuterProduct = 147,
855     OpDot = 148,
856     OpIAddCarry = 149,
857     OpISubBorrow = 150,
858     OpUMulExtended = 151,
859     OpSMulExtended = 152,
860     OpAny = 154,
861     OpAll = 155,
862     OpIsNan = 156,
863     OpIsInf = 157,
864     OpIsFinite = 158,
865     OpIsNormal = 159,
866     OpSignBitSet = 160,
867     OpLessOrGreater = 161,
868     OpOrdered = 162,
869     OpUnordered = 163,
870     OpLogicalEqual = 164,
871     OpLogicalNotEqual = 165,
872     OpLogicalOr = 166,
873     OpLogicalAnd = 167,
874     OpLogicalNot = 168,
875     OpSelect = 169,
876     OpIEqual = 170,
877     OpINotEqual = 171,
878     OpUGreaterThan = 172,
879     OpSGreaterThan = 173,
880     OpUGreaterThanEqual = 174,
881     OpSGreaterThanEqual = 175,
882     OpULessThan = 176,
883     OpSLessThan = 177,
884     OpULessThanEqual = 178,
885     OpSLessThanEqual = 179,
886     OpFOrdEqual = 180,
887     OpFUnordEqual = 181,
888     OpFOrdNotEqual = 182,
889     OpFUnordNotEqual = 183,
890     OpFOrdLessThan = 184,
891     OpFUnordLessThan = 185,
892     OpFOrdGreaterThan = 186,
893     OpFUnordGreaterThan = 187,
894     OpFOrdLessThanEqual = 188,
895     OpFUnordLessThanEqual = 189,
896     OpFOrdGreaterThanEqual = 190,
897     OpFUnordGreaterThanEqual = 191,
898     OpShiftRightLogical = 194,
899     OpShiftRightArithmetic = 195,
900     OpShiftLeftLogical = 196,
901     OpBitwiseOr = 197,
902     OpBitwiseXor = 198,
903     OpBitwiseAnd = 199,
904     OpNot = 200,
905     OpBitFieldInsert = 201,
906     OpBitFieldSExtract = 202,
907     OpBitFieldUExtract = 203,
908     OpBitReverse = 204,
909     OpBitCount = 205,
910     OpDPdx = 207,
911     OpDPdy = 208,
912     OpFwidth = 209,
913     OpDPdxFine = 210,
914     OpDPdyFine = 211,
915     OpFwidthFine = 212,
916     OpDPdxCoarse = 213,
917     OpDPdyCoarse = 214,
918     OpFwidthCoarse = 215,
919     OpEmitVertex = 218,
920     OpEndPrimitive = 219,
921     OpEmitStreamVertex = 220,
922     OpEndStreamPrimitive = 221,
923     OpControlBarrier = 224,
924     OpMemoryBarrier = 225,
925     OpAtomicLoad = 227,
926     OpAtomicStore = 228,
927     OpAtomicExchange = 229,
928     OpAtomicCompareExchange = 230,
929     OpAtomicCompareExchangeWeak = 231,
930     OpAtomicIIncrement = 232,
931     OpAtomicIDecrement = 233,
932     OpAtomicIAdd = 234,
933     OpAtomicISub = 235,
934     OpAtomicSMin = 236,
935     OpAtomicUMin = 237,
936     OpAtomicSMax = 238,
937     OpAtomicUMax = 239,
938     OpAtomicAnd = 240,
939     OpAtomicOr = 241,
940     OpAtomicXor = 242,
941     OpPhi = 245,
942     OpLoopMerge = 246,
943     OpSelectionMerge = 247,
944     OpLabel = 248,
945     OpBranch = 249,
946     OpBranchConditional = 250,
947     OpSwitch = 251,
948     OpKill = 252,
949     OpReturn = 253,
950     OpReturnValue = 254,
951     OpUnreachable = 255,
952     OpLifetimeStart = 256,
953     OpLifetimeStop = 257,
954     OpGroupAsyncCopy = 259,
955     OpGroupWaitEvents = 260,
956     OpGroupAll = 261,
957     OpGroupAny = 262,
958     OpGroupBroadcast = 263,
959     OpGroupIAdd = 264,
960     OpGroupFAdd = 265,
961     OpGroupFMin = 266,
962     OpGroupUMin = 267,
963     OpGroupSMin = 268,
964     OpGroupFMax = 269,
965     OpGroupUMax = 270,
966     OpGroupSMax = 271,
967     OpReadPipe = 274,
968     OpWritePipe = 275,
969     OpReservedReadPipe = 276,
970     OpReservedWritePipe = 277,
971     OpReserveReadPipePackets = 278,
972     OpReserveWritePipePackets = 279,
973     OpCommitReadPipe = 280,
974     OpCommitWritePipe = 281,
975     OpIsValidReserveId = 282,
976     OpGetNumPipePackets = 283,
977     OpGetMaxPipePackets = 284,
978     OpGroupReserveReadPipePackets = 285,
979     OpGroupReserveWritePipePackets = 286,
980     OpGroupCommitReadPipe = 287,
981     OpGroupCommitWritePipe = 288,
982     OpEnqueueMarker = 291,
983     OpEnqueueKernel = 292,
984     OpGetKernelNDrangeSubGroupCount = 293,
985     OpGetKernelNDrangeMaxSubGroupSize = 294,
986     OpGetKernelWorkGroupSize = 295,
987     OpGetKernelPreferredWorkGroupSizeMultiple = 296,
988     OpRetainEvent = 297,
989     OpReleaseEvent = 298,
990     OpCreateUserEvent = 299,
991     OpIsValidEvent = 300,
992     OpSetUserEventStatus = 301,
993     OpCaptureEventProfilingInfo = 302,
994     OpGetDefaultQueue = 303,
995     OpBuildNDRange = 304,
996     OpImageSparseSampleImplicitLod = 305,
997     OpImageSparseSampleExplicitLod = 306,
998     OpImageSparseSampleDrefImplicitLod = 307,
999     OpImageSparseSampleDrefExplicitLod = 308,
1000     OpImageSparseSampleProjImplicitLod = 309,
1001     OpImageSparseSampleProjExplicitLod = 310,
1002     OpImageSparseSampleProjDrefImplicitLod = 311,
1003     OpImageSparseSampleProjDrefExplicitLod = 312,
1004     OpImageSparseFetch = 313,
1005     OpImageSparseGather = 314,
1006     OpImageSparseDrefGather = 315,
1007     OpImageSparseTexelsResident = 316,
1008     OpNoLine = 317,
1009     OpAtomicFlagTestAndSet = 318,
1010     OpAtomicFlagClear = 319,
1011     OpImageSparseRead = 320,
1012     OpSizeOf = 321,
1013     OpTypePipeStorage = 322,
1014     OpConstantPipeStorage = 323,
1015     OpCreatePipeFromPipeStorage = 324,
1016     OpGetKernelLocalSizeForSubgroupCount = 325,
1017     OpGetKernelMaxNumSubgroups = 326,
1018     OpTypeNamedBarrier = 327,
1019     OpNamedBarrierInitialize = 328,
1020     OpMemoryNamedBarrier = 329,
1021     OpModuleProcessed = 330,
1022     OpExecutionModeId = 331,
1023     OpDecorateId = 332,
1024     OpGroupNonUniformElect = 333,
1025     OpGroupNonUniformAll = 334,
1026     OpGroupNonUniformAny = 335,
1027     OpGroupNonUniformAllEqual = 336,
1028     OpGroupNonUniformBroadcast = 337,
1029     OpGroupNonUniformBroadcastFirst = 338,
1030     OpGroupNonUniformBallot = 339,
1031     OpGroupNonUniformInverseBallot = 340,
1032     OpGroupNonUniformBallotBitExtract = 341,
1033     OpGroupNonUniformBallotBitCount = 342,
1034     OpGroupNonUniformBallotFindLSB = 343,
1035     OpGroupNonUniformBallotFindMSB = 344,
1036     OpGroupNonUniformShuffle = 345,
1037     OpGroupNonUniformShuffleXor = 346,
1038     OpGroupNonUniformShuffleUp = 347,
1039     OpGroupNonUniformShuffleDown = 348,
1040     OpGroupNonUniformIAdd = 349,
1041     OpGroupNonUniformFAdd = 350,
1042     OpGroupNonUniformIMul = 351,
1043     OpGroupNonUniformFMul = 352,
1044     OpGroupNonUniformSMin = 353,
1045     OpGroupNonUniformUMin = 354,
1046     OpGroupNonUniformFMin = 355,
1047     OpGroupNonUniformSMax = 356,
1048     OpGroupNonUniformUMax = 357,
1049     OpGroupNonUniformFMax = 358,
1050     OpGroupNonUniformBitwiseAnd = 359,
1051     OpGroupNonUniformBitwiseOr = 360,
1052     OpGroupNonUniformBitwiseXor = 361,
1053     OpGroupNonUniformLogicalAnd = 362,
1054     OpGroupNonUniformLogicalOr = 363,
1055     OpGroupNonUniformLogicalXor = 364,
1056     OpGroupNonUniformQuadBroadcast = 365,
1057     OpGroupNonUniformQuadSwap = 366,
1058     OpSubgroupBallotKHR = 4421,
1059     OpSubgroupFirstInvocationKHR = 4422,
1060     OpSubgroupAllKHR = 4428,
1061     OpSubgroupAnyKHR = 4429,
1062     OpSubgroupAllEqualKHR = 4430,
1063     OpSubgroupReadInvocationKHR = 4432,
1064     OpGroupIAddNonUniformAMD = 5000,
1065     OpGroupFAddNonUniformAMD = 5001,
1066     OpGroupFMinNonUniformAMD = 5002,
1067     OpGroupUMinNonUniformAMD = 5003,
1068     OpGroupSMinNonUniformAMD = 5004,
1069     OpGroupFMaxNonUniformAMD = 5005,
1070     OpGroupUMaxNonUniformAMD = 5006,
1071     OpGroupSMaxNonUniformAMD = 5007,
1072     OpFragmentMaskFetchAMD = 5011,
1073     OpFragmentFetchAMD = 5012,
1074     OpGroupNonUniformPartitionNV = 5296,
1075     OpSubgroupShuffleINTEL = 5571,
1076     OpSubgroupShuffleDownINTEL = 5572,
1077     OpSubgroupShuffleUpINTEL = 5573,
1078     OpSubgroupShuffleXorINTEL = 5574,
1079     OpSubgroupBlockReadINTEL = 5575,
1080     OpSubgroupBlockWriteINTEL = 5576,
1081     OpSubgroupImageBlockReadINTEL = 5577,
1082     OpSubgroupImageBlockWriteINTEL = 5578,
1083     OpDecorateStringGOOGLE = 5632,
1084     OpMemberDecorateStringGOOGLE = 5633,
1085     OpMax = 0x7fffffff,
1086 };
1087 
1088 // Overload operator| for mask bit combining
1089 
operator |(ImageOperandsMask a,ImageOperandsMask b)1090 inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
operator |(FPFastMathModeMask a,FPFastMathModeMask b)1091 inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
operator |(SelectionControlMask a,SelectionControlMask b)1092 inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
operator |(LoopControlMask a,LoopControlMask b)1093 inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
operator |(FunctionControlMask a,FunctionControlMask b)1094 inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
operator |(MemorySemanticsMask a,MemorySemanticsMask b)1095 inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
operator |(MemoryAccessMask a,MemoryAccessMask b)1096 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
operator |(KernelProfilingInfoMask a,KernelProfilingInfoMask b)1097 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
1098 
1099 }  // end namespace spv
1100 
1101 #endif  // #ifndef spirv_HPP
1102 
1103