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