)]}'
{
  "commit": "ddf05030686396dc186ab75e0cf30e58474dbe6f",
  "tree": "9ed911c7f90acceb1a78a8d72ee3fc20a624b695",
  "parents": [
    "30a696e98abf70fff6fd2e5ffab7a3226f1912b8"
  ],
  "author": {
    "name": "Ian Wood",
    "email": "ianwood2024@u.northwestern.edu",
    "time": "Tue Dec 16 12:53:56 2025 -0800"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Dec 16 12:53:56 2025 -0800"
  },
  "message": "[GlobalOpt] Fuse transpose into matmul-looking linalg.generic (#22901)\n\nThis PR adds a new pattern `FuseTransposeThroughGenericReduction` that\nfuses transpose operations into `linalg.generic` ops with reduction\ndimensions by absorbing the transpose into the indexing map. This\npattern will fuse producer transposes with multiple uses (vs other\npatterns in this pass that look for single use transposes). Importantly,\nwe check to make sure that the reduction op\u0027s new indexing map is\ncontiguous, which offsets the transpose having multiple uses.\n\n\nThese changes are needed because `PropagateLinalgTranspose` handles\nnamed matmul ops differently than `linalg.generic` matmuls. It will fuse\ntransposes with multiple uses into named matmuls, but not\n`linalg.generic` ops. CLIP\u0027s weights are transposed from NxK to KxN, so\nfusing the transposes means that the K dim becomes contiguous. This will\nallow us to remove the `--iree-opt-generalize-matmul\u003dfalse` flag from\nCLIP benchmarks without regressions. This was generalized to all\nreduction ops because some of the matmuls have an M dim of 1 which means\nthat after generalization and dropping unit dims, they don\u0027t get\nidentified as matmuls anymore.\n\n\nThese changes were moved from\nhttps://github.com/iree-org/iree/pull/22790\n\n---------\n\nSigned-off-by: raayandhar \u003crdhar@amd.com\u003e\nSigned-off-by: Ian Wood \u003cianwood@u.northwestern.edu\u003e\nCo-authored-by: raayandhar \u003crdhar@amd.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "98f2bf50367ed82c6008e25fbc56f29526fd8977",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/GlobalOptimization/PropagateLinalgTranspose.cpp",
      "new_id": "60ba3f5b851a7fd496b462b133a6f3babe457901",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/PropagateLinalgTranspose.cpp"
    },
    {
      "type": "modify",
      "old_id": "2002156f55f5249e908492210f3bbedde703e82c",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/GlobalOptimization/test/propagate_linalg_transpose.mlir",
      "new_id": "f189326644dfafaa30fd6c00d1caa1fb69b97ef2",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/GlobalOptimization/test/propagate_linalg_transpose.mlir"
    },
    {
      "type": "modify",
      "old_id": "384d55d7c34a856a619866606febad5bd9a35bf4",
      "old_mode": 33188,
      "old_path": "tests/external/iree-test-suites/sharktank_models/quality_tests/sdxl/clip_rocm.json",
      "new_id": "d1f2c6b6df1baf57249659a6532956bfbd2d67d0",
      "new_mode": 33188,
      "new_path": "tests/external/iree-test-suites/sharktank_models/quality_tests/sdxl/clip_rocm.json"
    },
    {
      "type": "modify",
      "old_id": "d396173832683f9dbb4471d13407fe8475f0e314",
      "old_mode": 33188,
      "old_path": "tests/external/iree-test-suites/torch_models/sdxl/modules/clip_gfx942.json",
      "new_id": "3719e23cf463a832c293a5950283c6f555dc101b",
      "new_mode": 33188,
      "new_path": "tests/external/iree-test-suites/torch_models/sdxl/modules/clip_gfx942.json"
    }
  ]
}
