)]}'
{
  "commit": "c1c962b63cd248f1c7b6d9a9ac8288a57d711c46",
  "tree": "605bb92cc9c09c893de5bfc2d7ae1504590b1215",
  "parents": [
    "c6753332aa7781e7813b87118173a04911366b76"
  ],
  "author": {
    "name": "Benoit Jacob",
    "email": "jacob.benoit.1@gmail.com",
    "time": "Fri Jun 05 14:51:29 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jun 05 14:51:29 2026 -0400"
  },
  "message": "[Codegen][CPU] Fold reshapes into map_store per reassociation group. (#24535)\n\n`foldReshapeIntoMapStore` composed an expand/collapse reshape into a\n`map_store`\u0027s index transformation via one global `linearize` over the\nsource shape plus `delinearize` over the result shape. Under dynamic\nshapes that `delinearize` lowers to a dynamic integer division per\nelement.\n\nFold each reassociation group independently instead: an `expand_shape`\nsplits one source index by just that group\u0027s result sizes; a\n`collapse_shape` merges one group of source indices. The split/merge\nfactors are then per-group -- typically static tile sizes -- so the\nscalarized transformation is static shifts/masks with no per-element\ndivision.\n\nSpeeds up the i8 data-tiled matmul\u0027s C-encode dispatch; i8 inner_tiled\nmatmul, 4096x4096 on Zen 4: 52.9ms -\u003e 46.9ms.\n\nAlso document, at `MapStoreOpVectorizationModel::isVectorizable`, why a\nCPU-tiled `map_store` reaches the vectorizer dynamically shaped and\nscalarizes -- which is precisely what makes this per-group,\ndivision-free fold matter -- while the same op vectorizes on GPU.\nComment only, no behavior change.\n\nProgress towards #24515.\n\nSigned-off-by: Benoit Jacob \u003cjacob.benoit.1@gmail.com\u003e\nCo-authored-by: Claude Opus 4.7 \u003cnoreply@anthropic.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6fbebb6c05de4bacdfa6c95b8e14602dfc395e13",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/CombineLayoutTransformation.cpp",
      "new_id": "9db8fcbcd015f36c028ce422de0cf811da88d94b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/CombineLayoutTransformation.cpp"
    },
    {
      "type": "modify",
      "old_id": "3284f32da747767d2fcb209c5a8a5e8d9cb478d7",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/combine_result_layout_transformation.mlir",
      "new_id": "872d11be350801c82299e320e7bac3273e7063b5",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/combine_result_layout_transformation.mlir"
    },
    {
      "type": "modify",
      "old_id": "afe51c6cf3da238dc1f9ec2a9dddbdfd1f8cf8f5",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/generic_vectorization_map_store.mlir",
      "new_id": "8df64a39755b46ca6ccaf562035f87f453a5199f",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/generic_vectorization_map_store.mlir"
    },
    {
      "type": "modify",
      "old_id": "9ae307551dd8dd07e404ebde3147b0af462d5ff6",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Interfaces/VectorizableOpInterface.cpp",
      "new_id": "ac79fbb720b2d30ce5cd5915770d9ec3a3438ad7",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Interfaces/VectorizableOpInterface.cpp"
    }
  ]
}
