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