blob: f3d18a3f9519ee3f09dbeb6305d9422a025ce576 [file] [log] [blame]
Ian Elliotte6717772015-04-16 18:31:46 -06001/*
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -06002** Copyright (c) 2015 The Khronos Group Inc.
Ian Elliotte6717772015-04-16 18:31:46 -06003**
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -06004** 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:
Ian Elliotte6717772015-04-16 18:31:46 -060010**
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060011** The above copyright notice and this permission notice shall be included in
12** all copies or substantial portions of the Materials.
Ian Elliotte6717772015-04-16 18:31:46 -060013**
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060014** 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.
Ian Elliotte6717772015-04-16 18:31:46 -060025*/
26
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060027/*
28** This header is automatically generated by the same tool that creates
29** the Binary Section of the SPIR-V specification.
30*/
Ian Elliotte6717772015-04-16 18:31:46 -060031
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060032/*
33** Specification revision 30.
34** Enumeration tokens for SPIR-V, in three styles: C, C++, generic.
35** - C++ will have the tokens in the "spv" name space, with no prefix.
36** - C will have tokens with as "Spv" prefix.
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
Ian Elliotte6717772015-04-16 18:31:46 -060044#ifndef spirv_H
45#define spirv_H
46
47#ifdef __cplusplus
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060048
49namespace spv {
Ian Elliotte6717772015-04-16 18:31:46 -060050
51const int MagicNumber = 0x07230203;
52const int Version = 99;
53
54typedef unsigned int Id;
55
Ian Elliotte6717772015-04-16 18:31:46 -060056const unsigned int OpCodeMask = 0xFFFF;
57const unsigned int WordCountShift = 16;
58
Ian Elliotte6717772015-04-16 18:31:46 -060059enum SourceLanguage {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060060 SourceLanguageUnknown = 0,
61 SourceLanguageESSL = 1,
62 SourceLanguageGLSL = 2,
63 SourceLanguageOpenCL = 3,
Ian Elliotte6717772015-04-16 18:31:46 -060064};
65
Ian Elliotte6717772015-04-16 18:31:46 -060066enum ExecutionModel {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060067 ExecutionModelVertex = 0,
68 ExecutionModelTessellationControl = 1,
69 ExecutionModelTessellationEvaluation = 2,
70 ExecutionModelGeometry = 3,
71 ExecutionModelFragment = 4,
72 ExecutionModelGLCompute = 5,
73 ExecutionModelKernel = 6,
Ian Elliotte6717772015-04-16 18:31:46 -060074};
75
Ian Elliotte6717772015-04-16 18:31:46 -060076enum AddressingModel {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060077 AddressingModelLogical = 0,
78 AddressingModelPhysical32 = 1,
79 AddressingModelPhysical64 = 2,
Ian Elliotte6717772015-04-16 18:31:46 -060080};
81
Ian Elliotte6717772015-04-16 18:31:46 -060082enum MemoryModel {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060083 MemoryModelSimple = 0,
84 MemoryModelGLSL450 = 1,
85 MemoryModelOpenCL12 = 2,
86 MemoryModelOpenCL20 = 3,
87 MemoryModelOpenCL21 = 4,
Ian Elliotte6717772015-04-16 18:31:46 -060088};
89
Ian Elliotte6717772015-04-16 18:31:46 -060090enum ExecutionMode {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -060091 ExecutionModeInvocations = 0,
92 ExecutionModeSpacingEqual = 1,
93 ExecutionModeSpacingFractionalEven = 2,
94 ExecutionModeSpacingFractionalOdd = 3,
95 ExecutionModeVertexOrderCw = 4,
96 ExecutionModeVertexOrderCcw = 5,
97 ExecutionModePixelCenterInteger = 6,
98 ExecutionModeOriginUpperLeft = 7,
99 ExecutionModeEarlyFragmentTests = 8,
100 ExecutionModePointMode = 9,
101 ExecutionModeXfb = 10,
102 ExecutionModeDepthReplacing = 11,
103 ExecutionModeDepthAny = 12,
104 ExecutionModeDepthGreater = 13,
105 ExecutionModeDepthLess = 14,
106 ExecutionModeDepthUnchanged = 15,
107 ExecutionModeLocalSize = 16,
108 ExecutionModeLocalSizeHint = 17,
109 ExecutionModeInputPoints = 18,
110 ExecutionModeInputLines = 19,
111 ExecutionModeInputLinesAdjacency = 20,
112 ExecutionModeInputTriangles = 21,
113 ExecutionModeInputTrianglesAdjacency = 22,
114 ExecutionModeInputQuads = 23,
115 ExecutionModeInputIsolines = 24,
116 ExecutionModeOutputVertices = 25,
117 ExecutionModeOutputPoints = 26,
118 ExecutionModeOutputLineStrip = 27,
119 ExecutionModeOutputTriangleStrip = 28,
120 ExecutionModeVecTypeHint = 29,
121 ExecutionModeContractionOff = 30,
Ian Elliotte6717772015-04-16 18:31:46 -0600122};
123
124enum StorageClass {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600125 StorageClassUniformConstant = 0,
126 StorageClassInput = 1,
127 StorageClassUniform = 2,
128 StorageClassOutput = 3,
129 StorageClassWorkgroupLocal = 4,
130 StorageClassWorkgroupGlobal = 5,
131 StorageClassPrivateGlobal = 6,
132 StorageClassFunction = 7,
133 StorageClassGeneric = 8,
134 StorageClassPrivate = 9,
135 StorageClassAtomicCounter = 10,
Ian Elliotte6717772015-04-16 18:31:46 -0600136};
137
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600138enum Dim {
139 Dim1D = 0,
140 Dim2D = 1,
141 Dim3D = 2,
142 DimCube = 3,
143 DimRect = 4,
144 DimBuffer = 5,
Ian Elliotte6717772015-04-16 18:31:46 -0600145};
146
Ian Elliotte6717772015-04-16 18:31:46 -0600147enum SamplerAddressingMode {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600148 SamplerAddressingModeNone = 0,
149 SamplerAddressingModeClampToEdge = 1,
150 SamplerAddressingModeClamp = 2,
151 SamplerAddressingModeRepeat = 3,
152 SamplerAddressingModeRepeatMirrored = 4,
Ian Elliotte6717772015-04-16 18:31:46 -0600153};
154
Ian Elliotte6717772015-04-16 18:31:46 -0600155enum SamplerFilterMode {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600156 SamplerFilterModeNearest = 0,
157 SamplerFilterModeLinear = 1,
Ian Elliotte6717772015-04-16 18:31:46 -0600158};
159
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600160enum FPFastMathModeShift {
161 FPFastMathModeNotNaNShift = 0,
162 FPFastMathModeNotInfShift = 1,
163 FPFastMathModeNSZShift = 2,
164 FPFastMathModeAllowRecipShift = 3,
165 FPFastMathModeFastShift = 4,
Ian Elliotte6717772015-04-16 18:31:46 -0600166};
167
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600168enum FPFastMathModeMask {
169 FPFastMathModeMaskNone = 0,
170 FPFastMathModeNotNaNMask = 0x00000001,
171 FPFastMathModeNotInfMask = 0x00000002,
172 FPFastMathModeNSZMask = 0x00000004,
173 FPFastMathModeAllowRecipMask = 0x00000008,
174 FPFastMathModeFastMask = 0x00000010,
175};
176
Ian Elliotte6717772015-04-16 18:31:46 -0600177enum FPRoundingMode {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600178 FPRoundingModeRTE = 0,
179 FPRoundingModeRTZ = 1,
180 FPRoundingModeRTP = 2,
181 FPRoundingModeRTN = 3,
Ian Elliotte6717772015-04-16 18:31:46 -0600182};
183
Ian Elliotte6717772015-04-16 18:31:46 -0600184enum LinkageType {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600185 LinkageTypeExport = 0,
186 LinkageTypeImport = 1,
Ian Elliotte6717772015-04-16 18:31:46 -0600187};
188
Ian Elliotte6717772015-04-16 18:31:46 -0600189enum AccessQualifier {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600190 AccessQualifierReadOnly = 0,
191 AccessQualifierWriteOnly = 1,
192 AccessQualifierReadWrite = 2,
Ian Elliotte6717772015-04-16 18:31:46 -0600193};
194
Ian Elliotte6717772015-04-16 18:31:46 -0600195enum FunctionParameterAttribute {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600196 FunctionParameterAttributeZext = 0,
197 FunctionParameterAttributeSext = 1,
198 FunctionParameterAttributeByVal = 2,
199 FunctionParameterAttributeSret = 3,
200 FunctionParameterAttributeNoAlias = 4,
201 FunctionParameterAttributeNoCapture = 5,
202 FunctionParameterAttributeSVM = 6,
203 FunctionParameterAttributeNoWrite = 7,
204 FunctionParameterAttributeNoReadWrite = 8,
Ian Elliotte6717772015-04-16 18:31:46 -0600205};
206
Ian Elliotte6717772015-04-16 18:31:46 -0600207enum Decoration {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600208 DecorationPrecisionLow = 0,
209 DecorationPrecisionMedium = 1,
210 DecorationPrecisionHigh = 2,
211 DecorationBlock = 3,
212 DecorationBufferBlock = 4,
213 DecorationRowMajor = 5,
214 DecorationColMajor = 6,
215 DecorationGLSLShared = 7,
216 DecorationGLSLStd140 = 8,
217 DecorationGLSLStd430 = 9,
218 DecorationGLSLPacked = 10,
219 DecorationSmooth = 11,
220 DecorationNoperspective = 12,
221 DecorationFlat = 13,
222 DecorationPatch = 14,
223 DecorationCentroid = 15,
224 DecorationSample = 16,
225 DecorationInvariant = 17,
226 DecorationRestrict = 18,
227 DecorationAliased = 19,
228 DecorationVolatile = 20,
229 DecorationConstant = 21,
230 DecorationCoherent = 22,
231 DecorationNonwritable = 23,
232 DecorationNonreadable = 24,
233 DecorationUniform = 25,
234 DecorationNoStaticUse = 26,
235 DecorationCPacked = 27,
236 DecorationSaturatedConversion = 28,
237 DecorationStream = 29,
238 DecorationLocation = 30,
239 DecorationComponent = 31,
240 DecorationIndex = 32,
241 DecorationBinding = 33,
242 DecorationDescriptorSet = 34,
243 DecorationOffset = 35,
244 DecorationAlignment = 36,
245 DecorationXfbBuffer = 37,
246 DecorationStride = 38,
247 DecorationBuiltIn = 39,
248 DecorationFuncParamAttr = 40,
249 DecorationFPRoundingMode = 41,
250 DecorationFPFastMathMode = 42,
251 DecorationLinkageAttributes = 43,
252 DecorationSpecId = 44,
Ian Elliotte6717772015-04-16 18:31:46 -0600253};
254
255enum BuiltIn {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600256 BuiltInPosition = 0,
257 BuiltInPointSize = 1,
258 BuiltInClipVertex = 2,
259 BuiltInClipDistance = 3,
260 BuiltInCullDistance = 4,
261 BuiltInVertexId = 5,
262 BuiltInInstanceId = 6,
263 BuiltInPrimitiveId = 7,
264 BuiltInInvocationId = 8,
265 BuiltInLayer = 9,
266 BuiltInViewportIndex = 10,
267 BuiltInTessLevelOuter = 11,
268 BuiltInTessLevelInner = 12,
269 BuiltInTessCoord = 13,
270 BuiltInPatchVertices = 14,
271 BuiltInFragCoord = 15,
272 BuiltInPointCoord = 16,
273 BuiltInFrontFacing = 17,
274 BuiltInSampleId = 18,
275 BuiltInSamplePosition = 19,
276 BuiltInSampleMask = 20,
277 BuiltInFragColor = 21,
278 BuiltInFragDepth = 22,
279 BuiltInHelperInvocation = 23,
280 BuiltInNumWorkgroups = 24,
281 BuiltInWorkgroupSize = 25,
282 BuiltInWorkgroupId = 26,
283 BuiltInLocalInvocationId = 27,
284 BuiltInGlobalInvocationId = 28,
285 BuiltInLocalInvocationIndex = 29,
286 BuiltInWorkDim = 30,
287 BuiltInGlobalSize = 31,
288 BuiltInEnqueuedWorkgroupSize = 32,
289 BuiltInGlobalOffset = 33,
290 BuiltInGlobalLinearId = 34,
291 BuiltInWorkgroupLinearId = 35,
292 BuiltInSubgroupSize = 36,
293 BuiltInSubgroupMaxSize = 37,
294 BuiltInNumSubgroups = 38,
295 BuiltInNumEnqueuedSubgroups = 39,
296 BuiltInSubgroupId = 40,
297 BuiltInSubgroupLocalInvocationId = 41,
Ian Elliotte6717772015-04-16 18:31:46 -0600298};
299
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600300enum SelectionControlShift {
301 SelectionControlFlattenShift = 0,
302 SelectionControlDontFlattenShift = 1,
Ian Elliotte6717772015-04-16 18:31:46 -0600303};
304
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600305enum SelectionControlMask {
306 SelectionControlMaskNone = 0,
307 SelectionControlFlattenMask = 0x00000001,
308 SelectionControlDontFlattenMask = 0x00000002,
309};
Ian Elliotte6717772015-04-16 18:31:46 -0600310
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600311enum LoopControlShift {
312 LoopControlUnrollShift = 0,
313 LoopControlDontUnrollShift = 1,
314};
315
316enum LoopControlMask {
317 LoopControlMaskNone = 0,
318 LoopControlUnrollMask = 0x00000001,
319 LoopControlDontUnrollMask = 0x00000002,
320};
321
322enum FunctionControlShift {
323 FunctionControlInlineShift = 0,
324 FunctionControlDontInlineShift = 1,
325 FunctionControlPureShift = 2,
326 FunctionControlConstShift = 3,
Ian Elliotte6717772015-04-16 18:31:46 -0600327};
328
329enum FunctionControlMask {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600330 FunctionControlMaskNone = 0,
331 FunctionControlInlineMask = 0x00000001,
332 FunctionControlDontInlineMask = 0x00000002,
333 FunctionControlPureMask = 0x00000004,
334 FunctionControlConstMask = 0x00000008,
335};
Ian Elliotte6717772015-04-16 18:31:46 -0600336
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600337enum MemorySemanticsShift {
338 MemorySemanticsRelaxedShift = 0,
339 MemorySemanticsSequentiallyConsistentShift = 1,
340 MemorySemanticsAcquireShift = 2,
341 MemorySemanticsReleaseShift = 3,
342 MemorySemanticsUniformMemoryShift = 4,
343 MemorySemanticsSubgroupMemoryShift = 5,
344 MemorySemanticsWorkgroupLocalMemoryShift = 6,
345 MemorySemanticsWorkgroupGlobalMemoryShift = 7,
346 MemorySemanticsAtomicCounterMemoryShift = 8,
347 MemorySemanticsImageMemoryShift = 9,
Ian Elliotte6717772015-04-16 18:31:46 -0600348};
349
350enum MemorySemanticsMask {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600351 MemorySemanticsMaskNone = 0,
352 MemorySemanticsRelaxedMask = 0x00000001,
353 MemorySemanticsSequentiallyConsistentMask = 0x00000002,
354 MemorySemanticsAcquireMask = 0x00000004,
355 MemorySemanticsReleaseMask = 0x00000008,
356 MemorySemanticsUniformMemoryMask = 0x00000010,
357 MemorySemanticsSubgroupMemoryMask = 0x00000020,
358 MemorySemanticsWorkgroupLocalMemoryMask = 0x00000040,
359 MemorySemanticsWorkgroupGlobalMemoryMask = 0x00000080,
360 MemorySemanticsAtomicCounterMemoryMask = 0x00000100,
361 MemorySemanticsImageMemoryMask = 0x00000200,
362};
Ian Elliotte6717772015-04-16 18:31:46 -0600363
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600364enum MemoryAccessShift {
365 MemoryAccessVolatileShift = 0,
366 MemoryAccessAlignedShift = 1,
Ian Elliotte6717772015-04-16 18:31:46 -0600367};
368
369enum MemoryAccessMask {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600370 MemoryAccessMaskNone = 0,
371 MemoryAccessVolatileMask = 0x00000001,
372 MemoryAccessAlignedMask = 0x00000002,
Ian Elliotte6717772015-04-16 18:31:46 -0600373};
374
375enum ExecutionScope {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600376 ExecutionScopeCrossDevice = 0,
377 ExecutionScopeDevice = 1,
378 ExecutionScopeWorkgroup = 2,
379 ExecutionScopeSubgroup = 3,
Ian Elliotte6717772015-04-16 18:31:46 -0600380};
381
382enum GroupOperation {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600383 GroupOperationReduce = 0,
384 GroupOperationInclusiveScan = 1,
385 GroupOperationExclusiveScan = 2,
Ian Elliotte6717772015-04-16 18:31:46 -0600386};
387
388enum KernelEnqueueFlags {
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600389 KernelEnqueueFlagsNoWait = 0,
390 KernelEnqueueFlagsWaitKernel = 1,
391 KernelEnqueueFlagsWaitWorkGroup = 2,
Ian Elliotte6717772015-04-16 18:31:46 -0600392};
393
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600394enum KernelProfilingInfoShift {
395 KernelProfilingInfoCmdExecTimeShift = 0,
Ian Elliotte6717772015-04-16 18:31:46 -0600396};
397
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600398enum KernelProfilingInfoMask {
399 KernelProfilingInfoMaskNone = 0,
400 KernelProfilingInfoCmdExecTimeMask = 0x00000001,
Ian Elliotte6717772015-04-16 18:31:46 -0600401};
402
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600403enum Op {
404 OpNop = 0,
405 OpSource = 1,
406 OpSourceExtension = 2,
407 OpExtension = 3,
408 OpExtInstImport = 4,
409 OpMemoryModel = 5,
410 OpEntryPoint = 6,
411 OpExecutionMode = 7,
412 OpTypeVoid = 8,
413 OpTypeBool = 9,
414 OpTypeInt = 10,
415 OpTypeFloat = 11,
416 OpTypeVector = 12,
417 OpTypeMatrix = 13,
418 OpTypeSampler = 14,
419 OpTypeFilter = 15,
420 OpTypeArray = 16,
421 OpTypeRuntimeArray = 17,
422 OpTypeStruct = 18,
423 OpTypeOpaque = 19,
424 OpTypePointer = 20,
425 OpTypeFunction = 21,
426 OpTypeEvent = 22,
427 OpTypeDeviceEvent = 23,
428 OpTypeReserveId = 24,
429 OpTypeQueue = 25,
430 OpTypePipe = 26,
431 OpConstantTrue = 27,
432 OpConstantFalse = 28,
433 OpConstant = 29,
434 OpConstantComposite = 30,
435 OpConstantSampler = 31,
436 OpConstantNullPointer = 32,
437 OpConstantNullObject = 33,
438 OpSpecConstantTrue = 34,
439 OpSpecConstantFalse = 35,
440 OpSpecConstant = 36,
441 OpSpecConstantComposite = 37,
442 OpVariable = 38,
443 OpVariableArray = 39,
444 OpFunction = 40,
445 OpFunctionParameter = 41,
446 OpFunctionEnd = 42,
447 OpFunctionCall = 43,
448 OpExtInst = 44,
449 OpUndef = 45,
450 OpLoad = 46,
451 OpStore = 47,
452 OpPhi = 48,
453 OpDecorationGroup = 49,
454 OpDecorate = 50,
455 OpMemberDecorate = 51,
456 OpGroupDecorate = 52,
457 OpGroupMemberDecorate = 53,
458 OpName = 54,
459 OpMemberName = 55,
460 OpString = 56,
461 OpLine = 57,
462 OpVectorExtractDynamic = 58,
463 OpVectorInsertDynamic = 59,
464 OpVectorShuffle = 60,
465 OpCompositeConstruct = 61,
466 OpCompositeExtract = 62,
467 OpCompositeInsert = 63,
468 OpCopyObject = 64,
469 OpCopyMemory = 65,
470 OpCopyMemorySized = 66,
471 OpSampler = 67,
472 OpTextureSample = 68,
473 OpTextureSampleDref = 69,
474 OpTextureSampleLod = 70,
475 OpTextureSampleProj = 71,
476 OpTextureSampleGrad = 72,
477 OpTextureSampleOffset = 73,
478 OpTextureSampleProjLod = 74,
479 OpTextureSampleProjGrad = 75,
480 OpTextureSampleLodOffset = 76,
481 OpTextureSampleProjOffset = 77,
482 OpTextureSampleGradOffset = 78,
483 OpTextureSampleProjLodOffset = 79,
484 OpTextureSampleProjGradOffset = 80,
485 OpTextureFetchTexelLod = 81,
486 OpTextureFetchTexelOffset = 82,
487 OpTextureFetchSample = 83,
488 OpTextureFetchTexel = 84,
489 OpTextureGather = 85,
490 OpTextureGatherOffset = 86,
491 OpTextureGatherOffsets = 87,
492 OpTextureQuerySizeLod = 88,
493 OpTextureQuerySize = 89,
494 OpTextureQueryLod = 90,
495 OpTextureQueryLevels = 91,
496 OpTextureQuerySamples = 92,
497 OpAccessChain = 93,
498 OpInBoundsAccessChain = 94,
499 OpSNegate = 95,
500 OpFNegate = 96,
501 OpNot = 97,
502 OpAny = 98,
503 OpAll = 99,
504 OpConvertFToU = 100,
505 OpConvertFToS = 101,
506 OpConvertSToF = 102,
507 OpConvertUToF = 103,
508 OpUConvert = 104,
509 OpSConvert = 105,
510 OpFConvert = 106,
511 OpConvertPtrToU = 107,
512 OpConvertUToPtr = 108,
513 OpPtrCastToGeneric = 109,
514 OpGenericCastToPtr = 110,
515 OpBitcast = 111,
516 OpTranspose = 112,
517 OpIsNan = 113,
518 OpIsInf = 114,
519 OpIsFinite = 115,
520 OpIsNormal = 116,
521 OpSignBitSet = 117,
522 OpLessOrGreater = 118,
523 OpOrdered = 119,
524 OpUnordered = 120,
525 OpArrayLength = 121,
526 OpIAdd = 122,
527 OpFAdd = 123,
528 OpISub = 124,
529 OpFSub = 125,
530 OpIMul = 126,
531 OpFMul = 127,
532 OpUDiv = 128,
533 OpSDiv = 129,
534 OpFDiv = 130,
535 OpUMod = 131,
536 OpSRem = 132,
537 OpSMod = 133,
538 OpFRem = 134,
539 OpFMod = 135,
540 OpVectorTimesScalar = 136,
541 OpMatrixTimesScalar = 137,
542 OpVectorTimesMatrix = 138,
543 OpMatrixTimesVector = 139,
544 OpMatrixTimesMatrix = 140,
545 OpOuterProduct = 141,
546 OpDot = 142,
547 OpShiftRightLogical = 143,
548 OpShiftRightArithmetic = 144,
549 OpShiftLeftLogical = 145,
550 OpLogicalOr = 146,
551 OpLogicalXor = 147,
552 OpLogicalAnd = 148,
553 OpBitwiseOr = 149,
554 OpBitwiseXor = 150,
555 OpBitwiseAnd = 151,
556 OpSelect = 152,
557 OpIEqual = 153,
558 OpFOrdEqual = 154,
559 OpFUnordEqual = 155,
560 OpINotEqual = 156,
561 OpFOrdNotEqual = 157,
562 OpFUnordNotEqual = 158,
563 OpULessThan = 159,
564 OpSLessThan = 160,
565 OpFOrdLessThan = 161,
566 OpFUnordLessThan = 162,
567 OpUGreaterThan = 163,
568 OpSGreaterThan = 164,
569 OpFOrdGreaterThan = 165,
570 OpFUnordGreaterThan = 166,
571 OpULessThanEqual = 167,
572 OpSLessThanEqual = 168,
573 OpFOrdLessThanEqual = 169,
574 OpFUnordLessThanEqual = 170,
575 OpUGreaterThanEqual = 171,
576 OpSGreaterThanEqual = 172,
577 OpFOrdGreaterThanEqual = 173,
578 OpFUnordGreaterThanEqual = 174,
579 OpDPdx = 175,
580 OpDPdy = 176,
581 OpFwidth = 177,
582 OpDPdxFine = 178,
583 OpDPdyFine = 179,
584 OpFwidthFine = 180,
585 OpDPdxCoarse = 181,
586 OpDPdyCoarse = 182,
587 OpFwidthCoarse = 183,
588 OpEmitVertex = 184,
589 OpEndPrimitive = 185,
590 OpEmitStreamVertex = 186,
591 OpEndStreamPrimitive = 187,
592 OpControlBarrier = 188,
593 OpMemoryBarrier = 189,
594 OpImagePointer = 190,
595 OpAtomicInit = 191,
596 OpAtomicLoad = 192,
597 OpAtomicStore = 193,
598 OpAtomicExchange = 194,
599 OpAtomicCompareExchange = 195,
600 OpAtomicCompareExchangeWeak = 196,
601 OpAtomicIIncrement = 197,
602 OpAtomicIDecrement = 198,
603 OpAtomicIAdd = 199,
604 OpAtomicISub = 200,
605 OpAtomicUMin = 201,
606 OpAtomicUMax = 202,
607 OpAtomicAnd = 203,
608 OpAtomicOr = 204,
609 OpAtomicXor = 205,
610 OpLoopMerge = 206,
611 OpSelectionMerge = 207,
612 OpLabel = 208,
613 OpBranch = 209,
614 OpBranchConditional = 210,
615 OpSwitch = 211,
616 OpKill = 212,
617 OpReturn = 213,
618 OpReturnValue = 214,
619 OpUnreachable = 215,
620 OpLifetimeStart = 216,
621 OpLifetimeStop = 217,
622 OpCompileFlag = 218,
623 OpAsyncGroupCopy = 219,
624 OpWaitGroupEvents = 220,
625 OpGroupAll = 221,
626 OpGroupAny = 222,
627 OpGroupBroadcast = 223,
628 OpGroupIAdd = 224,
629 OpGroupFAdd = 225,
630 OpGroupFMin = 226,
631 OpGroupUMin = 227,
632 OpGroupSMin = 228,
633 OpGroupFMax = 229,
634 OpGroupUMax = 230,
635 OpGroupSMax = 231,
636 OpGenericCastToPtrExplicit = 232,
637 OpGenericPtrMemSemantics = 233,
638 OpReadPipe = 234,
639 OpWritePipe = 235,
640 OpReservedReadPipe = 236,
641 OpReservedWritePipe = 237,
642 OpReserveReadPipePackets = 238,
643 OpReserveWritePipePackets = 239,
644 OpCommitReadPipe = 240,
645 OpCommitWritePipe = 241,
646 OpIsValidReserveId = 242,
647 OpGetNumPipePackets = 243,
648 OpGetMaxPipePackets = 244,
649 OpGroupReserveReadPipePackets = 245,
650 OpGroupReserveWritePipePackets = 246,
651 OpGroupCommitReadPipe = 247,
652 OpGroupCommitWritePipe = 248,
653 OpEnqueueMarker = 249,
654 OpEnqueueKernel = 250,
655 OpGetKernelNDrangeSubGroupCount = 251,
656 OpGetKernelNDrangeMaxSubGroupSize = 252,
657 OpGetKernelWorkGroupSize = 253,
658 OpGetKernelPreferredWorkGroupSizeMultiple = 254,
659 OpRetainEvent = 255,
660 OpReleaseEvent = 256,
661 OpCreateUserEvent = 257,
662 OpIsValidEvent = 258,
663 OpSetUserEventStatus = 259,
664 OpCaptureEventProfilingInfo = 260,
665 OpGetDefaultQueue = 261,
666 OpBuildNDRange = 262,
667 OpSatConvertSToU = 263,
668 OpSatConvertUToS = 264,
669 OpAtomicIMin = 265,
670 OpAtomicIMax = 266,
671};
672
Ian Elliotte6717772015-04-16 18:31:46 -0600673}; // end namespace spv
Ian Elliotte6717772015-04-16 18:31:46 -0600674
Courtney Goeltzenleuchtere1f48b02015-05-08 15:46:40 -0600675#endif // #ifdef __cplusplus
676
677
678#ifndef __cplusplus
679
680const int SpvMagicNumber = 0x07230203;
681const int SpvVersion = 99;
682
683typedef unsigned int SpvId;
684
685const unsigned int SpvOpCodeMask = 0xFFFF;
686const unsigned int SpvWordCountShift = 16;
687
688typedef enum SpvSourceLanguage_ {
689 SpvSourceLanguageUnknown = 0,
690 SpvSourceLanguageESSL = 1,
691 SpvSourceLanguageGLSL = 2,
692 SpvSourceLanguageOpenCL = 3,
693} SpvSourceLanguage;
694
695typedef enum SpvExecutionModel_ {
696 SpvExecutionModelVertex = 0,
697 SpvExecutionModelTessellationControl = 1,
698 SpvExecutionModelTessellationEvaluation = 2,
699 SpvExecutionModelGeometry = 3,
700 SpvExecutionModelFragment = 4,
701 SpvExecutionModelGLCompute = 5,
702 SpvExecutionModelKernel = 6,
703} SpvExecutionModel;
704
705typedef enum SpvAddressingModel_ {
706 SpvAddressingModelLogical = 0,
707 SpvAddressingModelPhysical32 = 1,
708 SpvAddressingModelPhysical64 = 2,
709} SpvAddressingModel;
710
711typedef enum SpvMemoryModel_ {
712 SpvMemoryModelSimple = 0,
713 SpvMemoryModelGLSL450 = 1,
714 SpvMemoryModelOpenCL12 = 2,
715 SpvMemoryModelOpenCL20 = 3,
716 SpvMemoryModelOpenCL21 = 4,
717} SpvMemoryModel;
718
719typedef enum SpvExecutionMode_ {
720 SpvExecutionModeInvocations = 0,
721 SpvExecutionModeSpacingEqual = 1,
722 SpvExecutionModeSpacingFractionalEven = 2,
723 SpvExecutionModeSpacingFractionalOdd = 3,
724 SpvExecutionModeVertexOrderCw = 4,
725 SpvExecutionModeVertexOrderCcw = 5,
726 SpvExecutionModePixelCenterInteger = 6,
727 SpvExecutionModeOriginUpperLeft = 7,
728 SpvExecutionModeEarlyFragmentTests = 8,
729 SpvExecutionModePointMode = 9,
730 SpvExecutionModeXfb = 10,
731 SpvExecutionModeDepthReplacing = 11,
732 SpvExecutionModeDepthAny = 12,
733 SpvExecutionModeDepthGreater = 13,
734 SpvExecutionModeDepthLess = 14,
735 SpvExecutionModeDepthUnchanged = 15,
736 SpvExecutionModeLocalSize = 16,
737 SpvExecutionModeLocalSizeHint = 17,
738 SpvExecutionModeInputPoints = 18,
739 SpvExecutionModeInputLines = 19,
740 SpvExecutionModeInputLinesAdjacency = 20,
741 SpvExecutionModeInputTriangles = 21,
742 SpvExecutionModeInputTrianglesAdjacency = 22,
743 SpvExecutionModeInputQuads = 23,
744 SpvExecutionModeInputIsolines = 24,
745 SpvExecutionModeOutputVertices = 25,
746 SpvExecutionModeOutputPoints = 26,
747 SpvExecutionModeOutputLineStrip = 27,
748 SpvExecutionModeOutputTriangleStrip = 28,
749 SpvExecutionModeVecTypeHint = 29,
750 SpvExecutionModeContractionOff = 30,
751} SpvExecutionMode;
752
753typedef enum SpvStorageClass_ {
754 SpvStorageClassUniformConstant = 0,
755 SpvStorageClassInput = 1,
756 SpvStorageClassUniform = 2,
757 SpvStorageClassOutput = 3,
758 SpvStorageClassWorkgroupLocal = 4,
759 SpvStorageClassWorkgroupGlobal = 5,
760 SpvStorageClassPrivateGlobal = 6,
761 SpvStorageClassFunction = 7,
762 SpvStorageClassGeneric = 8,
763 SpvStorageClassPrivate = 9,
764 SpvStorageClassAtomicCounter = 10,
765} SpvStorageClass;
766
767typedef enum SpvDim_ {
768 SpvDim1D = 0,
769 SpvDim2D = 1,
770 SpvDim3D = 2,
771 SpvDimCube = 3,
772 SpvDimRect = 4,
773 SpvDimBuffer = 5,
774} SpvDim;
775
776typedef enum SpvSamplerAddressingMode_ {
777 SpvSamplerAddressingModeNone = 0,
778 SpvSamplerAddressingModeClampToEdge = 1,
779 SpvSamplerAddressingModeClamp = 2,
780 SpvSamplerAddressingModeRepeat = 3,
781 SpvSamplerAddressingModeRepeatMirrored = 4,
782} SpvSamplerAddressingMode;
783
784typedef enum SpvSamplerFilterMode_ {
785 SpvSamplerFilterModeNearest = 0,
786 SpvSamplerFilterModeLinear = 1,
787} SpvSamplerFilterMode;
788
789typedef enum SpvFPFastMathModeShift_ {
790 SpvFPFastMathModeNotNaNShift = 0,
791 SpvFPFastMathModeNotInfShift = 1,
792 SpvFPFastMathModeNSZShift = 2,
793 SpvFPFastMathModeAllowRecipShift = 3,
794 SpvFPFastMathModeFastShift = 4,
795} SpvFPFastMathModeShift;
796
797typedef enum SpvFPFastMathModeMask_ {
798 SpvFPFastMathModeMaskNone = 0,
799 SpvFPFastMathModeNotNaNMask = 0x00000001,
800 SpvFPFastMathModeNotInfMask = 0x00000002,
801 SpvFPFastMathModeNSZMask = 0x00000004,
802 SpvFPFastMathModeAllowRecipMask = 0x00000008,
803 SpvFPFastMathModeFastMask = 0x00000010,
804} SpvFPFastMathModeMask;
805
806typedef enum SpvFPRoundingMode_ {
807 SpvFPRoundingModeRTE = 0,
808 SpvFPRoundingModeRTZ = 1,
809 SpvFPRoundingModeRTP = 2,
810 SpvFPRoundingModeRTN = 3,
811} SpvFPRoundingMode;
812
813typedef enum SpvLinkageType_ {
814 SpvLinkageTypeExport = 0,
815 SpvLinkageTypeImport = 1,
816} SpvLinkageType;
817
818typedef enum SpvAccessQualifier_ {
819 SpvAccessQualifierReadOnly = 0,
820 SpvAccessQualifierWriteOnly = 1,
821 SpvAccessQualifierReadWrite = 2,
822} SpvAccessQualifier;
823
824typedef enum SpvFunctionParameterAttribute_ {
825 SpvFunctionParameterAttributeZext = 0,
826 SpvFunctionParameterAttributeSext = 1,
827 SpvFunctionParameterAttributeByVal = 2,
828 SpvFunctionParameterAttributeSret = 3,
829 SpvFunctionParameterAttributeNoAlias = 4,
830 SpvFunctionParameterAttributeNoCapture = 5,
831 SpvFunctionParameterAttributeSVM = 6,
832 SpvFunctionParameterAttributeNoWrite = 7,
833 SpvFunctionParameterAttributeNoReadWrite = 8,
834} SpvFunctionParameterAttribute;
835
836typedef enum SpvDecoration_ {
837 SpvDecorationPrecisionLow = 0,
838 SpvDecorationPrecisionMedium = 1,
839 SpvDecorationPrecisionHigh = 2,
840 SpvDecorationBlock = 3,
841 SpvDecorationBufferBlock = 4,
842 SpvDecorationRowMajor = 5,
843 SpvDecorationColMajor = 6,
844 SpvDecorationGLSLShared = 7,
845 SpvDecorationGLSLStd140 = 8,
846 SpvDecorationGLSLStd430 = 9,
847 SpvDecorationGLSLPacked = 10,
848 SpvDecorationSmooth = 11,
849 SpvDecorationNoperspective = 12,
850 SpvDecorationFlat = 13,
851 SpvDecorationPatch = 14,
852 SpvDecorationCentroid = 15,
853 SpvDecorationSample = 16,
854 SpvDecorationInvariant = 17,
855 SpvDecorationRestrict = 18,
856 SpvDecorationAliased = 19,
857 SpvDecorationVolatile = 20,
858 SpvDecorationConstant = 21,
859 SpvDecorationCoherent = 22,
860 SpvDecorationNonwritable = 23,
861 SpvDecorationNonreadable = 24,
862 SpvDecorationUniform = 25,
863 SpvDecorationNoStaticUse = 26,
864 SpvDecorationCPacked = 27,
865 SpvDecorationSaturatedConversion = 28,
866 SpvDecorationStream = 29,
867 SpvDecorationLocation = 30,
868 SpvDecorationComponent = 31,
869 SpvDecorationIndex = 32,
870 SpvDecorationBinding = 33,
871 SpvDecorationDescriptorSet = 34,
872 SpvDecorationOffset = 35,
873 SpvDecorationAlignment = 36,
874 SpvDecorationXfbBuffer = 37,
875 SpvDecorationStride = 38,
876 SpvDecorationBuiltIn = 39,
877 SpvDecorationFuncParamAttr = 40,
878 SpvDecorationFPRoundingMode = 41,
879 SpvDecorationFPFastMathMode = 42,
880 SpvDecorationLinkageAttributes = 43,
881 SpvDecorationSpecId = 44,
882} SpvDecoration;
883
884typedef enum SpvBuiltIn_ {
885 SpvBuiltInPosition = 0,
886 SpvBuiltInPointSize = 1,
887 SpvBuiltInClipVertex = 2,
888 SpvBuiltInClipDistance = 3,
889 SpvBuiltInCullDistance = 4,
890 SpvBuiltInVertexId = 5,
891 SpvBuiltInInstanceId = 6,
892 SpvBuiltInPrimitiveId = 7,
893 SpvBuiltInInvocationId = 8,
894 SpvBuiltInLayer = 9,
895 SpvBuiltInViewportIndex = 10,
896 SpvBuiltInTessLevelOuter = 11,
897 SpvBuiltInTessLevelInner = 12,
898 SpvBuiltInTessCoord = 13,
899 SpvBuiltInPatchVertices = 14,
900 SpvBuiltInFragCoord = 15,
901 SpvBuiltInPointCoord = 16,
902 SpvBuiltInFrontFacing = 17,
903 SpvBuiltInSampleId = 18,
904 SpvBuiltInSamplePosition = 19,
905 SpvBuiltInSampleMask = 20,
906 SpvBuiltInFragColor = 21,
907 SpvBuiltInFragDepth = 22,
908 SpvBuiltInHelperInvocation = 23,
909 SpvBuiltInNumWorkgroups = 24,
910 SpvBuiltInWorkgroupSize = 25,
911 SpvBuiltInWorkgroupId = 26,
912 SpvBuiltInLocalInvocationId = 27,
913 SpvBuiltInGlobalInvocationId = 28,
914 SpvBuiltInLocalInvocationIndex = 29,
915 SpvBuiltInWorkDim = 30,
916 SpvBuiltInGlobalSize = 31,
917 SpvBuiltInEnqueuedWorkgroupSize = 32,
918 SpvBuiltInGlobalOffset = 33,
919 SpvBuiltInGlobalLinearId = 34,
920 SpvBuiltInWorkgroupLinearId = 35,
921 SpvBuiltInSubgroupSize = 36,
922 SpvBuiltInSubgroupMaxSize = 37,
923 SpvBuiltInNumSubgroups = 38,
924 SpvBuiltInNumEnqueuedSubgroups = 39,
925 SpvBuiltInSubgroupId = 40,
926 SpvBuiltInSubgroupLocalInvocationId = 41,
927} SpvBuiltIn;
928
929typedef enum SpvSelectionControlShift_ {
930 SpvSelectionControlFlattenShift = 0,
931 SpvSelectionControlDontFlattenShift = 1,
932} SpvSelectionControlShift;
933
934typedef enum SpvSelectionControlMask_ {
935 SpvSelectionControlMaskNone = 0,
936 SpvSelectionControlFlattenMask = 0x00000001,
937 SpvSelectionControlDontFlattenMask = 0x00000002,
938} SpvSelectionControlMask;
939
940typedef enum SpvLoopControlShift_ {
941 SpvLoopControlUnrollShift = 0,
942 SpvLoopControlDontUnrollShift = 1,
943} SpvLoopControlShift;
944
945typedef enum SpvLoopControlMask_ {
946 SpvLoopControlMaskNone = 0,
947 SpvLoopControlUnrollMask = 0x00000001,
948 SpvLoopControlDontUnrollMask = 0x00000002,
949} SpvLoopControlMask;
950
951typedef enum SpvFunctionControlShift_ {
952 SpvFunctionControlInlineShift = 0,
953 SpvFunctionControlDontInlineShift = 1,
954 SpvFunctionControlPureShift = 2,
955 SpvFunctionControlConstShift = 3,
956} SpvFunctionControlShift;
957
958typedef enum SpvFunctionControlMask_ {
959 SpvFunctionControlMaskNone = 0,
960 SpvFunctionControlInlineMask = 0x00000001,
961 SpvFunctionControlDontInlineMask = 0x00000002,
962 SpvFunctionControlPureMask = 0x00000004,
963 SpvFunctionControlConstMask = 0x00000008,
964} SpvFunctionControlMask;
965
966typedef enum SpvMemorySemanticsShift_ {
967 SpvMemorySemanticsRelaxedShift = 0,
968 SpvMemorySemanticsSequentiallyConsistentShift = 1,
969 SpvMemorySemanticsAcquireShift = 2,
970 SpvMemorySemanticsReleaseShift = 3,
971 SpvMemorySemanticsUniformMemoryShift = 4,
972 SpvMemorySemanticsSubgroupMemoryShift = 5,
973 SpvMemorySemanticsWorkgroupLocalMemoryShift = 6,
974 SpvMemorySemanticsWorkgroupGlobalMemoryShift = 7,
975 SpvMemorySemanticsAtomicCounterMemoryShift = 8,
976 SpvMemorySemanticsImageMemoryShift = 9,
977} SpvMemorySemanticsShift;
978
979typedef enum SpvMemorySemanticsMask_ {
980 SpvMemorySemanticsMaskNone = 0,
981 SpvMemorySemanticsRelaxedMask = 0x00000001,
982 SpvMemorySemanticsSequentiallyConsistentMask = 0x00000002,
983 SpvMemorySemanticsAcquireMask = 0x00000004,
984 SpvMemorySemanticsReleaseMask = 0x00000008,
985 SpvMemorySemanticsUniformMemoryMask = 0x00000010,
986 SpvMemorySemanticsSubgroupMemoryMask = 0x00000020,
987 SpvMemorySemanticsWorkgroupLocalMemoryMask = 0x00000040,
988 SpvMemorySemanticsWorkgroupGlobalMemoryMask = 0x00000080,
989 SpvMemorySemanticsAtomicCounterMemoryMask = 0x00000100,
990 SpvMemorySemanticsImageMemoryMask = 0x00000200,
991} SpvMemorySemanticsMask;
992
993typedef enum SpvMemoryAccessShift_ {
994 SpvMemoryAccessVolatileShift = 0,
995 SpvMemoryAccessAlignedShift = 1,
996} SpvMemoryAccessShift;
997
998typedef enum SpvMemoryAccessMask_ {
999 SpvMemoryAccessMaskNone = 0,
1000 SpvMemoryAccessVolatileMask = 0x00000001,
1001 SpvMemoryAccessAlignedMask = 0x00000002,
1002} SpvMemoryAccessMask;
1003
1004typedef enum SpvExecutionScope_ {
1005 SpvExecutionScopeCrossDevice = 0,
1006 SpvExecutionScopeDevice = 1,
1007 SpvExecutionScopeWorkgroup = 2,
1008 SpvExecutionScopeSubgroup = 3,
1009} SpvExecutionScope;
1010
1011typedef enum SpvGroupOperation_ {
1012 SpvGroupOperationReduce = 0,
1013 SpvGroupOperationInclusiveScan = 1,
1014 SpvGroupOperationExclusiveScan = 2,
1015} SpvGroupOperation;
1016
1017typedef enum SpvKernelEnqueueFlags_ {
1018 SpvKernelEnqueueFlagsNoWait = 0,
1019 SpvKernelEnqueueFlagsWaitKernel = 1,
1020 SpvKernelEnqueueFlagsWaitWorkGroup = 2,
1021} SpvKernelEnqueueFlags;
1022
1023typedef enum SpvKernelProfilingInfoShift_ {
1024 SpvKernelProfilingInfoCmdExecTimeShift = 0,
1025} SpvKernelProfilingInfoShift;
1026
1027typedef enum SpvKernelProfilingInfoMask_ {
1028 SpvKernelProfilingInfoMaskNone = 0,
1029 SpvKernelProfilingInfoCmdExecTimeMask = 0x00000001,
1030} SpvKernelProfilingInfoMask;
1031
1032typedef enum SpvOp_ {
1033 SpvOpNop = 0,
1034 SpvOpSource = 1,
1035 SpvOpSourceExtension = 2,
1036 SpvOpExtension = 3,
1037 SpvOpExtInstImport = 4,
1038 SpvOpMemoryModel = 5,
1039 SpvOpEntryPoint = 6,
1040 SpvOpExecutionMode = 7,
1041 SpvOpTypeVoid = 8,
1042 SpvOpTypeBool = 9,
1043 SpvOpTypeInt = 10,
1044 SpvOpTypeFloat = 11,
1045 SpvOpTypeVector = 12,
1046 SpvOpTypeMatrix = 13,
1047 SpvOpTypeSampler = 14,
1048 SpvOpTypeFilter = 15,
1049 SpvOpTypeArray = 16,
1050 SpvOpTypeRuntimeArray = 17,
1051 SpvOpTypeStruct = 18,
1052 SpvOpTypeOpaque = 19,
1053 SpvOpTypePointer = 20,
1054 SpvOpTypeFunction = 21,
1055 SpvOpTypeEvent = 22,
1056 SpvOpTypeDeviceEvent = 23,
1057 SpvOpTypeReserveId = 24,
1058 SpvOpTypeQueue = 25,
1059 SpvOpTypePipe = 26,
1060 SpvOpConstantTrue = 27,
1061 SpvOpConstantFalse = 28,
1062 SpvOpConstant = 29,
1063 SpvOpConstantComposite = 30,
1064 SpvOpConstantSampler = 31,
1065 SpvOpConstantNullPointer = 32,
1066 SpvOpConstantNullObject = 33,
1067 SpvOpSpecConstantTrue = 34,
1068 SpvOpSpecConstantFalse = 35,
1069 SpvOpSpecConstant = 36,
1070 SpvOpSpecConstantComposite = 37,
1071 SpvOpVariable = 38,
1072 SpvOpVariableArray = 39,
1073 SpvOpFunction = 40,
1074 SpvOpFunctionParameter = 41,
1075 SpvOpFunctionEnd = 42,
1076 SpvOpFunctionCall = 43,
1077 SpvOpExtInst = 44,
1078 SpvOpUndef = 45,
1079 SpvOpLoad = 46,
1080 SpvOpStore = 47,
1081 SpvOpPhi = 48,
1082 SpvOpDecorationGroup = 49,
1083 SpvOpDecorate = 50,
1084 SpvOpMemberDecorate = 51,
1085 SpvOpGroupDecorate = 52,
1086 SpvOpGroupMemberDecorate = 53,
1087 SpvOpName = 54,
1088 SpvOpMemberName = 55,
1089 SpvOpString = 56,
1090 SpvOpLine = 57,
1091 SpvOpVectorExtractDynamic = 58,
1092 SpvOpVectorInsertDynamic = 59,
1093 SpvOpVectorShuffle = 60,
1094 SpvOpCompositeConstruct = 61,
1095 SpvOpCompositeExtract = 62,
1096 SpvOpCompositeInsert = 63,
1097 SpvOpCopyObject = 64,
1098 SpvOpCopyMemory = 65,
1099 SpvOpCopyMemorySized = 66,
1100 SpvOpSampler = 67,
1101 SpvOpTextureSample = 68,
1102 SpvOpTextureSampleDref = 69,
1103 SpvOpTextureSampleLod = 70,
1104 SpvOpTextureSampleProj = 71,
1105 SpvOpTextureSampleGrad = 72,
1106 SpvOpTextureSampleOffset = 73,
1107 SpvOpTextureSampleProjLod = 74,
1108 SpvOpTextureSampleProjGrad = 75,
1109 SpvOpTextureSampleLodOffset = 76,
1110 SpvOpTextureSampleProjOffset = 77,
1111 SpvOpTextureSampleGradOffset = 78,
1112 SpvOpTextureSampleProjLodOffset = 79,
1113 SpvOpTextureSampleProjGradOffset = 80,
1114 SpvOpTextureFetchTexelLod = 81,
1115 SpvOpTextureFetchTexelOffset = 82,
1116 SpvOpTextureFetchSample = 83,
1117 SpvOpTextureFetchTexel = 84,
1118 SpvOpTextureGather = 85,
1119 SpvOpTextureGatherOffset = 86,
1120 SpvOpTextureGatherOffsets = 87,
1121 SpvOpTextureQuerySizeLod = 88,
1122 SpvOpTextureQuerySize = 89,
1123 SpvOpTextureQueryLod = 90,
1124 SpvOpTextureQueryLevels = 91,
1125 SpvOpTextureQuerySamples = 92,
1126 SpvOpAccessChain = 93,
1127 SpvOpInBoundsAccessChain = 94,
1128 SpvOpSNegate = 95,
1129 SpvOpFNegate = 96,
1130 SpvOpNot = 97,
1131 SpvOpAny = 98,
1132 SpvOpAll = 99,
1133 SpvOpConvertFToU = 100,
1134 SpvOpConvertFToS = 101,
1135 SpvOpConvertSToF = 102,
1136 SpvOpConvertUToF = 103,
1137 SpvOpUConvert = 104,
1138 SpvOpSConvert = 105,
1139 SpvOpFConvert = 106,
1140 SpvOpConvertPtrToU = 107,
1141 SpvOpConvertUToPtr = 108,
1142 SpvOpPtrCastToGeneric = 109,
1143 SpvOpGenericCastToPtr = 110,
1144 SpvOpBitcast = 111,
1145 SpvOpTranspose = 112,
1146 SpvOpIsNan = 113,
1147 SpvOpIsInf = 114,
1148 SpvOpIsFinite = 115,
1149 SpvOpIsNormal = 116,
1150 SpvOpSignBitSet = 117,
1151 SpvOpLessOrGreater = 118,
1152 SpvOpOrdered = 119,
1153 SpvOpUnordered = 120,
1154 SpvOpArrayLength = 121,
1155 SpvOpIAdd = 122,
1156 SpvOpFAdd = 123,
1157 SpvOpISub = 124,
1158 SpvOpFSub = 125,
1159 SpvOpIMul = 126,
1160 SpvOpFMul = 127,
1161 SpvOpUDiv = 128,
1162 SpvOpSDiv = 129,
1163 SpvOpFDiv = 130,
1164 SpvOpUMod = 131,
1165 SpvOpSRem = 132,
1166 SpvOpSMod = 133,
1167 SpvOpFRem = 134,
1168 SpvOpFMod = 135,
1169 SpvOpVectorTimesScalar = 136,
1170 SpvOpMatrixTimesScalar = 137,
1171 SpvOpVectorTimesMatrix = 138,
1172 SpvOpMatrixTimesVector = 139,
1173 SpvOpMatrixTimesMatrix = 140,
1174 SpvOpOuterProduct = 141,
1175 SpvOpDot = 142,
1176 SpvOpShiftRightLogical = 143,
1177 SpvOpShiftRightArithmetic = 144,
1178 SpvOpShiftLeftLogical = 145,
1179 SpvOpLogicalOr = 146,
1180 SpvOpLogicalXor = 147,
1181 SpvOpLogicalAnd = 148,
1182 SpvOpBitwiseOr = 149,
1183 SpvOpBitwiseXor = 150,
1184 SpvOpBitwiseAnd = 151,
1185 SpvOpSelect = 152,
1186 SpvOpIEqual = 153,
1187 SpvOpFOrdEqual = 154,
1188 SpvOpFUnordEqual = 155,
1189 SpvOpINotEqual = 156,
1190 SpvOpFOrdNotEqual = 157,
1191 SpvOpFUnordNotEqual = 158,
1192 SpvOpULessThan = 159,
1193 SpvOpSLessThan = 160,
1194 SpvOpFOrdLessThan = 161,
1195 SpvOpFUnordLessThan = 162,
1196 SpvOpUGreaterThan = 163,
1197 SpvOpSGreaterThan = 164,
1198 SpvOpFOrdGreaterThan = 165,
1199 SpvOpFUnordGreaterThan = 166,
1200 SpvOpULessThanEqual = 167,
1201 SpvOpSLessThanEqual = 168,
1202 SpvOpFOrdLessThanEqual = 169,
1203 SpvOpFUnordLessThanEqual = 170,
1204 SpvOpUGreaterThanEqual = 171,
1205 SpvOpSGreaterThanEqual = 172,
1206 SpvOpFOrdGreaterThanEqual = 173,
1207 SpvOpFUnordGreaterThanEqual = 174,
1208 SpvOpDPdx = 175,
1209 SpvOpDPdy = 176,
1210 SpvOpFwidth = 177,
1211 SpvOpDPdxFine = 178,
1212 SpvOpDPdyFine = 179,
1213 SpvOpFwidthFine = 180,
1214 SpvOpDPdxCoarse = 181,
1215 SpvOpDPdyCoarse = 182,
1216 SpvOpFwidthCoarse = 183,
1217 SpvOpEmitVertex = 184,
1218 SpvOpEndPrimitive = 185,
1219 SpvOpEmitStreamVertex = 186,
1220 SpvOpEndStreamPrimitive = 187,
1221 SpvOpControlBarrier = 188,
1222 SpvOpMemoryBarrier = 189,
1223 SpvOpImagePointer = 190,
1224 SpvOpAtomicInit = 191,
1225 SpvOpAtomicLoad = 192,
1226 SpvOpAtomicStore = 193,
1227 SpvOpAtomicExchange = 194,
1228 SpvOpAtomicCompareExchange = 195,
1229 SpvOpAtomicCompareExchangeWeak = 196,
1230 SpvOpAtomicIIncrement = 197,
1231 SpvOpAtomicIDecrement = 198,
1232 SpvOpAtomicIAdd = 199,
1233 SpvOpAtomicISub = 200,
1234 SpvOpAtomicUMin = 201,
1235 SpvOpAtomicUMax = 202,
1236 SpvOpAtomicAnd = 203,
1237 SpvOpAtomicOr = 204,
1238 SpvOpAtomicXor = 205,
1239 SpvOpLoopMerge = 206,
1240 SpvOpSelectionMerge = 207,
1241 SpvOpLabel = 208,
1242 SpvOpBranch = 209,
1243 SpvOpBranchConditional = 210,
1244 SpvOpSwitch = 211,
1245 SpvOpKill = 212,
1246 SpvOpReturn = 213,
1247 SpvOpReturnValue = 214,
1248 SpvOpUnreachable = 215,
1249 SpvOpLifetimeStart = 216,
1250 SpvOpLifetimeStop = 217,
1251 SpvOpCompileFlag = 218,
1252 SpvOpAsyncGroupCopy = 219,
1253 SpvOpWaitGroupEvents = 220,
1254 SpvOpGroupAll = 221,
1255 SpvOpGroupAny = 222,
1256 SpvOpGroupBroadcast = 223,
1257 SpvOpGroupIAdd = 224,
1258 SpvOpGroupFAdd = 225,
1259 SpvOpGroupFMin = 226,
1260 SpvOpGroupUMin = 227,
1261 SpvOpGroupSMin = 228,
1262 SpvOpGroupFMax = 229,
1263 SpvOpGroupUMax = 230,
1264 SpvOpGroupSMax = 231,
1265 SpvOpGenericCastToPtrExplicit = 232,
1266 SpvOpGenericPtrMemSemantics = 233,
1267 SpvOpReadPipe = 234,
1268 SpvOpWritePipe = 235,
1269 SpvOpReservedReadPipe = 236,
1270 SpvOpReservedWritePipe = 237,
1271 SpvOpReserveReadPipePackets = 238,
1272 SpvOpReserveWritePipePackets = 239,
1273 SpvOpCommitReadPipe = 240,
1274 SpvOpCommitWritePipe = 241,
1275 SpvOpIsValidReserveId = 242,
1276 SpvOpGetNumPipePackets = 243,
1277 SpvOpGetMaxPipePackets = 244,
1278 SpvOpGroupReserveReadPipePackets = 245,
1279 SpvOpGroupReserveWritePipePackets = 246,
1280 SpvOpGroupCommitReadPipe = 247,
1281 SpvOpGroupCommitWritePipe = 248,
1282 SpvOpEnqueueMarker = 249,
1283 SpvOpEnqueueKernel = 250,
1284 SpvOpGetKernelNDrangeSubGroupCount = 251,
1285 SpvOpGetKernelNDrangeMaxSubGroupSize = 252,
1286 SpvOpGetKernelWorkGroupSize = 253,
1287 SpvOpGetKernelPreferredWorkGroupSizeMultiple = 254,
1288 SpvOpRetainEvent = 255,
1289 SpvOpReleaseEvent = 256,
1290 SpvOpCreateUserEvent = 257,
1291 SpvOpIsValidEvent = 258,
1292 SpvOpSetUserEventStatus = 259,
1293 SpvOpCaptureEventProfilingInfo = 260,
1294 SpvOpGetDefaultQueue = 261,
1295 SpvOpBuildNDRange = 262,
1296 SpvOpSatConvertSToU = 263,
1297 SpvOpSatConvertUToS = 264,
1298 SpvOpAtomicIMin = 265,
1299 SpvOpAtomicIMax = 266,
1300} SpvOp;
1301
1302#endif // #ifndef __cplusplus
1303
1304#endif // #ifndef spirv_H