)]}'
{
  "commit": "e7490c3b04a1ca2d771533904a5b6fddb4be4371",
  "tree": "183e675de896f8e288f57be29499993022a2e5a0",
  "parents": [
    "9ea0f2f2ed2c922b1df32a856ed9ca037b086657"
  ],
  "author": {
    "name": "tm",
    "email": "terrencemahlatini@gmail.com",
    "time": "Wed Oct 21 03:48:26 2026 -0500"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Oct 21 08:48:26 2026 +0000"
  },
  "message": "[Codegen][CPU] Lower RISC-V V f16 vfmacc, vfwmacc, and Zvfhmin inner_tiled MMA. (#25000)\n\nLowers the RISC-V V f16 `inner_tiled` MMA paths. Native f16 enums are\nalready on main from #24858. This adds lowering, the widening\n`vfwmacc.vf` pair, and the `+zvfhmin`-only fallbacks. All of them reuse\n`lowerRiscvVFmaccLike` and the hoisted accumulator legalization from\n#24933. Tile N is `vlen/8`.\n\n| Encoding | `+zvfh` | `+zvfhmin` only |\n| --- | --- | --- |\n| f16×f16→f16 | `llvm.riscv.vfmacc` (`MMA_RISCV_V_VFMACC_*_F16_F16`) |\n`extf` the accumulator to f32, f32 `vfmacc`, `truncf` back\n(`*_F16_F16_WIDENF32`) |\n| f16×f16→f32 | `llvm.riscv.vfwmacc` (`MMA_RISCV_V_VFWMACC_*_F32_F16`) |\n`extf` both panels, then f32 `vfmacc` (`*_F32_F16_CASTF32`) |\n\n`+zvfh` implies `+zvfhmin`. When both are legal, the earlier enum wins:\nnative `vfmacc` for an f16 accumulator, `vfwmacc` for an f32\naccumulator. At VLEN\u003d256 the cost model picks `intrinsics_m` 14\n(native), 7 (`vfwmacc`), and 6 (both `+zvfhmin` paths). CASTF32 and\nWIDENF32 bill the widened f32 vector operand as f32.\n\nPerformance is tracked on #24932. On the X60 (VLEN\u003d256), 1-thread\ninner_tiled is faster than the mmt4d ukernel for native f16 and\n`vfwmacc`. The 4-thread and 8-thread large shapes are still slower.\nNative f16 is non-widening `vfmacc`; the f16 ukernel widens with\n`vfwmacc`, so that ratio is not the same instruction sequence. `vfwmacc`\nis the closer comparison.\n\nAssisted-by: Cursor\n\nTowards #24311\n\n---------\n\nSigned-off-by: Terence \u003cterrencemahlatini@gmail.com\u003e\nCo-authored-by: Cursor \u003ccursoragent@cursor.com\u003e",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e5ade495f970129200dc3a91d7c9797c49d5c287",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Common/test/materialize_encoding_riscv_inner_tiled.mlir",
      "new_id": "ff14c0b63648f77334682d5f097b97ee0d1bed37",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Common/test/materialize_encoding_riscv_inner_tiled.mlir"
    },
    {
      "type": "modify",
      "old_id": "2d13e545e1b5b5c2a077411a94e9371f3b9da968",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/IREECPUAttrs.cpp",
      "new_id": "71f77f39231c32a4bac31e1bbc0afc5bcba68239",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/IREECPUAttrs.cpp"
    },
    {
      "type": "modify",
      "old_id": "c730ae1b71a7dcb2b25f015647a2da79b9673b65",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/IREECPUEnums.td",
      "new_id": "7d43ba3e6774d565a3bacbc2392f8a8d600cd222",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/IREECPUEnums.td"
    },
    {
      "type": "modify",
      "old_id": "c7d6aba764e85384c64a9631f05cea70f3706e0d",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/test/iree_cpu_inner_tiled_ops.mlir",
      "new_id": "09cecb8d8779f714dec0bebb0d9cfbe388ac8084",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/test/iree_cpu_inner_tiled_ops.mlir"
    },
    {
      "type": "modify",
      "old_id": "6a4109b97720f764bd7bd45f1ad4889c1b1d20a2",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/test/lower_inner_tiled.mlir",
      "new_id": "7916ff03d912910f041ce6e133830a8a6f6e2282",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/test/lower_inner_tiled.mlir"
    },
    {
      "type": "modify",
      "old_id": "1261a1f5c2e868162ae3397f575a662707ffa035",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/ExternalInterfaces/CPUEncodingExternalModels.cpp",
      "new_id": "ee313ac566c7a2eb42e8b8e113e1aa69006a8693",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/ExternalInterfaces/CPUEncodingExternalModels.cpp"
    },
    {
      "type": "modify",
      "old_id": "749402cf6a6cf2fa817eb0d5ae8d58c672cc7568",
      "old_mode": 33188,
      "old_path": "tests/e2e/matmul/BUILD.bazel",
      "new_id": "11cbd1b4cdf0e0651799b9b1a0cfac7706f8d413",
      "new_mode": 33188,
      "new_path": "tests/e2e/matmul/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "e790013f4abe66568b396f608dd0885fa98a62f0",
      "old_mode": 33188,
      "old_path": "tests/e2e/matmul/CMakeLists.txt",
      "new_id": "4d103f878ad524a99994c4ccf6e694d240a0b70d",
      "new_mode": 33188,
      "new_path": "tests/e2e/matmul/CMakeLists.txt"
    }
  ]
}
