)]}'
{
  "commit": "16396e421e8a58e0a95bb406f17683aefe699cee",
  "tree": "8076b7d7d7b0d99bad26f6baacb897d36903266b",
  "parents": [
    "35b2070788e70693b3c04ecfd96b282c03a4bf26"
  ],
  "author": {
    "name": "Federico Bruzzone",
    "email": "federico.bruzzone.i@gmail.com",
    "time": "Fri Jul 24 08:44:38 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Fri Jul 24 08:44:38 2026 +0200"
  },
  "message": "[LLVMCPU] Fix scalable vectorization fallback on SME-only (no `+sve`) targets (#24693)\n\n**Stacked** on #24656.  Follow-up to #24661 / #24660.\n\nThis PR aims to removes the TODO introduced in #24656.\n\n#24661 fixed the ArmSME lowering pipeline to not require classic `+sve`\nwhen SME tiling is used. This PR fixes the same underlying problem for\nthe *fallback* path, which is what\u0027s used when the matmul falls back to\nit (e.g., `--iree-llvmcpu-disable-arm-sme-tiling`, or op types SME\ndoesn\u0027t support): compiling a scalable-vectorized matmul on a\n`+sme`-only target with SME tiling disabled crashed LLVM instruction\nselection with `Cannot select: vscale`.\n\nThe fix is scoped to a single function:\n`getMatmulVectorSizesUsingFillRegisterFileHeuristic` only checked\n`hasAnySVEFeature`, so on a `+sme`-only target it always fell back to\nnon-scalable NEON tiles. It now also picks scalable tiles when `+sme` is\npresent *and* the user has explicitly passed\n`--iree-llvmcpu-force-arm-streaming`.\n\nNet effect: \n1. Non-matmul ops: always Peeling.\n4. `linalg.matmul`, `+sme-only`, `disable-arm-sme-tiling\u003dtrue`, and\n`force-arm-streaming\u003dtrue`: still reaches SSVE (that\u0027s the actual fix),\nbut now goes through `Peeling + masked tail` instead of masking-only (as\nin #24661).\n\nUnrelated to #24689\n\n---------\n\nSigned-off-by: Federico Bruzzone \u003cfederico.bruzzone.i@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "83c8444a02463651eba30272700d30f28fbe32d4",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/KernelDispatch.cpp",
      "new_id": "59e54070602002bb551d4a1cfa0e230a9e0aba91",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/KernelDispatch.cpp"
    },
    {
      "type": "modify",
      "old_id": "452f2b868ecc881593aba16145d19f1131602cbe",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/Passes.cpp",
      "new_id": "91fa67f180f4e04610baed9a8fcfed45bad0f0fa",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/Passes.cpp"
    },
    {
      "type": "modify",
      "old_id": "840d702471cdc6c5d41c243fe3f5a814cd33a703",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/test/select_aarch64_ssve_lowering_strategy.mlir",
      "new_id": "cbbc1bea807b84a2d0add25deaac01c35edfa2fd",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/test/select_aarch64_ssve_lowering_strategy.mlir"
    },
    {
      "type": "modify",
      "old_id": "9b6d3ef364c5c5d4626d693b8c921367542908fa",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Utils/CPUUtils.cpp",
      "new_id": "f5cb417f5e432959c40b586298c51d7149eef9d3",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Utils/CPUUtils.cpp"
    },
    {
      "type": "modify",
      "old_id": "9ccc64cbfcf2b5c5df897e2187b977556cd0bd0e",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Utils/CPUUtils.h",
      "new_id": "cc8bba2a8af64eaf9629430f291c37a114eb5a05",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Utils/CPUUtils.h"
    }
  ]
}
