)]}'
{
  "commit": "20dbcb7679e53b7fb8e006d47c0bd3b00fcc1013",
  "tree": "57866dfeef1fa7cfd24b09793f6e849c9d0d52a6",
  "parents": [
    "4aaca883faaf685f4d2d0874fa1d2bf4600a60d0"
  ],
  "author": {
    "name": "Zhewen Yu",
    "email": "zhewenyu@amd.com",
    "time": "Fri Apr 10 10:00:43 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Apr 10 09:00:43 2026 +0100"
  },
  "message": "[Codegen] Add pass to reinsert swizzle hints from alloc attributes (#24001)\n\nPart 2/3 of enabling XOR swizzle with software pipelining (#23919).\n\n**Overall plan:** `SwizzleHintOp` in the SSA chain blocks both\n`memref::multiBuffer` and `scf::pipelineForLoop`. The fix absorbs the\nhint into an alloc attribute before pipelining, preserves it through\nmulti-buffering, then re-inserts hints at leaf users afterward.\n\n**This PR:** Adds `ReinsertSwizzleHintsPass`, which traces `vector.load`\nand `vector.store` ops back to attributed `memref.alloc`s and inserts\n`collapse_shape -\u003e swizzle_hint -\u003e expand_shape` at each use site.\n`gather_to_lds` swizzle is handled separately in\n`AMDGPULowerCoalescedDMAToGatherLDS`, which applies an inverse swizzle\non the source indices directly -- `swizzle_hint` cannot be used there\nbecause the source is strided global memory. The pass is not yet wired\ninto any pipeline.\n\nAssisted-by: Cursor (Claude)\n\n---------\n\nSigned-off-by: Yu-Zhewen \u003czhewenyu@amd.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4a8911aaddf0d1ba5df2ac741dd74af386e16a64",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/BUILD.bazel",
      "new_id": "a62283de6e52a2c9b87f8f6c4c1b5b638fffe78e",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "fe04f75bc112f89a08334554b01658d0646fd9b5",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/CMakeLists.txt",
      "new_id": "0399d695c888b25e53e39d3582351f5f1e507387",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "17f5c625a1e894377e35d59153a8e6f0f1d5bb12",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/Passes.td",
      "new_id": "dfcf98e6638e826fa38635ab2c039ddc0d3ca8f4",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/Passes.td"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6a9872cf076e703b9bbd06ad7a4dd6057c3bf1c0",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/ReinsertSwizzleHints.cpp"
    },
    {
      "type": "modify",
      "old_id": "e6ddc62cfd65775ad25759e927816f8f26261554",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/BUILD.bazel",
      "new_id": "24d17eed9973f35d59eefa5f74ff9121fc61fd8d",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "0d5889e8d4295bc11986a01b0c1726636818cfe2",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/CMakeLists.txt",
      "new_id": "0098626b72b1022c72a74c75e72419a33638e6f2",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "5fee9eabcae0a1daffd3642042a5936d76453984",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/reinsert_swizzle_hints.mlir"
    }
  ]
}
