1 // Copyright (c) 2017-2024 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     DebugInfoNone = 0x0000,
76     DebugInfoFlagIsProtected = 0x01,
77     DebugInfoFlagIsPrivate = 0x02,
78     DebugInfoFlagIsPublic = 0x03,
79     DebugInfoFlagIsLocal = 0x04,
80     DebugInfoFlagIsDefinition = 0x08,
81     DebugInfoFlagFwdDecl = 0x10,
82     DebugInfoFlagArtificial = 0x20,
83     DebugInfoFlagExplicit = 0x40,
84     DebugInfoFlagPrototyped = 0x80,
85     DebugInfoFlagObjectPointer = 0x100,
86     DebugInfoFlagStaticMember = 0x200,
87     DebugInfoFlagIndirectVariable = 0x400,
88     DebugInfoFlagLValueReference = 0x800,
89     DebugInfoFlagRValueReference = 0x1000,
90     DebugInfoFlagIsOptimized = 0x2000,
91     DebugInfoDebugInfoFlagsMax = 0x7ffffff
92 };
93 
94 enum DebugInfoDebugBaseTypeAttributeEncoding {
95     DebugInfoUnspecified = 0,
96     DebugInfoAddress = 1,
97     DebugInfoBoolean = 2,
98     DebugInfoFloat = 4,
99     DebugInfoSigned = 5,
100     DebugInfoSignedChar = 6,
101     DebugInfoUnsigned = 7,
102     DebugInfoUnsignedChar = 8,
103     DebugInfoDebugBaseTypeAttributeEncodingMax = 0x7ffffff
104 };
105 
106 enum DebugInfoDebugCompositeType {
107     DebugInfoClass = 0,
108     DebugInfoStructure = 1,
109     DebugInfoUnion = 2,
110     DebugInfoDebugCompositeTypeMax = 0x7ffffff
111 };
112 
113 enum DebugInfoDebugTypeQualifier {
114     DebugInfoConstType = 0,
115     DebugInfoVolatileType = 1,
116     DebugInfoRestrictType = 2,
117     DebugInfoDebugTypeQualifierMax = 0x7ffffff
118 };
119 
120 enum DebugInfoDebugOperation {
121     DebugInfoDeref = 0,
122     DebugInfoPlus = 1,
123     DebugInfoMinus = 2,
124     DebugInfoPlusUconst = 3,
125     DebugInfoBitPiece = 4,
126     DebugInfoSwap = 5,
127     DebugInfoXderef = 6,
128     DebugInfoStackValue = 7,
129     DebugInfoConstu = 8,
130     DebugInfoDebugOperationMax = 0x7ffffff
131 };
132 
133 
134 #ifdef __cplusplus
135 }
136 #endif
137 
138 #endif // SPIRV_EXTINST_DebugInfo_H_