)]}'
{
  "commit": "6b78497e50092a09c97c3af683bed0c41fba5293",
  "tree": "7265a23fcf2e13e59c078f00cdbd5d32936f6597",
  "parents": [
    "64b263ba6bcf0cf7846e6d6ff51a7b5060207503"
  ],
  "author": {
    "name": "Benoit Jacob",
    "email": "jacob.benoit.1@gmail.com",
    "time": "Wed Jun 24 09:31:11 2026 -0400"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Wed Jun 24 09:31:11 2026 -0400"
  },
  "message": "[Codegen][CPU] End-to-end-through-codegen lit test for ukernel framework. (#24571)\n\nCloses the loop on the new C-bitcode ukernel framework with an\n`iree-opt` lit test that drives the full LLVMCPU codegen pipeline on an\n`inner_tiled` rooted dispatch wrapped in the standard\n`hal.executable.variant` + binding-subspan structure, and asserts the\nwhole chain end-to-end:\n\n- Bitcode reaches the dispatch\u0027s `hal.executable.variant` as a\nfirst-class `objects(...)` attribute (the long-lived home).\n- `llvm.func @iree_uk_mma_…` is declared with `hal.import.bitcode \u003d\ntrue`, the flag that tells `RewriteExternCallOpToDynamicImportCallOp` to\nskip the runtime-import-table indirection.\n- A direct `llvm.call @iree_uk_mma_…` replaces the original\n`inner_tiled` — no `__import_ordinal_iree_uk_mma_…` (which would mean we\naccidentally re-used the legacy runtime-resolved path), no leftover\n`inner_tiled`, no leftover `ukernel.generic`.\n\nTo make that chain work, two pieces had to land alongside the test:\n\n* `UKernelProviderAttr::createAndReplaceWithUkernelOp` now actually\nbuilds the `UKernelGenericOp` (returning `success`, not `nullopt`),\nsetting `fn_def_attrs \u003d {hal.import.bitcode \u003d true}` on it. That flag\npropagates onto the `func.func` declaration that\n`LowerUKernelOpsToCalls` synthesizes, and through it onto the\n`llvm.func` that `ConvertToLLVM` produces. Without this, the\n\"self-contained bitcode\" property of the new framework would not hold —\nevery external call would be routed through the runtime import table\njust like the legacy mmt4d ukernels.\n\n* Bitcode lookup-and-attach is factored into a public helper\n`IREE::CPU::attachUKernelBitcodeOnOp`, called both from\n`LLVMCPUSelectUKernels` (at kernel-config time, mirroring GPU\u0027s\n`ensureUKernelBitcodeAndFinalizeConfig`) and from the provider itself\n(as a backstop for the BYO / hand-written-IR paths). It attaches the\nbitcode both as a `hal.executable.objects` discardable attribute on the\nop (the GPU-aligned shape) *and* directly on the enclosing\n`hal.executable.variant`\u0027s `objects` operand attribute (the durable\nhome, sidestepping passes that strip discardable attrs through\n`ConvertToLLVM`).\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": "6f5095ffb4054916dc3fcee9f206510f3c1a314b",
      "old_mode": 33188,
      "old_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/BUILD.bazel",
      "new_id": "a710d6aad2a612d308da5ade4772af27061835d8",
      "new_mode": 33188,
      "new_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/BUILD.bazel"
    },
    {
      "type": "modify",
      "old_id": "409e1e13b558710ba85816af67bce7f9a147c131",
      "old_mode": 33188,
      "old_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/CMakeLists.txt",
      "new_id": "63f4c15b90ccc84b38bfc92f94efd5ae9e086926",
      "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": "9944696c0805d9e76a54b333ca72ac8403c5ce9a",
      "new_mode": 33188,
      "new_path": "compiler/plugins/target/LLVMCPU/builtins/ukernel/test/e2e_inner_tiled_pipeline.mlir"
    },
    {
      "type": "modify",
      "old_id": "e1c867b2cfa616862fb38e493776972ca5db194b",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/IREECPUAttrs.cpp",
      "new_id": "2eb1f4381c6a1011eced7298a0829eccef0975f6",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/IREECPUAttrs.cpp"
    },
    {
      "type": "modify",
      "old_id": "e78face4e6182d605e53faf9d37075176919ac95",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/IREECPUTypes.h",
      "new_id": "c0a14254a193299ae9c13108d17d2bd189de1e0b",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/Dialect/CPU/IR/IREECPUTypes.h"
    },
    {
      "type": "modify",
      "old_id": "e60748b5cb24feb321c599d25b973b8af647ff31",
      "old_mode": 33188,
      "old_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPUSelectUKernels.cpp",
      "new_id": "bb977866e7b551492de72047c307181c013248a5",
      "new_mode": 33188,
      "new_path": "compiler/src/iree/compiler/Codegen/LLVMCPU/LLVMCPUSelectUKernels.cpp"
    }
  ]
}
