1{
2  "copyright" : [
3    "Copyright (c) 2018 The Khronos Group Inc.",
4    "",
5    "Permission is hereby granted, free of charge, to any person obtaining a copy",
6    "of this software and/or associated documentation files (the \"Materials\"),",
7    "to deal in the Materials without restriction, including without limitation",
8    "the rights to use, copy, modify, merge, publish, distribute, sublicense,",
9    "and/or sell copies of the Materials, and to permit persons to whom the",
10    "Materials are furnished to do so, subject to the following conditions:",
11    "",
12    "The above copyright notice and this permission notice shall be included in",
13    "all copies or substantial portions of the Materials.",
14    "",
15    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
16    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
17    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
18    "",
19    "THE MATERIALS ARE PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS",
20    "OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,",
21    "FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL",
22    "THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER",
23    "LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING",
24    "FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS",
25    "IN THE MATERIALS."
26  ],
27  "version" : 200,
28  "revision" : 2,
29  "instructions" : [
30    {
31      "opname" : "DebugInfoNone",
32      "opcode" : 0
33    },
34    {
35      "opname" : "DebugCompilationUnit",
36      "opcode" : 1,
37      "operands" : [
38        { "kind" : "LiteralInteger", "name" : "'Version'" },
39        { "kind" : "LiteralInteger", "name" : "'DWARF Version'" },
40        { "kind" : "IdRef", "name" : "'Source'" },
41        { "kind" : "SourceLanguage", "name" : "'Language'" }
42      ]
43    },
44    {
45      "opname" : "DebugTypeBasic",
46      "opcode" : 2,
47      "operands" : [
48        { "kind" : "IdRef", "name" : "'Name'" },
49        { "kind" : "IdRef", "name" : "'Size'" },
50        { "kind" : "DebugBaseTypeAttributeEncoding", "name" : "'Encoding'" }
51      ]
52    },
53    {
54      "opname" : "DebugTypePointer",
55      "opcode" : 3,
56      "operands" : [
57        { "kind" : "IdRef", "name" : "'Base Type'" },
58        { "kind" : "StorageClass", "name" : "'Storage Class'" },
59        { "kind" : "DebugInfoFlags", "name" : "'Flags'" }
60      ]
61    },
62    {
63      "opname" : "DebugTypeQualifier",
64      "opcode" : 4,
65      "operands" : [
66        { "kind" : "IdRef", "name" : "'Base Type'" },
67        { "kind" : "DebugTypeQualifier", "name" : "'Type Qualifier'" }
68      ]
69    },
70    {
71      "opname" : "DebugTypeArray",
72      "opcode" : 5,
73      "operands" : [
74        { "kind" : "IdRef", "name" : "'Base Type'" },
75        { "kind" : "IdRef", "name" : "'Component Counts'", "quantifier" : "*" }
76      ]
77    },
78    {
79      "opname" : "DebugTypeVector",
80      "opcode" : 6,
81      "operands" : [
82        { "kind" : "IdRef", "name" : "'Base Type'" },
83        { "kind" : "LiteralInteger", "name" : "'Component Count'" }
84      ]
85    },
86    {
87      "opname" : "DebugTypedef",
88      "opcode" : 7,
89      "operands" : [
90        { "kind" : "IdRef", "name" : "'Name'" },
91        { "kind" : "IdRef", "name" : "'Base Type'" },
92        { "kind" : "IdRef", "name" : "'Source'" },
93        { "kind" : "LiteralInteger", "name" : "'Line'" },
94        { "kind" : "LiteralInteger", "name" : "'Column'" },
95        { "kind" : "IdRef", "name" : "'Parent'" }
96      ]
97    },
98    {
99      "opname" : "DebugTypeFunction",
100      "opcode" : 8,
101      "operands" : [
102        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
103        { "kind" : "IdRef", "name" : "'Return Type'" },
104        { "kind" : "IdRef", "name" : "'Parameter Types'", "quantifier" : "*" }
105      ]
106    },
107    {
108      "opname" : "DebugTypeEnum",
109      "opcode" : 9,
110      "operands" : [
111        { "kind" : "IdRef", "name" : "'Name'" },
112        { "kind" : "IdRef", "name" : "'Underlying Type'" },
113        { "kind" : "IdRef", "name" : "'Source'" },
114        { "kind" : "LiteralInteger", "name" : "'Line'" },
115        { "kind" : "LiteralInteger", "name" : "'Column'" },
116        { "kind" : "IdRef", "name" : "'Parent'" },
117        { "kind" : "IdRef", "name" : "'Size'" },
118        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
119        { "kind" : "PairIdRefIdRef", "name" : "'Value, Name, Value, Name, ...'", "quantifier" : "*" }
120      ]
121    },
122    {
123      "opname" : "DebugTypeComposite",
124      "opcode" : 10,
125      "operands" : [
126        { "kind" : "IdRef", "name" : "'Name'" },
127        { "kind" : "DebugCompositeType", "name" : "'Tag'" },
128        { "kind" : "IdRef", "name" : "'Source'" },
129        { "kind" : "LiteralInteger", "name" : "'Line'" },
130        { "kind" : "LiteralInteger", "name" : "'Column'" },
131        { "kind" : "IdRef", "name" : "'Parent'" },
132        { "kind" : "IdRef", "name" : "'Linkage Name'" },
133        { "kind" : "IdRef", "name" : "'Size'" },
134        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
135        { "kind" : "IdRef", "name" : "'Members'", "quantifier" : "*" }
136      ]
137    },
138    {
139      "opname" : "DebugTypeMember",
140      "opcode" : 11,
141      "operands" : [
142        { "kind" : "IdRef", "name" : "'Name'" },
143        { "kind" : "IdRef", "name" : "'Type'" },
144        { "kind" : "IdRef", "name" : "'Source'" },
145        { "kind" : "LiteralInteger", "name" : "'Line'" },
146        { "kind" : "LiteralInteger", "name" : "'Column'" },
147        { "kind" : "IdRef", "name" : "'Parent'" },
148        { "kind" : "IdRef", "name" : "'Offset'" },
149        { "kind" : "IdRef", "name" : "'Size'" },
150        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
151        { "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
152      ]
153    },
154    {
155      "opname" : "DebugTypeInheritance",
156      "opcode" : 12,
157      "operands" : [
158        { "kind" : "IdRef", "name" : "'Child'" },
159        { "kind" : "IdRef", "name" : "'Parent'" },
160        { "kind" : "IdRef", "name" : "'Offset'" },
161        { "kind" : "IdRef", "name" : "'Size'" },
162        { "kind" : "DebugInfoFlags", "name" : "'Flags'" }
163      ]
164    },
165    {
166      "opname" : "DebugTypePtrToMember",
167      "opcode" : 13,
168      "operands" : [
169        { "kind" : "IdRef", "name" : "'Member Type'" },
170        { "kind" : "IdRef", "name" : "'Parent'" }
171      ]
172    },
173    {
174      "opname" : "DebugTypeTemplate",
175      "opcode" : 14,
176      "operands" : [
177        { "kind" : "IdRef", "name" : "'Target'" },
178        { "kind" : "IdRef", "name" : "'Parameters'", "quantifier" : "*" }
179      ]
180    },
181    {
182      "opname" : "DebugTypeTemplateParameter",
183      "opcode" : 15,
184      "operands" : [
185        { "kind" : "IdRef", "name" : "'Name'" },
186        { "kind" : "IdRef", "name" : "'Actual Type'" },
187        { "kind" : "IdRef", "name" : "'Value'" },
188        { "kind" : "IdRef", "name" : "'Source'" },
189        { "kind" : "LiteralInteger", "name" : "'Line'" },
190        { "kind" : "LiteralInteger", "name" : "'Column'" }
191      ]
192    },
193    {
194      "opname" : "DebugTypeTemplateTemplateParameter",
195      "opcode" : 16,
196      "operands" : [
197        { "kind" : "IdRef", "name" : "'Name'" },
198        { "kind" : "IdRef", "name" : "'Template Name'" },
199        { "kind" : "IdRef", "name" : "'Source'" },
200        { "kind" : "LiteralInteger", "name" : "'Line'" },
201        { "kind" : "LiteralInteger", "name" : "'Column'" }
202      ]
203    },
204    {
205      "opname" : "DebugTypeTemplateParameterPack",
206      "opcode" : 17,
207      "operands" : [
208        { "kind" : "IdRef", "name" : "'Name'" },
209        { "kind" : "IdRef", "name" : "'Source'" },
210        { "kind" : "LiteralInteger", "name" : "'Line'" },
211        { "kind" : "LiteralInteger", "name" : "'Column'" },
212        { "kind" : "IdRef", "name" : "'Template Parameters'", "quantifier" : "*" }
213      ]
214    },
215    {
216      "opname" : "DebugGlobalVariable",
217      "opcode" : 18,
218      "operands" : [
219        { "kind" : "IdRef", "name" : "'Name'" },
220        { "kind" : "IdRef", "name" : "'Type'" },
221        { "kind" : "IdRef", "name" : "'Source'" },
222        { "kind" : "LiteralInteger", "name" : "'Line'" },
223        { "kind" : "LiteralInteger", "name" : "'Column'" },
224        { "kind" : "IdRef", "name" : "'Parent'" },
225        { "kind" : "IdRef", "name" : "'Linkage Name'" },
226        { "kind" : "IdRef", "name" : "'Variable'" },
227        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
228        { "kind" : "IdRef", "name" : "'Static Member Declaration'", "quantifier" : "?" }
229      ]
230    },
231    {
232      "opname" : "DebugFunctionDeclaration",
233      "opcode" : 19,
234      "operands" : [
235        { "kind" : "IdRef", "name" : "'Name'" },
236        { "kind" : "IdRef", "name" : "'Type'" },
237        { "kind" : "IdRef", "name" : "'Source'" },
238        { "kind" : "LiteralInteger", "name" : "'Line'" },
239        { "kind" : "LiteralInteger", "name" : "'Column'" },
240        { "kind" : "IdRef", "name" : "'Parent'" },
241        { "kind" : "IdRef", "name" : "'Linkage Name'" },
242        { "kind" : "DebugInfoFlags", "name" : "'Flags'" }
243      ]
244    },
245    {
246      "opname" : "DebugFunction",
247      "opcode" : 20,
248      "operands" : [
249        { "kind" : "IdRef", "name" : "'Name'" },
250        { "kind" : "IdRef", "name" : "'Type'" },
251        { "kind" : "IdRef", "name" : "'Source'" },
252        { "kind" : "LiteralInteger", "name" : "'Line'" },
253        { "kind" : "LiteralInteger", "name" : "'Column'" },
254        { "kind" : "IdRef", "name" : "'Parent'" },
255        { "kind" : "IdRef", "name" : "'Linkage Name'" },
256        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
257        { "kind" : "LiteralInteger", "name" : "'Scope Line'" },
258        { "kind" : "IdRef", "name" : "'Function'" },
259        { "kind" : "IdRef", "name" : "'Declaration'", "quantifier" : "?" }
260      ]
261    },
262    {
263      "opname" : "DebugLexicalBlock",
264      "opcode" : 21,
265      "operands" : [
266        { "kind" : "IdRef", "name" : "'Source'" },
267        { "kind" : "LiteralInteger", "name" : "'Line'" },
268        { "kind" : "LiteralInteger", "name" : "'Column'" },
269        { "kind" : "IdRef", "name" : "'Parent'" },
270        { "kind" : "IdRef", "name" : "'Name'", "quantifier" : "?" }
271      ]
272    },
273    {
274      "opname" : "DebugLexicalBlockDiscriminator",
275      "opcode" : 22,
276      "operands" : [
277        { "kind" : "IdRef", "name" : "'Source'" },
278        { "kind" : "LiteralInteger", "name" : "'Discriminator'" },
279        { "kind" : "IdRef", "name" : "'Parent'" }
280      ]
281    },
282    {
283      "opname" : "DebugScope",
284      "opcode" : 23,
285      "operands" : [
286        { "kind" : "IdRef", "name" : "'Scope'" },
287        { "kind" : "IdRef", "name" : "'Inlined At'", "quantifier" : "?" }
288      ]
289    },
290    {
291      "opname" : "DebugNoScope",
292      "opcode" : 24
293    },
294    {
295      "opname" : "DebugInlinedAt",
296      "opcode" : 25,
297      "operands" : [
298        { "kind" : "LiteralInteger", "name" : "'Line'" },
299        { "kind" : "IdRef", "name" : "'Scope'" },
300        { "kind" : "IdRef", "name" : "'Inlined'", "quantifier" : "?" }
301      ]
302    },
303    {
304      "opname" : "DebugLocalVariable",
305      "opcode" : 26,
306      "operands" : [
307        { "kind" : "IdRef", "name" : "'Name'" },
308        { "kind" : "IdRef", "name" : "'Type'" },
309        { "kind" : "IdRef", "name" : "'Source'" },
310        { "kind" : "LiteralInteger", "name" : "'Line'" },
311        { "kind" : "LiteralInteger", "name" : "'Column'" },
312        { "kind" : "IdRef", "name" : "'Parent'" },
313        { "kind" : "DebugInfoFlags", "name" : "'Flags'" },
314        { "kind" : "LiteralInteger", "name" : "'Arg Number'", "quantifier" : "?" }
315      ]
316    },
317    {
318      "opname" : "DebugInlinedVariable",
319      "opcode" : 27,
320      "operands" : [
321        { "kind" : "IdRef", "name" : "'Variable'" },
322        { "kind" : "IdRef", "name" : "'Inlined'" }
323      ]
324    },
325    {
326      "opname" : "DebugDeclare",
327      "opcode" : 28,
328      "operands" : [
329        { "kind" : "IdRef", "name" : "'Local Variable'" },
330        { "kind" : "IdRef", "name" : "'Variable'" },
331        { "kind" : "IdRef", "name" : "'Expression'" }
332      ]
333    },
334    {
335      "opname" : "DebugValue",
336      "opcode" : 29,
337      "operands" : [
338        { "kind" : "IdRef", "name" : "'Local Variable'" },
339        { "kind" : "IdRef", "name" : "'Value'" },
340        { "kind" : "IdRef", "name" : "'Expression'" },
341        { "kind" : "IdRef", "name" : "'Indexes'", "quantifier" : "*" }
342      ]
343    },
344    {
345      "opname" : "DebugOperation",
346      "opcode" : 30,
347      "operands" : [
348        { "kind" : "DebugOperation", "name" : "'OpCode'" },
349        { "kind" : "LiteralInteger", "name" : "'Operands ...'", "quantifier" : "*" }
350      ]
351    },
352    {
353      "opname" : "DebugExpression",
354      "opcode" : 31,
355      "operands" : [
356        { "kind" : "IdRef", "name" : "'Operands ...'", "quantifier" : "*" }
357      ]
358    },
359    {
360      "opname" : "DebugMacroDef",
361      "opcode" : 32,
362      "operands" : [
363        { "kind" : "IdRef", "name" : "'Source'" },
364        { "kind" : "LiteralInteger", "name" : "'Line'" },
365        { "kind" : "IdRef", "name" : "'Name'" },
366        { "kind" : "IdRef", "name" : "'Value'", "quantifier" : "?" }
367      ]
368    },
369    {
370      "opname" : "DebugMacroUndef",
371      "opcode" : 33,
372      "operands" : [
373        { "kind" : "IdRef", "name" : "'Source'" },
374        { "kind" : "LiteralInteger", "name" : "'Line'" },
375        { "kind" : "IdRef", "name" : "'Macro'" }
376      ]
377    },
378    {
379      "opname" : "DebugImportedEntity",
380      "opcode" : 34,
381      "operands" : [
382        { "kind" : "IdRef", "name" : "'Name'" },
383        { "kind" : "DebugImportedEntity", "name" : "'Tag'" },
384        { "kind" : "IdRef", "name" : "'Source'" },
385        { "kind" : "IdRef", "name" : "'Entity'" },
386        { "kind" : "LiteralInteger", "name" : "'Line'" },
387        { "kind" : "LiteralInteger", "name" : "'Column'" },
388        { "kind" : "IdRef", "name" : "'Parent'" }
389      ]
390    },
391    {
392      "opname" : "DebugSource",
393      "opcode" : 35,
394      "operands" : [
395        { "kind" : "IdRef", "name" : "'File'" },
396        { "kind" : "IdRef", "name" : "'Text'", "quantifier" : "?" }
397      ]
398    }
399  ],
400  "operand_kinds" : [
401    {
402      "category" : "BitEnum",
403      "kind" : "DebugInfoFlags",
404      "enumerants" : [
405        {
406          "enumerant" : "FlagIsProtected",
407          "value" : "0x01"
408        },
409        {
410          "enumerant" : "FlagIsPrivate",
411          "value" : "0x02"
412        },
413        {
414          "enumerant" : "FlagIsPublic",
415          "value" : "0x03"
416        },
417        {
418          "enumerant" : "FlagIsLocal",
419          "value" : "0x04"
420        },
421        {
422          "enumerant" : "FlagIsDefinition",
423          "value" : "0x08"
424        },
425        {
426          "enumerant" : "FlagFwdDecl",
427          "value" : "0x10"
428        },
429        {
430          "enumerant" : "FlagArtificial",
431          "value" : "0x20"
432        },
433        {
434          "enumerant" : "FlagExplicit",
435          "value" : "0x40"
436        },
437        {
438          "enumerant" : "FlagPrototyped",
439          "value" : "0x80"
440        },
441        {
442          "enumerant" : "FlagObjectPointer",
443          "value" : "0x100"
444        },
445        {
446          "enumerant" : "FlagStaticMember",
447          "value" : "0x200"
448        },
449        {
450          "enumerant" : "FlagIndirectVariable",
451          "value" : "0x400"
452        },
453        {
454          "enumerant" : "FlagLValueReference",
455          "value" : "0x800"
456        },
457        {
458          "enumerant" : "FlagRValueReference",
459          "value" : "0x1000"
460        },
461        {
462          "enumerant" : "FlagIsOptimized",
463          "value" : "0x2000"
464        },
465        {
466          "enumerant" : "FlagIsEnumClass",
467          "value" : "0x4000"
468        },
469        {
470          "enumerant" : "FlagTypePassByValue",
471          "value" : "0x8000"
472        },
473        {
474          "enumerant" : "FlagTypePassByReference",
475          "value" : "0x10000"
476        }
477      ]
478    },
479    {
480      "category" : "ValueEnum",
481      "kind" : "DebugBaseTypeAttributeEncoding",
482      "enumerants" : [
483        {
484          "enumerant" : "Unspecified",
485          "value" : "0"
486        },
487        {
488          "enumerant" : "Address",
489          "value" : "1"
490        },
491        {
492          "enumerant" : "Boolean",
493          "value" : "2"
494        },
495        {
496          "enumerant" : "Float",
497          "value" : "3"
498        },
499        {
500          "enumerant" : "Signed",
501          "value" : "4"
502        },
503        {
504          "enumerant" : "SignedChar",
505          "value" : "5"
506        },
507        {
508          "enumerant" : "Unsigned",
509          "value" : "6"
510        },
511        {
512          "enumerant" : "UnsignedChar",
513          "value" : "7"
514        }
515      ]
516    },
517    {
518      "category" : "ValueEnum",
519      "kind" : "DebugCompositeType",
520      "enumerants" : [
521        {
522          "enumerant" : "Class",
523          "value" : "0"
524        },
525        {
526          "enumerant" : "Structure",
527          "value" : "1"
528        },
529        {
530          "enumerant" : "Union",
531          "value" : "2"
532        }
533      ]
534    },
535    {
536      "category" : "ValueEnum",
537      "kind" : "DebugTypeQualifier",
538      "enumerants" : [
539        {
540          "enumerant" : "ConstType",
541          "value" : "0"
542        },
543        {
544          "enumerant" : "VolatileType",
545          "value" : "1"
546        },
547        {
548          "enumerant" : "RestrictType",
549          "value" : "2"
550        },
551        {
552          "enumerant" : "AtomicType",
553          "value" : "3"
554        }
555      ]
556    },
557    {
558      "category" : "ValueEnum",
559      "kind" : "DebugOperation",
560      "enumerants" : [
561        {
562          "enumerant" : "Deref",
563          "value" : "0"
564        },
565        {
566          "enumerant" : "Plus",
567          "value" : "1"
568        },
569        {
570          "enumerant" : "Minus",
571          "value" : "2"
572        },
573        {
574          "enumerant" : "PlusUconst",
575          "value" : "3",
576          "parameters" : [
577             { "kind" : "LiteralInteger" }
578          ]
579        },
580        {
581          "enumerant" : "BitPiece",
582          "value" : "4",
583          "parameters" : [
584             { "kind" : "LiteralInteger" },
585             { "kind" : "LiteralInteger" }
586          ]
587        },
588        {
589          "enumerant" : "Swap",
590          "value" : "5"
591        },
592        {
593          "enumerant" : "Xderef",
594          "value" : "6"
595        },
596        {
597          "enumerant" : "StackValue",
598          "value" : "7"
599        },
600        {
601          "enumerant" : "Constu",
602          "value" : "8",
603          "parameters" : [
604             { "kind" : "LiteralInteger" }
605          ]
606        },
607        {
608          "enumerant" : "Fragment",
609          "value" : "9",
610          "parameters" : [
611             { "kind" : "LiteralInteger" },
612             { "kind" : "LiteralInteger" }
613          ]
614        }
615      ]
616    },
617    {
618      "category" : "ValueEnum",
619      "kind" : "DebugImportedEntity",
620      "enumerants" : [
621        {
622          "enumerant" : "ImportedModule",
623          "value" : "0"
624        },
625        {
626          "enumerant" : "ImportedDeclaration",
627          "value" : "1"
628	}
629      ]
630    }
631  ]
632}
633