)]}'
{
  "commit": "b71aa530ffbf7a00a0cac65dbbed4c230444e582",
  "tree": "47246e46e3e6f399455a66878742b16319ec9de0",
  "parents": [
    "aca8cc69cf0d0195622afede602165fe67305224"
  ],
  "author": {
    "name": "Ben Vanik",
    "email": "ben.vanik@gmail.com",
    "time": "Wed Nov 30 15:50:36 2022 -0800"
  },
  "committer": {
    "name": "Ben Vanik",
    "email": "ben.vanik@gmail.com",
    "time": "Mon Dec 05 22:01:17 2022 -0800"
  },
  "message": "Adds support for HAL executable object linkage.\nObjects are passed through flow/stream and handled by the HAL\ninfrastructure during interface materialization (where we create the\nvariants based on target configuration). Each backend then gets the\nobjects specified for it and can use those in backend-dependent ways.\n\nFor now the LLVM-CPU backend only supports external function calls\nuseful for microkernels and such. This allows for a majority of IREE\u0027s\nfeatures when defining flow/stream executables that call out to externs\n(binding/operand packing/optimization, inlining, linking, and\nautomatic multi-targeting). In the future support can be added for\ngenerating the boilerplate for external device functions called all the\nway from (annotated) source inputs.\n\nThe GPU backends (CUDA/Vulkan SPIR-V) currently only support entire\ntop-level function definition (CUDA kernels or SPIR-V compute shaders).\nIn the future support can be added for linking (PTX linking or\nspirv-link) to enable the microkernel-style substitution of ops that\nsupports fusion and interface optimization.\n\nObjects can be embedded as data or referenced by file path allowing for\nboth JIT and precompilation approaches (a codegen backend could take\nsome input IR, produce via an external tool some objects, and then\nrewrite the IR to reference those objects). Because paths are hard the\n`--iree-hal-executable-object-search-path\u003d` flag can be used (repeatedly)\nto add search paths. When coming from frontends it\u0027s probably best to\nrely on embedding.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "70a3b206d69e2f60e874a6d2d459957766ccc4d9",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/ConvertToLLVM.cpp",
      "new_id": "ee927205efaa2bc15a39fe88d1bfdbc795694f1c",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/ConvertToLLVM.cpp"
    },
    {
      "type": "modify",
      "old_id": "31f885daab77c4349d61d224bd6867cdc8b049bc",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Utils/LinkingUtils.cpp",
      "new_id": "75ae2f37a8ad8ecb25b696dd7716efb27703f9a6",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Utils/LinkingUtils.cpp"
    },
    {
      "type": "modify",
      "old_id": "8ae38dee6bc0ea2e1f7efd3f6d38d1fe1b15a7a6",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Analysis/BindingLayout.h",
      "new_id": "0847f764ac4c47cd7fc0799ee92a0fc37e00285d",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Analysis/BindingLayout.h"
    },
    {
      "type": "modify",
      "old_id": "c9b65f407feb793f2a3aeb5c8bf3b7ef7e5ae262",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/IR/HALBase.td",
      "new_id": "ba4a4772a85e409e157dd2e6dadd06c940c766da",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/IR/HALBase.td"
    },
    {
      "type": "modify",
      "old_id": "3a9012b7bdf771ab7d21a444b42ba1c43f30c15d",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td",
      "new_id": "1561a8390be858edf0a5899461fb213d1e8390ea",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/IR/HALOps.td"
    },
    {
      "type": "modify",
      "old_id": "dcc42b6d629aa191fa1e3eb521f80c7ab0239e78",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/IR/HALTypes.cpp",
      "new_id": "7fe4a78a9f94b2caefb7d35bad7701f78df92ba9",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/IR/HALTypes.cpp"
    },
    {
      "type": "modify",
      "old_id": "b96edd0b818d407813bde7d4dc367acbf33f7934",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/IR/test/attributes.mlir",
      "new_id": "525c1a2c28dc1a5de037dd68e7734af9328e657b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/IR/test/attributes.mlir"
    },
    {
      "type": "modify",
      "old_id": "56c5aae0d8697d36921831f598d7f74a18a4455c",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/CUDA/CUDATarget.cpp",
      "new_id": "b73c8c7267f666d88a7677c2700a723b75bd11d4",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/CUDA/CUDATarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "853cb4b4cafaf2d20c7fa210b101325530adb63d",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/LLVM/LLVMCPUTarget.cpp",
      "new_id": "4e8e3afc3fdecc9e06f1411d97b853204398d449",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/LLVM/LLVMCPUTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "aba0a6fec1c084c009bfa8a8d895f5e3bcdd3d00",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/LLVM/LinkerTool.cpp",
      "new_id": "943760eb8ee8256079020a5f3280e851d0037955",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/LLVM/LinkerTool.cpp"
    },
    {
      "type": "modify",
      "old_id": "119116dfb613627c44c82662e21def9d43da5e48",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/LLVM/LinkerTool.h",
      "new_id": "0036762871f519cc3dccd8769dc64eb1c3a63153",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/LLVM/LinkerTool.h"
    },
    {
      "type": "modify",
      "old_id": "c82b9b485b7ad38d6916e849a982ac8779ce1ab3",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/LLVM/internal/EmbeddedLinkerTool.cpp",
      "new_id": "ce86f6605470e85d376d992631b257cc3e8c8c35",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/LLVM/internal/EmbeddedLinkerTool.cpp"
    },
    {
      "type": "modify",
      "old_id": "6abec12585cc8e2253b277a1d8a8a3f8b233aa48",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/MetalSPIRV/MetalSPIRVTarget.cpp",
      "new_id": "b9f2cb48535f98867e4aa3304eff6f2fe3fba462",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/MetalSPIRV/MetalSPIRVTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "3e48d40ec8409113f80e59cd8e89dc90e46e8e37",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/ROCM/ROCMTarget.cpp",
      "new_id": "e36f44b3553eb003b692a2622a1ec1071ec7288f",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/ROCM/ROCMTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "64f6e289dbc90d8c336bb72f8ca6120e9963a7ee",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/TargetBackend.h",
      "new_id": "a2fd896e990a412ebc2fdd108c4054ceae50f6c1",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/TargetBackend.h"
    },
    {
      "type": "modify",
      "old_id": "039d2486fae7e6db3dc0aa1b80f237111dbb6440",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/VMVX/VMVXTarget.cpp",
      "new_id": "f1a3d97259e8cdc34ae9b5cc6eefb14a3b7308c4",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/VMVX/VMVXTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "6828d2c37e5ef9d035d7cb80e0d44c471a4074f7",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/VulkanSPIRV/VulkanSPIRVTarget.cpp",
      "new_id": "41dc40ab95aec74661ab0a46a89b6d9a5af4ab99",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/VulkanSPIRV/VulkanSPIRVTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "db2ea5efda1269c28d844a2b6aa80394a8394d63",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Target/WebGPU/WebGPUTarget.cpp",
      "new_id": "ae8a544b107c3c9ce1c83ebad1255682499ff0c9",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Target/WebGPU/WebGPUTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "3c9e9d9768bd96c5fc18dedd917b3b5784c72fbb",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeInterfaces.cpp",
      "new_id": "85b808d099afd266f3e820feb7654747974c4344",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Transforms/MaterializeInterfaces.cpp"
    },
    {
      "type": "modify",
      "old_id": "33ba80eda9943967299fb8319794d448407fd61e",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Transforms/TranslateExecutables.cpp",
      "new_id": "394c5e845f224344fb6b0ca9cb396190162d2216",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Transforms/TranslateExecutables.cpp"
    },
    {
      "type": "modify",
      "old_id": "d1bdbad9f8880b102b2abce3db3517ceddae5515",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_interfaces.mlir",
      "new_id": "bdcdf811c640645c97f084edc56af2967956af6e",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/HAL/Transforms/test/materialize_interfaces.mlir"
    },
    {
      "type": "modify",
      "old_id": "47f82281e2daa62964f4a68ef64189e6333ab394",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/Stream/Conversion/FlowToStream/Patterns.cpp",
      "new_id": "2b967541826fa4beff88b940e6a6ab70246358db",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/Stream/Conversion/FlowToStream/Patterns.cpp"
    },
    {
      "type": "modify",
      "old_id": "d65b4d810669c13afdfc005d9eed17e25da4da95",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/Stream/Transforms/ScheduleAllocation.cpp",
      "new_id": "e48959bf1f0c196420be12e03af3fc1c9a22f9f4",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/Stream/Transforms/ScheduleAllocation.cpp"
    },
    {
      "type": "modify",
      "old_id": "2c2bb1bb05b6c14acc9551d7db32382d24426f30",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/hal/drivers/cuda/native_executable.c",
      "new_id": "3c0d2419716a02cf5ec5af42673e0930e5e79bb2",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/hal/drivers/cuda/native_executable.c"
    },
    {
      "type": "modify",
      "old_id": "3ddfcc91177b2f34f4d2cdeda9eb63e297300a78",
      "old_mode": 33188,
      "old_path": "runtime/src/iree/hal/drivers/cuda/stream_command_buffer.c",
      "new_id": "06563bcdaa06bf11ab67db554d1f462db0e49a68",
      "new_mode": 33188,
      "new_path": "runtime/src/iree/hal/drivers/cuda/stream_command_buffer.c"
    }
  ]
}
