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 45 namespace spv { 46 47 typedef unsigned int Id; 48 49 #define SPV_VERSION 0x10100 50 #define SPV_REVISION 1 51 52 static const unsigned int MagicNumber = 0x07230203; 53 static const unsigned int Version = 0x00010100; 54 static const unsigned int Revision = 1; 55 static const unsigned int OpCodeMask = 0xffff; 56 static const unsigned int WordCountShift = 16; 57 58 enum SourceLanguage { 59 SourceLanguageUnknown = 0, 60 SourceLanguageESSL = 1, 61 SourceLanguageGLSL = 2, 62 SourceLanguageOpenCL_C = 3, 63 SourceLanguageOpenCL_CPP = 4, 64 }; 65 66 enum ExecutionModel { 67 ExecutionModelVertex = 0, 68 ExecutionModelTessellationControl = 1, 69 ExecutionModelTessellationEvaluation = 2, 70 ExecutionModelGeometry = 3, 71 ExecutionModelFragment = 4, 72 ExecutionModelGLCompute = 5, 73 ExecutionModelKernel = 6, 74 }; 75 76 enum AddressingModel { 77 AddressingModelLogical = 0, 78 AddressingModelPhysical32 = 1, 79 AddressingModelPhysical64 = 2, 80 }; 81 82 enum MemoryModel { 83 MemoryModelSimple = 0, 84 MemoryModelGLSL450 = 1, 85 MemoryModelOpenCL = 2, 86 }; 87 88 enum ExecutionMode { 89 ExecutionModeInvocations = 0, 90 ExecutionModeSpacingEqual = 1, 91 ExecutionModeSpacingFractionalEven = 2, 92 ExecutionModeSpacingFractionalOdd = 3, 93 ExecutionModeVertexOrderCw = 4, 94 ExecutionModeVertexOrderCcw = 5, 95 ExecutionModePixelCenterInteger = 6, 96 ExecutionModeOriginUpperLeft = 7, 97 ExecutionModeOriginLowerLeft = 8, 98 ExecutionModeEarlyFragmentTests = 9, 99 ExecutionModePointMode = 10, 100 ExecutionModeXfb = 11, 101 ExecutionModeDepthReplacing = 12, 102 ExecutionModeDepthGreater = 14, 103 ExecutionModeDepthLess = 15, 104 ExecutionModeDepthUnchanged = 16, 105 ExecutionModeLocalSize = 17, 106 ExecutionModeLocalSizeHint = 18, 107 ExecutionModeInputPoints = 19, 108 ExecutionModeInputLines = 20, 109 ExecutionModeInputLinesAdjacency = 21, 110 ExecutionModeTriangles = 22, 111 ExecutionModeInputTrianglesAdjacency = 23, 112 ExecutionModeQuads = 24, 113 ExecutionModeIsolines = 25, 114 ExecutionModeOutputVertices = 26, 115 ExecutionModeOutputPoints = 27, 116 ExecutionModeOutputLineStrip = 28, 117 ExecutionModeOutputTriangleStrip = 29, 118 ExecutionModeVecTypeHint = 30, 119 ExecutionModeContractionOff = 31, 120 ExecutionModeInitializer = 33, 121 ExecutionModeFinalizer = 34, 122 ExecutionModeSubgroupSize = 35, 123 ExecutionModeSubgroupsPerWorkgroup = 36, 124 }; 125 126 enum StorageClass { 127 StorageClassUniformConstant = 0, 128 StorageClassInput = 1, 129 StorageClassUniform = 2, 130 StorageClassOutput = 3, 131 StorageClassWorkgroup = 4, 132 StorageClassCrossWorkgroup = 5, 133 StorageClassPrivate = 6, 134 StorageClassFunction = 7, 135 StorageClassGeneric = 8, 136 StorageClassPushConstant = 9, 137 StorageClassAtomicCounter = 10, 138 StorageClassImage = 11, 139 }; 140 141 enum Dim { 142 Dim1D = 0, 143 Dim2D = 1, 144 Dim3D = 2, 145 DimCube = 3, 146 DimRect = 4, 147 DimBuffer = 5, 148 DimSubpassData = 6, 149 }; 150 151 enum SamplerAddressingMode { 152 SamplerAddressingModeNone = 0, 153 SamplerAddressingModeClampToEdge = 1, 154 SamplerAddressingModeClamp = 2, 155 SamplerAddressingModeRepeat = 3, 156 SamplerAddressingModeRepeatMirrored = 4, 157 }; 158 159 enum SamplerFilterMode { 160 SamplerFilterModeNearest = 0, 161 SamplerFilterModeLinear = 1, 162 }; 163 164 enum ImageFormat { 165 ImageFormatUnknown = 0, 166 ImageFormatRgba32f = 1, 167 ImageFormatRgba16f = 2, 168 ImageFormatR32f = 3, 169 ImageFormatRgba8 = 4, 170 ImageFormatRgba8Snorm = 5, 171 ImageFormatRg32f = 6, 172 ImageFormatRg16f = 7, 173 ImageFormatR11fG11fB10f = 8, 174 ImageFormatR16f = 9, 175 ImageFormatRgba16 = 10, 176 ImageFormatRgb10A2 = 11, 177 ImageFormatRg16 = 12, 178 ImageFormatRg8 = 13, 179 ImageFormatR16 = 14, 180 ImageFormatR8 = 15, 181 ImageFormatRgba16Snorm = 16, 182 ImageFormatRg16Snorm = 17, 183 ImageFormatRg8Snorm = 18, 184 ImageFormatR16Snorm = 19, 185 ImageFormatR8Snorm = 20, 186 ImageFormatRgba32i = 21, 187 ImageFormatRgba16i = 22, 188 ImageFormatRgba8i = 23, 189 ImageFormatR32i = 24, 190 ImageFormatRg32i = 25, 191 ImageFormatRg16i = 26, 192 ImageFormatRg8i = 27, 193 ImageFormatR16i = 28, 194 ImageFormatR8i = 29, 195 ImageFormatRgba32ui = 30, 196 ImageFormatRgba16ui = 31, 197 ImageFormatRgba8ui = 32, 198 ImageFormatR32ui = 33, 199 ImageFormatRgb10a2ui = 34, 200 ImageFormatRg32ui = 35, 201 ImageFormatRg16ui = 36, 202 ImageFormatRg8ui = 37, 203 ImageFormatR16ui = 38, 204 ImageFormatR8ui = 39, 205 }; 206 207 enum ImageChannelOrder { 208 ImageChannelOrderR = 0, 209 ImageChannelOrderA = 1, 210 ImageChannelOrderRG = 2, 211 ImageChannelOrderRA = 3, 212 ImageChannelOrderRGB = 4, 213 ImageChannelOrderRGBA = 5, 214 ImageChannelOrderBGRA = 6, 215 ImageChannelOrderARGB = 7, 216 ImageChannelOrderIntensity = 8, 217 ImageChannelOrderLuminance = 9, 218 ImageChannelOrderRx = 10, 219 ImageChannelOrderRGx = 11, 220 ImageChannelOrderRGBx = 12, 221 ImageChannelOrderDepth = 13, 222 ImageChannelOrderDepthStencil = 14, 223 ImageChannelOrdersRGB = 15, 224 ImageChannelOrdersRGBx = 16, 225 ImageChannelOrdersRGBA = 17, 226 ImageChannelOrdersBGRA = 18, 227 ImageChannelOrderABGR = 19, 228 }; 229 230 enum ImageChannelDataType { 231 ImageChannelDataTypeSnormInt8 = 0, 232 ImageChannelDataTypeSnormInt16 = 1, 233 ImageChannelDataTypeUnormInt8 = 2, 234 ImageChannelDataTypeUnormInt16 = 3, 235 ImageChannelDataTypeUnormShort565 = 4, 236 ImageChannelDataTypeUnormShort555 = 5, 237 ImageChannelDataTypeUnormInt101010 = 6, 238 ImageChannelDataTypeSignedInt8 = 7, 239 ImageChannelDataTypeSignedInt16 = 8, 240 ImageChannelDataTypeSignedInt32 = 9, 241 ImageChannelDataTypeUnsignedInt8 = 10, 242 ImageChannelDataTypeUnsignedInt16 = 11, 243 ImageChannelDataTypeUnsignedInt32 = 12, 244 ImageChannelDataTypeHalfFloat = 13, 245 ImageChannelDataTypeFloat = 14, 246 ImageChannelDataTypeUnormInt24 = 15, 247 ImageChannelDataTypeUnormInt101010_2 = 16, 248 }; 249 250 enum ImageOperandsShift { 251 ImageOperandsBiasShift = 0, 252 ImageOperandsLodShift = 1, 253 ImageOperandsGradShift = 2, 254 ImageOperandsConstOffsetShift = 3, 255 ImageOperandsOffsetShift = 4, 256 ImageOperandsConstOffsetsShift = 5, 257 ImageOperandsSampleShift = 6, 258 ImageOperandsMinLodShift = 7, 259 }; 260 261 enum ImageOperandsMask { 262 ImageOperandsMaskNone = 0, 263 ImageOperandsBiasMask = 0x00000001, 264 ImageOperandsLodMask = 0x00000002, 265 ImageOperandsGradMask = 0x00000004, 266 ImageOperandsConstOffsetMask = 0x00000008, 267 ImageOperandsOffsetMask = 0x00000010, 268 ImageOperandsConstOffsetsMask = 0x00000020, 269 ImageOperandsSampleMask = 0x00000040, 270 ImageOperandsMinLodMask = 0x00000080, 271 }; 272 273 enum FPFastMathModeShift { 274 FPFastMathModeNotNaNShift = 0, 275 FPFastMathModeNotInfShift = 1, 276 FPFastMathModeNSZShift = 2, 277 FPFastMathModeAllowRecipShift = 3, 278 FPFastMathModeFastShift = 4, 279 }; 280 281 enum FPFastMathModeMask { 282 FPFastMathModeMaskNone = 0, 283 FPFastMathModeNotNaNMask = 0x00000001, 284 FPFastMathModeNotInfMask = 0x00000002, 285 FPFastMathModeNSZMask = 0x00000004, 286 FPFastMathModeAllowRecipMask = 0x00000008, 287 FPFastMathModeFastMask = 0x00000010, 288 }; 289 290 enum FPRoundingMode { 291 FPRoundingModeRTE = 0, 292 FPRoundingModeRTZ = 1, 293 FPRoundingModeRTP = 2, 294 FPRoundingModeRTN = 3, 295 }; 296 297 enum LinkageType { 298 LinkageTypeExport = 0, 299 LinkageTypeImport = 1, 300 LinkageTypeInternal, /* internal use only */ 301 }; 302 303 enum AccessQualifier { 304 AccessQualifierReadOnly = 0, 305 AccessQualifierWriteOnly = 1, 306 AccessQualifierReadWrite = 2, 307 }; 308 309 enum FunctionParameterAttribute { 310 FunctionParameterAttributeZext = 0, 311 FunctionParameterAttributeSext = 1, 312 FunctionParameterAttributeByVal = 2, 313 FunctionParameterAttributeSret = 3, 314 FunctionParameterAttributeNoAlias = 4, 315 FunctionParameterAttributeNoCapture = 5, 316 FunctionParameterAttributeNoWrite = 6, 317 FunctionParameterAttributeNoReadWrite = 7, 318 }; 319 320 enum Decoration { 321 DecorationRelaxedPrecision = 0, 322 DecorationSpecId = 1, 323 DecorationBlock = 2, 324 DecorationBufferBlock = 3, 325 DecorationRowMajor = 4, 326 DecorationColMajor = 5, 327 DecorationArrayStride = 6, 328 DecorationMatrixStride = 7, 329 DecorationGLSLShared = 8, 330 DecorationGLSLPacked = 9, 331 DecorationCPacked = 10, 332 DecorationBuiltIn = 11, 333 DecorationNoPerspective = 13, 334 DecorationFlat = 14, 335 DecorationPatch = 15, 336 DecorationCentroid = 16, 337 DecorationSample = 17, 338 DecorationInvariant = 18, 339 DecorationRestrict = 19, 340 DecorationAliased = 20, 341 DecorationVolatile = 21, 342 DecorationConstant = 22, 343 DecorationCoherent = 23, 344 DecorationNonWritable = 24, 345 DecorationNonReadable = 25, 346 DecorationUniform = 26, 347 DecorationSaturatedConversion = 28, 348 DecorationStream = 29, 349 DecorationLocation = 30, 350 DecorationComponent = 31, 351 DecorationIndex = 32, 352 DecorationBinding = 33, 353 DecorationDescriptorSet = 34, 354 DecorationOffset = 35, 355 DecorationXfbBuffer = 36, 356 DecorationXfbStride = 37, 357 DecorationFuncParamAttr = 38, 358 DecorationFPRoundingMode = 39, 359 DecorationFPFastMathMode = 40, 360 DecorationLinkageAttributes = 41, 361 DecorationNoContraction = 42, 362 DecorationInputAttachmentIndex = 43, 363 DecorationAlignment = 44, 364 DecorationMaxByteOffset = 45, 365 }; 366 367 enum BuiltIn { 368 BuiltInPosition = 0, 369 BuiltInPointSize = 1, 370 BuiltInClipDistance = 3, 371 BuiltInCullDistance = 4, 372 BuiltInVertexId = 5, 373 BuiltInInstanceId = 6, 374 BuiltInPrimitiveId = 7, 375 BuiltInInvocationId = 8, 376 BuiltInLayer = 9, 377 BuiltInViewportIndex = 10, 378 BuiltInTessLevelOuter = 11, 379 BuiltInTessLevelInner = 12, 380 BuiltInTessCoord = 13, 381 BuiltInPatchVertices = 14, 382 BuiltInFragCoord = 15, 383 BuiltInPointCoord = 16, 384 BuiltInFrontFacing = 17, 385 BuiltInSampleId = 18, 386 BuiltInSamplePosition = 19, 387 BuiltInSampleMask = 20, 388 BuiltInFragDepth = 22, 389 BuiltInHelperInvocation = 23, 390 BuiltInNumWorkgroups = 24, 391 BuiltInWorkgroupSize = 25, 392 BuiltInWorkgroupId = 26, 393 BuiltInLocalInvocationId = 27, 394 BuiltInGlobalInvocationId = 28, 395 BuiltInLocalInvocationIndex = 29, 396 BuiltInWorkDim = 30, 397 BuiltInGlobalSize = 31, 398 BuiltInEnqueuedWorkgroupSize = 32, 399 BuiltInGlobalOffset = 33, 400 BuiltInGlobalLinearId = 34, 401 BuiltInSubgroupSize = 36, 402 BuiltInSubgroupMaxSize = 37, 403 BuiltInNumSubgroups = 38, 404 BuiltInNumEnqueuedSubgroups = 39, 405 BuiltInSubgroupId = 40, 406 BuiltInSubgroupLocalInvocationId = 41, 407 BuiltInVertexIndex = 42, 408 BuiltInInstanceIndex = 43, 409 }; 410 411 enum SelectionControlShift { 412 SelectionControlFlattenShift = 0, 413 SelectionControlDontFlattenShift = 1, 414 }; 415 416 enum SelectionControlMask { 417 SelectionControlMaskNone = 0, 418 SelectionControlFlattenMask = 0x00000001, 419 SelectionControlDontFlattenMask = 0x00000002, 420 }; 421 422 enum LoopControlShift { 423 LoopControlUnrollShift = 0, 424 LoopControlDontUnrollShift = 1, 425 LoopControlDependencyInfiniteShift = 2, 426 LoopControlDependencyLengthShift = 3, 427 }; 428 429 enum LoopControlMask { 430 LoopControlMaskNone = 0, 431 LoopControlUnrollMask = 0x00000001, 432 LoopControlDontUnrollMask = 0x00000002, 433 LoopControlDependencyInfiniteMask = 0x00000004, 434 LoopControlDependencyLengthMask = 0x00000008, 435 }; 436 437 enum FunctionControlShift { 438 FunctionControlInlineShift = 0, 439 FunctionControlDontInlineShift = 1, 440 FunctionControlPureShift = 2, 441 FunctionControlConstShift = 3, 442 }; 443 444 enum FunctionControlMask { 445 FunctionControlMaskNone = 0, 446 FunctionControlInlineMask = 0x00000001, 447 FunctionControlDontInlineMask = 0x00000002, 448 FunctionControlPureMask = 0x00000004, 449 FunctionControlConstMask = 0x00000008, 450 }; 451 452 enum MemorySemanticsShift { 453 MemorySemanticsAcquireShift = 1, 454 MemorySemanticsReleaseShift = 2, 455 MemorySemanticsAcquireReleaseShift = 3, 456 MemorySemanticsSequentiallyConsistentShift = 4, 457 MemorySemanticsUniformMemoryShift = 6, 458 MemorySemanticsSubgroupMemoryShift = 7, 459 MemorySemanticsWorkgroupMemoryShift = 8, 460 MemorySemanticsCrossWorkgroupMemoryShift = 9, 461 MemorySemanticsAtomicCounterMemoryShift = 10, 462 MemorySemanticsImageMemoryShift = 11, 463 }; 464 465 enum MemorySemanticsMask { 466 MemorySemanticsMaskNone = 0, 467 MemorySemanticsAcquireMask = 0x00000002, 468 MemorySemanticsReleaseMask = 0x00000004, 469 MemorySemanticsAcquireReleaseMask = 0x00000008, 470 MemorySemanticsSequentiallyConsistentMask = 0x00000010, 471 MemorySemanticsUniformMemoryMask = 0x00000040, 472 MemorySemanticsSubgroupMemoryMask = 0x00000080, 473 MemorySemanticsWorkgroupMemoryMask = 0x00000100, 474 MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, 475 MemorySemanticsAtomicCounterMemoryMask = 0x00000400, 476 MemorySemanticsImageMemoryMask = 0x00000800, 477 }; 478 479 enum MemoryAccessShift { 480 MemoryAccessVolatileShift = 0, 481 MemoryAccessAlignedShift = 1, 482 MemoryAccessNontemporalShift = 2, 483 }; 484 485 enum MemoryAccessMask { 486 MemoryAccessMaskNone = 0, 487 MemoryAccessVolatileMask = 0x00000001, 488 MemoryAccessAlignedMask = 0x00000002, 489 MemoryAccessNontemporalMask = 0x00000004, 490 }; 491 492 enum Scope { 493 ScopeCrossDevice = 0, 494 ScopeDevice = 1, 495 ScopeWorkgroup = 2, 496 ScopeSubgroup = 3, 497 ScopeInvocation = 4, 498 }; 499 500 enum GroupOperation { 501 GroupOperationReduce = 0, 502 GroupOperationInclusiveScan = 1, 503 GroupOperationExclusiveScan = 2, 504 }; 505 506 enum KernelEnqueueFlags { 507 KernelEnqueueFlagsNoWait = 0, 508 KernelEnqueueFlagsWaitKernel = 1, 509 KernelEnqueueFlagsWaitWorkGroup = 2, 510 }; 511 512 enum KernelProfilingInfoShift { 513 KernelProfilingInfoCmdExecTimeShift = 0, 514 }; 515 516 enum KernelProfilingInfoMask { 517 KernelProfilingInfoMaskNone = 0, 518 KernelProfilingInfoCmdExecTimeMask = 0x00000001, 519 }; 520 521 enum Capability { 522 CapabilityMatrix = 0, 523 CapabilityShader = 1, 524 CapabilityGeometry = 2, 525 CapabilityTessellation = 3, 526 CapabilityAddresses = 4, 527 CapabilityLinkage = 5, 528 CapabilityKernel = 6, 529 CapabilityVector16 = 7, 530 CapabilityFloat16Buffer = 8, 531 CapabilityFloat16 = 9, 532 CapabilityFloat64 = 10, 533 CapabilityInt64 = 11, 534 CapabilityInt64Atomics = 12, 535 CapabilityImageBasic = 13, 536 CapabilityImageReadWrite = 14, 537 CapabilityImageMipmap = 15, 538 CapabilityPipes = 17, 539 CapabilityGroups = 18, 540 CapabilityDeviceEnqueue = 19, 541 CapabilityLiteralSampler = 20, 542 CapabilityAtomicStorage = 21, 543 CapabilityInt16 = 22, 544 CapabilityTessellationPointSize = 23, 545 CapabilityGeometryPointSize = 24, 546 CapabilityImageGatherExtended = 25, 547 CapabilityStorageImageMultisample = 27, 548 CapabilityUniformBufferArrayDynamicIndexing = 28, 549 CapabilitySampledImageArrayDynamicIndexing = 29, 550 CapabilityStorageBufferArrayDynamicIndexing = 30, 551 CapabilityStorageImageArrayDynamicIndexing = 31, 552 CapabilityClipDistance = 32, 553 CapabilityCullDistance = 33, 554 CapabilityImageCubeArray = 34, 555 CapabilitySampleRateShading = 35, 556 CapabilityImageRect = 36, 557 CapabilitySampledRect = 37, 558 CapabilityGenericPointer = 38, 559 CapabilityInt8 = 39, 560 CapabilityInputAttachment = 40, 561 CapabilitySparseResidency = 41, 562 CapabilityMinLod = 42, 563 CapabilitySampled1D = 43, 564 CapabilityImage1D = 44, 565 CapabilitySampledCubeArray = 45, 566 CapabilitySampledBuffer = 46, 567 CapabilityImageBuffer = 47, 568 CapabilityImageMSArray = 48, 569 CapabilityStorageImageExtendedFormats = 49, 570 CapabilityImageQuery = 50, 571 CapabilityDerivativeControl = 51, 572 CapabilityInterpolationFunction = 52, 573 CapabilityTransformFeedback = 53, 574 CapabilityGeometryStreams = 54, 575 CapabilityStorageImageReadWithoutFormat = 55, 576 CapabilityStorageImageWriteWithoutFormat = 56, 577 CapabilityMultiViewport = 57, 578 CapabilitySubgroupDispatch = 58, 579 CapabilityNamedBarrier = 59, 580 CapabilityPipeStorage = 60, 581 }; 582 583 enum Op { 584 OpNop = 0, 585 OpUndef = 1, 586 OpSourceContinued = 2, 587 OpSource = 3, 588 OpSourceExtension = 4, 589 OpName = 5, 590 OpMemberName = 6, 591 OpString = 7, 592 OpLine = 8, 593 OpExtension = 10, 594 OpExtInstImport = 11, 595 OpExtInst = 12, 596 OpMemoryModel = 14, 597 OpEntryPoint = 15, 598 OpExecutionMode = 16, 599 OpCapability = 17, 600 OpTypeVoid = 19, 601 OpTypeBool = 20, 602 OpTypeInt = 21, 603 OpTypeFloat = 22, 604 OpTypeVector = 23, 605 OpTypeMatrix = 24, 606 OpTypeImage = 25, 607 OpTypeSampler = 26, 608 OpTypeSampledImage = 27, 609 OpTypeArray = 28, 610 OpTypeRuntimeArray = 29, 611 OpTypeStruct = 30, 612 OpTypeOpaque = 31, 613 OpTypePointer = 32, 614 OpTypeFunction = 33, 615 OpTypeEvent = 34, 616 OpTypeDeviceEvent = 35, 617 OpTypeReserveId = 36, 618 OpTypeQueue = 37, 619 OpTypePipe = 38, 620 OpTypeForwardPointer = 39, 621 OpConstantTrue = 41, 622 OpConstantFalse = 42, 623 OpConstant = 43, 624 OpConstantComposite = 44, 625 OpConstantSampler = 45, 626 OpConstantNull = 46, 627 OpSpecConstantTrue = 48, 628 OpSpecConstantFalse = 49, 629 OpSpecConstant = 50, 630 OpSpecConstantComposite = 51, 631 OpSpecConstantOp = 52, 632 OpFunction = 54, 633 OpFunctionParameter = 55, 634 OpFunctionEnd = 56, 635 OpFunctionCall = 57, 636 OpVariable = 59, 637 OpImageTexelPointer = 60, 638 OpLoad = 61, 639 OpStore = 62, 640 OpCopyMemory = 63, 641 OpCopyMemorySized = 64, 642 OpAccessChain = 65, 643 OpInBoundsAccessChain = 66, 644 OpPtrAccessChain = 67, 645 OpArrayLength = 68, 646 OpGenericPtrMemSemantics = 69, 647 OpInBoundsPtrAccessChain = 70, 648 OpDecorate = 71, 649 OpMemberDecorate = 72, 650 OpDecorationGroup = 73, 651 OpGroupDecorate = 74, 652 OpGroupMemberDecorate = 75, 653 OpVectorExtractDynamic = 77, 654 OpVectorInsertDynamic = 78, 655 OpVectorShuffle = 79, 656 OpCompositeConstruct = 80, 657 OpCompositeExtract = 81, 658 OpCompositeInsert = 82, 659 OpCopyObject = 83, 660 OpTranspose = 84, 661 OpSampledImage = 86, 662 OpImageSampleImplicitLod = 87, 663 OpImageSampleExplicitLod = 88, 664 OpImageSampleDrefImplicitLod = 89, 665 OpImageSampleDrefExplicitLod = 90, 666 OpImageSampleProjImplicitLod = 91, 667 OpImageSampleProjExplicitLod = 92, 668 OpImageSampleProjDrefImplicitLod = 93, 669 OpImageSampleProjDrefExplicitLod = 94, 670 OpImageFetch = 95, 671 OpImageGather = 96, 672 OpImageDrefGather = 97, 673 OpImageRead = 98, 674 OpImageWrite = 99, 675 OpImage = 100, 676 OpImageQueryFormat = 101, 677 OpImageQueryOrder = 102, 678 OpImageQuerySizeLod = 103, 679 OpImageQuerySize = 104, 680 OpImageQueryLod = 105, 681 OpImageQueryLevels = 106, 682 OpImageQuerySamples = 107, 683 OpConvertFToU = 109, 684 OpConvertFToS = 110, 685 OpConvertSToF = 111, 686 OpConvertUToF = 112, 687 OpUConvert = 113, 688 OpSConvert = 114, 689 OpFConvert = 115, 690 OpQuantizeToF16 = 116, 691 OpConvertPtrToU = 117, 692 OpSatConvertSToU = 118, 693 OpSatConvertUToS = 119, 694 OpConvertUToPtr = 120, 695 OpPtrCastToGeneric = 121, 696 OpGenericCastToPtr = 122, 697 OpGenericCastToPtrExplicit = 123, 698 OpBitcast = 124, 699 OpSNegate = 126, 700 OpFNegate = 127, 701 OpIAdd = 128, 702 OpFAdd = 129, 703 OpISub = 130, 704 OpFSub = 131, 705 OpIMul = 132, 706 OpFMul = 133, 707 OpUDiv = 134, 708 OpSDiv = 135, 709 OpFDiv = 136, 710 OpUMod = 137, 711 OpSRem = 138, 712 OpSMod = 139, 713 OpFRem = 140, 714 OpFMod = 141, 715 OpVectorTimesScalar = 142, 716 OpMatrixTimesScalar = 143, 717 OpVectorTimesMatrix = 144, 718 OpMatrixTimesVector = 145, 719 OpMatrixTimesMatrix = 146, 720 OpOuterProduct = 147, 721 OpDot = 148, 722 OpIAddCarry = 149, 723 OpISubBorrow = 150, 724 OpUMulExtended = 151, 725 OpSMulExtended = 152, 726 OpAny = 154, 727 OpAll = 155, 728 OpIsNan = 156, 729 OpIsInf = 157, 730 OpIsFinite = 158, 731 OpIsNormal = 159, 732 OpSignBitSet = 160, 733 OpLessOrGreater = 161, 734 OpOrdered = 162, 735 OpUnordered = 163, 736 OpLogicalEqual = 164, 737 OpLogicalNotEqual = 165, 738 OpLogicalOr = 166, 739 OpLogicalAnd = 167, 740 OpLogicalNot = 168, 741 OpSelect = 169, 742 OpIEqual = 170, 743 OpINotEqual = 171, 744 OpUGreaterThan = 172, 745 OpSGreaterThan = 173, 746 OpUGreaterThanEqual = 174, 747 OpSGreaterThanEqual = 175, 748 OpULessThan = 176, 749 OpSLessThan = 177, 750 OpULessThanEqual = 178, 751 OpSLessThanEqual = 179, 752 OpFOrdEqual = 180, 753 OpFUnordEqual = 181, 754 OpFOrdNotEqual = 182, 755 OpFUnordNotEqual = 183, 756 OpFOrdLessThan = 184, 757 OpFUnordLessThan = 185, 758 OpFOrdGreaterThan = 186, 759 OpFUnordGreaterThan = 187, 760 OpFOrdLessThanEqual = 188, 761 OpFUnordLessThanEqual = 189, 762 OpFOrdGreaterThanEqual = 190, 763 OpFUnordGreaterThanEqual = 191, 764 OpShiftRightLogical = 194, 765 OpShiftRightArithmetic = 195, 766 OpShiftLeftLogical = 196, 767 OpBitwiseOr = 197, 768 OpBitwiseXor = 198, 769 OpBitwiseAnd = 199, 770 OpNot = 200, 771 OpBitFieldInsert = 201, 772 OpBitFieldSExtract = 202, 773 OpBitFieldUExtract = 203, 774 OpBitReverse = 204, 775 OpBitCount = 205, 776 OpDPdx = 207, 777 OpDPdy = 208, 778 OpFwidth = 209, 779 OpDPdxFine = 210, 780 OpDPdyFine = 211, 781 OpFwidthFine = 212, 782 OpDPdxCoarse = 213, 783 OpDPdyCoarse = 214, 784 OpFwidthCoarse = 215, 785 OpEmitVertex = 218, 786 OpEndPrimitive = 219, 787 OpEmitStreamVertex = 220, 788 OpEndStreamPrimitive = 221, 789 OpControlBarrier = 224, 790 OpMemoryBarrier = 225, 791 OpAtomicLoad = 227, 792 OpAtomicStore = 228, 793 OpAtomicExchange = 229, 794 OpAtomicCompareExchange = 230, 795 OpAtomicCompareExchangeWeak = 231, 796 OpAtomicIIncrement = 232, 797 OpAtomicIDecrement = 233, 798 OpAtomicIAdd = 234, 799 OpAtomicISub = 235, 800 OpAtomicSMin = 236, 801 OpAtomicUMin = 237, 802 OpAtomicSMax = 238, 803 OpAtomicUMax = 239, 804 OpAtomicAnd = 240, 805 OpAtomicOr = 241, 806 OpAtomicXor = 242, 807 OpPhi = 245, 808 OpLoopMerge = 246, 809 OpSelectionMerge = 247, 810 OpLabel = 248, 811 OpBranch = 249, 812 OpBranchConditional = 250, 813 OpSwitch = 251, 814 OpKill = 252, 815 OpReturn = 253, 816 OpReturnValue = 254, 817 OpUnreachable = 255, 818 OpLifetimeStart = 256, 819 OpLifetimeStop = 257, 820 OpGroupAsyncCopy = 259, 821 OpGroupWaitEvents = 260, 822 OpGroupAll = 261, 823 OpGroupAny = 262, 824 OpGroupBroadcast = 263, 825 OpGroupIAdd = 264, 826 OpGroupFAdd = 265, 827 OpGroupFMin = 266, 828 OpGroupUMin = 267, 829 OpGroupSMin = 268, 830 OpGroupFMax = 269, 831 OpGroupUMax = 270, 832 OpGroupSMax = 271, 833 OpReadPipe = 274, 834 OpWritePipe = 275, 835 OpReservedReadPipe = 276, 836 OpReservedWritePipe = 277, 837 OpReserveReadPipePackets = 278, 838 OpReserveWritePipePackets = 279, 839 OpCommitReadPipe = 280, 840 OpCommitWritePipe = 281, 841 OpIsValidReserveId = 282, 842 OpGetNumPipePackets = 283, 843 OpGetMaxPipePackets = 284, 844 OpGroupReserveReadPipePackets = 285, 845 OpGroupReserveWritePipePackets = 286, 846 OpGroupCommitReadPipe = 287, 847 OpGroupCommitWritePipe = 288, 848 OpEnqueueMarker = 291, 849 OpEnqueueKernel = 292, 850 OpGetKernelNDrangeSubGroupCount = 293, 851 OpGetKernelNDrangeMaxSubGroupSize = 294, 852 OpGetKernelWorkGroupSize = 295, 853 OpGetKernelPreferredWorkGroupSizeMultiple = 296, 854 OpRetainEvent = 297, 855 OpReleaseEvent = 298, 856 OpCreateUserEvent = 299, 857 OpIsValidEvent = 300, 858 OpSetUserEventStatus = 301, 859 OpCaptureEventProfilingInfo = 302, 860 OpGetDefaultQueue = 303, 861 OpBuildNDRange = 304, 862 OpImageSparseSampleImplicitLod = 305, 863 OpImageSparseSampleExplicitLod = 306, 864 OpImageSparseSampleDrefImplicitLod = 307, 865 OpImageSparseSampleDrefExplicitLod = 308, 866 OpImageSparseSampleProjImplicitLod = 309, 867 OpImageSparseSampleProjExplicitLod = 310, 868 OpImageSparseSampleProjDrefImplicitLod = 311, 869 OpImageSparseSampleProjDrefExplicitLod = 312, 870 OpImageSparseFetch = 313, 871 OpImageSparseGather = 314, 872 OpImageSparseDrefGather = 315, 873 OpImageSparseTexelsResident = 316, 874 OpNoLine = 317, 875 OpAtomicFlagTestAndSet = 318, 876 OpAtomicFlagClear = 319, 877 OpImageSparseRead = 320, 878 OpSizeOf = 321, 879 OpTypePipeStorage = 322, 880 OpConstantPipeStorage = 323, 881 OpCreatePipeFromPipeStorage = 324, 882 OpGetKernelLocalSizeForSubgroupCount = 325, 883 OpGetKernelMaxNumSubgroups = 326, 884 OpTypeNamedBarrier = 327, 885 OpNamedBarrierInitialize = 328, 886 OpMemoryNamedBarrier = 329, 887 OpModuleProcessed = 330, 888 OpForward = 1024, /* internal use only */ 889 }; 890 891 // Overload operator| for mask bit combining 892 operator |(ImageOperandsMask a,ImageOperandsMask b)893 inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } operator |(FPFastMathModeMask a,FPFastMathModeMask b)894 inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } operator |(SelectionControlMask a,SelectionControlMask b)895 inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } operator |(LoopControlMask a,LoopControlMask b)896 inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } operator |(FunctionControlMask a,FunctionControlMask b)897 inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } operator |(MemorySemanticsMask a,MemorySemanticsMask b)898 inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } operator |(MemoryAccessMask a,MemoryAccessMask b)899 inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } operator |(KernelProfilingInfoMask a,KernelProfilingInfoMask b)900 inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } 901 902 } // end namespace spv 903 904 #endif // #ifndef spirv_HPP 905 906