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