• Home
  • History
  • Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1  // Copyright (c) 2014-2016 The Khronos Group Inc.
2  //
3  // Permission is hereby granted, free of charge, to any person obtaining a copy
4  // of this software and/or associated documentation files (the "Materials"),
5  // to deal in the Materials without restriction, including without limitation
6  // the rights to use, copy, modify, merge, publish, distribute, sublicense,
7  // and/or sell copies of the Materials, and to permit persons to whom the
8  // Materials are furnished to do so, subject to the following conditions:
9  //
10  // The above copyright notice and this permission notice shall be included in
11  // all copies or substantial portions of the Materials.
12  //
13  // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
14  // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
15  // HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
16  //
17  // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
18  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19  // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
20  // THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21  // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
22  // FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
23  // IN THE MATERIALS.
24  
25  // This header is automatically generated by the same tool that creates
26  // the Binary Section of the SPIR-V specification.
27  
28  // Enumeration tokens for SPIR-V, in various styles:
29  //   C, C++, C++11, JSON, Lua, Python
30  //
31  // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
32  // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
33  // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
34  // - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
35  // - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
36  //
37  // Some tokens act like mask values, which can be OR'd together,
38  // while others are mutually exclusive.  The mask-like ones have
39  // "Mask" in their name, and a parallel enum that has the shift
40  // amount (1 << x) for each corresponding enumerant.
41  
42  #ifndef spirv_HPP
43  #define spirv_HPP
44  
45  namespace spv {
46  
47  typedef unsigned int Id;
48  
49  #define SPV_VERSION 0x10100
50  #define SPV_REVISION 1
51  
52  static const unsigned int MagicNumber = 0x07230203;
53  static const unsigned int Version = 0x00010100;
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  };
65  
66  enum ExecutionModel {
67      ExecutionModelVertex = 0,
68      ExecutionModelTessellationControl = 1,
69      ExecutionModelTessellationEvaluation = 2,
70      ExecutionModelGeometry = 3,
71      ExecutionModelFragment = 4,
72      ExecutionModelGLCompute = 5,
73      ExecutionModelKernel = 6,
74  };
75  
76  enum AddressingModel {
77      AddressingModelLogical = 0,
78      AddressingModelPhysical32 = 1,
79      AddressingModelPhysical64 = 2,
80  };
81  
82  enum MemoryModel {
83      MemoryModelSimple = 0,
84      MemoryModelGLSL450 = 1,
85      MemoryModelOpenCL = 2,
86  };
87  
88  enum ExecutionMode {
89      ExecutionModeInvocations = 0,
90      ExecutionModeSpacingEqual = 1,
91      ExecutionModeSpacingFractionalEven = 2,
92      ExecutionModeSpacingFractionalOdd = 3,
93      ExecutionModeVertexOrderCw = 4,
94      ExecutionModeVertexOrderCcw = 5,
95      ExecutionModePixelCenterInteger = 6,
96      ExecutionModeOriginUpperLeft = 7,
97      ExecutionModeOriginLowerLeft = 8,
98      ExecutionModeEarlyFragmentTests = 9,
99      ExecutionModePointMode = 10,
100      ExecutionModeXfb = 11,
101      ExecutionModeDepthReplacing = 12,
102      ExecutionModeDepthGreater = 14,
103      ExecutionModeDepthLess = 15,
104      ExecutionModeDepthUnchanged = 16,
105      ExecutionModeLocalSize = 17,
106      ExecutionModeLocalSizeHint = 18,
107      ExecutionModeInputPoints = 19,
108      ExecutionModeInputLines = 20,
109      ExecutionModeInputLinesAdjacency = 21,
110      ExecutionModeTriangles = 22,
111      ExecutionModeInputTrianglesAdjacency = 23,
112      ExecutionModeQuads = 24,
113      ExecutionModeIsolines = 25,
114      ExecutionModeOutputVertices = 26,
115      ExecutionModeOutputPoints = 27,
116      ExecutionModeOutputLineStrip = 28,
117      ExecutionModeOutputTriangleStrip = 29,
118      ExecutionModeVecTypeHint = 30,
119      ExecutionModeContractionOff = 31,
120      ExecutionModeInitializer = 33,
121      ExecutionModeFinalizer = 34,
122      ExecutionModeSubgroupSize = 35,
123      ExecutionModeSubgroupsPerWorkgroup = 36,
124  };
125  
126  enum StorageClass {
127      StorageClassUniformConstant = 0,
128      StorageClassInput = 1,
129      StorageClassUniform = 2,
130      StorageClassOutput = 3,
131      StorageClassWorkgroup = 4,
132      StorageClassCrossWorkgroup = 5,
133      StorageClassPrivate = 6,
134      StorageClassFunction = 7,
135      StorageClassGeneric = 8,
136      StorageClassPushConstant = 9,
137      StorageClassAtomicCounter = 10,
138      StorageClassImage = 11,
139  };
140  
141  enum Dim {
142      Dim1D = 0,
143      Dim2D = 1,
144      Dim3D = 2,
145      DimCube = 3,
146      DimRect = 4,
147      DimBuffer = 5,
148      DimSubpassData = 6,
149  };
150  
151  enum SamplerAddressingMode {
152      SamplerAddressingModeNone = 0,
153      SamplerAddressingModeClampToEdge = 1,
154      SamplerAddressingModeClamp = 2,
155      SamplerAddressingModeRepeat = 3,
156      SamplerAddressingModeRepeatMirrored = 4,
157  };
158  
159  enum SamplerFilterMode {
160      SamplerFilterModeNearest = 0,
161      SamplerFilterModeLinear = 1,
162  };
163  
164  enum ImageFormat {
165      ImageFormatUnknown = 0,
166      ImageFormatRgba32f = 1,
167      ImageFormatRgba16f = 2,
168      ImageFormatR32f = 3,
169      ImageFormatRgba8 = 4,
170      ImageFormatRgba8Snorm = 5,
171      ImageFormatRg32f = 6,
172      ImageFormatRg16f = 7,
173      ImageFormatR11fG11fB10f = 8,
174      ImageFormatR16f = 9,
175      ImageFormatRgba16 = 10,
176      ImageFormatRgb10A2 = 11,
177      ImageFormatRg16 = 12,
178      ImageFormatRg8 = 13,
179      ImageFormatR16 = 14,
180      ImageFormatR8 = 15,
181      ImageFormatRgba16Snorm = 16,
182      ImageFormatRg16Snorm = 17,
183      ImageFormatRg8Snorm = 18,
184      ImageFormatR16Snorm = 19,
185      ImageFormatR8Snorm = 20,
186      ImageFormatRgba32i = 21,
187      ImageFormatRgba16i = 22,
188      ImageFormatRgba8i = 23,
189      ImageFormatR32i = 24,
190      ImageFormatRg32i = 25,
191      ImageFormatRg16i = 26,
192      ImageFormatRg8i = 27,
193      ImageFormatR16i = 28,
194      ImageFormatR8i = 29,
195      ImageFormatRgba32ui = 30,
196      ImageFormatRgba16ui = 31,
197      ImageFormatRgba8ui = 32,
198      ImageFormatR32ui = 33,
199      ImageFormatRgb10a2ui = 34,
200      ImageFormatRg32ui = 35,
201      ImageFormatRg16ui = 36,
202      ImageFormatRg8ui = 37,
203      ImageFormatR16ui = 38,
204      ImageFormatR8ui = 39,
205  };
206  
207  enum ImageChannelOrder {
208      ImageChannelOrderR = 0,
209      ImageChannelOrderA = 1,
210      ImageChannelOrderRG = 2,
211      ImageChannelOrderRA = 3,
212      ImageChannelOrderRGB = 4,
213      ImageChannelOrderRGBA = 5,
214      ImageChannelOrderBGRA = 6,
215      ImageChannelOrderARGB = 7,
216      ImageChannelOrderIntensity = 8,
217      ImageChannelOrderLuminance = 9,
218      ImageChannelOrderRx = 10,
219      ImageChannelOrderRGx = 11,
220      ImageChannelOrderRGBx = 12,
221      ImageChannelOrderDepth = 13,
222      ImageChannelOrderDepthStencil = 14,
223      ImageChannelOrdersRGB = 15,
224      ImageChannelOrdersRGBx = 16,
225      ImageChannelOrdersRGBA = 17,
226      ImageChannelOrdersBGRA = 18,
227      ImageChannelOrderABGR = 19,
228  };
229  
230  enum ImageChannelDataType {
231      ImageChannelDataTypeSnormInt8 = 0,
232      ImageChannelDataTypeSnormInt16 = 1,
233      ImageChannelDataTypeUnormInt8 = 2,
234      ImageChannelDataTypeUnormInt16 = 3,
235      ImageChannelDataTypeUnormShort565 = 4,
236      ImageChannelDataTypeUnormShort555 = 5,
237      ImageChannelDataTypeUnormInt101010 = 6,
238      ImageChannelDataTypeSignedInt8 = 7,
239      ImageChannelDataTypeSignedInt16 = 8,
240      ImageChannelDataTypeSignedInt32 = 9,
241      ImageChannelDataTypeUnsignedInt8 = 10,
242      ImageChannelDataTypeUnsignedInt16 = 11,
243      ImageChannelDataTypeUnsignedInt32 = 12,
244      ImageChannelDataTypeHalfFloat = 13,
245      ImageChannelDataTypeFloat = 14,
246      ImageChannelDataTypeUnormInt24 = 15,
247      ImageChannelDataTypeUnormInt101010_2 = 16,
248  };
249  
250  enum ImageOperandsShift {
251      ImageOperandsBiasShift = 0,
252      ImageOperandsLodShift = 1,
253      ImageOperandsGradShift = 2,
254      ImageOperandsConstOffsetShift = 3,
255      ImageOperandsOffsetShift = 4,
256      ImageOperandsConstOffsetsShift = 5,
257      ImageOperandsSampleShift = 6,
258      ImageOperandsMinLodShift = 7,
259  };
260  
261  enum ImageOperandsMask {
262      ImageOperandsMaskNone = 0,
263      ImageOperandsBiasMask = 0x00000001,
264      ImageOperandsLodMask = 0x00000002,
265      ImageOperandsGradMask = 0x00000004,
266      ImageOperandsConstOffsetMask = 0x00000008,
267      ImageOperandsOffsetMask = 0x00000010,
268      ImageOperandsConstOffsetsMask = 0x00000020,
269      ImageOperandsSampleMask = 0x00000040,
270      ImageOperandsMinLodMask = 0x00000080,
271  };
272  
273  enum FPFastMathModeShift {
274      FPFastMathModeNotNaNShift = 0,
275      FPFastMathModeNotInfShift = 1,
276      FPFastMathModeNSZShift = 2,
277      FPFastMathModeAllowRecipShift = 3,
278      FPFastMathModeFastShift = 4,
279  };
280  
281  enum FPFastMathModeMask {
282      FPFastMathModeMaskNone = 0,
283      FPFastMathModeNotNaNMask = 0x00000001,
284      FPFastMathModeNotInfMask = 0x00000002,
285      FPFastMathModeNSZMask = 0x00000004,
286      FPFastMathModeAllowRecipMask = 0x00000008,
287      FPFastMathModeFastMask = 0x00000010,
288  };
289  
290  enum FPRoundingMode {
291      FPRoundingModeRTE = 0,
292      FPRoundingModeRTZ = 1,
293      FPRoundingModeRTP = 2,
294      FPRoundingModeRTN = 3,
295  };
296  
297  enum LinkageType {
298      LinkageTypeExport = 0,
299      LinkageTypeImport = 1,
300      LinkageTypeInternal, /* internal use only */
301  };
302  
303  enum AccessQualifier {
304      AccessQualifierReadOnly = 0,
305      AccessQualifierWriteOnly = 1,
306      AccessQualifierReadWrite = 2,
307  };
308  
309  enum FunctionParameterAttribute {
310      FunctionParameterAttributeZext = 0,
311      FunctionParameterAttributeSext = 1,
312      FunctionParameterAttributeByVal = 2,
313      FunctionParameterAttributeSret = 3,
314      FunctionParameterAttributeNoAlias = 4,
315      FunctionParameterAttributeNoCapture = 5,
316      FunctionParameterAttributeNoWrite = 6,
317      FunctionParameterAttributeNoReadWrite = 7,
318  };
319  
320  enum Decoration {
321      DecorationRelaxedPrecision = 0,
322      DecorationSpecId = 1,
323      DecorationBlock = 2,
324      DecorationBufferBlock = 3,
325      DecorationRowMajor = 4,
326      DecorationColMajor = 5,
327      DecorationArrayStride = 6,
328      DecorationMatrixStride = 7,
329      DecorationGLSLShared = 8,
330      DecorationGLSLPacked = 9,
331      DecorationCPacked = 10,
332      DecorationBuiltIn = 11,
333      DecorationNoPerspective = 13,
334      DecorationFlat = 14,
335      DecorationPatch = 15,
336      DecorationCentroid = 16,
337      DecorationSample = 17,
338      DecorationInvariant = 18,
339      DecorationRestrict = 19,
340      DecorationAliased = 20,
341      DecorationVolatile = 21,
342      DecorationConstant = 22,
343      DecorationCoherent = 23,
344      DecorationNonWritable = 24,
345      DecorationNonReadable = 25,
346      DecorationUniform = 26,
347      DecorationSaturatedConversion = 28,
348      DecorationStream = 29,
349      DecorationLocation = 30,
350      DecorationComponent = 31,
351      DecorationIndex = 32,
352      DecorationBinding = 33,
353      DecorationDescriptorSet = 34,
354      DecorationOffset = 35,
355      DecorationXfbBuffer = 36,
356      DecorationXfbStride = 37,
357      DecorationFuncParamAttr = 38,
358      DecorationFPRoundingMode = 39,
359      DecorationFPFastMathMode = 40,
360      DecorationLinkageAttributes = 41,
361      DecorationNoContraction = 42,
362      DecorationInputAttachmentIndex = 43,
363      DecorationAlignment = 44,
364      DecorationMaxByteOffset = 45,
365  };
366  
367  enum BuiltIn {
368      BuiltInPosition = 0,
369      BuiltInPointSize = 1,
370      BuiltInClipDistance = 3,
371      BuiltInCullDistance = 4,
372      BuiltInVertexId = 5,
373      BuiltInInstanceId = 6,
374      BuiltInPrimitiveId = 7,
375      BuiltInInvocationId = 8,
376      BuiltInLayer = 9,
377      BuiltInViewportIndex = 10,
378      BuiltInTessLevelOuter = 11,
379      BuiltInTessLevelInner = 12,
380      BuiltInTessCoord = 13,
381      BuiltInPatchVertices = 14,
382      BuiltInFragCoord = 15,
383      BuiltInPointCoord = 16,
384      BuiltInFrontFacing = 17,
385      BuiltInSampleId = 18,
386      BuiltInSamplePosition = 19,
387      BuiltInSampleMask = 20,
388      BuiltInFragDepth = 22,
389      BuiltInHelperInvocation = 23,
390      BuiltInNumWorkgroups = 24,
391      BuiltInWorkgroupSize = 25,
392      BuiltInWorkgroupId = 26,
393      BuiltInLocalInvocationId = 27,
394      BuiltInGlobalInvocationId = 28,
395      BuiltInLocalInvocationIndex = 29,
396      BuiltInWorkDim = 30,
397      BuiltInGlobalSize = 31,
398      BuiltInEnqueuedWorkgroupSize = 32,
399      BuiltInGlobalOffset = 33,
400      BuiltInGlobalLinearId = 34,
401      BuiltInSubgroupSize = 36,
402      BuiltInSubgroupMaxSize = 37,
403      BuiltInNumSubgroups = 38,
404      BuiltInNumEnqueuedSubgroups = 39,
405      BuiltInSubgroupId = 40,
406      BuiltInSubgroupLocalInvocationId = 41,
407      BuiltInVertexIndex = 42,
408      BuiltInInstanceIndex = 43,
409  };
410  
411  enum SelectionControlShift {
412      SelectionControlFlattenShift = 0,
413      SelectionControlDontFlattenShift = 1,
414  };
415  
416  enum SelectionControlMask {
417      SelectionControlMaskNone = 0,
418      SelectionControlFlattenMask = 0x00000001,
419      SelectionControlDontFlattenMask = 0x00000002,
420  };
421  
422  enum LoopControlShift {
423      LoopControlUnrollShift = 0,
424      LoopControlDontUnrollShift = 1,
425      LoopControlDependencyInfiniteShift = 2,
426      LoopControlDependencyLengthShift = 3,
427  };
428  
429  enum LoopControlMask {
430      LoopControlMaskNone = 0,
431      LoopControlUnrollMask = 0x00000001,
432      LoopControlDontUnrollMask = 0x00000002,
433      LoopControlDependencyInfiniteMask = 0x00000004,
434      LoopControlDependencyLengthMask = 0x00000008,
435  };
436  
437  enum FunctionControlShift {
438      FunctionControlInlineShift = 0,
439      FunctionControlDontInlineShift = 1,
440      FunctionControlPureShift = 2,
441      FunctionControlConstShift = 3,
442  };
443  
444  enum FunctionControlMask {
445      FunctionControlMaskNone = 0,
446      FunctionControlInlineMask = 0x00000001,
447      FunctionControlDontInlineMask = 0x00000002,
448      FunctionControlPureMask = 0x00000004,
449      FunctionControlConstMask = 0x00000008,
450  };
451  
452  enum MemorySemanticsShift {
453      MemorySemanticsAcquireShift = 1,
454      MemorySemanticsReleaseShift = 2,
455      MemorySemanticsAcquireReleaseShift = 3,
456      MemorySemanticsSequentiallyConsistentShift = 4,
457      MemorySemanticsUniformMemoryShift = 6,
458      MemorySemanticsSubgroupMemoryShift = 7,
459      MemorySemanticsWorkgroupMemoryShift = 8,
460      MemorySemanticsCrossWorkgroupMemoryShift = 9,
461      MemorySemanticsAtomicCounterMemoryShift = 10,
462      MemorySemanticsImageMemoryShift = 11,
463  };
464  
465  enum MemorySemanticsMask {
466      MemorySemanticsMaskNone = 0,
467      MemorySemanticsAcquireMask = 0x00000002,
468      MemorySemanticsReleaseMask = 0x00000004,
469      MemorySemanticsAcquireReleaseMask = 0x00000008,
470      MemorySemanticsSequentiallyConsistentMask = 0x00000010,
471      MemorySemanticsUniformMemoryMask = 0x00000040,
472      MemorySemanticsSubgroupMemoryMask = 0x00000080,
473      MemorySemanticsWorkgroupMemoryMask = 0x00000100,
474      MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
475      MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
476      MemorySemanticsImageMemoryMask = 0x00000800,
477  };
478  
479  enum MemoryAccessShift {
480      MemoryAccessVolatileShift = 0,
481      MemoryAccessAlignedShift = 1,
482      MemoryAccessNontemporalShift = 2,
483  };
484  
485  enum MemoryAccessMask {
486      MemoryAccessMaskNone = 0,
487      MemoryAccessVolatileMask = 0x00000001,
488      MemoryAccessAlignedMask = 0x00000002,
489      MemoryAccessNontemporalMask = 0x00000004,
490  };
491  
492  enum Scope {
493      ScopeCrossDevice = 0,
494      ScopeDevice = 1,
495      ScopeWorkgroup = 2,
496      ScopeSubgroup = 3,
497      ScopeInvocation = 4,
498  };
499  
500  enum GroupOperation {
501      GroupOperationReduce = 0,
502      GroupOperationInclusiveScan = 1,
503      GroupOperationExclusiveScan = 2,
504  };
505  
506  enum KernelEnqueueFlags {
507      KernelEnqueueFlagsNoWait = 0,
508      KernelEnqueueFlagsWaitKernel = 1,
509      KernelEnqueueFlagsWaitWorkGroup = 2,
510  };
511  
512  enum KernelProfilingInfoShift {
513      KernelProfilingInfoCmdExecTimeShift = 0,
514  };
515  
516  enum KernelProfilingInfoMask {
517      KernelProfilingInfoMaskNone = 0,
518      KernelProfilingInfoCmdExecTimeMask = 0x00000001,
519  };
520  
521  enum Capability {
522      CapabilityMatrix = 0,
523      CapabilityShader = 1,
524      CapabilityGeometry = 2,
525      CapabilityTessellation = 3,
526      CapabilityAddresses = 4,
527      CapabilityLinkage = 5,
528      CapabilityKernel = 6,
529      CapabilityVector16 = 7,
530      CapabilityFloat16Buffer = 8,
531      CapabilityFloat16 = 9,
532      CapabilityFloat64 = 10,
533      CapabilityInt64 = 11,
534      CapabilityInt64Atomics = 12,
535      CapabilityImageBasic = 13,
536      CapabilityImageReadWrite = 14,
537      CapabilityImageMipmap = 15,
538      CapabilityPipes = 17,
539      CapabilityGroups = 18,
540      CapabilityDeviceEnqueue = 19,
541      CapabilityLiteralSampler = 20,
542      CapabilityAtomicStorage = 21,
543      CapabilityInt16 = 22,
544      CapabilityTessellationPointSize = 23,
545      CapabilityGeometryPointSize = 24,
546      CapabilityImageGatherExtended = 25,
547      CapabilityStorageImageMultisample = 27,
548      CapabilityUniformBufferArrayDynamicIndexing = 28,
549      CapabilitySampledImageArrayDynamicIndexing = 29,
550      CapabilityStorageBufferArrayDynamicIndexing = 30,
551      CapabilityStorageImageArrayDynamicIndexing = 31,
552      CapabilityClipDistance = 32,
553      CapabilityCullDistance = 33,
554      CapabilityImageCubeArray = 34,
555      CapabilitySampleRateShading = 35,
556      CapabilityImageRect = 36,
557      CapabilitySampledRect = 37,
558      CapabilityGenericPointer = 38,
559      CapabilityInt8 = 39,
560      CapabilityInputAttachment = 40,
561      CapabilitySparseResidency = 41,
562      CapabilityMinLod = 42,
563      CapabilitySampled1D = 43,
564      CapabilityImage1D = 44,
565      CapabilitySampledCubeArray = 45,
566      CapabilitySampledBuffer = 46,
567      CapabilityImageBuffer = 47,
568      CapabilityImageMSArray = 48,
569      CapabilityStorageImageExtendedFormats = 49,
570      CapabilityImageQuery = 50,
571      CapabilityDerivativeControl = 51,
572      CapabilityInterpolationFunction = 52,
573      CapabilityTransformFeedback = 53,
574      CapabilityGeometryStreams = 54,
575      CapabilityStorageImageReadWithoutFormat = 55,
576      CapabilityStorageImageWriteWithoutFormat = 56,
577      CapabilityMultiViewport = 57,
578      CapabilitySubgroupDispatch = 58,
579      CapabilityNamedBarrier = 59,
580      CapabilityPipeStorage = 60,
581  };
582  
583  enum Op {
584      OpNop = 0,
585      OpUndef = 1,
586      OpSourceContinued = 2,
587      OpSource = 3,
588      OpSourceExtension = 4,
589      OpName = 5,
590      OpMemberName = 6,
591      OpString = 7,
592      OpLine = 8,
593      OpExtension = 10,
594      OpExtInstImport = 11,
595      OpExtInst = 12,
596      OpMemoryModel = 14,
597      OpEntryPoint = 15,
598      OpExecutionMode = 16,
599      OpCapability = 17,
600      OpTypeVoid = 19,
601      OpTypeBool = 20,
602      OpTypeInt = 21,
603      OpTypeFloat = 22,
604      OpTypeVector = 23,
605      OpTypeMatrix = 24,
606      OpTypeImage = 25,
607      OpTypeSampler = 26,
608      OpTypeSampledImage = 27,
609      OpTypeArray = 28,
610      OpTypeRuntimeArray = 29,
611      OpTypeStruct = 30,
612      OpTypeOpaque = 31,
613      OpTypePointer = 32,
614      OpTypeFunction = 33,
615      OpTypeEvent = 34,
616      OpTypeDeviceEvent = 35,
617      OpTypeReserveId = 36,
618      OpTypeQueue = 37,
619      OpTypePipe = 38,
620      OpTypeForwardPointer = 39,
621      OpConstantTrue = 41,
622      OpConstantFalse = 42,
623      OpConstant = 43,
624      OpConstantComposite = 44,
625      OpConstantSampler = 45,
626      OpConstantNull = 46,
627      OpSpecConstantTrue = 48,
628      OpSpecConstantFalse = 49,
629      OpSpecConstant = 50,
630      OpSpecConstantComposite = 51,
631      OpSpecConstantOp = 52,
632      OpFunction = 54,
633      OpFunctionParameter = 55,
634      OpFunctionEnd = 56,
635      OpFunctionCall = 57,
636      OpVariable = 59,
637      OpImageTexelPointer = 60,
638      OpLoad = 61,
639      OpStore = 62,
640      OpCopyMemory = 63,
641      OpCopyMemorySized = 64,
642      OpAccessChain = 65,
643      OpInBoundsAccessChain = 66,
644      OpPtrAccessChain = 67,
645      OpArrayLength = 68,
646      OpGenericPtrMemSemantics = 69,
647      OpInBoundsPtrAccessChain = 70,
648      OpDecorate = 71,
649      OpMemberDecorate = 72,
650      OpDecorationGroup = 73,
651      OpGroupDecorate = 74,
652      OpGroupMemberDecorate = 75,
653      OpVectorExtractDynamic = 77,
654      OpVectorInsertDynamic = 78,
655      OpVectorShuffle = 79,
656      OpCompositeConstruct = 80,
657      OpCompositeExtract = 81,
658      OpCompositeInsert = 82,
659      OpCopyObject = 83,
660      OpTranspose = 84,
661      OpSampledImage = 86,
662      OpImageSampleImplicitLod = 87,
663      OpImageSampleExplicitLod = 88,
664      OpImageSampleDrefImplicitLod = 89,
665      OpImageSampleDrefExplicitLod = 90,
666      OpImageSampleProjImplicitLod = 91,
667      OpImageSampleProjExplicitLod = 92,
668      OpImageSampleProjDrefImplicitLod = 93,
669      OpImageSampleProjDrefExplicitLod = 94,
670      OpImageFetch = 95,
671      OpImageGather = 96,
672      OpImageDrefGather = 97,
673      OpImageRead = 98,
674      OpImageWrite = 99,
675      OpImage = 100,
676      OpImageQueryFormat = 101,
677      OpImageQueryOrder = 102,
678      OpImageQuerySizeLod = 103,
679      OpImageQuerySize = 104,
680      OpImageQueryLod = 105,
681      OpImageQueryLevels = 106,
682      OpImageQuerySamples = 107,
683      OpConvertFToU = 109,
684      OpConvertFToS = 110,
685      OpConvertSToF = 111,
686      OpConvertUToF = 112,
687      OpUConvert = 113,
688      OpSConvert = 114,
689      OpFConvert = 115,
690      OpQuantizeToF16 = 116,
691      OpConvertPtrToU = 117,
692      OpSatConvertSToU = 118,
693      OpSatConvertUToS = 119,
694      OpConvertUToPtr = 120,
695      OpPtrCastToGeneric = 121,
696      OpGenericCastToPtr = 122,
697      OpGenericCastToPtrExplicit = 123,
698      OpBitcast = 124,
699      OpSNegate = 126,
700      OpFNegate = 127,
701      OpIAdd = 128,
702      OpFAdd = 129,
703      OpISub = 130,
704      OpFSub = 131,
705      OpIMul = 132,
706      OpFMul = 133,
707      OpUDiv = 134,
708      OpSDiv = 135,
709      OpFDiv = 136,
710      OpUMod = 137,
711      OpSRem = 138,
712      OpSMod = 139,
713      OpFRem = 140,
714      OpFMod = 141,
715      OpVectorTimesScalar = 142,
716      OpMatrixTimesScalar = 143,
717      OpVectorTimesMatrix = 144,
718      OpMatrixTimesVector = 145,
719      OpMatrixTimesMatrix = 146,
720      OpOuterProduct = 147,
721      OpDot = 148,
722      OpIAddCarry = 149,
723      OpISubBorrow = 150,
724      OpUMulExtended = 151,
725      OpSMulExtended = 152,
726      OpAny = 154,
727      OpAll = 155,
728      OpIsNan = 156,
729      OpIsInf = 157,
730      OpIsFinite = 158,
731      OpIsNormal = 159,
732      OpSignBitSet = 160,
733      OpLessOrGreater = 161,
734      OpOrdered = 162,
735      OpUnordered = 163,
736      OpLogicalEqual = 164,
737      OpLogicalNotEqual = 165,
738      OpLogicalOr = 166,
739      OpLogicalAnd = 167,
740      OpLogicalNot = 168,
741      OpSelect = 169,
742      OpIEqual = 170,
743      OpINotEqual = 171,
744      OpUGreaterThan = 172,
745      OpSGreaterThan = 173,
746      OpUGreaterThanEqual = 174,
747      OpSGreaterThanEqual = 175,
748      OpULessThan = 176,
749      OpSLessThan = 177,
750      OpULessThanEqual = 178,
751      OpSLessThanEqual = 179,
752      OpFOrdEqual = 180,
753      OpFUnordEqual = 181,
754      OpFOrdNotEqual = 182,
755      OpFUnordNotEqual = 183,
756      OpFOrdLessThan = 184,
757      OpFUnordLessThan = 185,
758      OpFOrdGreaterThan = 186,
759      OpFUnordGreaterThan = 187,
760      OpFOrdLessThanEqual = 188,
761      OpFUnordLessThanEqual = 189,
762      OpFOrdGreaterThanEqual = 190,
763      OpFUnordGreaterThanEqual = 191,
764      OpShiftRightLogical = 194,
765      OpShiftRightArithmetic = 195,
766      OpShiftLeftLogical = 196,
767      OpBitwiseOr = 197,
768      OpBitwiseXor = 198,
769      OpBitwiseAnd = 199,
770      OpNot = 200,
771      OpBitFieldInsert = 201,
772      OpBitFieldSExtract = 202,
773      OpBitFieldUExtract = 203,
774      OpBitReverse = 204,
775      OpBitCount = 205,
776      OpDPdx = 207,
777      OpDPdy = 208,
778      OpFwidth = 209,
779      OpDPdxFine = 210,
780      OpDPdyFine = 211,
781      OpFwidthFine = 212,
782      OpDPdxCoarse = 213,
783      OpDPdyCoarse = 214,
784      OpFwidthCoarse = 215,
785      OpEmitVertex = 218,
786      OpEndPrimitive = 219,
787      OpEmitStreamVertex = 220,
788      OpEndStreamPrimitive = 221,
789      OpControlBarrier = 224,
790      OpMemoryBarrier = 225,
791      OpAtomicLoad = 227,
792      OpAtomicStore = 228,
793      OpAtomicExchange = 229,
794      OpAtomicCompareExchange = 230,
795      OpAtomicCompareExchangeWeak = 231,
796      OpAtomicIIncrement = 232,
797      OpAtomicIDecrement = 233,
798      OpAtomicIAdd = 234,
799      OpAtomicISub = 235,
800      OpAtomicSMin = 236,
801      OpAtomicUMin = 237,
802      OpAtomicSMax = 238,
803      OpAtomicUMax = 239,
804      OpAtomicAnd = 240,
805      OpAtomicOr = 241,
806      OpAtomicXor = 242,
807      OpPhi = 245,
808      OpLoopMerge = 246,
809      OpSelectionMerge = 247,
810      OpLabel = 248,
811      OpBranch = 249,
812      OpBranchConditional = 250,
813      OpSwitch = 251,
814      OpKill = 252,
815      OpReturn = 253,
816      OpReturnValue = 254,
817      OpUnreachable = 255,
818      OpLifetimeStart = 256,
819      OpLifetimeStop = 257,
820      OpGroupAsyncCopy = 259,
821      OpGroupWaitEvents = 260,
822      OpGroupAll = 261,
823      OpGroupAny = 262,
824      OpGroupBroadcast = 263,
825      OpGroupIAdd = 264,
826      OpGroupFAdd = 265,
827      OpGroupFMin = 266,
828      OpGroupUMin = 267,
829      OpGroupSMin = 268,
830      OpGroupFMax = 269,
831      OpGroupUMax = 270,
832      OpGroupSMax = 271,
833      OpReadPipe = 274,
834      OpWritePipe = 275,
835      OpReservedReadPipe = 276,
836      OpReservedWritePipe = 277,
837      OpReserveReadPipePackets = 278,
838      OpReserveWritePipePackets = 279,
839      OpCommitReadPipe = 280,
840      OpCommitWritePipe = 281,
841      OpIsValidReserveId = 282,
842      OpGetNumPipePackets = 283,
843      OpGetMaxPipePackets = 284,
844      OpGroupReserveReadPipePackets = 285,
845      OpGroupReserveWritePipePackets = 286,
846      OpGroupCommitReadPipe = 287,
847      OpGroupCommitWritePipe = 288,
848      OpEnqueueMarker = 291,
849      OpEnqueueKernel = 292,
850      OpGetKernelNDrangeSubGroupCount = 293,
851      OpGetKernelNDrangeMaxSubGroupSize = 294,
852      OpGetKernelWorkGroupSize = 295,
853      OpGetKernelPreferredWorkGroupSizeMultiple = 296,
854      OpRetainEvent = 297,
855      OpReleaseEvent = 298,
856      OpCreateUserEvent = 299,
857      OpIsValidEvent = 300,
858      OpSetUserEventStatus = 301,
859      OpCaptureEventProfilingInfo = 302,
860      OpGetDefaultQueue = 303,
861      OpBuildNDRange = 304,
862      OpImageSparseSampleImplicitLod = 305,
863      OpImageSparseSampleExplicitLod = 306,
864      OpImageSparseSampleDrefImplicitLod = 307,
865      OpImageSparseSampleDrefExplicitLod = 308,
866      OpImageSparseSampleProjImplicitLod = 309,
867      OpImageSparseSampleProjExplicitLod = 310,
868      OpImageSparseSampleProjDrefImplicitLod = 311,
869      OpImageSparseSampleProjDrefExplicitLod = 312,
870      OpImageSparseFetch = 313,
871      OpImageSparseGather = 314,
872      OpImageSparseDrefGather = 315,
873      OpImageSparseTexelsResident = 316,
874      OpNoLine = 317,
875      OpAtomicFlagTestAndSet = 318,
876      OpAtomicFlagClear = 319,
877      OpImageSparseRead = 320,
878      OpSizeOf = 321,
879      OpTypePipeStorage = 322,
880      OpConstantPipeStorage = 323,
881      OpCreatePipeFromPipeStorage = 324,
882      OpGetKernelLocalSizeForSubgroupCount = 325,
883      OpGetKernelMaxNumSubgroups = 326,
884      OpTypeNamedBarrier = 327,
885      OpNamedBarrierInitialize = 328,
886      OpMemoryNamedBarrier = 329,
887      OpModuleProcessed = 330,
888      OpForward = 1024, /* internal use only */
889  };
890  
891  // Overload operator| for mask bit combining
892  
operator |(ImageOperandsMask a,ImageOperandsMask b)893  inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
operator |(FPFastMathModeMask a,FPFastMathModeMask b)894  inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
operator |(SelectionControlMask a,SelectionControlMask b)895  inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
operator |(LoopControlMask a,LoopControlMask b)896  inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
operator |(FunctionControlMask a,FunctionControlMask b)897  inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
operator |(MemorySemanticsMask a,MemorySemanticsMask b)898  inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
operator |(MemoryAccessMask a,MemoryAccessMask b)899  inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
operator |(KernelProfilingInfoMask a,KernelProfilingInfoMask b)900  inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
901  
902  }  // end namespace spv
903  
904  #endif  // #ifndef spirv_HPP
905  
906