)]}'
{
  "commit": "4e8dde4b4901004a4266ebe2d77056d2c088c65b",
  "tree": "d78db22efd153caabd614ac76277491e00c08a29",
  "parents": [
    "34f93d20972a0c26fc4f57146c8ea5a6f01f1e1e"
  ],
  "author": {
    "name": "Kunwar Grover",
    "email": "groverkss@gmail.com",
    "time": "Tue Mar 03 12:53:46 2026 +0000"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Mar 03 12:53:46 2026 +0000"
  },
  "message": "[VectorDistribute] Refactor VectorLayoutAnalysis into 2-phase forward/backward design (#23611)\n\nRestructure the layout analysis from an interleaved forward+backward\nworklist into a clean two-phase design:\n\nPhase 1 (forward): Multi-candidate propagation from ToLayoutOp anchors\nthrough uses. No IR mutation.\n\nResolve: Pick first candidate per value. This is a placeholder cost\nmodel for now which matches the old analysis. Eventually, we will\nconsider coalescing, compute ops, mma layout, etc.\n\nPhase 2 (backward fixup): Walk operations in reverse program order via\nrecursive fixupRegion/fixupOp. For each op, derive operand layouts from\nresolved result layouts. Assign missing layouts, clone cheap ops\n(constants, create_mask, step), or insert to_layout conversions on\nconflict.\n\nThis naturally handles conflicts better in a predictable manner. // The\nforward analysis is the main driver of the analysis. The reason for this\nis that for a program to be well-formed for vector distribution, there\nmust be some way for the final store/return to get a layout. Otherwise,\nthere is not enough information in the program to determine how\ndistribution should be done. The forward analysis ensures that the final\nreturn/store gets a layout in a well-formed program. The rest of the\nprogram can get their layouts from backward propagation, everything in\nthe program must eventually reach the store/return.\n\nCo-Authored-By: Claude Opus 4.6 \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "912d1e9af3786057e1d33626cf79777ef1193eb4",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/GPU/GPUVectorDistribution.cpp",
      "new_id": "4bead73e0433756c2028f90dd2cbbb9405f2d9c2",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/GPU/GPUVectorDistribution.cpp"
    },
    {
      "type": "modify",
      "old_id": "fffe6669372b5e6fc2a9bb3d20bfdb08ead5a76b",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/Passes.td",
      "new_id": "90958dff6eb74b72e7aef45f86ef3e3a1f22f0ab",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/Passes.td"
    },
    {
      "type": "modify",
      "old_id": "ec1743468af77b390f8c5f3032f6c110f54c5ec1",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/Transforms.h",
      "new_id": "57a68040c358e97371d52a6baa2dabfaeec6ee07",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/Transforms.h"
    },
    {
      "type": "modify",
      "old_id": "417f6e305b99ad4d88a96a824b02f41a955fa423",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/VectorLayoutAnalysis.cpp",
      "new_id": "d4b539e7dcca90e3824b1be00b7c4b70d1d0de18",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/VectorLayoutAnalysis.cpp"
    },
    {
      "type": "modify",
      "old_id": "af3e4fc758ffd107bdc69636cc1f5f7df1623d81",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/vector_layout_analysis.mlir",
      "new_id": "15f873220c57a6aea16d28f84eefe6aaf408df6e",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/vector_layout_analysis.mlir"
    }
  ]
}
