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