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