1// Copyright (c) 2014-2018 The Khronos Group Inc. 2// 3// Permission is hereby granted, free of charge, to any person obtaining a copy 4// of this software and/or associated documentation files (the "Materials"), 5// to deal in the Materials without restriction, including without limitation 6// the rights to use, copy, modify, merge, publish, distribute, sublicense, 7// and/or sell copies of the Materials, and to permit persons to whom the 8// Materials are furnished to do so, subject to the following conditions: 9// 10// The above copyright notice and this permission notice shall be included in 11// all copies or substantial portions of the Materials. 12// 13// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS 14// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND 15// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ 16// 17// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 18// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 20// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 22// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS 23// IN THE MATERIALS. 24 25// This header is automatically generated by the same tool that creates 26// the Binary Section of the SPIR-V specification. 27 28// Enumeration tokens for SPIR-V, in various styles: 29// C, C++, C++11, JSON, Lua, Python 30// 31// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL 32// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL 33// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL 34// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL 35// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] 36// 37// Some tokens act like mask values, which can be OR'd together, 38// while others are mutually exclusive. The mask-like ones have 39// "Mask" in their name, and a parallel enum that has the shift 40// amount (1 << x) for each corresponding enumerant. 41 42#ifndef spirv_HPP 43#define spirv_HPP 44 45namespace spv { 46 47typedef unsigned int Id; 48 49#define SPV_VERSION 0x10300 50#define SPV_REVISION 1 51 52static const unsigned int MagicNumber = 0x07230203; 53static const unsigned int Version = 0x00010300; 54static const unsigned int Revision = 1; 55static const unsigned int OpCodeMask = 0xffff; 56static const unsigned int WordCountShift = 16; 57 58enum class SourceLanguage : unsigned { 59 Unknown = 0, 60 ESSL = 1, 61 GLSL = 2, 62 OpenCL_C = 3, 63 OpenCL_CPP = 4, 64 HLSL = 5, 65 Max = 0x7fffffff, 66}; 67 68enum class ExecutionModel : unsigned { 69 Vertex = 0, 70 TessellationControl = 1, 71 TessellationEvaluation = 2, 72 Geometry = 3, 73 Fragment = 4, 74 GLCompute = 5, 75 Kernel = 6, 76 Max = 0x7fffffff, 77}; 78 79enum class AddressingModel : unsigned { 80 Logical = 0, 81 Physical32 = 1, 82 Physical64 = 2, 83 Max = 0x7fffffff, 84}; 85 86enum class MemoryModel : unsigned { 87 Simple = 0, 88 GLSL450 = 1, 89 OpenCL = 2, 90 Max = 0x7fffffff, 91}; 92 93enum class ExecutionMode : unsigned { 94 Invocations = 0, 95 SpacingEqual = 1, 96 SpacingFractionalEven = 2, 97 SpacingFractionalOdd = 3, 98 VertexOrderCw = 4, 99 VertexOrderCcw = 5, 100 PixelCenterInteger = 6, 101 OriginUpperLeft = 7, 102 OriginLowerLeft = 8, 103 EarlyFragmentTests = 9, 104 PointMode = 10, 105 Xfb = 11, 106 DepthReplacing = 12, 107 DepthGreater = 14, 108 DepthLess = 15, 109 DepthUnchanged = 16, 110 LocalSize = 17, 111 LocalSizeHint = 18, 112 InputPoints = 19, 113 InputLines = 20, 114 InputLinesAdjacency = 21, 115 Triangles = 22, 116 InputTrianglesAdjacency = 23, 117 Quads = 24, 118 Isolines = 25, 119 OutputVertices = 26, 120 OutputPoints = 27, 121 OutputLineStrip = 28, 122 OutputTriangleStrip = 29, 123 VecTypeHint = 30, 124 ContractionOff = 31, 125 Initializer = 33, 126 Finalizer = 34, 127 SubgroupSize = 35, 128 SubgroupsPerWorkgroup = 36, 129 SubgroupsPerWorkgroupId = 37, 130 LocalSizeId = 38, 131 LocalSizeHintId = 39, 132 PostDepthCoverage = 4446, 133 StencilRefReplacingEXT = 5027, 134 Max = 0x7fffffff, 135}; 136 137enum class StorageClass : unsigned { 138 UniformConstant = 0, 139 Input = 1, 140 Uniform = 2, 141 Output = 3, 142 Workgroup = 4, 143 CrossWorkgroup = 5, 144 Private = 6, 145 Function = 7, 146 Generic = 8, 147 PushConstant = 9, 148 AtomicCounter = 10, 149 Image = 11, 150 StorageBuffer = 12, 151 Max = 0x7fffffff, 152}; 153 154enum class Dim : unsigned { 155 Dim1D = 0, 156 Dim2D = 1, 157 Dim3D = 2, 158 Cube = 3, 159 Rect = 4, 160 Buffer = 5, 161 SubpassData = 6, 162 Max = 0x7fffffff, 163}; 164 165enum class SamplerAddressingMode : unsigned { 166 None = 0, 167 ClampToEdge = 1, 168 Clamp = 2, 169 Repeat = 3, 170 RepeatMirrored = 4, 171 Max = 0x7fffffff, 172}; 173 174enum class SamplerFilterMode : unsigned { 175 Nearest = 0, 176 Linear = 1, 177 Max = 0x7fffffff, 178}; 179 180enum class ImageFormat : unsigned { 181 Unknown = 0, 182 Rgba32f = 1, 183 Rgba16f = 2, 184 R32f = 3, 185 Rgba8 = 4, 186 Rgba8Snorm = 5, 187 Rg32f = 6, 188 Rg16f = 7, 189 R11fG11fB10f = 8, 190 R16f = 9, 191 Rgba16 = 10, 192 Rgb10A2 = 11, 193 Rg16 = 12, 194 Rg8 = 13, 195 R16 = 14, 196 R8 = 15, 197 Rgba16Snorm = 16, 198 Rg16Snorm = 17, 199 Rg8Snorm = 18, 200 R16Snorm = 19, 201 R8Snorm = 20, 202 Rgba32i = 21, 203 Rgba16i = 22, 204 Rgba8i = 23, 205 R32i = 24, 206 Rg32i = 25, 207 Rg16i = 26, 208 Rg8i = 27, 209 R16i = 28, 210 R8i = 29, 211 Rgba32ui = 30, 212 Rgba16ui = 31, 213 Rgba8ui = 32, 214 R32ui = 33, 215 Rgb10a2ui = 34, 216 Rg32ui = 35, 217 Rg16ui = 36, 218 Rg8ui = 37, 219 R16ui = 38, 220 R8ui = 39, 221 Max = 0x7fffffff, 222}; 223 224enum class ImageChannelOrder : unsigned { 225 R = 0, 226 A = 1, 227 RG = 2, 228 RA = 3, 229 RGB = 4, 230 RGBA = 5, 231 BGRA = 6, 232 ARGB = 7, 233 Intensity = 8, 234 Luminance = 9, 235 Rx = 10, 236 RGx = 11, 237 RGBx = 12, 238 Depth = 13, 239 DepthStencil = 14, 240 sRGB = 15, 241 sRGBx = 16, 242 sRGBA = 17, 243 sBGRA = 18, 244 ABGR = 19, 245 Max = 0x7fffffff, 246}; 247 248enum class ImageChannelDataType : unsigned { 249 SnormInt8 = 0, 250 SnormInt16 = 1, 251 UnormInt8 = 2, 252 UnormInt16 = 3, 253 UnormShort565 = 4, 254 UnormShort555 = 5, 255 UnormInt101010 = 6, 256 SignedInt8 = 7, 257 SignedInt16 = 8, 258 SignedInt32 = 9, 259 UnsignedInt8 = 10, 260 UnsignedInt16 = 11, 261 UnsignedInt32 = 12, 262 HalfFloat = 13, 263 Float = 14, 264 UnormInt24 = 15, 265 UnormInt101010_2 = 16, 266 Max = 0x7fffffff, 267}; 268 269enum class ImageOperandsShift : unsigned { 270 Bias = 0, 271 Lod = 1, 272 Grad = 2, 273 ConstOffset = 3, 274 Offset = 4, 275 ConstOffsets = 5, 276 Sample = 6, 277 MinLod = 7, 278 Max = 0x7fffffff, 279}; 280 281enum class ImageOperandsMask : unsigned { 282 MaskNone = 0, 283 Bias = 0x00000001, 284 Lod = 0x00000002, 285 Grad = 0x00000004, 286 ConstOffset = 0x00000008, 287 Offset = 0x00000010, 288 ConstOffsets = 0x00000020, 289 Sample = 0x00000040, 290 MinLod = 0x00000080, 291}; 292 293enum class FPFastMathModeShift : unsigned { 294 NotNaN = 0, 295 NotInf = 1, 296 NSZ = 2, 297 AllowRecip = 3, 298 Fast = 4, 299 Max = 0x7fffffff, 300}; 301 302enum class FPFastMathModeMask : unsigned { 303 MaskNone = 0, 304 NotNaN = 0x00000001, 305 NotInf = 0x00000002, 306 NSZ = 0x00000004, 307 AllowRecip = 0x00000008, 308 Fast = 0x00000010, 309}; 310 311enum class FPRoundingMode : unsigned { 312 RTE = 0, 313 RTZ = 1, 314 RTP = 2, 315 RTN = 3, 316 Max = 0x7fffffff, 317}; 318 319enum class LinkageType : unsigned { 320 Export = 0, 321 Import = 1, 322 Max = 0x7fffffff, 323}; 324 325enum class AccessQualifier : unsigned { 326 ReadOnly = 0, 327 WriteOnly = 1, 328 ReadWrite = 2, 329 Max = 0x7fffffff, 330}; 331 332enum class FunctionParameterAttribute : unsigned { 333 Zext = 0, 334 Sext = 1, 335 ByVal = 2, 336 Sret = 3, 337 NoAlias = 4, 338 NoCapture = 5, 339 NoWrite = 6, 340 NoReadWrite = 7, 341 Max = 0x7fffffff, 342}; 343 344enum class Decoration : unsigned { 345 RelaxedPrecision = 0, 346 SpecId = 1, 347 Block = 2, 348 BufferBlock = 3, 349 RowMajor = 4, 350 ColMajor = 5, 351 ArrayStride = 6, 352 MatrixStride = 7, 353 GLSLShared = 8, 354 GLSLPacked = 9, 355 CPacked = 10, 356 BuiltIn = 11, 357 NoPerspective = 13, 358 Flat = 14, 359 Patch = 15, 360 Centroid = 16, 361 Sample = 17, 362 Invariant = 18, 363 Restrict = 19, 364 Aliased = 20, 365 Volatile = 21, 366 Constant = 22, 367 Coherent = 23, 368 NonWritable = 24, 369 NonReadable = 25, 370 Uniform = 26, 371 SaturatedConversion = 28, 372 Stream = 29, 373 Location = 30, 374 Component = 31, 375 Index = 32, 376 Binding = 33, 377 DescriptorSet = 34, 378 Offset = 35, 379 XfbBuffer = 36, 380 XfbStride = 37, 381 FuncParamAttr = 38, 382 FPRoundingMode = 39, 383 FPFastMathMode = 40, 384 LinkageAttributes = 41, 385 NoContraction = 42, 386 InputAttachmentIndex = 43, 387 Alignment = 44, 388 MaxByteOffset = 45, 389 AlignmentId = 46, 390 MaxByteOffsetId = 47, 391 ExplicitInterpAMD = 4999, 392 OverrideCoverageNV = 5248, 393 PassthroughNV = 5250, 394 ViewportRelativeNV = 5252, 395 SecondaryViewportRelativeNV = 5256, 396 NonUniformEXT = 5300, 397 HlslCounterBufferGOOGLE = 5634, 398 HlslSemanticGOOGLE = 5635, 399 Max = 0x7fffffff, 400}; 401 402enum class BuiltIn : unsigned { 403 Position = 0, 404 PointSize = 1, 405 ClipDistance = 3, 406 CullDistance = 4, 407 VertexId = 5, 408 InstanceId = 6, 409 PrimitiveId = 7, 410 InvocationId = 8, 411 Layer = 9, 412 ViewportIndex = 10, 413 TessLevelOuter = 11, 414 TessLevelInner = 12, 415 TessCoord = 13, 416 PatchVertices = 14, 417 FragCoord = 15, 418 PointCoord = 16, 419 FrontFacing = 17, 420 SampleId = 18, 421 SamplePosition = 19, 422 SampleMask = 20, 423 FragDepth = 22, 424 HelperInvocation = 23, 425 NumWorkgroups = 24, 426 WorkgroupSize = 25, 427 WorkgroupId = 26, 428 LocalInvocationId = 27, 429 GlobalInvocationId = 28, 430 LocalInvocationIndex = 29, 431 WorkDim = 30, 432 GlobalSize = 31, 433 EnqueuedWorkgroupSize = 32, 434 GlobalOffset = 33, 435 GlobalLinearId = 34, 436 SubgroupSize = 36, 437 SubgroupMaxSize = 37, 438 NumSubgroups = 38, 439 NumEnqueuedSubgroups = 39, 440 SubgroupId = 40, 441 SubgroupLocalInvocationId = 41, 442 VertexIndex = 42, 443 InstanceIndex = 43, 444 SubgroupEqMask = 4416, 445 SubgroupEqMaskKHR = 4416, 446 SubgroupGeMask = 4417, 447 SubgroupGeMaskKHR = 4417, 448 SubgroupGtMask = 4418, 449 SubgroupGtMaskKHR = 4418, 450 SubgroupLeMask = 4419, 451 SubgroupLeMaskKHR = 4419, 452 SubgroupLtMask = 4420, 453 SubgroupLtMaskKHR = 4420, 454 BaseVertex = 4424, 455 BaseInstance = 4425, 456 DrawIndex = 4426, 457 DeviceIndex = 4438, 458 ViewIndex = 4440, 459 BaryCoordNoPerspAMD = 4992, 460 BaryCoordNoPerspCentroidAMD = 4993, 461 BaryCoordNoPerspSampleAMD = 4994, 462 BaryCoordSmoothAMD = 4995, 463 BaryCoordSmoothCentroidAMD = 4996, 464 BaryCoordSmoothSampleAMD = 4997, 465 BaryCoordPullModelAMD = 4998, 466 FragStencilRefEXT = 5014, 467 ViewportMaskNV = 5253, 468 SecondaryPositionNV = 5257, 469 SecondaryViewportMaskNV = 5258, 470 PositionPerViewNV = 5261, 471 ViewportMaskPerViewNV = 5262, 472 FullyCoveredEXT = 5264, 473 Max = 0x7fffffff, 474}; 475 476enum class SelectionControlShift : unsigned { 477 Flatten = 0, 478 DontFlatten = 1, 479 Max = 0x7fffffff, 480}; 481 482enum class SelectionControlMask : unsigned { 483 MaskNone = 0, 484 Flatten = 0x00000001, 485 DontFlatten = 0x00000002, 486}; 487 488enum class LoopControlShift : unsigned { 489 Unroll = 0, 490 DontUnroll = 1, 491 DependencyInfinite = 2, 492 DependencyLength = 3, 493 Max = 0x7fffffff, 494}; 495 496enum class LoopControlMask : unsigned { 497 MaskNone = 0, 498 Unroll = 0x00000001, 499 DontUnroll = 0x00000002, 500 DependencyInfinite = 0x00000004, 501 DependencyLength = 0x00000008, 502}; 503 504enum class FunctionControlShift : unsigned { 505 Inline = 0, 506 DontInline = 1, 507 Pure = 2, 508 Const = 3, 509 Max = 0x7fffffff, 510}; 511 512enum class FunctionControlMask : unsigned { 513 MaskNone = 0, 514 Inline = 0x00000001, 515 DontInline = 0x00000002, 516 Pure = 0x00000004, 517 Const = 0x00000008, 518}; 519 520enum class MemorySemanticsShift : unsigned { 521 Acquire = 1, 522 Release = 2, 523 AcquireRelease = 3, 524 SequentiallyConsistent = 4, 525 UniformMemory = 6, 526 SubgroupMemory = 7, 527 WorkgroupMemory = 8, 528 CrossWorkgroupMemory = 9, 529 AtomicCounterMemory = 10, 530 ImageMemory = 11, 531 Max = 0x7fffffff, 532}; 533 534enum class MemorySemanticsMask : unsigned { 535 MaskNone = 0, 536 Acquire = 0x00000002, 537 Release = 0x00000004, 538 AcquireRelease = 0x00000008, 539 SequentiallyConsistent = 0x00000010, 540 UniformMemory = 0x00000040, 541 SubgroupMemory = 0x00000080, 542 WorkgroupMemory = 0x00000100, 543 CrossWorkgroupMemory = 0x00000200, 544 AtomicCounterMemory = 0x00000400, 545 ImageMemory = 0x00000800, 546}; 547 548enum class MemoryAccessShift : unsigned { 549 Volatile = 0, 550 Aligned = 1, 551 Nontemporal = 2, 552 Max = 0x7fffffff, 553}; 554 555enum class MemoryAccessMask : unsigned { 556 MaskNone = 0, 557 Volatile = 0x00000001, 558 Aligned = 0x00000002, 559 Nontemporal = 0x00000004, 560}; 561 562enum class Scope : unsigned { 563 CrossDevice = 0, 564 Device = 1, 565 Workgroup = 2, 566 Subgroup = 3, 567 Invocation = 4, 568 Max = 0x7fffffff, 569}; 570 571enum class GroupOperation : unsigned { 572 Reduce = 0, 573 InclusiveScan = 1, 574 ExclusiveScan = 2, 575 ClusteredReduce = 3, 576 PartitionedReduceNV = 6, 577 PartitionedInclusiveScanNV = 7, 578 PartitionedExclusiveScanNV = 8, 579 Max = 0x7fffffff, 580}; 581 582enum class KernelEnqueueFlags : unsigned { 583 NoWait = 0, 584 WaitKernel = 1, 585 WaitWorkGroup = 2, 586 Max = 0x7fffffff, 587}; 588 589enum class KernelProfilingInfoShift : unsigned { 590 CmdExecTime = 0, 591 Max = 0x7fffffff, 592}; 593 594enum class KernelProfilingInfoMask : unsigned { 595 MaskNone = 0, 596 CmdExecTime = 0x00000001, 597}; 598 599enum class Capability : unsigned { 600 Matrix = 0, 601 Shader = 1, 602 Geometry = 2, 603 Tessellation = 3, 604 Addresses = 4, 605 Linkage = 5, 606 Kernel = 6, 607 Vector16 = 7, 608 Float16Buffer = 8, 609 Float16 = 9, 610 Float64 = 10, 611 Int64 = 11, 612 Int64Atomics = 12, 613 ImageBasic = 13, 614 ImageReadWrite = 14, 615 ImageMipmap = 15, 616 Pipes = 17, 617 Groups = 18, 618 DeviceEnqueue = 19, 619 LiteralSampler = 20, 620 AtomicStorage = 21, 621 Int16 = 22, 622 TessellationPointSize = 23, 623 GeometryPointSize = 24, 624 ImageGatherExtended = 25, 625 StorageImageMultisample = 27, 626 UniformBufferArrayDynamicIndexing = 28, 627 SampledImageArrayDynamicIndexing = 29, 628 StorageBufferArrayDynamicIndexing = 30, 629 StorageImageArrayDynamicIndexing = 31, 630 ClipDistance = 32, 631 CullDistance = 33, 632 ImageCubeArray = 34, 633 SampleRateShading = 35, 634 ImageRect = 36, 635 SampledRect = 37, 636 GenericPointer = 38, 637 Int8 = 39, 638 InputAttachment = 40, 639 SparseResidency = 41, 640 MinLod = 42, 641 Sampled1D = 43, 642 Image1D = 44, 643 SampledCubeArray = 45, 644 SampledBuffer = 46, 645 ImageBuffer = 47, 646 ImageMSArray = 48, 647 StorageImageExtendedFormats = 49, 648 ImageQuery = 50, 649 DerivativeControl = 51, 650 InterpolationFunction = 52, 651 TransformFeedback = 53, 652 GeometryStreams = 54, 653 StorageImageReadWithoutFormat = 55, 654 StorageImageWriteWithoutFormat = 56, 655 MultiViewport = 57, 656 SubgroupDispatch = 58, 657 NamedBarrier = 59, 658 PipeStorage = 60, 659 GroupNonUniform = 61, 660 GroupNonUniformVote = 62, 661 GroupNonUniformArithmetic = 63, 662 GroupNonUniformBallot = 64, 663 GroupNonUniformShuffle = 65, 664 GroupNonUniformShuffleRelative = 66, 665 GroupNonUniformClustered = 67, 666 GroupNonUniformQuad = 68, 667 SubgroupBallotKHR = 4423, 668 DrawParameters = 4427, 669 SubgroupVoteKHR = 4431, 670 StorageBuffer16BitAccess = 4433, 671 StorageUniformBufferBlock16 = 4433, 672 StorageUniform16 = 4434, 673 UniformAndStorageBuffer16BitAccess = 4434, 674 StoragePushConstant16 = 4435, 675 StorageInputOutput16 = 4436, 676 DeviceGroup = 4437, 677 MultiView = 4439, 678 VariablePointersStorageBuffer = 4441, 679 VariablePointers = 4442, 680 AtomicStorageOps = 4445, 681 SampleMaskPostDepthCoverage = 4447, 682 StorageBuffer8BitAccess = 4448, 683 UniformAndStorageBuffer8BitAccess = 4449, 684 StoragePushConstant8 = 4450, 685 Float16ImageAMD = 5008, 686 ImageGatherBiasLodAMD = 5009, 687 FragmentMaskAMD = 5010, 688 StencilExportEXT = 5013, 689 ImageReadWriteLodAMD = 5015, 690 SampleMaskOverrideCoverageNV = 5249, 691 GeometryShaderPassthroughNV = 5251, 692 ShaderViewportIndexLayerEXT = 5254, 693 ShaderViewportIndexLayerNV = 5254, 694 ShaderViewportMaskNV = 5255, 695 ShaderStereoViewNV = 5259, 696 PerViewAttributesNV = 5260, 697 FragmentFullyCoveredEXT = 5265, 698 GroupNonUniformPartitionedNV = 5297, 699 ShaderNonUniformEXT = 5301, 700 RuntimeDescriptorArrayEXT = 5302, 701 InputAttachmentArrayDynamicIndexingEXT = 5303, 702 UniformTexelBufferArrayDynamicIndexingEXT = 5304, 703 StorageTexelBufferArrayDynamicIndexingEXT = 5305, 704 UniformBufferArrayNonUniformIndexingEXT = 5306, 705 SampledImageArrayNonUniformIndexingEXT = 5307, 706 StorageBufferArrayNonUniformIndexingEXT = 5308, 707 StorageImageArrayNonUniformIndexingEXT = 5309, 708 InputAttachmentArrayNonUniformIndexingEXT = 5310, 709 UniformTexelBufferArrayNonUniformIndexingEXT = 5311, 710 StorageTexelBufferArrayNonUniformIndexingEXT = 5312, 711 SubgroupShuffleINTEL = 5568, 712 SubgroupBufferBlockIOINTEL = 5569, 713 SubgroupImageBlockIOINTEL = 5570, 714 Max = 0x7fffffff, 715}; 716 717enum class Op : unsigned { 718 OpNop = 0, 719 OpUndef = 1, 720 OpSourceContinued = 2, 721 OpSource = 3, 722 OpSourceExtension = 4, 723 OpName = 5, 724 OpMemberName = 6, 725 OpString = 7, 726 OpLine = 8, 727 OpExtension = 10, 728 OpExtInstImport = 11, 729 OpExtInst = 12, 730 OpMemoryModel = 14, 731 OpEntryPoint = 15, 732 OpExecutionMode = 16, 733 OpCapability = 17, 734 OpTypeVoid = 19, 735 OpTypeBool = 20, 736 OpTypeInt = 21, 737 OpTypeFloat = 22, 738 OpTypeVector = 23, 739 OpTypeMatrix = 24, 740 OpTypeImage = 25, 741 OpTypeSampler = 26, 742 OpTypeSampledImage = 27, 743 OpTypeArray = 28, 744 OpTypeRuntimeArray = 29, 745 OpTypeStruct = 30, 746 OpTypeOpaque = 31, 747 OpTypePointer = 32, 748 OpTypeFunction = 33, 749 OpTypeEvent = 34, 750 OpTypeDeviceEvent = 35, 751 OpTypeReserveId = 36, 752 OpTypeQueue = 37, 753 OpTypePipe = 38, 754 OpTypeForwardPointer = 39, 755 OpConstantTrue = 41, 756 OpConstantFalse = 42, 757 OpConstant = 43, 758 OpConstantComposite = 44, 759 OpConstantSampler = 45, 760 OpConstantNull = 46, 761 OpSpecConstantTrue = 48, 762 OpSpecConstantFalse = 49, 763 OpSpecConstant = 50, 764 OpSpecConstantComposite = 51, 765 OpSpecConstantOp = 52, 766 OpFunction = 54, 767 OpFunctionParameter = 55, 768 OpFunctionEnd = 56, 769 OpFunctionCall = 57, 770 OpVariable = 59, 771 OpImageTexelPointer = 60, 772 OpLoad = 61, 773 OpStore = 62, 774 OpCopyMemory = 63, 775 OpCopyMemorySized = 64, 776 OpAccessChain = 65, 777 OpInBoundsAccessChain = 66, 778 OpPtrAccessChain = 67, 779 OpArrayLength = 68, 780 OpGenericPtrMemSemantics = 69, 781 OpInBoundsPtrAccessChain = 70, 782 OpDecorate = 71, 783 OpMemberDecorate = 72, 784 OpDecorationGroup = 73, 785 OpGroupDecorate = 74, 786 OpGroupMemberDecorate = 75, 787 OpVectorExtractDynamic = 77, 788 OpVectorInsertDynamic = 78, 789 OpVectorShuffle = 79, 790 OpCompositeConstruct = 80, 791 OpCompositeExtract = 81, 792 OpCompositeInsert = 82, 793 OpCopyObject = 83, 794 OpTranspose = 84, 795 OpSampledImage = 86, 796 OpImageSampleImplicitLod = 87, 797 OpImageSampleExplicitLod = 88, 798 OpImageSampleDrefImplicitLod = 89, 799 OpImageSampleDrefExplicitLod = 90, 800 OpImageSampleProjImplicitLod = 91, 801 OpImageSampleProjExplicitLod = 92, 802 OpImageSampleProjDrefImplicitLod = 93, 803 OpImageSampleProjDrefExplicitLod = 94, 804 OpImageFetch = 95, 805 OpImageGather = 96, 806 OpImageDrefGather = 97, 807 OpImageRead = 98, 808 OpImageWrite = 99, 809 OpImage = 100, 810 OpImageQueryFormat = 101, 811 OpImageQueryOrder = 102, 812 OpImageQuerySizeLod = 103, 813 OpImageQuerySize = 104, 814 OpImageQueryLod = 105, 815 OpImageQueryLevels = 106, 816 OpImageQuerySamples = 107, 817 OpConvertFToU = 109, 818 OpConvertFToS = 110, 819 OpConvertSToF = 111, 820 OpConvertUToF = 112, 821 OpUConvert = 113, 822 OpSConvert = 114, 823 OpFConvert = 115, 824 OpQuantizeToF16 = 116, 825 OpConvertPtrToU = 117, 826 OpSatConvertSToU = 118, 827 OpSatConvertUToS = 119, 828 OpConvertUToPtr = 120, 829 OpPtrCastToGeneric = 121, 830 OpGenericCastToPtr = 122, 831 OpGenericCastToPtrExplicit = 123, 832 OpBitcast = 124, 833 OpSNegate = 126, 834 OpFNegate = 127, 835 OpIAdd = 128, 836 OpFAdd = 129, 837 OpISub = 130, 838 OpFSub = 131, 839 OpIMul = 132, 840 OpFMul = 133, 841 OpUDiv = 134, 842 OpSDiv = 135, 843 OpFDiv = 136, 844 OpUMod = 137, 845 OpSRem = 138, 846 OpSMod = 139, 847 OpFRem = 140, 848 OpFMod = 141, 849 OpVectorTimesScalar = 142, 850 OpMatrixTimesScalar = 143, 851 OpVectorTimesMatrix = 144, 852 OpMatrixTimesVector = 145, 853 OpMatrixTimesMatrix = 146, 854 OpOuterProduct = 147, 855 OpDot = 148, 856 OpIAddCarry = 149, 857 OpISubBorrow = 150, 858 OpUMulExtended = 151, 859 OpSMulExtended = 152, 860 OpAny = 154, 861 OpAll = 155, 862 OpIsNan = 156, 863 OpIsInf = 157, 864 OpIsFinite = 158, 865 OpIsNormal = 159, 866 OpSignBitSet = 160, 867 OpLessOrGreater = 161, 868 OpOrdered = 162, 869 OpUnordered = 163, 870 OpLogicalEqual = 164, 871 OpLogicalNotEqual = 165, 872 OpLogicalOr = 166, 873 OpLogicalAnd = 167, 874 OpLogicalNot = 168, 875 OpSelect = 169, 876 OpIEqual = 170, 877 OpINotEqual = 171, 878 OpUGreaterThan = 172, 879 OpSGreaterThan = 173, 880 OpUGreaterThanEqual = 174, 881 OpSGreaterThanEqual = 175, 882 OpULessThan = 176, 883 OpSLessThan = 177, 884 OpULessThanEqual = 178, 885 OpSLessThanEqual = 179, 886 OpFOrdEqual = 180, 887 OpFUnordEqual = 181, 888 OpFOrdNotEqual = 182, 889 OpFUnordNotEqual = 183, 890 OpFOrdLessThan = 184, 891 OpFUnordLessThan = 185, 892 OpFOrdGreaterThan = 186, 893 OpFUnordGreaterThan = 187, 894 OpFOrdLessThanEqual = 188, 895 OpFUnordLessThanEqual = 189, 896 OpFOrdGreaterThanEqual = 190, 897 OpFUnordGreaterThanEqual = 191, 898 OpShiftRightLogical = 194, 899 OpShiftRightArithmetic = 195, 900 OpShiftLeftLogical = 196, 901 OpBitwiseOr = 197, 902 OpBitwiseXor = 198, 903 OpBitwiseAnd = 199, 904 OpNot = 200, 905 OpBitFieldInsert = 201, 906 OpBitFieldSExtract = 202, 907 OpBitFieldUExtract = 203, 908 OpBitReverse = 204, 909 OpBitCount = 205, 910 OpDPdx = 207, 911 OpDPdy = 208, 912 OpFwidth = 209, 913 OpDPdxFine = 210, 914 OpDPdyFine = 211, 915 OpFwidthFine = 212, 916 OpDPdxCoarse = 213, 917 OpDPdyCoarse = 214, 918 OpFwidthCoarse = 215, 919 OpEmitVertex = 218, 920 OpEndPrimitive = 219, 921 OpEmitStreamVertex = 220, 922 OpEndStreamPrimitive = 221, 923 OpControlBarrier = 224, 924 OpMemoryBarrier = 225, 925 OpAtomicLoad = 227, 926 OpAtomicStore = 228, 927 OpAtomicExchange = 229, 928 OpAtomicCompareExchange = 230, 929 OpAtomicCompareExchangeWeak = 231, 930 OpAtomicIIncrement = 232, 931 OpAtomicIDecrement = 233, 932 OpAtomicIAdd = 234, 933 OpAtomicISub = 235, 934 OpAtomicSMin = 236, 935 OpAtomicUMin = 237, 936 OpAtomicSMax = 238, 937 OpAtomicUMax = 239, 938 OpAtomicAnd = 240, 939 OpAtomicOr = 241, 940 OpAtomicXor = 242, 941 OpPhi = 245, 942 OpLoopMerge = 246, 943 OpSelectionMerge = 247, 944 OpLabel = 248, 945 OpBranch = 249, 946 OpBranchConditional = 250, 947 OpSwitch = 251, 948 OpKill = 252, 949 OpReturn = 253, 950 OpReturnValue = 254, 951 OpUnreachable = 255, 952 OpLifetimeStart = 256, 953 OpLifetimeStop = 257, 954 OpGroupAsyncCopy = 259, 955 OpGroupWaitEvents = 260, 956 OpGroupAll = 261, 957 OpGroupAny = 262, 958 OpGroupBroadcast = 263, 959 OpGroupIAdd = 264, 960 OpGroupFAdd = 265, 961 OpGroupFMin = 266, 962 OpGroupUMin = 267, 963 OpGroupSMin = 268, 964 OpGroupFMax = 269, 965 OpGroupUMax = 270, 966 OpGroupSMax = 271, 967 OpReadPipe = 274, 968 OpWritePipe = 275, 969 OpReservedReadPipe = 276, 970 OpReservedWritePipe = 277, 971 OpReserveReadPipePackets = 278, 972 OpReserveWritePipePackets = 279, 973 OpCommitReadPipe = 280, 974 OpCommitWritePipe = 281, 975 OpIsValidReserveId = 282, 976 OpGetNumPipePackets = 283, 977 OpGetMaxPipePackets = 284, 978 OpGroupReserveReadPipePackets = 285, 979 OpGroupReserveWritePipePackets = 286, 980 OpGroupCommitReadPipe = 287, 981 OpGroupCommitWritePipe = 288, 982 OpEnqueueMarker = 291, 983 OpEnqueueKernel = 292, 984 OpGetKernelNDrangeSubGroupCount = 293, 985 OpGetKernelNDrangeMaxSubGroupSize = 294, 986 OpGetKernelWorkGroupSize = 295, 987 OpGetKernelPreferredWorkGroupSizeMultiple = 296, 988 OpRetainEvent = 297, 989 OpReleaseEvent = 298, 990 OpCreateUserEvent = 299, 991 OpIsValidEvent = 300, 992 OpSetUserEventStatus = 301, 993 OpCaptureEventProfilingInfo = 302, 994 OpGetDefaultQueue = 303, 995 OpBuildNDRange = 304, 996 OpImageSparseSampleImplicitLod = 305, 997 OpImageSparseSampleExplicitLod = 306, 998 OpImageSparseSampleDrefImplicitLod = 307, 999 OpImageSparseSampleDrefExplicitLod = 308, 1000 OpImageSparseSampleProjImplicitLod = 309, 1001 OpImageSparseSampleProjExplicitLod = 310, 1002 OpImageSparseSampleProjDrefImplicitLod = 311, 1003 OpImageSparseSampleProjDrefExplicitLod = 312, 1004 OpImageSparseFetch = 313, 1005 OpImageSparseGather = 314, 1006 OpImageSparseDrefGather = 315, 1007 OpImageSparseTexelsResident = 316, 1008 OpNoLine = 317, 1009 OpAtomicFlagTestAndSet = 318, 1010 OpAtomicFlagClear = 319, 1011 OpImageSparseRead = 320, 1012 OpSizeOf = 321, 1013 OpTypePipeStorage = 322, 1014 OpConstantPipeStorage = 323, 1015 OpCreatePipeFromPipeStorage = 324, 1016 OpGetKernelLocalSizeForSubgroupCount = 325, 1017 OpGetKernelMaxNumSubgroups = 326, 1018 OpTypeNamedBarrier = 327, 1019 OpNamedBarrierInitialize = 328, 1020 OpMemoryNamedBarrier = 329, 1021 OpModuleProcessed = 330, 1022 OpExecutionModeId = 331, 1023 OpDecorateId = 332, 1024 OpGroupNonUniformElect = 333, 1025 OpGroupNonUniformAll = 334, 1026 OpGroupNonUniformAny = 335, 1027 OpGroupNonUniformAllEqual = 336, 1028 OpGroupNonUniformBroadcast = 337, 1029 OpGroupNonUniformBroadcastFirst = 338, 1030 OpGroupNonUniformBallot = 339, 1031 OpGroupNonUniformInverseBallot = 340, 1032 OpGroupNonUniformBallotBitExtract = 341, 1033 OpGroupNonUniformBallotBitCount = 342, 1034 OpGroupNonUniformBallotFindLSB = 343, 1035 OpGroupNonUniformBallotFindMSB = 344, 1036 OpGroupNonUniformShuffle = 345, 1037 OpGroupNonUniformShuffleXor = 346, 1038 OpGroupNonUniformShuffleUp = 347, 1039 OpGroupNonUniformShuffleDown = 348, 1040 OpGroupNonUniformIAdd = 349, 1041 OpGroupNonUniformFAdd = 350, 1042 OpGroupNonUniformIMul = 351, 1043 OpGroupNonUniformFMul = 352, 1044 OpGroupNonUniformSMin = 353, 1045 OpGroupNonUniformUMin = 354, 1046 OpGroupNonUniformFMin = 355, 1047 OpGroupNonUniformSMax = 356, 1048 OpGroupNonUniformUMax = 357, 1049 OpGroupNonUniformFMax = 358, 1050 OpGroupNonUniformBitwiseAnd = 359, 1051 OpGroupNonUniformBitwiseOr = 360, 1052 OpGroupNonUniformBitwiseXor = 361, 1053 OpGroupNonUniformLogicalAnd = 362, 1054 OpGroupNonUniformLogicalOr = 363, 1055 OpGroupNonUniformLogicalXor = 364, 1056 OpGroupNonUniformQuadBroadcast = 365, 1057 OpGroupNonUniformQuadSwap = 366, 1058 OpSubgroupBallotKHR = 4421, 1059 OpSubgroupFirstInvocationKHR = 4422, 1060 OpSubgroupAllKHR = 4428, 1061 OpSubgroupAnyKHR = 4429, 1062 OpSubgroupAllEqualKHR = 4430, 1063 OpSubgroupReadInvocationKHR = 4432, 1064 OpGroupIAddNonUniformAMD = 5000, 1065 OpGroupFAddNonUniformAMD = 5001, 1066 OpGroupFMinNonUniformAMD = 5002, 1067 OpGroupUMinNonUniformAMD = 5003, 1068 OpGroupSMinNonUniformAMD = 5004, 1069 OpGroupFMaxNonUniformAMD = 5005, 1070 OpGroupUMaxNonUniformAMD = 5006, 1071 OpGroupSMaxNonUniformAMD = 5007, 1072 OpFragmentMaskFetchAMD = 5011, 1073 OpFragmentFetchAMD = 5012, 1074 OpGroupNonUniformPartitionNV = 5296, 1075 OpSubgroupShuffleINTEL = 5571, 1076 OpSubgroupShuffleDownINTEL = 5572, 1077 OpSubgroupShuffleUpINTEL = 5573, 1078 OpSubgroupShuffleXorINTEL = 5574, 1079 OpSubgroupBlockReadINTEL = 5575, 1080 OpSubgroupBlockWriteINTEL = 5576, 1081 OpSubgroupImageBlockReadINTEL = 5577, 1082 OpSubgroupImageBlockWriteINTEL = 5578, 1083 OpDecorateStringGOOGLE = 5632, 1084 OpMemberDecorateStringGOOGLE = 5633, 1085 Max = 0x7fffffff, 1086}; 1087 1088// Overload operator| for mask bit combining 1089 1090inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } 1091inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } 1092inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } 1093inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } 1094inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } 1095inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } 1096inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } 1097inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } 1098 1099} // end namespace spv 1100 1101#endif // #ifndef spirv_HPP 1102 1103