)]}'
{
  "commit": "1b1aebbcab41b3022d6af0d635f64fc29bff735e",
  "tree": "6cff4431a3aa5145d1b933becb48b5e4b0e87f51",
  "parents": [
    "a67fb36f2bf9e866b10ab4503c0139e1cffec393"
  ],
  "author": {
    "name": "Benoit Jacob",
    "email": "jacob.benoit.1@gmail.com",
    "time": "Wed Jun 17 04:05:39 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jun 17 10:05:39 2026 +0200"
  },
  "message": "[Codegen][CPU] SelectUKernels for inner_tiled + --iree-llvmcpu-enable-llvm-ukernels. (#24569)\n\nWires the new C-bitcode ukernel framework into the LLVMCPU kernel-config\npipeline. Three pieces:\n\n* `LLVMCPUSelectUKernels.{h,cpp}` — when the target config has\n`llvm_ukernels \u003d \"inner_tiled\"`, `selectUKernel` matches\n`iree_codegen.inner_tiled` ops carrying a\n`#iree_cpu.data_tiled_mma_layout` and returns a `UKernelDescriptorAttr`\nwhose name is the corresponding `MMAIntrinsic` enum value lowercased\nwith the `iree_uk_mma_` prefix (e.g.\n`MMA_X86_AVX512BF16_1x16x2_F32_BF16` →\n`iree_uk_mma_x86_avx512bf16_1x16x2_f32_bf16`). One ukernel per\nintrinsic; `intrinsics_{m,n,k}` flow as function arguments and\nspecialize via bitcode LTO at the call site. Filters out `None` and the\n`MMA_GENERIC_*` family — neither has a corresponding ukernel.\n\n* `--iree-llvmcpu-enable-llvm-ukernels\u003d\u003ccsv\u003e` CL flag — bound to a new\n`LLVMTarget.llvmUkernels` field, serialized into the target config as\n`llvm_ukernels \u003d \"\u003ccsv\u003e\"`. Empty (the default) means off; passing\n`inner_tiled` opts dispatches into the new framework. The flag name\nleaves room for a future `mlir_ukernels`-style additional category (and\nfor now `inner_tiled` is also the only value). New helper\n`hasLlvmUkernel(config, category)` in Codegen/Utils — distinct from the\nexisting `hasUkernel` to keep the legacy mmt4d ukernels and the new\nLLVM-bitcode ukernels on independent enable flags.\n\n* `KernelDispatch.cpp::setRootConfig(InnerTiledOp)` — calls\n`selectUKernel` at the start and, on a match, sets the descriptor via\n`setUKernelDescriptor`. Tile sizes and translation_info are unchanged:\nthe ukernel substitutes for the *innermost* intrinsic execution only,\nthe surrounding tile sizes and pipeline still hold. Bitcode resolution\nis deferred to the `#iree_cpu.ukernel_provider` during\n`LowerBitcodeUKernelsPass`, matching the GPU split between \"match\"\n(here) and \"attach\" (provider).\n\nLit test (`select_ukernel.mlir`) runs\n`iree-llvmcpu-select-lowering-strategy` on two `inner_tiled` ops sharing\nthe same MMA intrinsic but differing in target config: the one with\n`llvm_ukernels \u003d \"inner_tiled\"` picks up the\n`iree_uk_mma_x86_avx512bf16_1x16x2_f32_bf16` descriptor; the other does\nnot, locking in the \"off by default\" property.\n\nProgress towards https://github.com/iree-org/iree/issues/24574.\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": "21eaa4a817b8e90174a442b53157b756e9591fff",
      "old_mode": 33188,
      "old_path": "compiler/plugins/target/LLVMCPU/LLVMTargetOptions.cpp",
      "new_id": "c58cb4eb7527793343814e87f9086cdc4bc3b28a",
      "new_mode": 33188,
      "new_path": "compiler/plugins/target/LLVMCPU/LLVMTargetOptions.cpp"
    },
    {
      "type": "modify",
      "old_id": "d7412729561729ce309ab5c78bdcf95c57f4eae8",
      "old_mode": 33188,
      "old_path": "compiler/plugins/target/LLVMCPU/LLVMTargetOptions.h",
      "new_id": "cb39c88e75956244cee6cc02ba2dd0273b3a4a09",
      "new_mode": 33188,
      "new_path": "compiler/plugins/target/LLVMCPU/LLVMTargetOptions.h"
    },
    {
      "type": "modify",
      "old_id": "ff9a4b3e9bc669bb3017413ac3e1d3fea91db51a",
      "old_mode": 33188,
      "old_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/BUILD.bazel",
      "new_id": "6f5095ffb4054916dc3fcee9f206510f3c1a314b",
      "new_mode": 33188,
      "new_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "9da211357a00885900157b0305c0d4d414531230",
      "old_mode": 33188,
      "old_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/CMakeLists.txt",
      "new_id": "409e1e13b558710ba85816af67bce7f9a147c131",
      "new_mode": 33188,
      "new_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/CMakeLists.txt"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6fc0834106f9ddaacb5be86805adfaeda5c9164e",
      "new_mode": 33188,
      "new_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/select_ukernel.mlir"
    },
    {
      "type": "modify",
      "old_id": "2e82813eb75b5989511d2b01eb3016f7ab86a08b",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/BUILD.bazel",
      "new_id": "a186358490d901b0df3ddfff9ef72f393e30488f",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "21ee960220637ad9c1d5ef10a941b2f0d48bd4dc",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/CMakeLists.txt",
      "new_id": "5c0ccd320c9c16beb9e507fd900d76f102937b28",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "6d843e008098ba3eb3817d07b682abc6ef0279fd",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/KernelDispatch.cpp",
      "new_id": "8c4791b25fe1c73212f225059cc8efd11a521974",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/KernelDispatch.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e60748b5cb24feb321c599d25b973b8af647ff31",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPUSelectUKernels.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c486eb2186c90345e34ec044a285b11a4c8a8720",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPUSelectUKernels.h"
    },
    {
      "type": "modify",
      "old_id": "2ce7367b78b23a9b86c2703bb05b31bfb3e896c0",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Utils/Utils.cpp",
      "new_id": "1e30292795a05a5332bdc83c318abd1876970ddb",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Utils/Utils.cpp"
    },
    {
      "type": "modify",
      "old_id": "8a9ab915026c6f7ffb27740a1251d2e579b0c147",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Utils/Utils.h",
      "new_id": "a6a32f17aa7423141b9ba2efbf43479c07aa6d95",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Utils/Utils.h"
    }
  ]
}
