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