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