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