1 // Copyright (c) 2014-2016 The Khronos Group Inc.
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:
10 // The above copyright notice and this permission notice shall be included in
11 // all copies or substantial portions of the Materials.
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/
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
25 // This header is automatically generated by the same tool that creates
26 // the Binary Section of the SPIR-V specification.
28 // Enumeration tokens for SPIR-V, in various styles:
29 // C, C++, C++11, JSON, Lua, Python
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']
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.
47 typedef unsigned int Id;
49 #define SPV_VERSION 0x10000
50 #define SPV_REVISION 4
52 static const unsigned int MagicNumber = 0x07230203;
53 static const unsigned int Version = 0x00010000;
54 static const unsigned int Revision = 4;
55 static const unsigned int OpCodeMask = 0xffff;
56 static const unsigned int WordCountShift = 16;
59 SourceLanguageUnknown = 0,
60 SourceLanguageESSL = 1,
61 SourceLanguageGLSL = 2,
62 SourceLanguageOpenCL_C = 3,
63 SourceLanguageOpenCL_CPP = 4,
67 ExecutionModelVertex = 0,
68 ExecutionModelTessellationControl = 1,
69 ExecutionModelTessellationEvaluation = 2,
70 ExecutionModelGeometry = 3,
71 ExecutionModelFragment = 4,
72 ExecutionModelGLCompute = 5,
73 ExecutionModelKernel = 6,
76 enum AddressingModel {
77 AddressingModelLogical = 0,
78 AddressingModelPhysical32 = 1,
79 AddressingModelPhysical64 = 2,
83 MemoryModelSimple = 0,
84 MemoryModelGLSL450 = 1,
85 MemoryModelOpenCL = 2,
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,
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,
147 enum SamplerAddressingMode {
148 SamplerAddressingModeNone = 0,
149 SamplerAddressingModeClampToEdge = 1,
150 SamplerAddressingModeClamp = 2,
151 SamplerAddressingModeRepeat = 3,
152 SamplerAddressingModeRepeatMirrored = 4,
155 enum SamplerFilterMode {
156 SamplerFilterModeNearest = 0,
157 SamplerFilterModeLinear = 1,
161 ImageFormatUnknown = 0,
162 ImageFormatRgba32f = 1,
163 ImageFormatRgba16f = 2,
165 ImageFormatRgba8 = 4,
166 ImageFormatRgba8Snorm = 5,
167 ImageFormatRg32f = 6,
168 ImageFormatRg16f = 7,
169 ImageFormatR11fG11fB10f = 8,
171 ImageFormatRgba16 = 10,
172 ImageFormatRgb10A2 = 11,
173 ImageFormatRg16 = 12,
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,
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,
203 enum 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,
225 enum 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,
245 enum 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,
256 enum 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,
268 enum FPFastMathModeShift {
269 FPFastMathModeNotNaNShift = 0,
270 FPFastMathModeNotInfShift = 1,
271 FPFastMathModeNSZShift = 2,
272 FPFastMathModeAllowRecipShift = 3,
273 FPFastMathModeFastShift = 4,
276 enum FPFastMathModeMask {
277 FPFastMathModeMaskNone = 0,
278 FPFastMathModeNotNaNMask = 0x00000001,
279 FPFastMathModeNotInfMask = 0x00000002,
280 FPFastMathModeNSZMask = 0x00000004,
281 FPFastMathModeAllowRecipMask = 0x00000008,
282 FPFastMathModeFastMask = 0x00000010,
285 enum FPRoundingMode {
286 FPRoundingModeRTE = 0,
287 FPRoundingModeRTZ = 1,
288 FPRoundingModeRTP = 2,
289 FPRoundingModeRTN = 3,
293 LinkageTypeExport = 0,
294 LinkageTypeImport = 1,
297 enum AccessQualifier {
298 AccessQualifierReadOnly = 0,
299 AccessQualifierWriteOnly = 1,
300 AccessQualifierReadWrite = 2,
303 enum 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,
315 DecorationRelaxedPrecision = 0,
316 DecorationSpecId = 1,
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,
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,
362 BuiltInPointSize = 1,
363 BuiltInClipDistance = 3,
364 BuiltInCullDistance = 4,
366 BuiltInInstanceId = 6,
367 BuiltInPrimitiveId = 7,
368 BuiltInInvocationId = 8,
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,
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,
404 enum SelectionControlShift {
405 SelectionControlFlattenShift = 0,
406 SelectionControlDontFlattenShift = 1,
409 enum SelectionControlMask {
410 SelectionControlMaskNone = 0,
411 SelectionControlFlattenMask = 0x00000001,
412 SelectionControlDontFlattenMask = 0x00000002,
415 enum LoopControlShift {
416 LoopControlUnrollShift = 0,
417 LoopControlDontUnrollShift = 1,
420 enum LoopControlMask {
421 LoopControlMaskNone = 0,
422 LoopControlUnrollMask = 0x00000001,
423 LoopControlDontUnrollMask = 0x00000002,
426 enum FunctionControlShift {
427 FunctionControlInlineShift = 0,
428 FunctionControlDontInlineShift = 1,
429 FunctionControlPureShift = 2,
430 FunctionControlConstShift = 3,
433 enum FunctionControlMask {
434 FunctionControlMaskNone = 0,
435 FunctionControlInlineMask = 0x00000001,
436 FunctionControlDontInlineMask = 0x00000002,
437 FunctionControlPureMask = 0x00000004,
438 FunctionControlConstMask = 0x00000008,
441 enum 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,
454 enum 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,
468 enum MemoryAccessShift {
469 MemoryAccessVolatileShift = 0,
470 MemoryAccessAlignedShift = 1,
471 MemoryAccessNontemporalShift = 2,
474 enum MemoryAccessMask {
475 MemoryAccessMaskNone = 0,
476 MemoryAccessVolatileMask = 0x00000001,
477 MemoryAccessAlignedMask = 0x00000002,
478 MemoryAccessNontemporalMask = 0x00000004,
482 ScopeCrossDevice = 0,
489 enum GroupOperation {
490 GroupOperationReduce = 0,
491 GroupOperationInclusiveScan = 1,
492 GroupOperationExclusiveScan = 2,
495 enum KernelEnqueueFlags {
496 KernelEnqueueFlagsNoWait = 0,
497 KernelEnqueueFlagsWaitKernel = 1,
498 KernelEnqueueFlagsWaitWorkGroup = 2,
501 enum KernelProfilingInfoShift {
502 KernelProfilingInfoCmdExecTimeShift = 0,
505 enum KernelProfilingInfoMask {
506 KernelProfilingInfoMaskNone = 0,
507 KernelProfilingInfoCmdExecTimeMask = 0x00000001,
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,
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 CapabilityMultiViewport = 57,
572 OpSourceContinued = 2,
574 OpSourceExtension = 4,
580 OpExtInstImport = 11,
584 OpExecutionMode = 16,
594 OpTypeSampledImage = 27,
596 OpTypeRuntimeArray = 29,
602 OpTypeDeviceEvent = 35,
603 OpTypeReserveId = 36,
606 OpTypeForwardPointer = 39,
608 OpConstantFalse = 42,
610 OpConstantComposite = 44,
611 OpConstantSampler = 45,
613 OpSpecConstantTrue = 48,
614 OpSpecConstantFalse = 49,
616 OpSpecConstantComposite = 51,
617 OpSpecConstantOp = 52,
619 OpFunctionParameter = 55,
623 OpImageTexelPointer = 60,
627 OpCopyMemorySized = 64,
629 OpInBoundsAccessChain = 66,
630 OpPtrAccessChain = 67,
632 OpGenericPtrMemSemantics = 69,
633 OpInBoundsPtrAccessChain = 70,
635 OpMemberDecorate = 72,
636 OpDecorationGroup = 73,
637 OpGroupDecorate = 74,
638 OpGroupMemberDecorate = 75,
639 OpVectorExtractDynamic = 77,
640 OpVectorInsertDynamic = 78,
641 OpVectorShuffle = 79,
642 OpCompositeConstruct = 80,
643 OpCompositeExtract = 81,
644 OpCompositeInsert = 82,
648 OpImageSampleImplicitLod = 87,
649 OpImageSampleExplicitLod = 88,
650 OpImageSampleDrefImplicitLod = 89,
651 OpImageSampleDrefExplicitLod = 90,
652 OpImageSampleProjImplicitLod = 91,
653 OpImageSampleProjExplicitLod = 92,
654 OpImageSampleProjDrefImplicitLod = 93,
655 OpImageSampleProjDrefExplicitLod = 94,
658 OpImageDrefGather = 97,
662 OpImageQueryFormat = 101,
663 OpImageQueryOrder = 102,
664 OpImageQuerySizeLod = 103,
665 OpImageQuerySize = 104,
666 OpImageQueryLod = 105,
667 OpImageQueryLevels = 106,
668 OpImageQuerySamples = 107,
676 OpQuantizeToF16 = 116,
677 OpConvertPtrToU = 117,
678 OpSatConvertSToU = 118,
679 OpSatConvertUToS = 119,
680 OpConvertUToPtr = 120,
681 OpPtrCastToGeneric = 121,
682 OpGenericCastToPtr = 122,
683 OpGenericCastToPtrExplicit = 123,
701 OpVectorTimesScalar = 142,
702 OpMatrixTimesScalar = 143,
703 OpVectorTimesMatrix = 144,
704 OpMatrixTimesVector = 145,
705 OpMatrixTimesMatrix = 146,
706 OpOuterProduct = 147,
710 OpUMulExtended = 151,
711 OpSMulExtended = 152,
719 OpLessOrGreater = 161,
722 OpLogicalEqual = 164,
723 OpLogicalNotEqual = 165,
730 OpUGreaterThan = 172,
731 OpSGreaterThan = 173,
732 OpUGreaterThanEqual = 174,
733 OpSGreaterThanEqual = 175,
736 OpULessThanEqual = 178,
737 OpSLessThanEqual = 179,
740 OpFOrdNotEqual = 182,
741 OpFUnordNotEqual = 183,
742 OpFOrdLessThan = 184,
743 OpFUnordLessThan = 185,
744 OpFOrdGreaterThan = 186,
745 OpFUnordGreaterThan = 187,
746 OpFOrdLessThanEqual = 188,
747 OpFUnordLessThanEqual = 189,
748 OpFOrdGreaterThanEqual = 190,
749 OpFUnordGreaterThanEqual = 191,
750 OpShiftRightLogical = 194,
751 OpShiftRightArithmetic = 195,
752 OpShiftLeftLogical = 196,
757 OpBitFieldInsert = 201,
758 OpBitFieldSExtract = 202,
759 OpBitFieldUExtract = 203,
770 OpFwidthCoarse = 215,
772 OpEndPrimitive = 219,
773 OpEmitStreamVertex = 220,
774 OpEndStreamPrimitive = 221,
775 OpControlBarrier = 224,
776 OpMemoryBarrier = 225,
779 OpAtomicExchange = 229,
780 OpAtomicCompareExchange = 230,
781 OpAtomicCompareExchangeWeak = 231,
782 OpAtomicIIncrement = 232,
783 OpAtomicIDecrement = 233,
795 OpSelectionMerge = 247,
798 OpBranchConditional = 250,
804 OpLifetimeStart = 256,
805 OpLifetimeStop = 257,
806 OpGroupAsyncCopy = 259,
807 OpGroupWaitEvents = 260,
810 OpGroupBroadcast = 263,
821 OpReservedReadPipe = 276,
822 OpReservedWritePipe = 277,
823 OpReserveReadPipePackets = 278,
824 OpReserveWritePipePackets = 279,
825 OpCommitReadPipe = 280,
826 OpCommitWritePipe = 281,
827 OpIsValidReserveId = 282,
828 OpGetNumPipePackets = 283,
829 OpGetMaxPipePackets = 284,
830 OpGroupReserveReadPipePackets = 285,
831 OpGroupReserveWritePipePackets = 286,
832 OpGroupCommitReadPipe = 287,
833 OpGroupCommitWritePipe = 288,
834 OpEnqueueMarker = 291,
835 OpEnqueueKernel = 292,
836 OpGetKernelNDrangeSubGroupCount = 293,
837 OpGetKernelNDrangeMaxSubGroupSize = 294,
838 OpGetKernelWorkGroupSize = 295,
839 OpGetKernelPreferredWorkGroupSizeMultiple = 296,
841 OpReleaseEvent = 298,
842 OpCreateUserEvent = 299,
843 OpIsValidEvent = 300,
844 OpSetUserEventStatus = 301,
845 OpCaptureEventProfilingInfo = 302,
846 OpGetDefaultQueue = 303,
847 OpBuildNDRange = 304,
848 OpImageSparseSampleImplicitLod = 305,
849 OpImageSparseSampleExplicitLod = 306,
850 OpImageSparseSampleDrefImplicitLod = 307,
851 OpImageSparseSampleDrefExplicitLod = 308,
852 OpImageSparseSampleProjImplicitLod = 309,
853 OpImageSparseSampleProjExplicitLod = 310,
854 OpImageSparseSampleProjDrefImplicitLod = 311,
855 OpImageSparseSampleProjDrefExplicitLod = 312,
856 OpImageSparseFetch = 313,
857 OpImageSparseGather = 314,
858 OpImageSparseDrefGather = 315,
859 OpImageSparseTexelsResident = 316,
861 OpAtomicFlagTestAndSet = 318,
862 OpAtomicFlagClear = 319,
863 OpImageSparseRead = 320,
866 // Overload operator| for mask bit combining
868 inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
869 inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
870 inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
871 inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
872 inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
873 inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
874 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
875 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
877 } // end namespace spv
879 #endif // #ifndef spirv_HPP