)]}'
{
  "commit": "d43294521aa2af71910d2a8a8fef56a7e5d36c91",
  "tree": "7b56ac24c2ebe4061fff2945471fe3ae0b19ff4d",
  "parents": [
    "403635de58217376fc43874b2e2f29f110f582b0"
  ],
  "author": {
    "name": "Scott Todd",
    "email": "scotttodd@google.com",
    "time": "Wed Aug 19 12:23:32 2020 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Aug 19 12:23:32 2020 -0700"
  },
  "message": "Move hal.executable.entry_point ops into hal.executable.target. (#2893)\n\nThe HAL transformation pass pipeline \"materializes interfaces\" then \"translates executables\" for each configured target ([source](https://github.com/google/iree/blob/d7f61a1510aeee066e34ebfadf13f7651aea4de4/iree/compiler/Dialect/HAL/Transforms/Passes.cpp#L46-L58)). As part of its executable translation, the VulkanSPIRV target \"splits\" dispatch functions using [SplitDispatchFunctionPass](https://github.com/google/iree/blob/d7f61a1510aeee066e34ebfadf13f7651aea4de4/iree/compiler/Conversion/LinalgToSPIRV/SplitDispatchFunctionPass.cpp), creating a schedule of `spv.EntryPoint` ops to dispatch in sequence when `recordDispatch()` is called ([source](https://github.com/google/iree/blob/d7f61a1510aeee066e34ebfadf13f7651aea4de4/iree/compiler/Dialect/HAL/Target/VulkanSPIRV/VulkanSPIRVTarget.cpp#L321-L370)).\r\n\r\nFor https://github.com/google/iree/issues/1890, we want to change dispatch ops from using loose ordinals for entry points:\r\n```\r\nhal.command_buffer.dispatch %arg0, %arg1, entry_point \u003d 0, workgroup_xyz \u003d ...\r\n```\r\nto using nested references:\r\n```\r\nhal.command_buffer.dispatch %arg0, %arg1, entry_point \u003d @MyExecutable::EntryPoint, workgroup_xyz \u003d ...\r\n```\r\n\r\nTo use references in that format, the VulkanSPIRV target should create new `hal.executable.entry_point` ops which can be referenced whenever it splits dispatch functions. However, entry points are currently placed on `hal.executable` ops, which can contain multiple `hal.executable.target` ops (e.g. several for \"vulkan\" and one for \"vmla\"). Thus, this PR moves entry points down into `hal.executable.target` ops so that each target can have more control over how it sets up its entry points.\r\n\r\n---\r\n\r\nI explored a few different ways to structure the passes involved as part of this work, each with some tradeoffs. Happy to make changes now that I have a better handle on how this all fits together.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c40d32a0978e962384507b67d74b5828812ef6c3",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Conversion/FlowToHAL/ConvertStreamOps.cpp",
      "new_id": "4c3d90e440d36d21e2a932ab0727c40d6256dfbc",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Conversion/FlowToHAL/ConvertStreamOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "2cfa7ef144603398ff7152f0cf54fab9d7e19192",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Conversion/FlowToHAL/test/stream_ops.mlir",
      "new_id": "5b4eeafa92f5bdc0482d09625b40c260f562a673",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Conversion/FlowToHAL/test/stream_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "5ae2ce1d67071527b95aec20d765d8ec49943117",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/LLVM/LLVMAOTTarget.cpp",
      "new_id": "a55db32c76fbaf8cca514d6cd28c6c65ff296eb6",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/LLVM/LLVMAOTTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "2d623189266fe4141fc50e2656f87cdae1c1a174",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/LLVM/LLVMIRTarget.cpp",
      "new_id": "5bf71c44f6644aa0eaad99195ba1b7e1e3e3b9e9",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/LLVM/LLVMIRTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "3c8675ae22bfd8dc031af991e58eca2b4212f5bd",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/LLVM/test/binaryop_test.mlir",
      "new_id": "388d7ecbfe8675d07d2e17ff517a0a1d1aff1645",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/LLVM/test/binaryop_test.mlir"
    },
    {
      "type": "modify",
      "old_id": "9760820071cd54d746590e93e78c5371d5134261",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/LLVM/test/matmul_op.mlir",
      "new_id": "271be8bb8766234777497da1e970035aed659d81",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/LLVM/test/matmul_op.mlir"
    },
    {
      "type": "modify",
      "old_id": "009f24c7ad822b26fb3cced941f57d37ac0795c8",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/TargetBackend.cpp",
      "new_id": "67be939c3c6fcbd727f11cfeb49ff3a26df8000e",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/TargetBackend.cpp"
    },
    {
      "type": "modify",
      "old_id": "65a923bba21b756f27d509ed49562b2363b54398",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/TargetBackend.h",
      "new_id": "59c6c8c572070b4d0af4e3081a063891a2077a19",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/TargetBackend.h"
    },
    {
      "type": "modify",
      "old_id": "46b7779dcfc86a21eed0ddcd516fc1b42d30a5e8",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/VMLA/test/smoketest.mlir",
      "new_id": "95898c4af5e2028fd62197fa9447d6de07f50b6e",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/VMLA/test/smoketest.mlir"
    },
    {
      "type": "modify",
      "old_id": "957bb5358369f59246a4cee2d008b68202e35194",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/VulkanSPIRV/VulkanSPIRVTarget.cpp",
      "new_id": "a1833578fd6705832bab61708a8e7ecaabcf7f2c",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/VulkanSPIRV/VulkanSPIRVTarget.cpp"
    },
    {
      "type": "modify",
      "old_id": "aa5e5e5deb55b4c0da057a9cf3e29d3533c40bf3",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Target/VulkanSPIRV/test/smoketest.mlir",
      "new_id": "4cbae1c36bfb446421582682fa0a41966074f0d5",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Target/VulkanSPIRV/test/smoketest.mlir"
    },
    {
      "type": "modify",
      "old_id": "0e7a8ffaffa368e372fac44f1b37b98e39d0f024",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Transforms/MaterializeInterfaces.cpp",
      "new_id": "b06552535195a0d72338d16f7bf28ef7aca962b2",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Transforms/MaterializeInterfaces.cpp"
    },
    {
      "type": "modify",
      "old_id": "9c7193eb125b19404048b3e86279c09c97a123c6",
      "old_mode": 33188,
      "old_path": "iree/compiler/Dialect/HAL/Transforms/test/materialize_interfaces.mlir",
      "new_id": "b9af960c41d59c2dc6a2e5c1f9e7072a9ead622e",
      "new_mode": 33188,
      "new_path": "iree/compiler/Dialect/HAL/Transforms/test/materialize_interfaces.mlir"
    }
  ]
}
