)]}'
{
  "commit": "94170e7295ba6de3340e304b6f20c7fc9785296d",
  "tree": "91278fefaff9e5a9823b9e0fcb768e3906c65571",
  "parents": [
    "007b1eef6f31c490666e00130e55c3e3e871dc9d"
  ],
  "author": {
    "name": "Max191",
    "email": "44243577+Max191@users.noreply.github.com",
    "time": "Wed Apr 08 14:27:36 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Apr 08 14:27:36 2026 -0400"
  },
  "message": "[LinalgExt] Implement direct vectorization for im2col op (#23855)\n\nImplements direct vectorization for im2col, and completes the support\nfor padding on the im2col op. The padding attributes are used to compute\nthe read mask when vectorizing. In the old path, we would have separate\npadding on the input and the result of the im2col, and we try to compose\nthose pads into a single masked read. This is fragile and difficult for\ncases where the im2col result dims don\u0027t map well to the input dims.\nWith this direct vectorization approach, we can compute the mask based\non the input and result padding simultaneously. This will make\nflattening of the spatial dimensions of convolutions possible.\n\n### Performance results: ###\n\n- Run 1:\nhttps://github.com/nod-ai/amd-shark-ai-reports/tree/main/boo/boo-custom-runs/2026-03-27_04-36_d1b822f45ac693a8593232a7d3fc5d67b1087f7e/comparison\n- Run 2:\nhttps://github.com/nod-ai/amd-shark-ai-reports/tree/main/boo/boo-custom-runs/2026-03-27_20-34_cf0d758bb199713b96a84a67245bc8b24ba7b74a/comparison\n\nThese runs were taken on different commits, but they are functionally\nthe same (just some cleanup differences). I am only able to reproduce 3\nof the regressions locally, and most of the improvers (~35 of them with\n10-40% speedup) are real. There seems to have been some noise in the\nruns, but overall there is a good perf improvement.\n\nci-extra: test_torch\n\n---------\n\nSigned-off-by: Max Dawkins \u003cmax.dawkins@gmail.com\u003e\nCo-authored-by: Claude Opus 4.6 (1M context) \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d3cd248b4d1e10ebf68100c2c9ac125626c7240f",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/GenericVectorization.cpp",
      "new_id": "7a6e0a748a8ecfddcbbd9ea423a4d495d5997a73",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/GenericVectorization.cpp"
    },
    {
      "type": "modify",
      "old_id": "dc99cbef18513311ad585f54d22eac835bfb990e",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/MaterializeVectorTileSizes.cpp",
      "new_id": "d25d7957d85aae44c74f6115de4593081d8ba97e",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/MaterializeVectorTileSizes.cpp"
    },
    {
      "type": "modify",
      "old_id": "1badf104f317e3d6b54c6afef21eb5be01d37021",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/generic_vectorization_masked_inferred.mlir",
      "new_id": "6cfecc6b9c62dcd9c7c96deb9d347f56e266a7ab",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/generic_vectorization_masked_inferred.mlir"
    },
    {
      "type": "modify",
      "old_id": "98f3d33d53c0ff55417a0ed7bebc60432c16bf63",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/materialize_vector_tile_sizes.mlir",
      "new_id": "9e51b379e777e2ee97b13171e91bd22d92bea015",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/materialize_vector_tile_sizes.mlir"
    },
    {
      "type": "modify",
      "old_id": "57711167c7060a57632e7a03ad4bdba69bad3f50",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Interfaces/BUILD.bazel",
      "new_id": "3b73fb8bd0b0f6cfea1a99f4a176410446015ef5",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Interfaces/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e4e0d8b8d912bf5d8111c6f97745037df23687ed",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Interfaces/CMakeLists.txt",
      "new_id": "7faddda9f6fb3c5fc8bbe58f0b45aba422499335",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Interfaces/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "be4e33e982713b0e74943660107f5ddb358cc715",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Interfaces/VectorizableOpInterface.cpp",
      "new_id": "351053716f8c596973695955b07c00784f0151c7",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Interfaces/VectorizableOpInterface.cpp"
    },
    {
      "type": "modify",
      "old_id": "d379d9d0143a0888c439e892bc3d8743755599ae",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/Passes.cpp",
      "new_id": "1c57e302a033b19310e4b32e7b4430bdd7c71ec1",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/Passes.cpp"
    },
    {
      "type": "modify",
      "old_id": "a8500165b417a07292f1c3bcf1523bfa6136235a",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_igemm_tile_and_fuse.mlir",
      "new_id": "619983cf103664260bdf9186ebde2e8c93cb880c",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMGPU/test/ROCDL/pipeline_igemm_tile_and_fuse.mlir"
    },
    {
      "type": "modify",
      "old_id": "a1e4b28474e609ddd1fed90a7d9cc3ced262aff9",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/AggregatedOpInterfaceImpl.cpp",
      "new_id": "c9a294df22de58d212a66791a13f43f98b40e658",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/AggregatedOpInterfaceImpl.cpp"
    },
    {
      "type": "modify",
      "old_id": "85abe1c3046d663aac8c6cea5a9f697cddcccdc2",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/BUILD.bazel",
      "new_id": "d30d0d71aa21e85cef7ecfe0ea42fc04bfd4977b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9b23c9e320b694af0fade507d00079a0993398df",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/CMakeLists.txt",
      "new_id": "50a477c0e09184915596ebbcf79750e20367e16b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c02bc60318f1dfd67745fd40fcd60cb05aaf4ce0",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/Im2colUtils.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fcff813fa684095309a0d897575aa933619ef545",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/Im2colUtils.h"
    },
    {
      "type": "modify",
      "old_id": "34de4e93961d65b3b87963ea1d4822d52eb99b0e",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/LinalgExtOps.cpp",
      "new_id": "c32c7589fb846062054f5fb6c87cb3eca2d86ad8",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/LinalgExtOps.cpp"
    },
    {
      "type": "modify",
      "old_id": "6622b0b440bd41aa5a6b5da32d1199e915e91466",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/LinalgExtOps.td",
      "new_id": "aeff871c53c98b706217c920af1058145ccdfe01",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/LinalgExtOps.td"
    },
    {
      "type": "modify",
      "old_id": "8eea30644a5b4859926ab2120ee0bb24ed6f656b",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/test/canonicalize.mlir",
      "new_id": "69999928b5b2ac983ddfc09f734a1b3da70d6a56",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/IR/test/canonicalize.mlir"
    },
    {
      "type": "modify",
      "old_id": "c7da669d0dfbdc2ec337f3818a0d711989fd7f0f",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/Transforms/test/conv_to_im2col.mlir",
      "new_id": "4d0fee76d3ce71c3551aa195be26930964c9f9cb",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/Transforms/test/conv_to_im2col.mlir"
    },
    {
      "type": "modify",
      "old_id": "052e64dd63b900c27859ad794eadead466936c87",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/Transforms/test/decompose_im2col.mlir",
      "new_id": "36a8b6f0869f74e6b5e3e5ecca8f8f3bff8dcfde",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/Transforms/test/decompose_im2col.mlir"
    },
    {
      "type": "modify",
      "old_id": "fadaa139f656a72b891b47026911e886d6d9c953",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/Utils/Utils.cpp",
      "new_id": "c4c8a8c21b5991e35a91b75ea510d33c9fbb1beb",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/Utils/Utils.cpp"
    },
    {
      "type": "modify",
      "old_id": "6773db2d982ef0ec4969316b6bb62ea6840f9de0",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Dialect/LinalgExt/Utils/Utils.h",
      "new_id": "7d8196cd339e754e34bda1ae21c5fed7c1b3a06c",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Dialect/LinalgExt/Utils/Utils.h"
    }
  ]
}
