{
  "copyright" : [
    "Copyright: 2017-2024 The Khronos Group Inc.",
    "License: MIT",
    "",
    "MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS",
    "STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND",
    "HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ",
    ""
  ],
  "version" : 100,
  "revision" : 1,
  "instructions" : [
    {
      "opname" : "DebugInfoNone",
      "opcode" : 0
    },
    {
      "opname" : "DebugCompilationUnit",
      "opcode" : 1,
      "operands" : [
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Version" },
        { "kind" : "LiteralInteger", "name" : "DWARF Version" }
      ]
    },
    {
      "opname" : "DebugTypeBasic",
      "opcode" : 2,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "DebugBaseTypeAttributeEncoding", "name" : "Encoding" }
      ]
    },
    {
      "opname" : "DebugTypePointer",
      "opcode" : 3,
      "operands" : [
        { "kind" : "IdRef", "name" : "Base Type" },
        { "kind" : "StorageClass", "name" : "Storage Class" },
        { "kind" : "DebugInfoFlags", "name" : "Literal Flags" }
      ]
    },
    {
      "opname" : "DebugTypeQualifier",
      "opcode" : 4,
      "operands" : [
        { "kind" : "IdRef", "name" : "Base Type" },
        { "kind" : "DebugTypeQualifier", "name" : "Type Qualifier" }
      ]
    },
    {
      "opname" : "DebugTypeArray",
      "opcode" : 5,
      "operands" : [
        { "kind" : "IdRef", "name" : "Base Type" },
        { "kind" : "IdRef", "name" : "Component Counts", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugTypeVector",
      "opcode" : 6,
      "operands" : [
        { "kind" : "IdRef", "name" : "Base Type" },
        { "kind" : "LiteralInteger", "name" : "Component Count" }
      ]
    },
    {
      "opname" : "DebugTypedef",
      "opcode" : 7,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Base Type" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" }
      ]
    },
    {
      "opname" : "DebugTypeFunction",
      "opcode" : 8,
      "operands" : [
        { "kind" : "IdRef", "name" : "Return Type" },
        { "kind" : "IdRef", "name" : "Paramter Types", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugTypeEnum",
      "opcode" : 9,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Underlying Type" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "DebugInfoFlags", "name" : "Flags" },
        { "kind" : "PairIdRefIdRef", "name" : "Value, Name, Value, Name, ...", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugTypeComposite",
      "opcode" : 10,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "DebugCompositeType", "name" : "Tag" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "DebugInfoFlags", "name" : "Flags" },
        { "kind" : "IdRef", "name" : "Members", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugTypeMember",
      "opcode" : 11,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Type" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "DebugInfoFlags", "name" : "Flags" },
        { "kind" : "IdRef", "name" : "Value", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "DebugTypeInheritance",
      "opcode" : 12,
      "operands" : [
        { "kind" : "IdRef", "name" : "Child" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "DebugInfoFlags", "name" : "Flags" }
      ]
    },
    {
      "opname" : "DebugTypePtrToMember",
      "opcode" : 13,
      "operands" : [
        { "kind" : "IdRef", "name" : "Member Type" },
        { "kind" : "IdRef", "name" : "Parent" }
      ]
    },
    {
      "opname" : "DebugTypeTemplate",
      "opcode" : 14,
      "operands" : [
        { "kind" : "IdRef", "name" : "Target" },
        { "kind" : "IdRef", "name" : "Parameters", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugTypeTemplateParameter",
      "opcode" : 15,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Actual Type" },
        { "kind" : "IdRef", "name" : "Value" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" }
      ]
    },
    {
      "opname" : "DebugTypeTemplateTemplateParameter",
      "opcode" : 16,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Template Name" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" }
      ]
    },
    {
      "opname" : "DebugTypeTemplateParameterPack",
      "opcode" : 17,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Template Parameters", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugGlobalVariable",
      "opcode" : 18,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Type" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "IdRef", "name" : "Linkage Name" },
        { "kind" : "IdRef", "name" : "Variable" },
        { "kind" : "DebugInfoFlags", "name" : "Flags" },
        { "kind" : "IdRef", "name" : "Static Member Declaration", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "DebugFunctionDeclaration",
      "opcode" : 19,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Type" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "IdRef", "name" : "Linkage Name" },
        { "kind" : "DebugInfoFlags", "name" : "Flags" }
      ]
    },
    {
      "opname" : "DebugFunction",
      "opcode" : 20,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Type" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "IdRef", "name" : "Linkage Name" },
        { "kind" : "DebugInfoFlags", "name" : "Flags" },
        { "kind" : "LiteralInteger", "name" : "Scope Line" },
        { "kind" : "IdRef", "name" : "Function" },
        { "kind" : "IdRef", "name" : "Declaration", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "DebugLexicalBlock",
      "opcode" : 21,
      "operands" : [
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "IdRef", "name" : "Name", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "DebugLexicalBlockDiscriminator",
      "opcode" : 22,
      "operands" : [
        { "kind" : "IdRef", "name" : "Scope" },
        { "kind" : "LiteralInteger", "name" : "Discriminator" },
        { "kind" : "IdRef", "name" : "Parent" }
      ]
    },
    {
      "opname" : "DebugScope",
      "opcode" : 23,
      "operands" : [
        { "kind" : "IdRef", "name" : "Scope" },
        { "kind" : "IdRef", "name" : "Inlined At", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "DebugNoScope",
      "opcode" : 24
    },
    {
      "opname" : "DebugInlinedAt",
      "opcode" : 25,
      "operands" : [
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "IdRef", "name" : "Scope" },
        { "kind" : "IdRef", "name" : "Inlined", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "DebugLocalVariable",
      "opcode" : 26,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Type" },
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "LiteralInteger", "name" : "Column" },
        { "kind" : "IdRef", "name" : "Parent" },
        { "kind" : "LiteralInteger", "name" : "Arg Number", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "DebugInlinedVariable",
      "opcode" : 27,
      "operands" : [
        { "kind" : "IdRef", "name" : "Variable" },
        { "kind" : "IdRef", "name" : "Inlined" }
      ]
    },
    {
      "opname" : "DebugDeclare",
      "opcode" : 28,
      "operands" : [
        { "kind" : "IdRef", "name" : "Local Variable" },
        { "kind" : "IdRef", "name" : "Variable" },
        { "kind" : "IdRef", "name" : "Expression" }
      ]
    },
    {
      "opname" : "DebugValue",
      "opcode" : 29,
      "operands" : [
        { "kind" : "IdRef", "name" : "Value" },
        { "kind" : "IdRef", "name" : "Expression" },
        { "kind" : "IdRef", "name" : "Indexes", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugOperation",
      "opcode" : 30,
      "operands" : [
        { "kind" : "DebugOperation", "name" : "OpCode" },
        { "kind" : "LiteralInteger", "name" : "Operands ...", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugExpression",
      "opcode" : 31,
      "operands" : [
        { "kind" : "IdRef", "name" : "Operands ...", "quantifier" : "*" }
      ]
    },
    {
      "opname" : "DebugMacroDef",
      "opcode" : 32,
      "operands" : [
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Value", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "DebugMacroUndef",
      "opcode" : 33,
      "operands" : [
        { "kind" : "IdRef", "name" : "Source" },
        { "kind" : "LiteralInteger", "name" : "Line" },
        { "kind" : "IdRef", "name" : "Macro" }
      ]
    }
  ],
  "operand_kinds" : [
    {
      "category" : "BitEnum",
      "kind" : "DebugInfoFlags",
      "enumerants" : [
        {
          "enumerant" : "None",
          "value" : "0x0000"
        },
        {
          "enumerant" : "FlagIsProtected",
          "value" : "0x01"
        },
        {
          "enumerant" : "FlagIsPrivate",
          "value" : "0x02"
        },
        {
          "enumerant" : "FlagIsPublic",
          "value" : "0x03"
        },
        {
          "enumerant" : "FlagIsLocal",
          "value" : "0x04"
        },
        {
          "enumerant" : "FlagIsDefinition",
          "value" : "0x08"
        },
        {
          "enumerant" : "FlagFwdDecl",
          "value" : "0x10"
        },
        {
          "enumerant" : "FlagArtificial",
          "value" : "0x20"
        },
        {
          "enumerant" : "FlagExplicit",
          "value" : "0x40"
        },
        {
          "enumerant" : "FlagPrototyped",
          "value" : "0x80"
        },
        {
          "enumerant" : "FlagObjectPointer",
          "value" : "0x100"
        },
        {
          "enumerant" : "FlagStaticMember",
          "value" : "0x200"
        },
        {
          "enumerant" : "FlagIndirectVariable",
          "value" : "0x400"
        },
        {
          "enumerant" : "FlagLValueReference",
          "value" : "0x800"
        },
        {
          "enumerant" : "FlagRValueReference",
          "value" : "0x1000"
        },
        {
          "enumerant" : "FlagIsOptimized",
          "value" : "0x2000"
        }
      ]
    },
    {
      "category" : "ValueEnum",
      "kind" : "DebugBaseTypeAttributeEncoding",
      "enumerants" : [
        {
          "enumerant" : "Unspecified",
          "value" : 0
        },
        {
          "enumerant" : "Address",
          "value" : 1
        },
        {
          "enumerant" : "Boolean",
          "value" : 2
        },
        {
          "enumerant" : "Float",
          "value" : 4
        },
        {
          "enumerant" : "Signed",
          "value" : 5
        },
        {
          "enumerant" : "SignedChar",
          "value" : 6
        },
        {
          "enumerant" : "Unsigned",
          "value" : 7
        },
        {
          "enumerant" : "UnsignedChar",
          "value" : 8
        }
      ]
    },
    {
      "category" : "ValueEnum",
      "kind" : "DebugCompositeType",
      "enumerants" : [
        {
          "enumerant" : "Class",
          "value" : 0
        },
        {
          "enumerant" : "Structure",
          "value" : 1
        },
        {
          "enumerant" : "Union",
          "value" : 2
        }
      ]
    },
    {
      "category" : "ValueEnum",
      "kind" : "DebugTypeQualifier",
      "enumerants" : [
        {
          "enumerant" : "ConstType",
          "value" : 0
        },
        {
          "enumerant" : "VolatileType",
          "value" : 1
        },
        {
          "enumerant" : "RestrictType",
          "value" : 2
        }
      ]
    },
    {
      "category" : "ValueEnum",
      "kind" : "DebugOperation",
      "enumerants" : [
        {
          "enumerant" : "Deref",
          "value" : 0
        },
        {
          "enumerant" : "Plus",
          "value" : 1
        },
        {
          "enumerant" : "Minus",
          "value" : 2
        },
        {
          "enumerant" : "PlusUconst",
          "value" : 3,
          "parameters" : [
             { "kind" : "LiteralInteger" }
          ]
        },
        {
          "enumerant" : "BitPiece",
          "value" : 4,
          "parameters" : [
             { "kind" : "LiteralInteger" },
             { "kind" : "LiteralInteger" }
          ]
        },
        {
          "enumerant" : "Swap",
          "value" : 5
        },
        {
          "enumerant" : "Xderef",
          "value" : 6
        },
        {
          "enumerant" : "StackValue",
          "value" : 7
        },
        {
          "enumerant" : "Constu",
          "value" : 8,
          "parameters" : [
             { "kind" : "LiteralInteger" }
          ]
        }
      ]
    }
  ]
}
