Merge branch 'wip/i965-separate-sampler-tex' into vulkan
[mesa.git] / src / glsl / nir / spirv.h
1 /*
2 ** Copyright (c) 2014-2015 The Khronos Group Inc.
3 **
4 ** Permission is hereby granted, free of charge, to any person obtaining a copy
5 ** of this software and/or associated documentation files (the "Materials"),
6 ** to deal in the Materials without restriction, including without limitation
7 ** the rights to use, copy, modify, merge, publish, distribute, sublicense,
8 ** and/or sell copies of the Materials, and to permit persons to whom the
9 ** Materials are furnished to do so, subject to the following conditions:
10 **
11 ** The above copyright notice and this permission notice shall be included in
12 ** all copies or substantial portions of the Materials.
13 **
14 ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS
15 ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND
16 ** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/
17 **
18 ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
19 ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20 ** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
21 ** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22 ** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23 ** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS
24 ** IN THE MATERIALS.
25 */
26
27 /*
28 ** This header is automatically generated by the same tool that creates
29 ** the Binary Section of the SPIR-V specification.
30 */
31
32 /*
33 ** Specification revision 33.
34 ** Enumeration tokens for SPIR-V, in various styles:
35 ** C, C++, C++11, JSON, Lua, Python
36 **
37 ** - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL
38 ** - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL
39 ** - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL
40 ** - Lua will use tables, e.g.: spv.SourceLanguage.GLSL
41 ** - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL']
42 **
43 ** Some tokens act like mask values, which can be OR'd together,
44 ** while others are mutually exclusive. The mask-like ones have
45 ** "Mask" in their name, and a parallel enum that has the shift
46 ** amount (1 << x) for each corresponding enumerant.
47 */
48
49 #ifndef spirv_H
50 #define spirv_H
51
52 typedef unsigned int SpvId;
53
54 static const unsigned int SpvMagicNumber = 0x07230203;
55 static const unsigned int SpvVersion = 99;
56 static const unsigned int SpvRevision = 33;
57 static const unsigned int SpvOpCodeMask = 0xffff;
58 static const unsigned int SpvWordCountShift = 16;
59
60 typedef enum SpvSourceLanguage_ {
61 SpvSourceLanguageUnknown = 0,
62 SpvSourceLanguageESSL = 1,
63 SpvSourceLanguageGLSL = 2,
64 SpvSourceLanguageOpenCL = 3,
65 } SpvSourceLanguage;
66
67 typedef enum SpvExecutionModel_ {
68 SpvExecutionModelVertex = 0,
69 SpvExecutionModelTessellationControl = 1,
70 SpvExecutionModelTessellationEvaluation = 2,
71 SpvExecutionModelGeometry = 3,
72 SpvExecutionModelFragment = 4,
73 SpvExecutionModelGLCompute = 5,
74 SpvExecutionModelKernel = 6,
75 } SpvExecutionModel;
76
77 typedef enum SpvAddressingModel_ {
78 SpvAddressingModelLogical = 0,
79 SpvAddressingModelPhysical32 = 1,
80 SpvAddressingModelPhysical64 = 2,
81 } SpvAddressingModel;
82
83 typedef enum SpvMemoryModel_ {
84 SpvMemoryModelSimple = 0,
85 SpvMemoryModelGLSL450 = 1,
86 SpvMemoryModelOpenCL = 2,
87 } SpvMemoryModel;
88
89 typedef enum SpvExecutionMode_ {
90 SpvExecutionModeInvocations = 0,
91 SpvExecutionModeSpacingEqual = 1,
92 SpvExecutionModeSpacingFractionalEven = 2,
93 SpvExecutionModeSpacingFractionalOdd = 3,
94 SpvExecutionModeVertexOrderCw = 4,
95 SpvExecutionModeVertexOrderCcw = 5,
96 SpvExecutionModePixelCenterInteger = 6,
97 SpvExecutionModeOriginUpperLeft = 7,
98 SpvExecutionModeOriginLowerLeft = 8,
99 SpvExecutionModeEarlyFragmentTests = 9,
100 SpvExecutionModePointMode = 10,
101 SpvExecutionModeXfb = 11,
102 SpvExecutionModeDepthReplacing = 12,
103 SpvExecutionModeDepthGreater = 14,
104 SpvExecutionModeDepthLess = 15,
105 SpvExecutionModeDepthUnchanged = 16,
106 SpvExecutionModeLocalSize = 17,
107 SpvExecutionModeLocalSizeHint = 18,
108 SpvExecutionModeInputPoints = 19,
109 SpvExecutionModeInputLines = 20,
110 SpvExecutionModeInputLinesAdjacency = 21,
111 SpvExecutionModeInputTriangles = 22,
112 SpvExecutionModeInputTrianglesAdjacency = 23,
113 SpvExecutionModeInputQuads = 24,
114 SpvExecutionModeInputIsolines = 25,
115 SpvExecutionModeOutputVertices = 26,
116 SpvExecutionModeOutputPoints = 27,
117 SpvExecutionModeOutputLineStrip = 28,
118 SpvExecutionModeOutputTriangleStrip = 29,
119 SpvExecutionModeVecTypeHint = 30,
120 SpvExecutionModeContractionOff = 31,
121 SpvExecutionModeIndependentForwardProgress = 32,
122 } SpvExecutionMode;
123
124 typedef enum SpvStorageClass_ {
125 SpvStorageClassUniformConstant = 0,
126 SpvStorageClassInput = 1,
127 SpvStorageClassUniform = 2,
128 SpvStorageClassOutput = 3,
129 SpvStorageClassWorkgroupLocal = 4,
130 SpvStorageClassWorkgroupGlobal = 5,
131 SpvStorageClassPrivateGlobal = 6,
132 SpvStorageClassFunction = 7,
133 SpvStorageClassGeneric = 8,
134 SpvStorageClassPushConstant = 9,
135 SpvStorageClassAtomicCounter = 10,
136 SpvStorageClassImage = 11,
137 } SpvStorageClass;
138
139 typedef enum SpvDim_ {
140 SpvDim1D = 0,
141 SpvDim2D = 1,
142 SpvDim3D = 2,
143 SpvDimCube = 3,
144 SpvDimRect = 4,
145 SpvDimBuffer = 5,
146 SpvDimInputTarget = 6,
147 } SpvDim;
148
149 typedef enum SpvSamplerAddressingMode_ {
150 SpvSamplerAddressingModeNone = 0,
151 SpvSamplerAddressingModeClampToEdge = 1,
152 SpvSamplerAddressingModeClamp = 2,
153 SpvSamplerAddressingModeRepeat = 3,
154 SpvSamplerAddressingModeRepeatMirrored = 4,
155 } SpvSamplerAddressingMode;
156
157 typedef enum SpvSamplerFilterMode_ {
158 SpvSamplerFilterModeNearest = 0,
159 SpvSamplerFilterModeLinear = 1,
160 } SpvSamplerFilterMode;
161
162 typedef enum SpvImageFormat_ {
163 SpvImageFormatUnknown = 0,
164 SpvImageFormatRgba32f = 1,
165 SpvImageFormatRgba16f = 2,
166 SpvImageFormatR32f = 3,
167 SpvImageFormatRgba8 = 4,
168 SpvImageFormatRgba8Snorm = 5,
169 SpvImageFormatRg32f = 6,
170 SpvImageFormatRg16f = 7,
171 SpvImageFormatR11fG11fB10f = 8,
172 SpvImageFormatR16f = 9,
173 SpvImageFormatRgba16 = 10,
174 SpvImageFormatRgb10A2 = 11,
175 SpvImageFormatRg16 = 12,
176 SpvImageFormatRg8 = 13,
177 SpvImageFormatR16 = 14,
178 SpvImageFormatR8 = 15,
179 SpvImageFormatRgba16Snorm = 16,
180 SpvImageFormatRg16Snorm = 17,
181 SpvImageFormatRg8Snorm = 18,
182 SpvImageFormatR16Snorm = 19,
183 SpvImageFormatR8Snorm = 20,
184 SpvImageFormatRgba32i = 21,
185 SpvImageFormatRgba16i = 22,
186 SpvImageFormatRgba8i = 23,
187 SpvImageFormatR32i = 24,
188 SpvImageFormatRg32i = 25,
189 SpvImageFormatRg16i = 26,
190 SpvImageFormatRg8i = 27,
191 SpvImageFormatR16i = 28,
192 SpvImageFormatR8i = 29,
193 SpvImageFormatRgba32ui = 30,
194 SpvImageFormatRgba16ui = 31,
195 SpvImageFormatRgba8ui = 32,
196 SpvImageFormatR32ui = 33,
197 SpvImageFormatRgb10a2ui = 34,
198 SpvImageFormatRg32ui = 35,
199 SpvImageFormatRg16ui = 36,
200 SpvImageFormatRg8ui = 37,
201 SpvImageFormatR16ui = 38,
202 SpvImageFormatR8ui = 39,
203 } SpvImageFormat;
204
205 typedef enum SpvImageChannelOrder_ {
206 SpvImageChannelOrderR = 0,
207 SpvImageChannelOrderA = 1,
208 SpvImageChannelOrderRG = 2,
209 SpvImageChannelOrderRA = 3,
210 SpvImageChannelOrderRGB = 4,
211 SpvImageChannelOrderRGBA = 5,
212 SpvImageChannelOrderBGRA = 6,
213 SpvImageChannelOrderARGB = 7,
214 SpvImageChannelOrderIntensity = 8,
215 SpvImageChannelOrderLuminance = 9,
216 SpvImageChannelOrderRx = 10,
217 SpvImageChannelOrderRGx = 11,
218 SpvImageChannelOrderRGBx = 12,
219 SpvImageChannelOrderDepth = 13,
220 SpvImageChannelOrderDepthStencil = 14,
221 SpvImageChannelOrdersRGB = 15,
222 SpvImageChannelOrdersRGBx = 16,
223 SpvImageChannelOrdersRGBA = 17,
224 SpvImageChannelOrdersBGRA = 18,
225 } SpvImageChannelOrder;
226
227 typedef enum SpvImageChannelDataType_ {
228 SpvImageChannelDataTypeSnormInt8 = 0,
229 SpvImageChannelDataTypeSnormInt16 = 1,
230 SpvImageChannelDataTypeUnormInt8 = 2,
231 SpvImageChannelDataTypeUnormInt16 = 3,
232 SpvImageChannelDataTypeUnormShort565 = 4,
233 SpvImageChannelDataTypeUnormShort555 = 5,
234 SpvImageChannelDataTypeUnormInt101010 = 6,
235 SpvImageChannelDataTypeSignedInt8 = 7,
236 SpvImageChannelDataTypeSignedInt16 = 8,
237 SpvImageChannelDataTypeSignedInt32 = 9,
238 SpvImageChannelDataTypeUnsignedInt8 = 10,
239 SpvImageChannelDataTypeUnsignedInt16 = 11,
240 SpvImageChannelDataTypeUnsignedInt32 = 12,
241 SpvImageChannelDataTypeHalfFloat = 13,
242 SpvImageChannelDataTypeFloat = 14,
243 SpvImageChannelDataTypeUnormInt24 = 15,
244 } SpvImageChannelDataType;
245
246 typedef enum SpvImageOperandsShift_ {
247 SpvImageOperandsBiasShift = 0,
248 SpvImageOperandsLodShift = 1,
249 SpvImageOperandsGradShift = 2,
250 SpvImageOperandsConstOffsetShift = 3,
251 SpvImageOperandsOffsetShift = 4,
252 SpvImageOperandsConstOffsetsShift = 5,
253 SpvImageOperandsSampleShift = 6,
254 SpvImageOperandsMinLodShift = 7,
255 } SpvImageOperandsShift;
256
257 typedef enum SpvImageOperandsMask_ {
258 SpvImageOperandsMaskNone = 0,
259 SpvImageOperandsBiasMask = 0x00000001,
260 SpvImageOperandsLodMask = 0x00000002,
261 SpvImageOperandsGradMask = 0x00000004,
262 SpvImageOperandsConstOffsetMask = 0x00000008,
263 SpvImageOperandsOffsetMask = 0x00000010,
264 SpvImageOperandsConstOffsetsMask = 0x00000020,
265 SpvImageOperandsSampleMask = 0x00000040,
266 SpvImageOperandsMinLodMask = 0x00000080,
267 } SpvImageOperandsMask;
268
269 typedef enum SpvFPFastMathModeShift_ {
270 SpvFPFastMathModeNotNaNShift = 0,
271 SpvFPFastMathModeNotInfShift = 1,
272 SpvFPFastMathModeNSZShift = 2,
273 SpvFPFastMathModeAllowRecipShift = 3,
274 SpvFPFastMathModeFastShift = 4,
275 } SpvFPFastMathModeShift;
276
277 typedef enum SpvFPFastMathModeMask_ {
278 SpvFPFastMathModeMaskNone = 0,
279 SpvFPFastMathModeNotNaNMask = 0x00000001,
280 SpvFPFastMathModeNotInfMask = 0x00000002,
281 SpvFPFastMathModeNSZMask = 0x00000004,
282 SpvFPFastMathModeAllowRecipMask = 0x00000008,
283 SpvFPFastMathModeFastMask = 0x00000010,
284 } SpvFPFastMathModeMask;
285
286 typedef enum SpvFPRoundingMode_ {
287 SpvFPRoundingModeRTE = 0,
288 SpvFPRoundingModeRTZ = 1,
289 SpvFPRoundingModeRTP = 2,
290 SpvFPRoundingModeRTN = 3,
291 } SpvFPRoundingMode;
292
293 typedef enum SpvLinkageType_ {
294 SpvLinkageTypeExport = 0,
295 SpvLinkageTypeImport = 1,
296 } SpvLinkageType;
297
298 typedef enum SpvAccessQualifier_ {
299 SpvAccessQualifierReadOnly = 0,
300 SpvAccessQualifierWriteOnly = 1,
301 SpvAccessQualifierReadWrite = 2,
302 } SpvAccessQualifier;
303
304 typedef enum SpvFunctionParameterAttribute_ {
305 SpvFunctionParameterAttributeZext = 0,
306 SpvFunctionParameterAttributeSext = 1,
307 SpvFunctionParameterAttributeByVal = 2,
308 SpvFunctionParameterAttributeSret = 3,
309 SpvFunctionParameterAttributeNoAlias = 4,
310 SpvFunctionParameterAttributeNoCapture = 5,
311 SpvFunctionParameterAttributeNoWrite = 6,
312 SpvFunctionParameterAttributeNoReadWrite = 7,
313 } SpvFunctionParameterAttribute;
314
315 typedef enum SpvDecoration_ {
316 SpvDecorationRelaxedPrecision = 0,
317 SpvDecorationSpecId = 1,
318 SpvDecorationBlock = 2,
319 SpvDecorationBufferBlock = 3,
320 SpvDecorationRowMajor = 4,
321 SpvDecorationColMajor = 5,
322 SpvDecorationArrayStride = 6,
323 SpvDecorationMatrixStride = 7,
324 SpvDecorationGLSLShared = 8,
325 SpvDecorationGLSLPacked = 9,
326 SpvDecorationCPacked = 10,
327 SpvDecorationBuiltIn = 11,
328 SpvDecorationSmooth = 12,
329 SpvDecorationNoPerspective = 13,
330 SpvDecorationFlat = 14,
331 SpvDecorationPatch = 15,
332 SpvDecorationCentroid = 16,
333 SpvDecorationSample = 17,
334 SpvDecorationInvariant = 18,
335 SpvDecorationRestrict = 19,
336 SpvDecorationAliased = 20,
337 SpvDecorationVolatile = 21,
338 SpvDecorationConstant = 22,
339 SpvDecorationCoherent = 23,
340 SpvDecorationNonWritable = 24,
341 SpvDecorationNonReadable = 25,
342 SpvDecorationUniform = 26,
343 SpvDecorationSaturatedConversion = 28,
344 SpvDecorationStream = 29,
345 SpvDecorationLocation = 30,
346 SpvDecorationComponent = 31,
347 SpvDecorationIndex = 32,
348 SpvDecorationBinding = 33,
349 SpvDecorationDescriptorSet = 34,
350 SpvDecorationOffset = 35,
351 SpvDecorationXfbBuffer = 36,
352 SpvDecorationXfbStride = 37,
353 SpvDecorationFuncParamAttr = 38,
354 SpvDecorationFPRoundingMode = 39,
355 SpvDecorationFPFastMathMode = 40,
356 SpvDecorationLinkageAttributes = 41,
357 SpvDecorationNoContraction = 42,
358 SpvDecorationInputTargetIndex = 43,
359 SpvDecorationAlignment = 44,
360 } SpvDecoration;
361
362 typedef enum SpvBuiltIn_ {
363 SpvBuiltInPosition = 0,
364 SpvBuiltInPointSize = 1,
365 SpvBuiltInClipDistance = 3,
366 SpvBuiltInCullDistance = 4,
367 SpvBuiltInVertexId = 5,
368 SpvBuiltInInstanceId = 6,
369 SpvBuiltInPrimitiveId = 7,
370 SpvBuiltInInvocationId = 8,
371 SpvBuiltInLayer = 9,
372 SpvBuiltInViewportIndex = 10,
373 SpvBuiltInTessLevelOuter = 11,
374 SpvBuiltInTessLevelInner = 12,
375 SpvBuiltInTessCoord = 13,
376 SpvBuiltInPatchVertices = 14,
377 SpvBuiltInFragCoord = 15,
378 SpvBuiltInPointCoord = 16,
379 SpvBuiltInFrontFacing = 17,
380 SpvBuiltInSampleId = 18,
381 SpvBuiltInSamplePosition = 19,
382 SpvBuiltInSampleMask = 20,
383 SpvBuiltInFragColor = 21,
384 SpvBuiltInFragDepth = 22,
385 SpvBuiltInHelperInvocation = 23,
386 SpvBuiltInNumWorkgroups = 24,
387 SpvBuiltInWorkgroupSize = 25,
388 SpvBuiltInWorkgroupId = 26,
389 SpvBuiltInLocalInvocationId = 27,
390 SpvBuiltInGlobalInvocationId = 28,
391 SpvBuiltInLocalInvocationIndex = 29,
392 SpvBuiltInWorkDim = 30,
393 SpvBuiltInGlobalSize = 31,
394 SpvBuiltInEnqueuedWorkgroupSize = 32,
395 SpvBuiltInGlobalOffset = 33,
396 SpvBuiltInGlobalLinearId = 34,
397 SpvBuiltInWorkgroupLinearId = 35,
398 SpvBuiltInSubgroupSize = 36,
399 SpvBuiltInSubgroupMaxSize = 37,
400 SpvBuiltInNumSubgroups = 38,
401 SpvBuiltInNumEnqueuedSubgroups = 39,
402 SpvBuiltInSubgroupId = 40,
403 SpvBuiltInSubgroupLocalInvocationId = 41,
404 SpvBuiltInVertexIndex = 42,
405 SpvBuiltInInstanceIndex = 43,
406 } SpvBuiltIn;
407
408 typedef enum SpvSelectionControlShift_ {
409 SpvSelectionControlFlattenShift = 0,
410 SpvSelectionControlDontFlattenShift = 1,
411 } SpvSelectionControlShift;
412
413 typedef enum SpvSelectionControlMask_ {
414 SpvSelectionControlMaskNone = 0,
415 SpvSelectionControlFlattenMask = 0x00000001,
416 SpvSelectionControlDontFlattenMask = 0x00000002,
417 } SpvSelectionControlMask;
418
419 typedef enum SpvLoopControlShift_ {
420 SpvLoopControlUnrollShift = 0,
421 SpvLoopControlDontUnrollShift = 1,
422 } SpvLoopControlShift;
423
424 typedef enum SpvLoopControlMask_ {
425 SpvLoopControlMaskNone = 0,
426 SpvLoopControlUnrollMask = 0x00000001,
427 SpvLoopControlDontUnrollMask = 0x00000002,
428 } SpvLoopControlMask;
429
430 typedef enum SpvFunctionControlShift_ {
431 SpvFunctionControlInlineShift = 0,
432 SpvFunctionControlDontInlineShift = 1,
433 SpvFunctionControlPureShift = 2,
434 SpvFunctionControlConstShift = 3,
435 } SpvFunctionControlShift;
436
437 typedef enum SpvFunctionControlMask_ {
438 SpvFunctionControlMaskNone = 0,
439 SpvFunctionControlInlineMask = 0x00000001,
440 SpvFunctionControlDontInlineMask = 0x00000002,
441 SpvFunctionControlPureMask = 0x00000004,
442 SpvFunctionControlConstMask = 0x00000008,
443 } SpvFunctionControlMask;
444
445 typedef enum SpvMemorySemanticsShift_ {
446 SpvMemorySemanticsAcquireShift = 1,
447 SpvMemorySemanticsReleaseShift = 2,
448 SpvMemorySemanticsAcquireReleaseShift = 3,
449 SpvMemorySemanticsSequentiallyConsistentShift = 4,
450 SpvMemorySemanticsUniformMemoryShift = 6,
451 SpvMemorySemanticsSubgroupMemoryShift = 7,
452 SpvMemorySemanticsWorkgroupLocalMemoryShift = 8,
453 SpvMemorySemanticsWorkgroupGlobalMemoryShift = 9,
454 SpvMemorySemanticsAtomicCounterMemoryShift = 10,
455 SpvMemorySemanticsImageMemoryShift = 11,
456 } SpvMemorySemanticsShift;
457
458 typedef enum SpvMemorySemanticsMask_ {
459 SpvMemorySemanticsMaskNone = 0,
460 SpvMemorySemanticsAcquireMask = 0x00000002,
461 SpvMemorySemanticsReleaseMask = 0x00000004,
462 SpvMemorySemanticsAcquireReleaseMask = 0x00000008,
463 SpvMemorySemanticsSequentiallyConsistentMask = 0x00000010,
464 SpvMemorySemanticsUniformMemoryMask = 0x00000040,
465 SpvMemorySemanticsSubgroupMemoryMask = 0x00000080,
466 SpvMemorySemanticsWorkgroupLocalMemoryMask = 0x00000100,
467 SpvMemorySemanticsWorkgroupGlobalMemoryMask = 0x00000200,
468 SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000400,
469 SpvMemorySemanticsImageMemoryMask = 0x00000800,
470 } SpvMemorySemanticsMask;
471
472 typedef enum SpvMemoryAccessShift_ {
473 SpvMemoryAccessVolatileShift = 0,
474 SpvMemoryAccessAlignedShift = 1,
475 SpvMemoryAccessNontemporalShift = 2,
476 } SpvMemoryAccessShift;
477
478 typedef enum SpvMemoryAccessMask_ {
479 SpvMemoryAccessMaskNone = 0,
480 SpvMemoryAccessVolatileMask = 0x00000001,
481 SpvMemoryAccessAlignedMask = 0x00000002,
482 SpvMemoryAccessNontemporalMask = 0x00000004,
483 } SpvMemoryAccessMask;
484
485 typedef enum SpvScope_ {
486 SpvScopeCrossDevice = 0,
487 SpvScopeDevice = 1,
488 SpvScopeWorkgroup = 2,
489 SpvScopeSubgroup = 3,
490 SpvScopeInvocation = 4,
491 } SpvScope;
492
493 typedef enum SpvGroupOperation_ {
494 SpvGroupOperationReduce = 0,
495 SpvGroupOperationInclusiveScan = 1,
496 SpvGroupOperationExclusiveScan = 2,
497 } SpvGroupOperation;
498
499 typedef enum SpvKernelEnqueueFlags_ {
500 SpvKernelEnqueueFlagsNoWait = 0,
501 SpvKernelEnqueueFlagsWaitKernel = 1,
502 SpvKernelEnqueueFlagsWaitWorkGroup = 2,
503 } SpvKernelEnqueueFlags;
504
505 typedef enum SpvKernelProfilingInfoShift_ {
506 SpvKernelProfilingInfoCmdExecTimeShift = 0,
507 } SpvKernelProfilingInfoShift;
508
509 typedef enum SpvKernelProfilingInfoMask_ {
510 SpvKernelProfilingInfoMaskNone = 0,
511 SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
512 } SpvKernelProfilingInfoMask;
513
514 typedef enum SpvCapability_ {
515 SpvCapabilityMatrix = 0,
516 SpvCapabilityShader = 1,
517 SpvCapabilityGeometry = 2,
518 SpvCapabilityTessellation = 3,
519 SpvCapabilityAddresses = 4,
520 SpvCapabilityLinkage = 5,
521 SpvCapabilityKernel = 6,
522 SpvCapabilityVector16 = 7,
523 SpvCapabilityFloat16Buffer = 8,
524 SpvCapabilityFloat16 = 9,
525 SpvCapabilityFloat64 = 10,
526 SpvCapabilityInt64 = 11,
527 SpvCapabilityInt64Atomics = 12,
528 SpvCapabilityImageBasic = 13,
529 SpvCapabilityImageReadWrite = 14,
530 SpvCapabilityImageMipmap = 15,
531 SpvCapabilityImageSRGBWrite = 16,
532 SpvCapabilityPipes = 17,
533 SpvCapabilityGroups = 18,
534 SpvCapabilityDeviceEnqueue = 19,
535 SpvCapabilityLiteralSampler = 20,
536 SpvCapabilityAtomicStorage = 21,
537 SpvCapabilityInt16 = 22,
538 SpvCapabilityTessellationPointSize = 23,
539 SpvCapabilityGeometryPointSize = 24,
540 SpvCapabilityImageGatherExtended = 25,
541 SpvCapabilityStorageImageExtendedFormats = 26,
542 SpvCapabilityStorageImageMultisample = 27,
543 SpvCapabilityUniformBufferArrayDynamicIndexing = 28,
544 SpvCapabilitySampledImageArrayDynamicIndexing = 29,
545 SpvCapabilityStorageBufferArrayDynamicIndexing = 30,
546 SpvCapabilityStorageImageArrayDynamicIndexing = 31,
547 SpvCapabilityClipDistance = 32,
548 SpvCapabilityCullDistance = 33,
549 SpvCapabilityImageCubeArray = 34,
550 SpvCapabilitySampleRateShading = 35,
551 SpvCapabilityImageRect = 36,
552 SpvCapabilitySampledRect = 37,
553 SpvCapabilityGenericPointer = 38,
554 SpvCapabilityInt8 = 39,
555 SpvCapabilityInputTarget = 40,
556 SpvCapabilitySparseResidency = 41,
557 SpvCapabilityMinLod = 42,
558 SpvCapabilitySampled1D = 43,
559 SpvCapabilityImage1D = 44,
560 SpvCapabilitySampledCubeArray = 45,
561 SpvCapabilitySampledBuffer = 46,
562 SpvCapabilityImageBuffer = 47,
563 SpvCapabilityImageMSArray = 48,
564 SpvCapabilityAdvancedFormats = 49,
565 SpvCapabilityImageQuery = 50,
566 SpvCapabilityDerivativeControl = 51,
567 SpvCapabilityInterpolationFunction = 52,
568 SpvCapabilityTransformFeedback = 53,
569 } SpvCapability;
570
571 typedef enum SpvOp_ {
572 SpvOpNop = 0,
573 SpvOpUndef = 1,
574 SpvOpSourceContinued = 2,
575 SpvOpSource = 3,
576 SpvOpSourceExtension = 4,
577 SpvOpName = 5,
578 SpvOpMemberName = 6,
579 SpvOpString = 7,
580 SpvOpLine = 8,
581 SpvOpExtension = 10,
582 SpvOpExtInstImport = 11,
583 SpvOpExtInst = 12,
584 SpvOpMemoryModel = 14,
585 SpvOpEntryPoint = 15,
586 SpvOpExecutionMode = 16,
587 SpvOpCapability = 17,
588 SpvOpTypeVoid = 19,
589 SpvOpTypeBool = 20,
590 SpvOpTypeInt = 21,
591 SpvOpTypeFloat = 22,
592 SpvOpTypeVector = 23,
593 SpvOpTypeMatrix = 24,
594 SpvOpTypeImage = 25,
595 SpvOpTypeSampler = 26,
596 SpvOpTypeSampledImage = 27,
597 SpvOpTypeArray = 28,
598 SpvOpTypeRuntimeArray = 29,
599 SpvOpTypeStruct = 30,
600 SpvOpTypeOpaque = 31,
601 SpvOpTypePointer = 32,
602 SpvOpTypeFunction = 33,
603 SpvOpTypeEvent = 34,
604 SpvOpTypeDeviceEvent = 35,
605 SpvOpTypeReserveId = 36,
606 SpvOpTypeQueue = 37,
607 SpvOpTypePipe = 38,
608 SpvOpTypeForwardPointer = 39,
609 SpvOpConstantTrue = 41,
610 SpvOpConstantFalse = 42,
611 SpvOpConstant = 43,
612 SpvOpConstantComposite = 44,
613 SpvOpConstantSampler = 45,
614 SpvOpConstantNull = 46,
615 SpvOpSpecConstantTrue = 48,
616 SpvOpSpecConstantFalse = 49,
617 SpvOpSpecConstant = 50,
618 SpvOpSpecConstantComposite = 51,
619 SpvOpSpecConstantOp = 52,
620 SpvOpFunction = 54,
621 SpvOpFunctionParameter = 55,
622 SpvOpFunctionEnd = 56,
623 SpvOpFunctionCall = 57,
624 SpvOpVariable = 59,
625 SpvOpImageTexelPointer = 60,
626 SpvOpLoad = 61,
627 SpvOpStore = 62,
628 SpvOpCopyMemory = 63,
629 SpvOpCopyMemorySized = 64,
630 SpvOpAccessChain = 65,
631 SpvOpInBoundsAccessChain = 66,
632 SpvOpPtrAccessChain = 67,
633 SpvOpArrayLength = 68,
634 SpvOpGenericPtrMemSemantics = 69,
635 SpvOpInBoundsPtrAccessChain = 70,
636 SpvOpDecorate = 71,
637 SpvOpMemberDecorate = 72,
638 SpvOpDecorationGroup = 73,
639 SpvOpGroupDecorate = 74,
640 SpvOpGroupMemberDecorate = 75,
641 SpvOpVectorExtractDynamic = 77,
642 SpvOpVectorInsertDynamic = 78,
643 SpvOpVectorShuffle = 79,
644 SpvOpCompositeConstruct = 80,
645 SpvOpCompositeExtract = 81,
646 SpvOpCompositeInsert = 82,
647 SpvOpCopyObject = 83,
648 SpvOpTranspose = 84,
649 SpvOpSampledImage = 86,
650 SpvOpImageSampleImplicitLod = 87,
651 SpvOpImageSampleExplicitLod = 88,
652 SpvOpImageSampleDrefImplicitLod = 89,
653 SpvOpImageSampleDrefExplicitLod = 90,
654 SpvOpImageSampleProjImplicitLod = 91,
655 SpvOpImageSampleProjExplicitLod = 92,
656 SpvOpImageSampleProjDrefImplicitLod = 93,
657 SpvOpImageSampleProjDrefExplicitLod = 94,
658 SpvOpImageFetch = 95,
659 SpvOpImageGather = 96,
660 SpvOpImageDrefGather = 97,
661 SpvOpImageRead = 98,
662 SpvOpImageWrite = 99,
663 SpvOpImageQueryFormat = 101,
664 SpvOpImageQueryOrder = 102,
665 SpvOpImageQuerySizeLod = 103,
666 SpvOpImageQuerySize = 104,
667 SpvOpImageQueryLod = 105,
668 SpvOpImageQueryLevels = 106,
669 SpvOpImageQuerySamples = 107,
670 SpvOpConvertFToU = 109,
671 SpvOpConvertFToS = 110,
672 SpvOpConvertSToF = 111,
673 SpvOpConvertUToF = 112,
674 SpvOpUConvert = 113,
675 SpvOpSConvert = 114,
676 SpvOpFConvert = 115,
677 SpvOpQuantizeToF16 = 116,
678 SpvOpConvertPtrToU = 117,
679 SpvOpSatConvertSToU = 118,
680 SpvOpSatConvertUToS = 119,
681 SpvOpConvertUToPtr = 120,
682 SpvOpPtrCastToGeneric = 121,
683 SpvOpGenericCastToPtr = 122,
684 SpvOpGenericCastToPtrExplicit = 123,
685 SpvOpBitcast = 124,
686 SpvOpSNegate = 126,
687 SpvOpFNegate = 127,
688 SpvOpIAdd = 128,
689 SpvOpFAdd = 129,
690 SpvOpISub = 130,
691 SpvOpFSub = 131,
692 SpvOpIMul = 132,
693 SpvOpFMul = 133,
694 SpvOpUDiv = 134,
695 SpvOpSDiv = 135,
696 SpvOpFDiv = 136,
697 SpvOpUMod = 137,
698 SpvOpSRem = 138,
699 SpvOpSMod = 139,
700 SpvOpFRem = 140,
701 SpvOpFMod = 141,
702 SpvOpVectorTimesScalar = 142,
703 SpvOpMatrixTimesScalar = 143,
704 SpvOpVectorTimesMatrix = 144,
705 SpvOpMatrixTimesVector = 145,
706 SpvOpMatrixTimesMatrix = 146,
707 SpvOpOuterProduct = 147,
708 SpvOpDot = 148,
709 SpvOpIAddCarry = 149,
710 SpvOpISubBorrow = 150,
711 SpvOpUMulExtended = 151,
712 SpvOpSMulExtended = 152,
713 SpvOpAny = 154,
714 SpvOpAll = 155,
715 SpvOpIsNan = 156,
716 SpvOpIsInf = 157,
717 SpvOpIsFinite = 158,
718 SpvOpIsNormal = 159,
719 SpvOpSignBitSet = 160,
720 SpvOpLessOrGreater = 161,
721 SpvOpOrdered = 162,
722 SpvOpUnordered = 163,
723 SpvOpLogicalEqual = 164,
724 SpvOpLogicalNotEqual = 165,
725 SpvOpLogicalOr = 166,
726 SpvOpLogicalAnd = 167,
727 SpvOpLogicalNot = 168,
728 SpvOpSelect = 169,
729 SpvOpIEqual = 170,
730 SpvOpINotEqual = 171,
731 SpvOpUGreaterThan = 172,
732 SpvOpSGreaterThan = 173,
733 SpvOpUGreaterThanEqual = 174,
734 SpvOpSGreaterThanEqual = 175,
735 SpvOpULessThan = 176,
736 SpvOpSLessThan = 177,
737 SpvOpULessThanEqual = 178,
738 SpvOpSLessThanEqual = 179,
739 SpvOpFOrdEqual = 180,
740 SpvOpFUnordEqual = 181,
741 SpvOpFOrdNotEqual = 182,
742 SpvOpFUnordNotEqual = 183,
743 SpvOpFOrdLessThan = 184,
744 SpvOpFUnordLessThan = 185,
745 SpvOpFOrdGreaterThan = 186,
746 SpvOpFUnordGreaterThan = 187,
747 SpvOpFOrdLessThanEqual = 188,
748 SpvOpFUnordLessThanEqual = 189,
749 SpvOpFOrdGreaterThanEqual = 190,
750 SpvOpFUnordGreaterThanEqual = 191,
751 SpvOpShiftRightLogical = 194,
752 SpvOpShiftRightArithmetic = 195,
753 SpvOpShiftLeftLogical = 196,
754 SpvOpBitwiseOr = 197,
755 SpvOpBitwiseXor = 198,
756 SpvOpBitwiseAnd = 199,
757 SpvOpNot = 200,
758 SpvOpBitFieldInsert = 201,
759 SpvOpBitFieldSExtract = 202,
760 SpvOpBitFieldUExtract = 203,
761 SpvOpBitReverse = 204,
762 SpvOpBitCount = 205,
763 SpvOpDPdx = 207,
764 SpvOpDPdy = 208,
765 SpvOpFwidth = 209,
766 SpvOpDPdxFine = 210,
767 SpvOpDPdyFine = 211,
768 SpvOpFwidthFine = 212,
769 SpvOpDPdxCoarse = 213,
770 SpvOpDPdyCoarse = 214,
771 SpvOpFwidthCoarse = 215,
772 SpvOpEmitVertex = 218,
773 SpvOpEndPrimitive = 219,
774 SpvOpEmitStreamVertex = 220,
775 SpvOpEndStreamPrimitive = 221,
776 SpvOpControlBarrier = 224,
777 SpvOpMemoryBarrier = 225,
778 SpvOpAtomicLoad = 227,
779 SpvOpAtomicStore = 228,
780 SpvOpAtomicExchange = 229,
781 SpvOpAtomicCompareExchange = 230,
782 SpvOpAtomicCompareExchangeWeak = 231,
783 SpvOpAtomicIIncrement = 232,
784 SpvOpAtomicIDecrement = 233,
785 SpvOpAtomicIAdd = 234,
786 SpvOpAtomicISub = 235,
787 SpvOpAtomicSMin = 236,
788 SpvOpAtomicUMin = 237,
789 SpvOpAtomicSMax = 238,
790 SpvOpAtomicUMax = 239,
791 SpvOpAtomicAnd = 240,
792 SpvOpAtomicOr = 241,
793 SpvOpAtomicXor = 242,
794 SpvOpPhi = 245,
795 SpvOpLoopMerge = 246,
796 SpvOpSelectionMerge = 247,
797 SpvOpLabel = 248,
798 SpvOpBranch = 249,
799 SpvOpBranchConditional = 250,
800 SpvOpSwitch = 251,
801 SpvOpKill = 252,
802 SpvOpReturn = 253,
803 SpvOpReturnValue = 254,
804 SpvOpUnreachable = 255,
805 SpvOpLifetimeStart = 256,
806 SpvOpLifetimeStop = 257,
807 SpvOpAsyncGroupCopy = 259,
808 SpvOpWaitGroupEvents = 260,
809 SpvOpGroupAll = 261,
810 SpvOpGroupAny = 262,
811 SpvOpGroupBroadcast = 263,
812 SpvOpGroupIAdd = 264,
813 SpvOpGroupFAdd = 265,
814 SpvOpGroupFMin = 266,
815 SpvOpGroupUMin = 267,
816 SpvOpGroupSMin = 268,
817 SpvOpGroupFMax = 269,
818 SpvOpGroupUMax = 270,
819 SpvOpGroupSMax = 271,
820 SpvOpReadPipe = 274,
821 SpvOpWritePipe = 275,
822 SpvOpReservedReadPipe = 276,
823 SpvOpReservedWritePipe = 277,
824 SpvOpReserveReadPipePackets = 278,
825 SpvOpReserveWritePipePackets = 279,
826 SpvOpCommitReadPipe = 280,
827 SpvOpCommitWritePipe = 281,
828 SpvOpIsValidReserveId = 282,
829 SpvOpGetNumPipePackets = 283,
830 SpvOpGetMaxPipePackets = 284,
831 SpvOpGroupReserveReadPipePackets = 285,
832 SpvOpGroupReserveWritePipePackets = 286,
833 SpvOpGroupCommitReadPipe = 287,
834 SpvOpGroupCommitWritePipe = 288,
835 SpvOpEnqueueMarker = 291,
836 SpvOpEnqueueKernel = 292,
837 SpvOpGetKernelNDrangeSubGroupCount = 293,
838 SpvOpGetKernelNDrangeMaxSubGroupSize = 294,
839 SpvOpGetKernelWorkGroupSize = 295,
840 SpvOpGetKernelPreferredWorkGroupSizeMultiple = 296,
841 SpvOpRetainEvent = 297,
842 SpvOpReleaseEvent = 298,
843 SpvOpCreateUserEvent = 299,
844 SpvOpIsValidEvent = 300,
845 SpvOpSetUserEventStatus = 301,
846 SpvOpCaptureEventProfilingInfo = 302,
847 SpvOpGetDefaultQueue = 303,
848 SpvOpBuildNDRange = 304,
849 SpvOpImageSparseSampleImplicitLod = 305,
850 SpvOpImageSparseSampleExplicitLod = 306,
851 SpvOpImageSparseSampleDrefImplicitLod = 307,
852 SpvOpImageSparseSampleDrefExplicitLod = 308,
853 SpvOpImageSparseSampleProjImplicitLod = 309,
854 SpvOpImageSparseSampleProjExplicitLod = 310,
855 SpvOpImageSparseSampleProjDrefImplicitLod = 311,
856 SpvOpImageSparseSampleProjDrefExplicitLod = 312,
857 SpvOpImageSparseFetch = 313,
858 SpvOpImageSparseGather = 314,
859 SpvOpImageSparseDrefGather = 315,
860 SpvOpImageSparseTexelsResident = 316,
861 SpvOpNoLine = 317,
862 SpvOpAtomicFlagTestAndSet = 318,
863 SpvOpAtomicFlagClear = 319,
864 } SpvOp;
865
866 #endif // #ifndef spirv_H
867