)]}'
{
  "commit": "891f438c27f201ae0dde3e8408eefc6fca80bc5f",
  "tree": "a8b2faf8432edaf3fb203839946358216e7f92b3",
  "parents": [
    "d834aa7357179e0d806f3634d2efe3af2fa45171"
  ],
  "author": {
    "name": "Max191",
    "email": "44243577+Max191@users.noreply.github.com",
    "time": "Fri Sep 20 13:51:09 2024 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Sep 20 16:51:09 2024 -0400"
  },
  "message": "[Codegen] Add control options in pack unpack decomposition (#18469)\n\nSome early patterns in pack/unpack decomposition avoid generating\r\nreshape ops for unit dim packs and unpacks. However, the TileAndFuse\r\npipeline uses these reshape ops to propagate expanded shapes to other\r\nfusable ops. This PR adds an option to the DecomposePackUnPackOps pass\r\nto create reshape ops anyway for unit dim cases.\r\n\r\nThe reason these unit dims show up right now is that the\r\niree_linalg_ext.im2col op of a unit-batched conv will have a unit\r\ndimension in the batch dim. Ultimately, it would be good to allow for\r\nbatchless im2col ops, but in general it is good to support ops that have\r\nrequired unit dimensions. When prototyping new ops, it can be easiest to\r\nnot support rank-reducing cases at first (winograd ops are another\r\nexample), so these unit dims may appear again in the future.\r\n\r\nThis PR also adds an optional control function to the pass options,\r\nwhich controls which packs and unpacks get decomposed. The control\r\nfunction is currently expected to be used when the `useOnlyReshapes`\r\noption is true, since there is no control function in some upstream\r\npatterns yet, but adding the control function upstream and fixing this\r\nis left as a TODO.\r\n\r\n---------\r\n\r\nSigned-off-by: Max Dawkins \u003cmax.dawkins@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e0c56a0f1279684a1d8c6f94063fc22175d765e3",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/DecomposePackUnPackOps.cpp",
      "new_id": "e8b18370a2c372dc35d90c9331d11da8e125f413",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/DecomposePackUnPackOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "3227190d670c92e73fece60e863ec1b4c45497da",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/Passes.h",
      "new_id": "502a3cfb902413481b0e88ec8786b24813dbfa60",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/Passes.h"
    },
    {
      "type": "modify",
      "old_id": "eb31e944b81c327fb4653b25baeca8cf67dc9192",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/Passes.td",
      "new_id": "7d912f8a445c32d02336d76740287535768bc9b0",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/Passes.td"
    },
    {
      "type": "modify",
      "old_id": "e11573aaeb32493bd1112199d1e83d1d8315d91e",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/decompose_pack_unpack_ops.mlir",
      "new_id": "b64193c4556c8518e032f6522d6eb6cf4dbead56",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/decompose_pack_unpack_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "cbe19e53ea933d99a7064203f63475b3500716f2",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/Passes.cpp",
      "new_id": "b63dfa7e111d83bc3aed4670581a4dc58ac9f219",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/Passes.cpp"
    }
  ]
}
