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