)]}'
{
  "commit": "6daf6ea060b9a9ea33871e276d3a2516577107d2",
  "tree": "cb1f98a28ed8171e0cfdac618e0b82f60aa56b88",
  "parents": [
    "3480ce750a864813cf47ea678aecd76984ec8dc3"
  ],
  "author": {
    "name": "maxbartel",
    "email": "bartel@roofline.ai",
    "time": "Tue Oct 13 16:37:58 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Oct 13 16:37:58 2026 +0200"
  },
  "message": "[DispatchCreation] Fuse packed contractions with epilogues and unpack (#24967)\n\nPacked contractions lose their fused epilogues when they arrive at\ndispatch formation as mmt4d or a data-tiled convolution. The result\nunpack can also become a separate dispatch.\n\nAdd opt-in fusion (`fuse-mmt4d`, `fuse-data-tiled-convolution`) of\nlayout-preserving elementwise consumers and the result unpack. Notes for\nreview:\n\n- Epilogues must read the contraction result and write their own result\nthrough identity maps. Epilogues that update the result through their\ninit operand are not matched.\n- Only the unpack layouts that data-tiling materialization produces are\nmatched. For mmt4d that is the row-major form and the narrow-N\ntransposed form. For convolutions it is NHWC, NCHW and batchless HWC;\nbatchless CHW is not matched.\n- The result unpack is the last op of the group, so a consumer of a\nclaimed unpack gets its own dispatch instead of fusing with the unpack.\n- An unpack that its root does not claim becomes a root at its own\nposition in program order, as without the options, so it fuses with its\nown consumers as before.\n- A group holds pack-like ops (`linalg.pack`, `set_encoding`) or the\nresult unpack, but not both, whichever joins first. A unit-batch\ncollapse only joins together with the unpack that consumes it, so a\ngroup never ends in the collapse.\n- The matchers hardcode the CPU layouts; a TODO describes moving the\nlayout decision into its own component that dispatch formation queries.\n\nNo pipeline enables the options until #24969.\n\nThis is one of five PRs adding an experimental CPU path that\nmaterializes data-tiling layouts before dispatch creation, so that\n`linalg.mmt4d` and data-tiled convolutions fuse with their elementwise\nepilogues and result unpacks.\n\n\nCo-authored-by: Claude Opus 5.5 \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "9b131916625d061e6d0a3892debeeb97e93e2f3d",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/DispatchCreation/BUILD.bazel",
      "new_id": "f8f52128ae9ca6e0428a2d32e0a6aaf622125c27",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "4b124334e1efe6c3e9a4fbdd610ff5c596ed8af8",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/DispatchCreation/CMakeLists.txt",
      "new_id": "cc6a56d387c1b0a6f9cb53cb80cf85955a762d77",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "20d3a06e4dfd2ccb4bac39e4f12969f2f0432d17",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/DispatchCreation/FormDispatchRegions.cpp",
      "new_id": "fdefa55e9c24c48098c248089e95a207d00b96aa",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/FormDispatchRegions.cpp"
    },
    {
      "type": "modify",
      "old_id": "8c238092707732522b3bb308f5f6f30deeb43a61",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/DispatchCreation/Passes.td",
      "new_id": "123d9f3741271e071d7acbe7785ca5781e080e94",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/Passes.td"
    },
    {
      "type": "modify",
      "old_id": "e42d518bbfd5507bb38592bbb087094dae4e3cb2",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/DispatchCreation/test/BUILD.bazel",
      "new_id": "fcec46de9d9ec53c6c549f3e49a4df6ea8b79955",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "08a75bc9a2861c265d9957dec46036b46bbb16df",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/DispatchCreation/test/CMakeLists.txt",
      "new_id": "34bd6d5ea1f5314cb430833ca980a11f19afbffd",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fe7bf7a4a07616f9f1f9e6a4dfc3578978e53bde",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/test/data_tiled_convolution_fusion.mlir"
    },
    {
      "type": "modify",
      "old_id": "e0f5f294a871f33f865dc5a0fe8211444aa76ee9",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/DispatchCreation/test/form_dispatch_regions.mlir",
      "new_id": "17c0af7584ebbd7bd82020667759cf99f0ae9c62",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/test/form_dispatch_regions.mlir"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ed0a0e17ff82e234a26a1d9a8365aa5f1e9c3570",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/DispatchCreation/test/mmt4d_fusion.mlir"
    }
  ]
}
