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 6
52 static const unsigned int MagicNumber = 0x07230203;
53 static const unsigned int Version = 0x00010000;
54 static const unsigned int Revision = 6;
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,
64 SourceLanguageMax = 0x7fffffff,
68 ExecutionModelVertex = 0,
69 ExecutionModelTessellationControl = 1,
70 ExecutionModelTessellationEvaluation = 2,
71 ExecutionModelGeometry = 3,
72 ExecutionModelFragment = 4,
73 ExecutionModelGLCompute = 5,
74 ExecutionModelKernel = 6,
75 ExecutionModelMax = 0x7fffffff,
78 enum AddressingModel {
79 AddressingModelLogical = 0,
80 AddressingModelPhysical32 = 1,
81 AddressingModelPhysical64 = 2,
82 AddressingModelMax = 0x7fffffff,
86 MemoryModelSimple = 0,
87 MemoryModelGLSL450 = 1,
88 MemoryModelOpenCL = 2,
89 MemoryModelMax = 0x7fffffff,
93 ExecutionModeInvocations = 0,
94 ExecutionModeSpacingEqual = 1,
95 ExecutionModeSpacingFractionalEven = 2,
96 ExecutionModeSpacingFractionalOdd = 3,
97 ExecutionModeVertexOrderCw = 4,
98 ExecutionModeVertexOrderCcw = 5,
99 ExecutionModePixelCenterInteger = 6,
100 ExecutionModeOriginUpperLeft = 7,
101 ExecutionModeOriginLowerLeft = 8,
102 ExecutionModeEarlyFragmentTests = 9,
103 ExecutionModePointMode = 10,
104 ExecutionModeXfb = 11,
105 ExecutionModeDepthReplacing = 12,
106 ExecutionModeDepthGreater = 14,
107 ExecutionModeDepthLess = 15,
108 ExecutionModeDepthUnchanged = 16,
109 ExecutionModeLocalSize = 17,
110 ExecutionModeLocalSizeHint = 18,
111 ExecutionModeInputPoints = 19,
112 ExecutionModeInputLines = 20,
113 ExecutionModeInputLinesAdjacency = 21,
114 ExecutionModeTriangles = 22,
115 ExecutionModeInputTrianglesAdjacency = 23,
116 ExecutionModeQuads = 24,
117 ExecutionModeIsolines = 25,
118 ExecutionModeOutputVertices = 26,
119 ExecutionModeOutputPoints = 27,
120 ExecutionModeOutputLineStrip = 28,
121 ExecutionModeOutputTriangleStrip = 29,
122 ExecutionModeVecTypeHint = 30,
123 ExecutionModeContractionOff = 31,
124 ExecutionModeMax = 0x7fffffff,
128 StorageClassUniformConstant = 0,
129 StorageClassInput = 1,
130 StorageClassUniform = 2,
131 StorageClassOutput = 3,
132 StorageClassWorkgroup = 4,
133 StorageClassCrossWorkgroup = 5,
134 StorageClassPrivate = 6,
135 StorageClassFunction = 7,
136 StorageClassGeneric = 8,
137 StorageClassPushConstant = 9,
138 StorageClassAtomicCounter = 10,
139 StorageClassImage = 11,
140 StorageClassMax = 0x7fffffff,
154 enum SamplerAddressingMode {
155 SamplerAddressingModeNone = 0,
156 SamplerAddressingModeClampToEdge = 1,
157 SamplerAddressingModeClamp = 2,
158 SamplerAddressingModeRepeat = 3,
159 SamplerAddressingModeRepeatMirrored = 4,
160 SamplerAddressingModeMax = 0x7fffffff,
163 enum SamplerFilterMode {
164 SamplerFilterModeNearest = 0,
165 SamplerFilterModeLinear = 1,
166 SamplerFilterModeMax = 0x7fffffff,
170 ImageFormatUnknown = 0,
171 ImageFormatRgba32f = 1,
172 ImageFormatRgba16f = 2,
174 ImageFormatRgba8 = 4,
175 ImageFormatRgba8Snorm = 5,
176 ImageFormatRg32f = 6,
177 ImageFormatRg16f = 7,
178 ImageFormatR11fG11fB10f = 8,
180 ImageFormatRgba16 = 10,
181 ImageFormatRgb10A2 = 11,
182 ImageFormatRg16 = 12,
186 ImageFormatRgba16Snorm = 16,
187 ImageFormatRg16Snorm = 17,
188 ImageFormatRg8Snorm = 18,
189 ImageFormatR16Snorm = 19,
190 ImageFormatR8Snorm = 20,
191 ImageFormatRgba32i = 21,
192 ImageFormatRgba16i = 22,
193 ImageFormatRgba8i = 23,
194 ImageFormatR32i = 24,
195 ImageFormatRg32i = 25,
196 ImageFormatRg16i = 26,
197 ImageFormatRg8i = 27,
198 ImageFormatR16i = 28,
200 ImageFormatRgba32ui = 30,
201 ImageFormatRgba16ui = 31,
202 ImageFormatRgba8ui = 32,
203 ImageFormatR32ui = 33,
204 ImageFormatRgb10a2ui = 34,
205 ImageFormatRg32ui = 35,
206 ImageFormatRg16ui = 36,
207 ImageFormatRg8ui = 37,
208 ImageFormatR16ui = 38,
209 ImageFormatR8ui = 39,
210 ImageFormatMax = 0x7fffffff,
213 enum ImageChannelOrder {
214 ImageChannelOrderR = 0,
215 ImageChannelOrderA = 1,
216 ImageChannelOrderRG = 2,
217 ImageChannelOrderRA = 3,
218 ImageChannelOrderRGB = 4,
219 ImageChannelOrderRGBA = 5,
220 ImageChannelOrderBGRA = 6,
221 ImageChannelOrderARGB = 7,
222 ImageChannelOrderIntensity = 8,
223 ImageChannelOrderLuminance = 9,
224 ImageChannelOrderRx = 10,
225 ImageChannelOrderRGx = 11,
226 ImageChannelOrderRGBx = 12,
227 ImageChannelOrderDepth = 13,
228 ImageChannelOrderDepthStencil = 14,
229 ImageChannelOrdersRGB = 15,
230 ImageChannelOrdersRGBx = 16,
231 ImageChannelOrdersRGBA = 17,
232 ImageChannelOrdersBGRA = 18,
233 ImageChannelOrderABGR = 19,
234 ImageChannelOrderMax = 0x7fffffff,
237 enum ImageChannelDataType {
238 ImageChannelDataTypeSnormInt8 = 0,
239 ImageChannelDataTypeSnormInt16 = 1,
240 ImageChannelDataTypeUnormInt8 = 2,
241 ImageChannelDataTypeUnormInt16 = 3,
242 ImageChannelDataTypeUnormShort565 = 4,
243 ImageChannelDataTypeUnormShort555 = 5,
244 ImageChannelDataTypeUnormInt101010 = 6,
245 ImageChannelDataTypeSignedInt8 = 7,
246 ImageChannelDataTypeSignedInt16 = 8,
247 ImageChannelDataTypeSignedInt32 = 9,
248 ImageChannelDataTypeUnsignedInt8 = 10,
249 ImageChannelDataTypeUnsignedInt16 = 11,
250 ImageChannelDataTypeUnsignedInt32 = 12,
251 ImageChannelDataTypeHalfFloat = 13,
252 ImageChannelDataTypeFloat = 14,
253 ImageChannelDataTypeUnormInt24 = 15,
254 ImageChannelDataTypeUnormInt101010_2 = 16,
255 ImageChannelDataTypeMax = 0x7fffffff,
258 enum ImageOperandsShift {
259 ImageOperandsBiasShift = 0,
260 ImageOperandsLodShift = 1,
261 ImageOperandsGradShift = 2,
262 ImageOperandsConstOffsetShift = 3,
263 ImageOperandsOffsetShift = 4,
264 ImageOperandsConstOffsetsShift = 5,
265 ImageOperandsSampleShift = 6,
266 ImageOperandsMinLodShift = 7,
267 ImageOperandsMax = 0x7fffffff,
270 enum ImageOperandsMask {
271 ImageOperandsMaskNone = 0,
272 ImageOperandsBiasMask = 0x00000001,
273 ImageOperandsLodMask = 0x00000002,
274 ImageOperandsGradMask = 0x00000004,
275 ImageOperandsConstOffsetMask = 0x00000008,
276 ImageOperandsOffsetMask = 0x00000010,
277 ImageOperandsConstOffsetsMask = 0x00000020,
278 ImageOperandsSampleMask = 0x00000040,
279 ImageOperandsMinLodMask = 0x00000080,
282 enum FPFastMathModeShift {
283 FPFastMathModeNotNaNShift = 0,
284 FPFastMathModeNotInfShift = 1,
285 FPFastMathModeNSZShift = 2,
286 FPFastMathModeAllowRecipShift = 3,
287 FPFastMathModeFastShift = 4,
288 FPFastMathModeMax = 0x7fffffff,
291 enum FPFastMathModeMask {
292 FPFastMathModeMaskNone = 0,
293 FPFastMathModeNotNaNMask = 0x00000001,
294 FPFastMathModeNotInfMask = 0x00000002,
295 FPFastMathModeNSZMask = 0x00000004,
296 FPFastMathModeAllowRecipMask = 0x00000008,
297 FPFastMathModeFastMask = 0x00000010,
300 enum FPRoundingMode {
301 FPRoundingModeRTE = 0,
302 FPRoundingModeRTZ = 1,
303 FPRoundingModeRTP = 2,
304 FPRoundingModeRTN = 3,
305 FPRoundingModeMax = 0x7fffffff,
309 LinkageTypeExport = 0,
310 LinkageTypeImport = 1,
311 LinkageTypeMax = 0x7fffffff,
314 enum AccessQualifier {
315 AccessQualifierReadOnly = 0,
316 AccessQualifierWriteOnly = 1,
317 AccessQualifierReadWrite = 2,
318 AccessQualifierMax = 0x7fffffff,
321 enum FunctionParameterAttribute {
322 FunctionParameterAttributeZext = 0,
323 FunctionParameterAttributeSext = 1,
324 FunctionParameterAttributeByVal = 2,
325 FunctionParameterAttributeSret = 3,
326 FunctionParameterAttributeNoAlias = 4,
327 FunctionParameterAttributeNoCapture = 5,
328 FunctionParameterAttributeNoWrite = 6,
329 FunctionParameterAttributeNoReadWrite = 7,
330 FunctionParameterAttributeMax = 0x7fffffff,
334 DecorationRelaxedPrecision = 0,
335 DecorationSpecId = 1,
337 DecorationBufferBlock = 3,
338 DecorationRowMajor = 4,
339 DecorationColMajor = 5,
340 DecorationArrayStride = 6,
341 DecorationMatrixStride = 7,
342 DecorationGLSLShared = 8,
343 DecorationGLSLPacked = 9,
344 DecorationCPacked = 10,
345 DecorationBuiltIn = 11,
346 DecorationNoPerspective = 13,
348 DecorationPatch = 15,
349 DecorationCentroid = 16,
350 DecorationSample = 17,
351 DecorationInvariant = 18,
352 DecorationRestrict = 19,
353 DecorationAliased = 20,
354 DecorationVolatile = 21,
355 DecorationConstant = 22,
356 DecorationCoherent = 23,
357 DecorationNonWritable = 24,
358 DecorationNonReadable = 25,
359 DecorationUniform = 26,
360 DecorationSaturatedConversion = 28,
361 DecorationStream = 29,
362 DecorationLocation = 30,
363 DecorationComponent = 31,
364 DecorationIndex = 32,
365 DecorationBinding = 33,
366 DecorationDescriptorSet = 34,
367 DecorationOffset = 35,
368 DecorationXfbBuffer = 36,
369 DecorationXfbStride = 37,
370 DecorationFuncParamAttr = 38,
371 DecorationFPRoundingMode = 39,
372 DecorationFPFastMathMode = 40,
373 DecorationLinkageAttributes = 41,
374 DecorationNoContraction = 42,
375 DecorationInputAttachmentIndex = 43,
376 DecorationAlignment = 44,
377 DecorationMax = 0x7fffffff,
382 BuiltInPointSize = 1,
383 BuiltInClipDistance = 3,
384 BuiltInCullDistance = 4,
386 BuiltInInstanceId = 6,
387 BuiltInPrimitiveId = 7,
388 BuiltInInvocationId = 8,
390 BuiltInViewportIndex = 10,
391 BuiltInTessLevelOuter = 11,
392 BuiltInTessLevelInner = 12,
393 BuiltInTessCoord = 13,
394 BuiltInPatchVertices = 14,
395 BuiltInFragCoord = 15,
396 BuiltInPointCoord = 16,
397 BuiltInFrontFacing = 17,
398 BuiltInSampleId = 18,
399 BuiltInSamplePosition = 19,
400 BuiltInSampleMask = 20,
401 BuiltInFragDepth = 22,
402 BuiltInHelperInvocation = 23,
403 BuiltInNumWorkgroups = 24,
404 BuiltInWorkgroupSize = 25,
405 BuiltInWorkgroupId = 26,
406 BuiltInLocalInvocationId = 27,
407 BuiltInGlobalInvocationId = 28,
408 BuiltInLocalInvocationIndex = 29,
410 BuiltInGlobalSize = 31,
411 BuiltInEnqueuedWorkgroupSize = 32,
412 BuiltInGlobalOffset = 33,
413 BuiltInGlobalLinearId = 34,
414 BuiltInSubgroupSize = 36,
415 BuiltInSubgroupMaxSize = 37,
416 BuiltInNumSubgroups = 38,
417 BuiltInNumEnqueuedSubgroups = 39,
418 BuiltInSubgroupId = 40,
419 BuiltInSubgroupLocalInvocationId = 41,
420 BuiltInVertexIndex = 42,
421 BuiltInInstanceIndex = 43,
422 BuiltInMax = 0x7fffffff,
425 enum SelectionControlShift {
426 SelectionControlFlattenShift = 0,
427 SelectionControlDontFlattenShift = 1,
428 SelectionControlMax = 0x7fffffff,
431 enum SelectionControlMask {
432 SelectionControlMaskNone = 0,
433 SelectionControlFlattenMask = 0x00000001,
434 SelectionControlDontFlattenMask = 0x00000002,
437 enum LoopControlShift {
438 LoopControlUnrollShift = 0,
439 LoopControlDontUnrollShift = 1,
440 LoopControlMax = 0x7fffffff,
443 enum LoopControlMask {
444 LoopControlMaskNone = 0,
445 LoopControlUnrollMask = 0x00000001,
446 LoopControlDontUnrollMask = 0x00000002,
449 enum FunctionControlShift {
450 FunctionControlInlineShift = 0,
451 FunctionControlDontInlineShift = 1,
452 FunctionControlPureShift = 2,
453 FunctionControlConstShift = 3,
454 FunctionControlMax = 0x7fffffff,
457 enum FunctionControlMask {
458 FunctionControlMaskNone = 0,
459 FunctionControlInlineMask = 0x00000001,
460 FunctionControlDontInlineMask = 0x00000002,
461 FunctionControlPureMask = 0x00000004,
462 FunctionControlConstMask = 0x00000008,
465 enum MemorySemanticsShift {
466 MemorySemanticsAcquireShift = 1,
467 MemorySemanticsReleaseShift = 2,
468 MemorySemanticsAcquireReleaseShift = 3,
469 MemorySemanticsSequentiallyConsistentShift = 4,
470 MemorySemanticsUniformMemoryShift = 6,
471 MemorySemanticsSubgroupMemoryShift = 7,
472 MemorySemanticsWorkgroupMemoryShift = 8,
473 MemorySemanticsCrossWorkgroupMemoryShift = 9,
474 MemorySemanticsAtomicCounterMemoryShift = 10,
475 MemorySemanticsImageMemoryShift = 11,
476 MemorySemanticsMax = 0x7fffffff,
479 enum MemorySemanticsMask {
480 MemorySemanticsMaskNone = 0,
481 MemorySemanticsAcquireMask = 0x00000002,
482 MemorySemanticsReleaseMask = 0x00000004,
483 MemorySemanticsAcquireReleaseMask = 0x00000008,
484 MemorySemanticsSequentiallyConsistentMask = 0x00000010,
485 MemorySemanticsUniformMemoryMask = 0x00000040,
486 MemorySemanticsSubgroupMemoryMask = 0x00000080,
487 MemorySemanticsWorkgroupMemoryMask = 0x00000100,
488 MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200,
489 MemorySemanticsAtomicCounterMemoryMask = 0x00000400,
490 MemorySemanticsImageMemoryMask = 0x00000800,
493 enum MemoryAccessShift {
494 MemoryAccessVolatileShift = 0,
495 MemoryAccessAlignedShift = 1,
496 MemoryAccessNontemporalShift = 2,
497 MemoryAccessMax = 0x7fffffff,
500 enum MemoryAccessMask {
501 MemoryAccessMaskNone = 0,
502 MemoryAccessVolatileMask = 0x00000001,
503 MemoryAccessAlignedMask = 0x00000002,
504 MemoryAccessNontemporalMask = 0x00000004,
508 ScopeCrossDevice = 0,
513 ScopeMax = 0x7fffffff,
516 enum GroupOperation {
517 GroupOperationReduce = 0,
518 GroupOperationInclusiveScan = 1,
519 GroupOperationExclusiveScan = 2,
520 GroupOperationMax = 0x7fffffff,
523 enum KernelEnqueueFlags {
524 KernelEnqueueFlagsNoWait = 0,
525 KernelEnqueueFlagsWaitKernel = 1,
526 KernelEnqueueFlagsWaitWorkGroup = 2,
527 KernelEnqueueFlagsMax = 0x7fffffff,
530 enum KernelProfilingInfoShift {
531 KernelProfilingInfoCmdExecTimeShift = 0,
532 KernelProfilingInfoMax = 0x7fffffff,
535 enum KernelProfilingInfoMask {
536 KernelProfilingInfoMaskNone = 0,
537 KernelProfilingInfoCmdExecTimeMask = 0x00000001,
541 CapabilityMatrix = 0,
542 CapabilityShader = 1,
543 CapabilityGeometry = 2,
544 CapabilityTessellation = 3,
545 CapabilityAddresses = 4,
546 CapabilityLinkage = 5,
547 CapabilityKernel = 6,
548 CapabilityVector16 = 7,
549 CapabilityFloat16Buffer = 8,
550 CapabilityFloat16 = 9,
551 CapabilityFloat64 = 10,
552 CapabilityInt64 = 11,
553 CapabilityInt64Atomics = 12,
554 CapabilityImageBasic = 13,
555 CapabilityImageReadWrite = 14,
556 CapabilityImageMipmap = 15,
557 CapabilityPipes = 17,
558 CapabilityGroups = 18,
559 CapabilityDeviceEnqueue = 19,
560 CapabilityLiteralSampler = 20,
561 CapabilityAtomicStorage = 21,
562 CapabilityInt16 = 22,
563 CapabilityTessellationPointSize = 23,
564 CapabilityGeometryPointSize = 24,
565 CapabilityImageGatherExtended = 25,
566 CapabilityStorageImageMultisample = 27,
567 CapabilityUniformBufferArrayDynamicIndexing = 28,
568 CapabilitySampledImageArrayDynamicIndexing = 29,
569 CapabilityStorageBufferArrayDynamicIndexing = 30,
570 CapabilityStorageImageArrayDynamicIndexing = 31,
571 CapabilityClipDistance = 32,
572 CapabilityCullDistance = 33,
573 CapabilityImageCubeArray = 34,
574 CapabilitySampleRateShading = 35,
575 CapabilityImageRect = 36,
576 CapabilitySampledRect = 37,
577 CapabilityGenericPointer = 38,
579 CapabilityInputAttachment = 40,
580 CapabilitySparseResidency = 41,
581 CapabilityMinLod = 42,
582 CapabilitySampled1D = 43,
583 CapabilityImage1D = 44,
584 CapabilitySampledCubeArray = 45,
585 CapabilitySampledBuffer = 46,
586 CapabilityImageBuffer = 47,
587 CapabilityImageMSArray = 48,
588 CapabilityStorageImageExtendedFormats = 49,
589 CapabilityImageQuery = 50,
590 CapabilityDerivativeControl = 51,
591 CapabilityInterpolationFunction = 52,
592 CapabilityTransformFeedback = 53,
593 CapabilityGeometryStreams = 54,
594 CapabilityStorageImageReadWithoutFormat = 55,
595 CapabilityStorageImageWriteWithoutFormat = 56,
596 CapabilityMultiViewport = 57,
597 CapabilityMax = 0x7fffffff,
603 OpSourceContinued = 2,
605 OpSourceExtension = 4,
611 OpExtInstImport = 11,
615 OpExecutionMode = 16,
625 OpTypeSampledImage = 27,
627 OpTypeRuntimeArray = 29,
633 OpTypeDeviceEvent = 35,
634 OpTypeReserveId = 36,
637 OpTypeForwardPointer = 39,
639 OpConstantFalse = 42,
641 OpConstantComposite = 44,
642 OpConstantSampler = 45,
644 OpSpecConstantTrue = 48,
645 OpSpecConstantFalse = 49,
647 OpSpecConstantComposite = 51,
648 OpSpecConstantOp = 52,
650 OpFunctionParameter = 55,
654 OpImageTexelPointer = 60,
658 OpCopyMemorySized = 64,
660 OpInBoundsAccessChain = 66,
661 OpPtrAccessChain = 67,
663 OpGenericPtrMemSemantics = 69,
664 OpInBoundsPtrAccessChain = 70,
666 OpMemberDecorate = 72,
667 OpDecorationGroup = 73,
668 OpGroupDecorate = 74,
669 OpGroupMemberDecorate = 75,
670 OpVectorExtractDynamic = 77,
671 OpVectorInsertDynamic = 78,
672 OpVectorShuffle = 79,
673 OpCompositeConstruct = 80,
674 OpCompositeExtract = 81,
675 OpCompositeInsert = 82,
679 OpImageSampleImplicitLod = 87,
680 OpImageSampleExplicitLod = 88,
681 OpImageSampleDrefImplicitLod = 89,
682 OpImageSampleDrefExplicitLod = 90,
683 OpImageSampleProjImplicitLod = 91,
684 OpImageSampleProjExplicitLod = 92,
685 OpImageSampleProjDrefImplicitLod = 93,
686 OpImageSampleProjDrefExplicitLod = 94,
689 OpImageDrefGather = 97,
693 OpImageQueryFormat = 101,
694 OpImageQueryOrder = 102,
695 OpImageQuerySizeLod = 103,
696 OpImageQuerySize = 104,
697 OpImageQueryLod = 105,
698 OpImageQueryLevels = 106,
699 OpImageQuerySamples = 107,
707 OpQuantizeToF16 = 116,
708 OpConvertPtrToU = 117,
709 OpSatConvertSToU = 118,
710 OpSatConvertUToS = 119,
711 OpConvertUToPtr = 120,
712 OpPtrCastToGeneric = 121,
713 OpGenericCastToPtr = 122,
714 OpGenericCastToPtrExplicit = 123,
732 OpVectorTimesScalar = 142,
733 OpMatrixTimesScalar = 143,
734 OpVectorTimesMatrix = 144,
735 OpMatrixTimesVector = 145,
736 OpMatrixTimesMatrix = 146,
737 OpOuterProduct = 147,
741 OpUMulExtended = 151,
742 OpSMulExtended = 152,
750 OpLessOrGreater = 161,
753 OpLogicalEqual = 164,
754 OpLogicalNotEqual = 165,
761 OpUGreaterThan = 172,
762 OpSGreaterThan = 173,
763 OpUGreaterThanEqual = 174,
764 OpSGreaterThanEqual = 175,
767 OpULessThanEqual = 178,
768 OpSLessThanEqual = 179,
771 OpFOrdNotEqual = 182,
772 OpFUnordNotEqual = 183,
773 OpFOrdLessThan = 184,
774 OpFUnordLessThan = 185,
775 OpFOrdGreaterThan = 186,
776 OpFUnordGreaterThan = 187,
777 OpFOrdLessThanEqual = 188,
778 OpFUnordLessThanEqual = 189,
779 OpFOrdGreaterThanEqual = 190,
780 OpFUnordGreaterThanEqual = 191,
781 OpShiftRightLogical = 194,
782 OpShiftRightArithmetic = 195,
783 OpShiftLeftLogical = 196,
788 OpBitFieldInsert = 201,
789 OpBitFieldSExtract = 202,
790 OpBitFieldUExtract = 203,
801 OpFwidthCoarse = 215,
803 OpEndPrimitive = 219,
804 OpEmitStreamVertex = 220,
805 OpEndStreamPrimitive = 221,
806 OpControlBarrier = 224,
807 OpMemoryBarrier = 225,
810 OpAtomicExchange = 229,
811 OpAtomicCompareExchange = 230,
812 OpAtomicCompareExchangeWeak = 231,
813 OpAtomicIIncrement = 232,
814 OpAtomicIDecrement = 233,
826 OpSelectionMerge = 247,
829 OpBranchConditional = 250,
835 OpLifetimeStart = 256,
836 OpLifetimeStop = 257,
837 OpGroupAsyncCopy = 259,
838 OpGroupWaitEvents = 260,
841 OpGroupBroadcast = 263,
852 OpReservedReadPipe = 276,
853 OpReservedWritePipe = 277,
854 OpReserveReadPipePackets = 278,
855 OpReserveWritePipePackets = 279,
856 OpCommitReadPipe = 280,
857 OpCommitWritePipe = 281,
858 OpIsValidReserveId = 282,
859 OpGetNumPipePackets = 283,
860 OpGetMaxPipePackets = 284,
861 OpGroupReserveReadPipePackets = 285,
862 OpGroupReserveWritePipePackets = 286,
863 OpGroupCommitReadPipe = 287,
864 OpGroupCommitWritePipe = 288,
865 OpEnqueueMarker = 291,
866 OpEnqueueKernel = 292,
867 OpGetKernelNDrangeSubGroupCount = 293,
868 OpGetKernelNDrangeMaxSubGroupSize = 294,
869 OpGetKernelWorkGroupSize = 295,
870 OpGetKernelPreferredWorkGroupSizeMultiple = 296,
872 OpReleaseEvent = 298,
873 OpCreateUserEvent = 299,
874 OpIsValidEvent = 300,
875 OpSetUserEventStatus = 301,
876 OpCaptureEventProfilingInfo = 302,
877 OpGetDefaultQueue = 303,
878 OpBuildNDRange = 304,
879 OpImageSparseSampleImplicitLod = 305,
880 OpImageSparseSampleExplicitLod = 306,
881 OpImageSparseSampleDrefImplicitLod = 307,
882 OpImageSparseSampleDrefExplicitLod = 308,
883 OpImageSparseSampleProjImplicitLod = 309,
884 OpImageSparseSampleProjExplicitLod = 310,
885 OpImageSparseSampleProjDrefImplicitLod = 311,
886 OpImageSparseSampleProjDrefExplicitLod = 312,
887 OpImageSparseFetch = 313,
888 OpImageSparseGather = 314,
889 OpImageSparseDrefGather = 315,
890 OpImageSparseTexelsResident = 316,
892 OpAtomicFlagTestAndSet = 318,
893 OpAtomicFlagClear = 319,
894 OpImageSparseRead = 320,
898 // Overload operator| for mask bit combining
900 inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
901 inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); }
902 inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); }
903 inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); }
904 inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); }
905 inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); }
906 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); }
907 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); }
909 } // end namespace spv
911 #endif // #ifndef spirv_HPP