1 // Copyright (c) 2017 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 #ifndef SPIRV_UNIFIED1_DebugInfo_H_
26 #define SPIRV_UNIFIED1_DebugInfo_H_
27 
28 #ifdef __cplusplus
29 extern "C" {
30 #endif
31 
32 enum {
33     DebugInfoVersion = 100,
34     DebugInfoVersion_BitWidthPadding = 0x7fffffff
35 };
36 enum {
37     DebugInfoRevision = 1,
38     DebugInfoRevision_BitWidthPadding = 0x7fffffff
39 };
40 
41 enum DebugInfoInstructions {
42     DebugInfoDebugInfoNone = 0,
43     DebugInfoDebugCompilationUnit = 1,
44     DebugInfoDebugTypeBasic = 2,
45     DebugInfoDebugTypePointer = 3,
46     DebugInfoDebugTypeQualifier = 4,
47     DebugInfoDebugTypeArray = 5,
48     DebugInfoDebugTypeVector = 6,
49     DebugInfoDebugTypedef = 7,
50     DebugInfoDebugTypeFunction = 8,
51     DebugInfoDebugTypeEnum = 9,
52     DebugInfoDebugTypeComposite = 10,
53     DebugInfoDebugTypeMember = 11,
54     DebugInfoDebugTypeInheritance = 12,
55     DebugInfoDebugTypePtrToMember = 13,
56     DebugInfoDebugTypeTemplate = 14,
57     DebugInfoDebugTypeTemplateParameter = 15,
58     DebugInfoDebugTypeTemplateTemplateParameter = 16,
59     DebugInfoDebugTypeTemplateParameterPack = 17,
60     DebugInfoDebugGlobalVariable = 18,
61     DebugInfoDebugFunctionDeclaration = 19,
62     DebugInfoDebugFunction = 20,
63     DebugInfoDebugLexicalBlock = 21,
64     DebugInfoDebugLexicalBlockDiscriminator = 22,
65     DebugInfoDebugScope = 23,
66     DebugInfoDebugNoScope = 24,
67     DebugInfoDebugInlinedAt = 25,
68     DebugInfoDebugLocalVariable = 26,
69     DebugInfoDebugInlinedVariable = 27,
70     DebugInfoDebugDeclare = 28,
71     DebugInfoDebugValue = 29,
72     DebugInfoDebugOperation = 30,
73     DebugInfoDebugExpression = 31,
74     DebugInfoDebugMacroDef = 32,
75     DebugInfoDebugMacroUndef = 33,
76     DebugInfoInstructionsMax = 0x7fffffff
77 };
78 
79 
80 enum DebugInfoDebugInfoFlags {
81     DebugInfoNone = 0x0000,
82     DebugInfoFlagIsProtected = 0x01,
83     DebugInfoFlagIsPrivate = 0x02,
84     DebugInfoFlagIsPublic = 0x03,
85     DebugInfoFlagIsLocal = 0x04,
86     DebugInfoFlagIsDefinition = 0x08,
87     DebugInfoFlagFwdDecl = 0x10,
88     DebugInfoFlagArtificial = 0x20,
89     DebugInfoFlagExplicit = 0x40,
90     DebugInfoFlagPrototyped = 0x80,
91     DebugInfoFlagObjectPointer = 0x100,
92     DebugInfoFlagStaticMember = 0x200,
93     DebugInfoFlagIndirectVariable = 0x400,
94     DebugInfoFlagLValueReference = 0x800,
95     DebugInfoFlagRValueReference = 0x1000,
96     DebugInfoFlagIsOptimized = 0x2000,
97     DebugInfoDebugInfoFlagsMax = 0x7fffffff
98 };
99 
100 enum DebugInfoDebugBaseTypeAttributeEncoding {
101     DebugInfoUnspecified = 0,
102     DebugInfoAddress = 1,
103     DebugInfoBoolean = 2,
104     DebugInfoFloat = 4,
105     DebugInfoSigned = 5,
106     DebugInfoSignedChar = 6,
107     DebugInfoUnsigned = 7,
108     DebugInfoUnsignedChar = 8,
109     DebugInfoDebugBaseTypeAttributeEncodingMax = 0x7fffffff
110 };
111 
112 enum DebugInfoDebugCompositeType {
113     DebugInfoClass = 0,
114     DebugInfoStructure = 1,
115     DebugInfoUnion = 2,
116     DebugInfoDebugCompositeTypeMax = 0x7fffffff
117 };
118 
119 enum DebugInfoDebugTypeQualifier {
120     DebugInfoConstType = 0,
121     DebugInfoVolatileType = 1,
122     DebugInfoRestrictType = 2,
123     DebugInfoDebugTypeQualifierMax = 0x7fffffff
124 };
125 
126 enum DebugInfoDebugOperation {
127     DebugInfoDeref = 0,
128     DebugInfoPlus = 1,
129     DebugInfoMinus = 2,
130     DebugInfoPlusUconst = 3,
131     DebugInfoBitPiece = 4,
132     DebugInfoSwap = 5,
133     DebugInfoXderef = 6,
134     DebugInfoStackValue = 7,
135     DebugInfoConstu = 8,
136     DebugInfoDebugOperationMax = 0x7fffffff
137 };
138 
139 
140 #ifdef __cplusplus
141 }
142 #endif
143 
144 #endif // SPIRV_UNIFIED1_DebugInfo_H_
145