)]}'
{
  "commit": "f6395fd2b519db00f36d2b19360e19eba597107b",
  "tree": "b801033ec574ba18caa8e894a52b950639f63d81",
  "parents": [
    "a9e91ecb68b23241349acfbb2ede00afa4c107b7"
  ],
  "author": {
    "name": "Ege Beysel",
    "email": "beyselege@gmail.com",
    "time": "Tue Jun 09 18:30:50 2026 +0200"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Jun 09 18:30:50 2026 +0200"
  },
  "message": "fix(CI): long-running emulated rv64 matmul integration tests (#24593)\n\nThe RISCV-64 e2e matmul integration tests without the ukernels are very\nlong-running under QEMU emulation, and were causing timeouts in CI. This\nPR disables the generic (non-uk) vectorization path for those tests\nuntil we properly support codegen.\n\n(Claude-generated summary)\n\n## Summary\n\nThe RISC-V 64 e2e matmul integration tests that run **without ukernels**\n(`--iree-opt-data-tiling --iree-llvmcpu-enable-ukernels\u003dnone`) are\nextremely\nslow under QEMU and were timing out CI (60 s per-test limit). This PR\nadds\n`noriscv` to all non-ukernel `dt`/`experimental_dt` matmul variants,\nsince the\ngeneric vectorization path for data-tiled matmul is not yet properly\nsupported\non RISC-V — only the ukernel path is validated there.\n\n**Why it\u0027s slow:** with data-tiling on but ukernels off, the packed\n`mmt4d` is\nlowered through generic vectorization. For the wide `M0×N0` tile it\nselects\n(`N0 \u003d VLEN/8`, `M0 \u003d 7`), the widening multiply-accumulate has no\nvector×scalar\nform, so the inner loop rebuilds the LHS broadcast every K-step via a\nstorm of\n`vsetvli` reconfigurations and `vrgather`/`vslideup` permutes — e.g. for\ni8 at\nVLEN\u003d256, ~118 `vsetvli` + ~19 `vrgather` per dispatch, vs ~2 `vsetvli`\nand no\ngathers for the ukernel. QEMU emulates every vector instruction\nelement-by-element, and `vsetvli`/`vrgather`/`vslide` are among the\ncostliest to\nemulate, so the full shape set runs for tens of seconds and trips the\ntimeout.\n`dt_i8_i32` and `experimental_dt_i8_i32` hit it first; `dt_f32_f32` was\nalready\nat ~52 s (one slow runner from flaking).\n\nFailing CI run:\nhttps://github.com/iree-org/iree/actions/runs/27192246864/job/80276315195\n\n**Emulation vs. real hardware:** the timeout is largely a QEMU artifact.\nOn a\nSpaceMiT X60 (VLEN\u003d256, native), the heaviest shape (540×332×516) runs\nin\nmilliseconds — but the generic path is still 3.5–6× slower than the\nukernel\npath, confirming it exercises an unsupported/unoptimized path rather\nthan just\nan emulator quirk:\n\n| variant (540×332×516) | 1 thread | 8 threads | generic ÷ ukernel |\n|---|---|---|---|\n| i8 generic  | 123 ms | 37.9 ms | **6.1×** |\n| i8 ukernel  | 20.3 ms | 6.15 ms | — |\n| f32 generic | 108 ms | 29.1 ms | **3.5×** |\n| f32 ukernel | 30.9 ms | 9.08 ms | — |\n\n(The gap is specific to the wide-`M0` tile; narrow-M shapes pick `M0\u003d1`,\nemit\nclean `vwmacc.vx`, and are ~1.3×.)\n\n\nAssisted-by: Claude Code\n\n---------\n\nSigned-off-by: Ege Beysel \u003cbeyselege@gmail.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "83a6ba75448f39a5fce0e9c7c471606b60eaf1dd",
      "old_mode": 33188,
      "old_path": "tests/e2e/matmul/BUILD.bazel",
      "new_id": "0ae01d9384f5ecf7d90a2fb23207c9059a83f971",
      "new_mode": 33188,
      "new_path": "tests/e2e/matmul/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "23dc9876f1f83a49d5afa5152005a4b7adee2189",
      "old_mode": 33188,
      "old_path": "tests/e2e/matmul/CMakeLists.txt",
      "new_id": "58b4c0921130f32452a192c97f43222b14979262",
      "new_mode": 33188,
      "new_path": "tests/e2e/matmul/CMakeLists.txt"
    }
  ]
}
