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