{
  "revision" : 7,
  "instructions" : [
    {
      "opname" : "Kernel",
      "opcode" : 1,
      "operands" : [
        { "kind" : "IdRef", "name" : "Kernel" },
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "NumArguments", "quantifier" : "?" },
        { "kind" : "IdRef", "name" : "Flags", "quantifier" : "?"  },
        { "kind" : "IdRef", "name" : "Attributes", "quantifier" : "?"  }
      ]
    },
    {
      "opname" : "ArgumentInfo",
      "opcode" : 2,
      "operands" : [
        { "kind" : "IdRef", "name" : "Name" },
        { "kind" : "IdRef", "name" : "Type Name", "quantifier" : "?" },
        { "kind" : "IdRef", "name" : "Address Qualifier", "quantifier" : "?" },
        { "kind" : "IdRef", "name" : "Access Qualifier", "quantifier" : "?" },
        { "kind" : "IdRef", "name" : "Type Qualifier", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentStorageBuffer",
      "opcode" : 3,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentUniform",
      "opcode" : 4,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentPodStorageBuffer",
      "opcode" : 5,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentPodUniform",
      "opcode" : 6,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentPodPushConstant",
      "opcode" : 7,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentSampledImage",
      "opcode" : 8,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentStorageImage",
      "opcode" : 9,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentSampler",
      "opcode" : 10,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentWorkgroup",
      "opcode" : 11,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "SpecId" },
        { "kind" : "IdRef", "name" : "ElemSize" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "SpecConstantWorkgroupSize",
      "opcode" : 12,
      "operands" : [
        { "kind" : "IdRef", "name" : "X" },
        { "kind" : "IdRef", "name" : "Y" },
        { "kind" : "IdRef", "name" : "Z" }
      ]
    },
    {
      "opname" : "SpecConstantGlobalOffset",
      "opcode" : 13,
      "operands" : [
        { "kind" : "IdRef", "name" : "X" },
        { "kind" : "IdRef", "name" : "Y" },
        { "kind" : "IdRef", "name" : "Z" }
      ]
    },
    {
      "opname" : "SpecConstantWorkDim",
      "opcode" : 14,
      "operands" : [
        { "kind" : "IdRef", "name" : "Dim" }
      ]
    },
    {
      "opname" : "PushConstantGlobalOffset",
      "opcode" : 15,
      "operands" : [
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "PushConstantEnqueuedLocalSize",
      "opcode" : 16,
      "operands" : [
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "PushConstantGlobalSize",
      "opcode" : 17,
      "operands" : [
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "PushConstantRegionOffset",
      "opcode" : 18,
      "operands" : [
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "PushConstantNumWorkgroups",
      "opcode" : 19,
      "operands" : [
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "PushConstantRegionGroupOffset",
      "opcode" : 20,
      "operands" : [
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "ConstantDataStorageBuffer",
      "opcode" : 21,
      "operands" : [
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Data" }
      ]
    },
    {
      "opname" : "ConstantDataUniform",
      "opcode" : 22,
      "operands" : [
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Data" }
      ]
    },
    {
      "opname" : "LiteralSampler",
      "opcode" : 23,
      "operands" : [
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Mask" }
      ]
    },
    {
      "opname" : "PropertyRequiredWorkgroupSize",
      "opcode" : 24,
      "operands" : [
        { "kind" : "IdRef", "name" : "Kernel" },
        { "kind" : "IdRef", "name" : "X" },
        { "kind" : "IdRef", "name" : "Y" },
        { "kind" : "IdRef", "name" : "Z" }
      ]
    },
    {
      "opname" : "SpecConstantSubgroupMaxSize",
      "opcode" : 25,
      "operands" : [
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "ArgumentPointerPushConstant",
      "opcode" : 26,
      "operands": [
        { "kind" : "IdRef", "name" : "Kernel" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentPointerUniform",
      "opcode" : 27,
      "operands": [
        { "kind" : "IdRef", "name" : "Kernel" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ProgramScopeVariablesStorageBuffer",
      "opcode" : 28,
      "operands": [
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Data" }
      ]
    },
    {
      "opname" : "ProgramScopeVariablePointerRelocation",
      "opcode" : 29,
      "operands": [
        { "kind" : "IdRef", "name" : "ObjectOffset" },
        { "kind" : "IdRef", "name" : "PointerOffset" },
        { "kind" : "IdRef", "name" : "PointerSize" }
      ]
    },
    {
      "opname" : "ImageArgumentInfoChannelOrderPushConstant",
      "opcode" : 30,
      "operands": [
        { "kind" : "IdRef", "name" : "Kernel" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "ImageArgumentInfoChannelDataTypePushConstant",
      "opcode" : 31,
      "operands": [
        { "kind" : "IdRef", "name" : "Kernel" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "ImageArgumentInfoChannelOrderUniform",
      "opcode" : 32,
      "operands": [
        { "kind" : "IdRef", "name" : "Kernel" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "ImageArgumentInfoChannelDataTypeUniform",
      "opcode" : 33,
      "operands": [
        { "kind" : "IdRef", "name" : "Kernel" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "Offset" },
        { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
      "opname" : "ArgumentStorageTexelBuffer",
      "opcode" : 34,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ArgumentUniformTexelBuffer",
      "opcode" : 35,
      "operands" : [
        { "kind" : "IdRef", "name" : "Decl" },
        { "kind" : "IdRef", "name" : "Ordinal" },
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "ArgInfo", "quantifier" : "?" }
      ]
    },
    {
      "opname" : "ConstantDataPointerPushConstant",
      "opcode" : 36,
      "operands" : [
        { "kind" : "IdRef", "name" : "Offset"},
        { "kind" : "IdRef", "name" : "Size"},
        { "kind" : "IdRef", "name" : "Data" }
      ]
    },
    {
      "opname" : "ProgramScopeVariablePointerPushConstant",
      "opcode" : 37,
      "operands" : [
        { "kind" : "IdRef", "name" : "Offset"},
        { "kind" : "IdRef", "name" : "Size"},
        { "kind" : "IdRef", "name" : "Data" }
      ]
    },
    {
      "opname" : "PrintfInfo",
      "opcode" : 38,
      "operands" : [
        { "kind" : "IdRef", "name" : "PrintfID" },
        { "kind" : "IdRef", "name" : "FormatString" },
        { "kind" : "IdRef", "quantifier" : "*", "name" : "ArgumentSizes"}
      ]
    },
    {
      "opname" : "PrintfBufferStorageBuffer",
      "opcode" : 39,
      "operands" : [
        { "kind" : "IdRef", "name" : "DescriptorSet" },
        { "kind" : "IdRef", "name" : "Binding" },
        { "kind" : "IdRef", "name" : "BufferSize"}
      ]
    },
    {
    "opname" : "PrintfBufferPointerPushConstant",
    "opcode" : 40,
    "operands" : [
      { "kind" : "IdRef", "name" : "Offset" },
      { "kind" : "IdRef", "name" : "Size"},
      { "kind" : "IdRef", "name" : "BufferSize"}
      ]
    },
    {
    "opname" : "NormalizedSamplerMaskPushConstant",
    "opcode" : 41,
    "operands" : [
      { "kind" : "IdRef", "name" : "Kernel" },
      { "kind" : "IdRef", "name" : "Ordinal" },
      { "kind" : "IdRef", "name" : "Offset" },
      { "kind" : "IdRef", "name" : "Size" }
      ]
    },
    {
    "opname" : "WorkgroupVariableSize",
    "opcode" : 42,
    "operands" : [
      { "kind" : "IdRef", "name" : "Variable" },
      { "kind" : "IdRef", "name" : "Size" }
      ]
    }
  ],
  "operand_kinds" : [
    {
      "category" : "BitEnum",
      "kind" : "KernelPropertyFlags",
      "enumerants" : [
        {
          "enumerant" : "None",
          "value" : "0x0"
        },
        {
          "enumerant" : "MayUsePrintf",
          "value" : "0x1"
        }
      ]
    }
  ]
}
