)]}'
{
  "log": [
    {
      "commit": "4c301dd6cbc0b8004aa2f1cc1df6573e4893f54e",
      "tree": "9ee5cb7c8aef1df15227ca6f953654d287620321",
      "parents": [
        "d89c5496c05548f102bd4da55ff2256fe304d12c",
        "b484f8a69fc55e4f7174908120708ada1a99aa5c"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 22 19:24:30 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 22 19:24:30 2026"
      },
      "message": "Merge pull request #11112 from JakeStevens:arm-bf16-qb4w-fully-connected\n\nPiperOrigin-RevId: 986157905\n"
    },
    {
      "commit": "d89c5496c05548f102bd4da55ff2256fe304d12c",
      "tree": "747252a327e7c3f6ecb0fa97aeb2446bb10e73fd",
      "parents": [
        "358745f10c4b56885f237dcb8cf7cc77b9cf605e",
        "068a3f26e25830ca71581cba368fe2cb123de876"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 22 11:18:02 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 22 11:18:02 2026"
      },
      "message": "Merge pull request #11245 from prasanna8585:fix/convolution-nchw-sparse-packed-weights-overflow\n\nPiperOrigin-RevId: 985899802\n"
    },
    {
      "commit": "358745f10c4b56885f237dcb8cf7cc77b9cf605e",
      "tree": "ceebd1b91e4f96fbbcddaac55629e29edfdd037a",
      "parents": [
        "ced54bb9862f498ebe3613c89b4e95c2edb6f8cc",
        "9375d4fa8cf345e40c741e9554f96945551b387d"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 22 02:27:14 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 22 02:27:14 2026"
      },
      "message": "Merge pull request #11215 from rahulchaphalkar:f16-wasm-vadd\n\nPiperOrigin-RevId: 985660590\n"
    },
    {
      "commit": "ced54bb9862f498ebe3613c89b4e95c2edb6f8cc",
      "tree": "b9fd20b7b2d64af9f71c71b7127909331aa68ca0",
      "parents": [
        "c6b52536d3f614793f21ab4a17ae1cde73cc0333"
      ],
      "author": {
        "name": "Esun Kim",
        "email": "veblush@google.com",
        "time": "Mon Sep 21 18:10:53 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 21 18:12:39 2026"
      },
      "message": "Unroll x86 int8_int8_int32_k1 dot kernels by block_k\u003d2\n\nPreviously, `x86_int8_int8_int32_k1` used `block_k\u003d1` and masked off the upper 16 bits of each 32-bit lane before `madd_epi16`. Unrolling by `block_k\u003d2` packs two `k` elements per 32-bit lane so both 16-bit multiplies in `madd_epi16` are used.\n\nPiperOrigin-RevId: 985392021\n"
    },
    {
      "commit": "c6b52536d3f614793f21ab4a17ae1cde73cc0333",
      "tree": "d48ad18d1b81a1df95b007b5d402a7328279b5d4",
      "parents": [
        "81a0804a40c26a9cf97ebb1acaff0c516d37f5b8",
        "08d7bd9d5829b7180ba1d3b1d32e74a5948973f9"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Sat Sep 19 18:42:22 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Sat Sep 19 18:42:22 2026"
      },
      "message": "Merge pull request #11222 from Colm-in-Arm:add_sme2p1_detection\n\nPiperOrigin-RevId: 984479310\n"
    },
    {
      "commit": "068a3f26e25830ca71581cba368fe2cb123de876",
      "tree": "1da55d2552cc56b04f3875a96328cee5f1fc9efe",
      "parents": [
        "81a0804a40c26a9cf97ebb1acaff0c516d37f5b8"
      ],
      "author": {
        "name": "prasanna8585",
        "email": "prasanna8585@users.noreply.github.com",
        "time": "Sat Sep 19 04:40:39 2026"
      },
      "committer": {
        "name": "prasanna8585",
        "email": "prasanna8585@users.noreply.github.com",
        "time": "Sat Sep 19 04:40:39 2026"
      },
      "message": "fix: guard sparse packed_weights_size against overflow in convolution-nchw.c\n\nThe sparse-weights path in xnn_create_convolution2d_nchw (the block-sparse\n\"spmm\" packing branch, guarded by kernel_height \u003d\u003d 1, kernel_width \u003d\u003d 1,\ngroups \u003d\u003d 1) computed packed_weights_size using raw C multiplication and\naddition, with no overflow check:\n\n  const size_t packed_weights_size \u003d\n    num_nonzero_blocks * 2 * sizeof(int32_t) +\n    num_output_channel_blocks * sizeof(uint32_t) +\n    ((context-\u003egroup_output_channels + num_nonzero_values) \u003c\u003c log2_filter_element_size) +\n    XNN_EXTRA_BYTES;\n\nnum_nonzero_blocks, num_output_channel_blocks, and num_nonzero_values are\nall derived from xnn_analyze_spmm\u0027s count of non-zero values in the\nmodel\u0027s own weight tensor (spmm_packing_params.num_nonzeroes and\nfriends), combined with context-\u003egroup_output_channels -- both\nmodel-supplied. On a 32-bit target (WebAssembly, ARM32), a model whose\nsparse weight tensor yields large enough counts for this expression\ncauses it to wrap size_t, producing an undersized allocation via\nxnn_allocate_simd_memory. xnn_pack_spmm, called immediately after, then\nwrites based on the real, un-wrapped num_nonzero_blocks and\nnum_output_channel_blocks (it iterates over the same sparsity structure\nthat produced these counts), writing past the end of the undersized\nbuffer.\n\nThis is the same bug shape already fixed for the dense paths in this\ncodebase: create_igemm and create_deconvolution2d_nhwc (PR #11184), and\ncreate_dwconv_path / create_vmulcaddc_path in convolution-nhwc.c (PR\n#11240, \"a model-supplied groups value near 107M causes the product to\nwrap ... writes past the end of the buffer\"). Found by sweeping this\nsame file and convolution-nhwc.c for other packed_weights_size\ncomputations after reviewing #11240: this file already has a properly\nguarded packed_weights_size calculation in its dense\n(conv2d_hwc2chw) path (chained xnn_safe_mul calls on\ncontext-\u003egroup_input_channels / kernel_height / kernel_width /\ncontext-\u003egroups / packed_group_output_channels), confirming the\nguarding convention is established here -- it just was not extended to\nthis sparse path.\n\nI also traced a second candidate this same sweep surfaced,\nresize-bilinear-nhwc.c\u0027s xnn_setup_resize_bilinear2d_nhwc, and confirmed\nit is not concretely exploitable: its packed_weights_size recomputation\nreads output_height/output_width from\nresize_op-\u003econtext.resize_nhwc_indirection_init, which is populated in\nexactly one place in that file -- inside\nxnn_reshape_resize_bilinear2d_nhwc, immediately after that function\u0027s\nown xnn_safe_mul-guarded computation of the same product already\nsucceeded on the same values. So unlike this one, that recomputation\ncan never see values its own file\u0027s overflow check has not already\nvalidated. No fix needed there.\n\nFix: replace the raw expression with chained xnn_safe_mul / xnn_safe_add\ncalls (matching the style already used a few functions away in this\nsame file, and in the two prior PRs above), returning\nxnn_status_invalid_parameter with a logged error on overflow instead of\nproceeding with an undersized allocation.\n\nVerified:\n- Reproduced the overflow dynamically: extracted the exact pre-fix\n  expression into a standalone harness using uint32_t to model size_t\n  on a 32-bit target. With num_nonzero_blocks \u003d\n  num_output_channel_blocks \u003d num_nonzero_values \u003d 300000000 (a\n  plausible crafted-sparse-model value) and group_output_channels \u003d 4,\n  the intended size is ~4.8 GB but the wrapped size_t computation\n  produces 505032736 -- undersized by exactly 2^32 bytes (a full\n  uint32_t wrap).\n- Verified the fix closes it: transcribed the exact patch logic\n  (identical chain of xnn_safe_mul/xnn_safe_add calls) into the same\n  harness, using the real xnn_safe_mul/xnn_safe_add implementations\n  from src/xnnpack/math.h (__builtin_mul_overflow /\n  __builtin_add_overflow under the hood). The same malicious input is\n  correctly rejected; a normal, legitimate sparse-weights input (e.g.\n  1000 nonzero blocks, 64 output channel blocks) is correctly accepted\n  and produces the expected byte count.\n- Syntax-verified the inserted block in isolation against the real\n  src/xnnpack/math.h header (correct xnn_safe_mul/xnn_safe_add\n  signatures, no typos, balanced braces).\n- Could not complete a full project build in this environment: the\n  file transitively includes pthreadpool.h, an external dependency\n  fetched by XNNPACK\u0027s Bazel/CMake build that was not available\n  standalone in this sandbox. The verification above exercises the\n  exact inserted logic against the project\u0027s real overflow-checking\n  primitives rather than a reimplementation of them. Please confirm a\n  full build + the existing convolution-nchw sparse-path tests in CI.\n"
    },
    {
      "commit": "81a0804a40c26a9cf97ebb1acaff0c516d37f5b8",
      "tree": "5a5704d25e4a25076d4c6e6c8f4d89ae19b99f26",
      "parents": [
        "2106f03e84410183174850150f4ab3396570aa06",
        "32171f0cb19d376d358e3f3d12649cc45a2aa541"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 18 19:28:55 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 18 19:28:55 2026"
      },
      "message": "Merge pull request #11154 from destro4evr-rgb:fix/litert-conv-pool-arithmetic-h-rank-checks\n\nPiperOrigin-RevId: 984003016\n"
    },
    {
      "commit": "2106f03e84410183174850150f4ab3396570aa06",
      "tree": "65606ed2d230ac5fe5a35b2c8010484b8476d6ab",
      "parents": [
        "192402e2dc0fb6c144291efd81f174fd8170e011"
      ],
      "author": {
        "name": "Quentin Khan",
        "email": "qkhan@google.com",
        "time": "Fri Sep 18 17:28:59 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 18 17:29:57 2026"
      },
      "message": "Enable lowering 2 bit fully connected for XNNPACK.\n\nPiperOrigin-RevId: 983937138\n"
    },
    {
      "commit": "192402e2dc0fb6c144291efd81f174fd8170e011",
      "tree": "85b2198f97ae5de9470a685a62c1752374d73d5f",
      "parents": [
        "f5c01a5ab47b71ab1916873ccdb395d8bba5aef9"
      ],
      "author": {
        "name": "Marie White",
        "email": "mariewhite@google.com",
        "time": "Fri Sep 18 16:29:53 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 18 16:33:00 2026"
      },
      "message": "Pin `ko` to full extent in `define_pack_b` schedule given_splits.\n\nAdds `output.physical_extent(2)` (`ko`) to `given_splits` in `define_pack_b` (`subgraph/dot.cc`), matching the existing design comment (`Pin ki, ni and ko to their full extents (the packing kernel produces whole ki x ni tiles and all of ko at once)`).\n\n### Slinky IR Comparison (`SLINKY_VERBOSE\u003d1` on `dot_benchmark_test --shapes\u003d\"{bf16[16,8192,48]}\"`)\n\n#### Before this CL (`given_splits \u003d {ki, ni}`):\nBecause `output.physical_extent(2)` (`ko \u003d 4096`) was omitted from `given_splits`, `make_split_factors` divided the `128 KiB` (`65,536` elements) target `tile_area` by `ki × ni \u003d 96` elements, splitting `ko` (`[0, 4095]`) into **6 parallel thread-pool tasks of step `682`** (`ceil(4096 / floor(65536 / 96)) \u003d 682`):\n```\nlet {\n  .3 \u003d constant_buffer([], 0, {}),\n  .4 \u003d constant_buffer([], 0, {{min\u003d0, max\u003d8191, extent\u003d8192, stride\u003d0}})\n} in {\n .5 \u003d allocate(automatic, 2, {\n   {[0, 1], 2, \u003c\u003e},\n   {[0, 47], 4, \u003c\u003e},\n   {[0, 4095], 192, \u003c\u003e}\n }) {\n  .6 \u003d loop(parallel, [0, 4095], 682) {\n   closure {in1, .5, .6} in {\n    .7 \u003d crop_dim(.5, 2, [.6, (.6 + 681)]) {\n     call(pack_b, {in1}, {.7}, {})\n    }\n   }\n  }\n  call(dot num_k_dims\u003d1, {in0, .5, .3}, {out2, .4}, {})\n }\n}\n```\nThis forced Slinky to:\n1. Dispatch 6 parallel tasks (`loop(parallel, [0, 4095], 682)`) with closure capture and `crop_dim` slicing just to pack `384 KiB`.\n2. Wait on a thread-pool barrier after `pack_b` (since `dot` cannot fuse into a reduction-axis `ko` loop).\n3. Scatter the 6 slices of `.5` across 6 remote worker cores\u0027 caches, causing cross-core L2 cache misses when `call(dot, ...)` immediately read `.5` on the invoking core (`152.3 µs` wall time, `324.7 µs` CPU time).\n\n#### After this CL (`given_splits \u003d {ki, ni, ko}`):\nPinning `ko` (`splits[2] \u003d 4096`) makes the `ko` loop step equal its full extent (`[0, 4095]`, step `4096`), eliminating the `.6 \u003d loop(parallel, ...)`, `closure`, `crop_dim`, and thread-pool barrier:\n```\nlet {\n  .3 \u003d constant_buffer([], 0, {}),\n  .4 \u003d constant_buffer([], 0, {{min\u003d0, max\u003d8191, extent\u003d8192, stride\u003d0}})\n} in {\n .5 \u003d allocate(automatic, 2, {\n   {[0, 1], 2, \u003c\u003e},\n   {[0, 47], 4, \u003c\u003e},\n   {[0, 4095], 192, \u003c\u003e}\n }) {\n  call(pack_b, {in1}, {.5}, {})\n  call(dot num_k_dims\u003d1, {in0, .5, .3}, {out2, .4}, {})\n }\n}\n```\n`pack_b` packs the entire `4096 × 48` (`384 KiB`) buffer in a single call directly into the calling core\u0027s 2 MiB L2 cache, where `call(dot, ...)` immediately consumes it (`75.8 µs` wall time).\n\nPiperOrigin-RevId: 983905743\n"
    },
    {
      "commit": "f5c01a5ab47b71ab1916873ccdb395d8bba5aef9",
      "tree": "f13f64d892ec52c71af3867fc6d98a8ab40e7508",
      "parents": [
        "434b6e2a1ce89feac622e6f131f792d3710804f2"
      ],
      "author": {
        "name": "Quentin Khan",
        "email": "qkhan@google.com",
        "time": "Fri Sep 18 15:21:09 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 18 15:22:44 2026"
      },
      "message": "Fix Tensor API - XNNPACK type correspondance during lowering.\n\nPiperOrigin-RevId: 983874730\n"
    },
    {
      "commit": "434b6e2a1ce89feac622e6f131f792d3710804f2",
      "tree": "3d7e5f48aca5ceea180fb7ce0bcd55f6c54200d5",
      "parents": [
        "9d081ca807c20d28c9af12a3a2313331e6127e2c",
        "40104421abb9bc5fb15ea8b26faebc57b4ebcdbc"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 18 15:02:01 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 18 15:02:01 2026"
      },
      "message": "Merge pull request #11240 from destro4evr-rgb:fix-packed-weights-overflow-dwconv-vmulcaddc\n\nPiperOrigin-RevId: 983864672\n"
    },
    {
      "commit": "40104421abb9bc5fb15ea8b26faebc57b4ebcdbc",
      "tree": "cf609dbc53f4b1acb131db86ad18802473661d7b",
      "parents": [
        "dcbbe8bc08e87734f0c0296ef8883141affb1eda"
      ],
      "author": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Fri Sep 18 11:25:36 2026"
      },
      "committer": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Fri Sep 18 11:36:30 2026"
      },
      "message": "Fix packed weights size overflow in create_dwconv_path and create_vmulcaddc_path\n\nBoth paths in src/operators/convolution-nhwc.c computed packed_weights_size\nusing raw C multiplication of per_channel_bytes * c_stride with no overflow\ncheck. On 32-bit targets (WebAssembly, ARM32) a model-supplied groups value\nnear 107M causes the product to wrap, resulting in an undersized allocation.\nThe subsequent pack_dwconv_hwg_w / pack_vmulcaddc_w call iterates over the\nreal groups count and writes past the end of the buffer.\n\nReplace the raw multiplications with xnn_safe_mul / xnn_safe_add, consistent\nwith the fix applied to create_igemm and create_deconvolution2d_nhwc in\nPR #11184.\n"
    },
    {
      "commit": "9d081ca807c20d28c9af12a3a2313331e6127e2c",
      "tree": "e16c24dac45063ca296c2047cc9ff1c03bdb8959",
      "parents": [
        "dcbbe8bc08e87734f0c0296ef8883141affb1eda"
      ],
      "author": {
        "name": "Frank Barchard",
        "email": "fbarchard@google.com",
        "time": "Fri Sep 18 10:50:20 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 18 10:51:56 2026"
      },
      "message": "F16 dwconv config use else after avx512fp16 so avx2 is not used when avx512fp16 is available\n\nPiperOrigin-RevId: 983772750\n"
    },
    {
      "commit": "32171f0cb19d376d358e3f3d12649cc45a2aa541",
      "tree": "c4664cfa7ec71a9732cf155ee4e66a2015ad6b2c",
      "parents": [
        "dcbbe8bc08e87734f0c0296ef8883141affb1eda"
      ],
      "author": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Sat Sep 05 14:04:27 2026"
      },
      "committer": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Fri Sep 18 06:01:06 2026"
      },
      "message": "litert/tensor: guard AveragePool2D/MaxPool2D/Conv2D/DepthwiseConv2D against under-rank input in arithmetic.h\n\nAveragePool2D, MaxPool2D, Conv2DImpl, and DepthwiseConv2DImpl all\naccess fixed shape indices (shape[1], shape[2], shape[3]) without\nfirst checking that the input (and filter) shape vectors are large\nenough. A crafted TFLite model with a rank-0 or rank-1 tensor on\nany of these operators causes an out-of-bounds std::vector::operator[]\naccess at graph-construction time, before inference, resulting in\nSIGSEGV.\n\nPR #11057 added equivalent guards to the ToXnnpack() methods in\narithmetic.cc (graph-compilation time), but the earlier crash in\narithmetic.h (graph-construction time) was not covered. Add rank \u003c 4\nchecks before the first shape subscript in each function.\n"
    },
    {
      "commit": "dcbbe8bc08e87734f0c0296ef8883141affb1eda",
      "tree": "392a25c7ed5b6025d04c4ef6416221567ae0773d",
      "parents": [
        "63e6339a042abd4319a39fb786af87d62456c2a2",
        "dc40b59dcaf6207fe3b3d5a485f5b65b8c0a0957"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 17 19:06:57 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 17 19:06:57 2026"
      },
      "message": "Merge pull request #10913 from velonica0:fp16_build\n\nPiperOrigin-RevId: 983338646\n"
    },
    {
      "commit": "63e6339a042abd4319a39fb786af87d62456c2a2",
      "tree": "3738cec0300390175919201e70e9ad70e189a7b0",
      "parents": [
        "394025d30b5014ff0fec2f02e04bb3beb24c9214"
      ],
      "author": {
        "name": "Misha Gutman",
        "email": "aelphy@google.com",
        "time": "Thu Sep 17 17:17:16 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 17 17:18:27 2026"
      },
      "message": "Added rewrite reduce(gather(W, i), R)  -\u003e  gather(reduce(W, R), i) to ynnpack.\n\nPiperOrigin-RevId: 983274272\n"
    },
    {
      "commit": "394025d30b5014ff0fec2f02e04bb3beb24c9214",
      "tree": "b5b626fc473b103ade3d4ee50f33b07fb139141d",
      "parents": [
        "0c9f46a16e5b8717b0e53398b28fcd730ba86ae8"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Thu Sep 17 16:52:07 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 17 16:53:23 2026"
      },
      "message": "Fix reference traversal order in ArgmaxPoolingOperatorTester to match kernel tie-breaking.\n\nArgmax indices are defined as px * pooling_height + py. In XNNPACK\u0027s argmax\npooling operator, the indirection buffer is filled in px-outer, py-inner order,\nand microkernels iterate sequentially over the indirection buffer using strict\ngreater-than (\u003e) comparisons. Consequently, when two elements in a pooling window\nshare the identical maximum value, the operator breaks ties by choosing the smaller\nargmax index (the one encountered first).\n\nThe test reference implementation previously iterated py-outer, px-inner.\nWhen ties occurred (for instance, with random seed 24073 in\nARGMAX_POOLING_NHWC_F32.setup_changing_width), the reference code encountered\na later index before an earlier index and selected it, resulting in a mismatch\nbetween the reference index and the operator index despite having identical output\nvalues.\n\nThis change updates the reference loops in TestF32 and TestSetupF32 to iterate\npx-outer, py-inner, matching the operator\u0027s traversal order and tie-breaking behavior.\n\nPiperOrigin-RevId: 983258190\n"
    },
    {
      "commit": "0c9f46a16e5b8717b0e53398b28fcd730ba86ae8",
      "tree": "dcf872603933a16ff337e36b69f24fbe6fef856b",
      "parents": [
        "4da00c192ade43a8c6ffee385e8efdb6133e48b8"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Wed Sep 16 16:47:36 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 16 16:49:08 2026"
      },
      "message": "Support permuted broadcast dimensions in `move_broadcast_to_output`.\n\n- Add an output `mutable_span\u003cint32_t\u003e` parameter to `is_broadcast_noop` to communicate the permutation applied by the consumer node.\n- Remove the constraint in `is_broadcast_noop` requiring broadcast axes to not be permuted by `static_transpose`.\n- Add a `permute` helper for `ynn::axes_set` in `subgraph.h` and export `permute` in `ynnpack/base/span.h`.\n- Update `move_broadcast_to_output` to permute the broadcast\u0027s `new_dims`/`axes` and compute `broadcast_output.extents` via `permute`.\n- Enable the `transpose_broadcast_dot` reproducer test and add unit tests in `fusion_copy.cc`.\n\nPiperOrigin-RevId: 982569033\n"
    },
    {
      "commit": "4da00c192ade43a8c6ffee385e8efdb6133e48b8",
      "tree": "00c20eefa23e2ff56d8e595f875a4158f1884977",
      "parents": [
        "c057fa51c93d2045f01009f732194500ec22168d",
        "e9f3094368f0828612722b16cf3dd19d77154ee9"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 16 16:28:14 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 16 16:28:14 2026"
      },
      "message": "Merge pull request #11209 from aizu-m:create-path-operator-leaks\n\nPiperOrigin-RevId: 982558314\n"
    },
    {
      "commit": "c057fa51c93d2045f01009f732194500ec22168d",
      "tree": "3fd7b8a7e5114b0e0fb0a9c0037469f6724acd39",
      "parents": [
        "43e5a267d1cbc237e58f332eabdbefe82897be14"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Tue Sep 15 20:43:08 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 15 20:44:37 2026"
      },
      "message": "Set `is_set_up \u003d true` in `slinky::pipeline::evaluate`\n\nThis avoids constant initialization overhead in the pipeline.\n\nPiperOrigin-RevId: 982016026\n"
    },
    {
      "commit": "43e5a267d1cbc237e58f332eabdbefe82897be14",
      "tree": "8ca75671c12242b132a2ea743a90536f9aa38164",
      "parents": [
        "4d7c3317c711fcfc9d164ddc43229a0af1664b11"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Tue Sep 15 20:20:59 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 15 20:21:58 2026"
      },
      "message": "Update XNNPACK dependencies\n\nPiperOrigin-RevId: 982003214\n"
    },
    {
      "commit": "08d7bd9d5829b7180ba1d3b1d32e74a5948973f9",
      "tree": "1208aafe3ec28d8a37eb16638de50f13361a977e",
      "parents": [
        "8eb1f54f66a35f4924d4d5ea669e071992b982b5"
      ],
      "author": {
        "name": "Colm Donelan",
        "email": "colm.donelan@arm.com",
        "time": "Mon Sep 14 10:52:52 2026"
      },
      "committer": {
        "name": "Colm Donelan",
        "email": "colm.donelan@arm.com",
        "time": "Tue Sep 15 16:25:10 2026"
      },
      "message": "KFI-716 Add feature detection support for sme2p1\n\nSigned-off-by: Colm Donelan \u003ccolm.donelan@arm.com\u003e\n"
    },
    {
      "commit": "4d7c3317c711fcfc9d164ddc43229a0af1664b11",
      "tree": "cdb2517a17ef1713a9e16e2d98904b6a867cdc33",
      "parents": [
        "94629a08210f36a6f729a31bfefb3590f753b4c9"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Tue Sep 15 08:28:02 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 15 08:29:04 2026"
      },
      "message": "Remove unnecessary bug-prone wrapper\n\nFixes warning \"argument name \u0027axes\u0027 in comment does not match parameter name \u0027axis\u0027\", because one of the callers thinks it is calling the vector\u003cint32_t\u003e overload when it is not.\n\nPiperOrigin-RevId: 981646062\n"
    },
    {
      "commit": "94629a08210f36a6f729a31bfefb3590f753b4c9",
      "tree": "07e208060eed5df07c0426162599bb3288915d56",
      "parents": [
        "8eb1f54f66a35f4924d4d5ea669e071992b982b5"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 15 02:02:32 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 15 02:03:36 2026"
      },
      "message": "Remove the unnecessary `-march\u003d...+sve+sve2` from the SME/SME2 microkernel groups.\n\nPiperOrigin-RevId: 981491627\n"
    },
    {
      "commit": "8eb1f54f66a35f4924d4d5ea669e071992b982b5",
      "tree": "e6fa618a21738ad958bc741341ce89c53820a474",
      "parents": [
        "416b7028013711152c3165f5eacf6a9fec2fc89a",
        "287a812afc2f8af703fd285ec6bec6c87dd99bed"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 15 00:44:01 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 15 00:44:01 2026"
      },
      "message": "Merge pull request #11210 from destro4evr-rgb:fix/reduce-nd-workspace-size-overflow\n\nPiperOrigin-RevId: 981459885\n"
    },
    {
      "commit": "416b7028013711152c3165f5eacf6a9fec2fc89a",
      "tree": "ff07a3475c42b81e413bf6536dd4fe09924942fd",
      "parents": [
        "355f86e7862535e000698ebac25d0ecf93e3b96e"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Tue Sep 15 00:33:51 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 15 00:34:45 2026"
      },
      "message": "Optimize `get_dot_kernel` more\n\n- Use smaller unsigned integers to enable the compiler to avoid expensive idivs (either masking or using multiplicative inverses).\n- Reorder kernels to make shared branches more likely.\n- Reorder kernel requirement checks to reduce the expected number of checks executed.\n- Pack the kernel shape parameters in `struct dot_kernel`, allowing them to be set with a single 64-bit assignment.\n- Minor branching cleanup\n\nPiperOrigin-RevId: 981456273\n"
    },
    {
      "commit": "9375d4fa8cf345e40c741e9554f96945551b387d",
      "tree": "8f870b49a2bbfb869f5b28b9351f60f134b9c151",
      "parents": [
        "355f86e7862535e000698ebac25d0ecf93e3b96e"
      ],
      "author": {
        "name": "rahulchaphalkar",
        "email": "rahul.s.chaphalkar@intel.com",
        "time": "Mon Sep 14 21:15:13 2026"
      },
      "committer": {
        "name": "rahulchaphalkar",
        "email": "rahul.s.chaphalkar@intel.com",
        "time": "Mon Sep 14 21:15:13 2026"
      },
      "message": "Add scalar and WASM FP16 VADD and VADDC kernels\n"
    },
    {
      "commit": "355f86e7862535e000698ebac25d0ecf93e3b96e",
      "tree": "05b2127015c8987decce4666d8b44e9297268cfe",
      "parents": [
        "cc33fc479f29c0aab4d49e11a0a8fdf76a2a5e8a"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Mon Sep 14 17:31:22 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 14 17:33:16 2026"
      },
      "message": "Fix convergence check in FakeDynamicQuantize.\n\n`FakeDynamicQuantize` iteratively quantizes input tensors to produce test data with zero dynamic quantization error against reference models. The previous convergence threshold (`1e-6 * quantization_params.inv_scale`) was incorrectly scaled with `inv_scale` on the RHS instead of the LHS, making the threshold overly loose. This caused the iteration loop to terminate prematurely on the initial pass before the scale and zero-point stabilized, leading to dynamic quantization mismatches and test assertion failures in `BatchMatrixMultiplyQD8F32`.\n\nCompare the computed `inv_scale` and `zero_point` quantization parameters directly against the previous iteration to guarantee exact parameter stabilization across passes.\n\nPiperOrigin-RevId: 981227233\n"
    },
    {
      "commit": "cc33fc479f29c0aab4d49e11a0a8fdf76a2a5e8a",
      "tree": "661d7d4b1a9014becded6259bb69ada0e7b5aaa5",
      "parents": [
        "1fcdbfae7a0db8a80861ab57ec7be063944bd9a3"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Mon Sep 14 16:36:29 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 14 16:37:33 2026"
      },
      "message": "[gn] Disable assembly microkernels on Windows and add xnnpack_enable_assembly arg.\n\nAssembly microkernels in XNNPACK use the System V AMD64 ABI and are not supported on Windows. In BUILD.gn, AMD64_ASM_MICROKERNEL_SRCS was excluded on Windows, but XNN_ENABLE_ASSEMBLY\u003d1 remained defined. This caused microkernel tests (such as xnnpack_gemm_test) to instantiate tests for assembly kernels that were not linked into the library, leading to undefined symbol link errors.\n\nThis change:\n- Adds xnnpack_enable_assembly to declare_args() (defaulting to !is_win).\n- Conditionally defines XNN_ENABLE_ASSEMBLY based on xnnpack_enable_assembly.\n- Guards assembly sources and dependencies in xnnpack_library with xnnpack_enable_assembly.\n\nPiperOrigin-RevId: 981198270\n"
    },
    {
      "commit": "1fcdbfae7a0db8a80861ab57ec7be063944bd9a3",
      "tree": "164c3fd6f62f48de656d652d6f4ed37fac6dd181",
      "parents": [
        "bf3ee43b63070284f85a4a882f298b6ca5273f01"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Mon Sep 14 15:57:34 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 14 15:58:56 2026"
      },
      "message": "Minor subgraph optimizations\n\n- Reorder work to minimize reuse distance in `make_dot_impl`, avoiding register spills\n- Cache calls to `get_supported_arch_flags` in `make_dot_impl`\n- Optimize `m \u003c\u003d block_m` case in `run_dot`\n- Rearrange `fuse_and_slice_leading_dims` implementation to make the no-fusion case for low rank buffers a fast path that can be inlined\n- Optimize dynamic quantization implementation\n\nPiperOrigin-RevId: 981179291\n"
    },
    {
      "commit": "dc40b59dcaf6207fe3b3d5a485f5b65b8c0a0957",
      "tree": "9d83853a8191d87f687ac8ad5aa8b35f30fdb016",
      "parents": [
        "bf3ee43b63070284f85a4a882f298b6ca5273f01"
      ],
      "author": {
        "name": "velonica0",
        "email": "like@mail.nankai.edu.cn",
        "time": "Mon Aug 03 07:12:15 2026"
      },
      "committer": {
        "name": "velonica0",
        "email": "like@mail.nankai.edu.cn",
        "time": "Mon Sep 14 01:45:32 2026"
      },
      "message": "Add RVV Zvfh microkernels for f16-qs8, f16-qu8, qs8-f16 vcvt\n"
    },
    {
      "commit": "287a812afc2f8af703fd285ec6bec6c87dd99bed",
      "tree": "0d86a5e33932e0fa3365753da003bf0f0a1a90d4",
      "parents": [
        "e247b2993640fa5fc29f814948ae98bb824eaa22"
      ],
      "author": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Sat Sep 12 14:02:02 2026"
      },
      "committer": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Sat Sep 12 14:02:02 2026"
      },
      "message": "src/operators/reduce-nd: guard workspace size against integer overflow\n\nxnn_reshape_reduce_nd computes the workspace size for non-FP32 reduce\noperators (FP16, QS8, QU8 Sum/Mean/ReduceMin/ReduceMax/SumSquared/\nMeanSquared) as a bare triple product of three size_t shape dimensions\nwith no overflow check. When a crafted model sets three non-reduced\ndimensions each to ~3,000,000, the product wraps on a 64-bit host to a\nsmall residue, causing the runtime to allocate a tiny workspace. The\ncompute kernel then iterates over the actual (un-overflowed) ranges and\nwrites accumulator values far past the end of the allocation, producing\na heap out-of-bounds write.\n\nReplace both bare triple products with two chained xnn_safe_mul calls,\nmatching the fix pattern already applied to batch-matrix-multiply-nc.c\nand fully-connected-nc.c. Return xnn_status_out_of_memory on overflow.\n"
    },
    {
      "commit": "e9f3094368f0828612722b16cf3dd19d77154ee9",
      "tree": "e8a85e77c55a5a96950b7c40b8709d5b43206773",
      "parents": [
        "bf3ee43b63070284f85a4a882f298b6ca5273f01"
      ],
      "author": {
        "name": "Aizal Khan",
        "email": "aizumusheer2@gmail.com",
        "time": "Sat Sep 12 05:11:06 2026"
      },
      "committer": {
        "name": "Aizal Khan",
        "email": "aizumusheer2@gmail.com",
        "time": "Sat Sep 12 05:11:06 2026"
      },
      "message": "free partial operator on config and alloc failure in create paths\n"
    },
    {
      "commit": "bf3ee43b63070284f85a4a882f298b6ca5273f01",
      "tree": "4dd8ae89790e90c6fe54150a2a35dfa1792b1652",
      "parents": [
        "09496c2e2d47a09cdee18fe7ab7fb244edca164a"
      ],
      "author": {
        "name": "Quentin Khan",
        "email": "qkhan@google.com",
        "time": "Fri Sep 11 21:03:48 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 21:05:06 2026"
      },
      "message": "Add a getter for a buffer byte size.\n\nBefore this change the only way to get the size of a buffer was to lock\nthe buffer which may be expensive for non CPU buffers. All the\nimplementations that we have can currently return that size without\nhaving to lock the buffer.\n\nIf an implementation proves to not be able of doing this in the future,\nit should return an error and we\u0027ll still have the \"slow path\" to work\naround.\n\nPiperOrigin-RevId: 980008155\n"
    },
    {
      "commit": "09496c2e2d47a09cdee18fe7ab7fb244edca164a",
      "tree": "4b63b795659a300ce7c6b034e06b88d9f74247da",
      "parents": [
        "43c4b39c81592814b5fc5f7d722e94f481da9e92",
        "a345743b24341eb39656929b3ddbc37ec1ecb7f8"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 20:33:11 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 20:33:11 2026"
      },
      "message": "Merge pull request #11055 from destro4evr-rgb:fix/resize-nearest-neighbor-sigfpe\n\nPiperOrigin-RevId: 979989973\n"
    },
    {
      "commit": "43c4b39c81592814b5fc5f7d722e94f481da9e92",
      "tree": "a23fa7ab110c0f5f426a0a94bb24c533a627152d",
      "parents": [
        "b4086e4accff75e563d1686b5decf7b2d0bb69ba"
      ],
      "author": {
        "name": "Quentin Khan",
        "email": "qkhan@google.com",
        "time": "Fri Sep 11 19:15:43 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 19:17:01 2026"
      },
      "message": "Refactor `backends/nnpack_common:runner`.\n\n- Move non template functions out of the header.\n- Add some comments.\n- Add tests.\n\nPiperOrigin-RevId: 979950646\n"
    },
    {
      "commit": "b4086e4accff75e563d1686b5decf7b2d0bb69ba",
      "tree": "6b87f75fce4b93d93742455fb754d052a90c5500",
      "parents": [
        "31435beb12c65532721ade9dffb8d43f76a3fba1"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Fri Sep 11 18:58:53 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 19:00:37 2026"
      },
      "message": "Add incremental update helpers to subgraph_analysis to maintain analysis during rewrites\n\nPreviously, rewrites frequently called analysis.invalidate() to force a complete recomputation of the subgraph analysis across the outer loop.\n\nThis change adds incremental update helpers to subgraph_analysis:\n- add_node(ynn_node\u0026): registers a node\u0027s inputs and outputs into consumers and producers maps.\n- remove_node(ynn_node\u0026): removes a node\u0027s inputs and outputs from consumers and producers maps.\n- invalidate_node(ynn_node\u0026): removes the node from analysis and invalidates the node.\n- update_node(ynn_node\u0026, F\u0026\u0026): executes a node modification callback while safely updating its registered consumers and producers.\n- replace_input(ynn_node\u0026, ...): replaces a node input and updates consumer maps.\n- replace_all_uses(from_id, to_id): updates all consumers using a value.\n\nRewrites in fusion.cc are updated to use these helpers to maintain the analysis incrementally without invalidating the entire analysis.\n\nAdditionally, is_scalar_arithmetic is updated to only allow skipping layout transforms when explicitly requested (e.g., in fold_unary_input), and fold_unary_output and fold_iota_output are guarded to only match when the target node is the actual arithmetic operation.\n\nPiperOrigin-RevId: 979941418\n"
    },
    {
      "commit": "31435beb12c65532721ade9dffb8d43f76a3fba1",
      "tree": "2a41ee46249c7ba16d512acccf1f901a175a4589",
      "parents": [
        "9933c507ee4bdde31f8fceed0903e52a339d031d"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Fri Sep 11 18:15:23 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 18:17:29 2026"
      },
      "message": "Update XNNPACK dependencies\n\nPiperOrigin-RevId: 979917988\n"
    },
    {
      "commit": "b484f8a69fc55e4f7174908120708ada1a99aa5c",
      "tree": "dd02b10a127badea5db2cd9090fb96cdc35035e7",
      "parents": [
        "84e0115b7c3f51e84a6b2ba73e3cddbe75ce45fd",
        "9933c507ee4bdde31f8fceed0903e52a339d031d"
      ],
      "author": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Fri Sep 11 17:21:49 2026"
      },
      "committer": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Fri Sep 11 17:21:49 2026"
      },
      "message": "Merge upstream master and fix BF16 fallback test\n\nUse XnnpackGraph::GetSubgraph() in the BF16 fallback test after the upstream Tensor API refactor.\n\nValidation: Bazel fallback and BF16-to-QS8 conversion targets passed on x86_64: 8 fallback tests and 64 conversion tests, with 4 Arm-only tests skipped.\n"
    },
    {
      "commit": "9933c507ee4bdde31f8fceed0903e52a339d031d",
      "tree": "f981705a9f9b82aafd7338d84d5deb50937c5004",
      "parents": [
        "e247b2993640fa5fc29f814948ae98bb824eaa22"
      ],
      "author": {
        "name": "Quentin Khan",
        "email": "qkhan@google.com",
        "time": "Fri Sep 11 14:40:46 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 14:42:02 2026"
      },
      "message": "Remove the `ExternalBuffer` class and use `Buffer` instead.\n\nThis removes a helper class to reuse the existing buffers, allowing to\ndirectly share a buffer from another source instead of manually trying\nto keep track of views and copied buffers.\n\nThis also allows us to lock the buffers when needed and only keep them\nlocked for the duration of a run. Previously we would lock a buffer,\nkeep it as a view and unlock it, which is a bug and only worked for data\nthat resides in the host memory.\n\nPiperOrigin-RevId: 979814752\n"
    },
    {
      "commit": "a345743b24341eb39656929b3ddbc37ec1ecb7f8",
      "tree": "6ee52f46b5ba3cc5b102fddd7573f59a9108ccc3",
      "parents": [
        "e247b2993640fa5fc29f814948ae98bb824eaa22"
      ],
      "author": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Sat Aug 22 07:34:50 2026"
      },
      "committer": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Fri Sep 11 14:09:05 2026"
      },
      "message": "litert/xnnpack: guard against zero input dimension in ResizeNearestNeighbor\n\ninput_h and input_w are read directly from the flatbuffer shape field and\nused as integer divisors in the modulo and division operations at lines\n1483-1489. A crafted model with a zero height or width triggers SIGFPE\n(integer divide-by-zero) during XNNPACK subgraph compilation at model load\ntime. Add an explicit non-zero check before the first use of either value.\n"
    },
    {
      "commit": "e247b2993640fa5fc29f814948ae98bb824eaa22",
      "tree": "2ec594503016cf9ed6a6a36c988d1bf9a947b387",
      "parents": [
        "5637b04ba0b351f2cad7017a35b80ee067c70d16"
      ],
      "author": {
        "name": "Marie White",
        "email": "mariewhite@google.com",
        "time": "Fri Sep 11 08:47:42 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 08:49:05 2026"
      },
      "message": "Add initialization states to kernels. This is beneficial for kernels with initialization procedures that should execute outside the scope of the kernels.\n\nFor AMX kernels, we hoist tile configuration and tile release instructions several layers up the stack such that it is created once per thread, instead of several loops deep within the thread. The impact of this change increases as we increase the split sizes.\n\nPiperOrigin-RevId: 979678172\n"
    },
    {
      "commit": "5637b04ba0b351f2cad7017a35b80ee067c70d16",
      "tree": "9c54f4ba43590b241af5e82710e82bd29f29a765",
      "parents": [
        "e267d43a523d34dcdfa943475ef16d3d93b05564"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Fri Sep 11 00:37:23 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 11 00:39:03 2026"
      },
      "message": "Add missing invalidations of subgraph analysis\n\nWe recently fixed the rewrites to only invalidate the analysis when requested, instead of after every rewrite. Of course, in hindsight, this likely meant we were missing these calls.\n\nSome of these are probably unnecessary. This is a quick fix for a regression, after this is submitted I intend to refactor this code so the rewrites implicitly invalidate or update the analysis without requiring an explicit call like this.\n\nPiperOrigin-RevId: 979489226\n"
    },
    {
      "commit": "e267d43a523d34dcdfa943475ef16d3d93b05564",
      "tree": "094a99f1b9e504da78113c82a4ac8d32c12945b3",
      "parents": [
        "60bd2ebdb8a79ccc1f7c58e35bc91f69db257e56"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Thu Sep 10 21:37:00 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 10 21:38:16 2026"
      },
      "message": "Fix short-circuit in YNNPack fusion loop to rewrite multiple nodes per pass\n\nIn ynn_subgraph::fusion(), the node rewrite loops previously used:\nchanged \u003d changed || rewrite_func(...) || ...\nBecause of C++ logical OR short-circuit evaluation, as soon as changed\nbecame true on any node, the right-hand side was skipped for every\nsubsequent node in the loop. This forced the outer while (changed) loop\nto execute extra passes recomputing subgraph_analysis to rewrite only\na single node.\nPiperOrigin-RevId: 979404307\n"
    },
    {
      "commit": "60bd2ebdb8a79ccc1f7c58e35bc91f69db257e56",
      "tree": "f2869fa2ea02dc239a4b5a23be43a71361c54ab6",
      "parents": [
        "c394a5f04b6a6dc45c6192b5f5a2f73fbe46f45b"
      ],
      "author": {
        "name": "Quentin Khan",
        "email": "qkhan@google.com",
        "time": "Thu Sep 10 20:50:40 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 10 20:51:46 2026"
      },
      "message": "Split code that can be shared between XNNPACK and a future YNNPACK runner.\n\nPiperOrigin-RevId: 979377257\n"
    },
    {
      "commit": "84e0115b7c3f51e84a6b2ba73e3cddbe75ce45fd",
      "tree": "6a2354cedcd093019860c58784d707191c0800c0",
      "parents": [
        "32ae89cf8c12440ab417c4f83d8a6246e64a0df7"
      ],
      "author": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Thu Sep 10 20:11:14 2026"
      },
      "committer": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Thu Sep 10 20:11:14 2026"
      },
      "message": "Include intrinsics polyfill in bf16-qs8-vcvt NEONv8 kernels\n\nGCC\u0027s arm_neon.h does not declare vcvtnq_s32_f32 for AArch32 even with\n-march\u003darmv8-a (GCC bugs 71233/95399); the polyfill in\nintrinsics-polyfill.h provides it. The sibling f32 template already\nincludes it, but the new bf16 template omitted it, breaking the\ncmake-linux-armhf build. Regenerated with tools/xngen.\n"
    },
    {
      "commit": "c394a5f04b6a6dc45c6192b5f5a2f73fbe46f45b",
      "tree": "295c30be4d216a6aec32bfaab5a5992fb00abb52",
      "parents": [
        "5e2872302676a53aea261ce9187aea079723abfc",
        "24225329c58ad102a022c9e5395c645622a377ec"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 10 17:09:53 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 10 17:09:53 2026"
      },
      "message": "Merge pull request #10910 from aizu-m:zero-buffers-valid-batch-size\n\nPiperOrigin-RevId: 979251340\n"
    },
    {
      "commit": "32ae89cf8c12440ab417c4f83d8a6246e64a0df7",
      "tree": "42364abb2744140bb09e8c6d72ef1a95d79ef983",
      "parents": [
        "1f8df2cdd551e014db6e0a1fad4b6d3d07040b82"
      ],
      "author": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Thu Sep 10 14:36:00 2026"
      },
      "committer": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Thu Sep 10 14:36:00 2026"
      },
      "message": "Fix qd8_bf16_qb4w fallback test graph build for BF16 inputs\n\nBuild the Tensor graph with an FP32 input, the only path where the\nbackend inserts the dynamic-quantize convert to qdint8, then patch the\ninput datatype to the requested type after rewiring. Previously BF16\ninputs reached xnn_define_fully_connected as BF16, which validation\nrejects with xnn_status_invalid_parameter, failing\nBf16ToFp32FallbackTest.RewritesScalarQd8Fallback (seen on android_arm).\n"
    },
    {
      "commit": "5e2872302676a53aea261ce9187aea079723abfc",
      "tree": "9c21c2389b23e613232900c09bb2f00b11ca4aac",
      "parents": [
        "64759b65c820cb4ff5fb86a8137610a0adae217c"
      ],
      "author": {
        "name": "Marie White",
        "email": "mariewhite@google.com",
        "time": "Thu Sep 10 11:50:40 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 10 11:51:42 2026"
      },
      "message": "Remove redundant AMX tile config loads by keeping track of the current tile config.\n\nPiperOrigin-RevId: 979113159\n"
    },
    {
      "commit": "64759b65c820cb4ff5fb86a8137610a0adae217c",
      "tree": "f763da65b4739fb5cb34eca11be09d175d55a6e4",
      "parents": [
        "d89ef6669a14db203b3b7935b1b3862cb63fb6df"
      ],
      "author": {
        "name": "Frank Barchard",
        "email": "fbarchard@google.com",
        "time": "Thu Sep 10 07:57:36 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 10 07:59:06 2026"
      },
      "message": "Restore QEMU cross-compilation emulator for armhf CMake tests.\n\nPiperOrigin-RevId: 979015221\n"
    },
    {
      "commit": "d89ef6669a14db203b3b7935b1b3862cb63fb6df",
      "tree": "afae53adf32859b08101b0aecd2a73afccb738b8",
      "parents": [
        "65cc4596688921a1e3a98a10cfc0a40402849467"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Thu Sep 10 02:31:00 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 10 02:32:33 2026"
      },
      "message": "Optimize SME int4 and int2 kernels on Apple M4\n\nThis strategy permutes A instead of B, where the A permutations can be fully implemented by svld2/svld4.\n\nThis improves the kernels substantially on Apple M4:\n\n  | kernel                  | master  | this change | speedup |\n  |-------------------------|---------|-------------|---------|\n  | dot_int8_int4_int32_sme | 6.18 ms |    1.08 ms  |  5.7x   |\n  | dot_int8_int2_int32_sme | 2.04 ms |    1.15 ms  |  1.8x   |\n  | dot_int8_int8_int32_sme | 1.08 ms |    1.08 ms  |  1.0x   |\n\nThis shows that we can reach comparable performance to int8, i.e. the unpacking overhead is almost fully hidden.\n\nThis improves gemma4 E2B prefill performance by over 2x from the previous best: ~900 tok/s -\u003e ~1.9k tok/s!\n\nPiperOrigin-RevId: 978886377\n"
    },
    {
      "commit": "65cc4596688921a1e3a98a10cfc0a40402849467",
      "tree": "bc0f9afb76cd614ef41f7e40591b545ef77fc59f",
      "parents": [
        "b39959bd21bccd7324796425703922e3b020a268"
      ],
      "author": {
        "name": "Volodymyr Kysenko",
        "email": "vksnk@google.com",
        "time": "Thu Sep 10 00:14:24 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Thu Sep 10 00:15:47 2026"
      },
      "message": "Change SME int4 and int2 dot kernels to be k\u003d8 and k\u003d16 correspondingly.\n\nThere was a regression on Apple M4 in the decode case, because in the M\u003d1 case it\u0027s better to use NEON kernels, but we couldn\u0027t select them because of the incompatible packing.\n\nPiperOrigin-RevId: 978835803\n"
    },
    {
      "commit": "b39959bd21bccd7324796425703922e3b020a268",
      "tree": "4307c62afa4d04132322ad04255ef8e79f328383",
      "parents": [
        "8fc448634e1fa6ebe64c510cdf2ea248f669c124"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Wed Sep 09 23:38:08 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 09 23:39:39 2026"
      },
      "message": "Align the `m` dimension of `pack_a` outputs\n\n`transpose_a` dot kernels read multiples of `tile_m` rows at a time. Before a recent change, we were relying on some accidentally added padding for this to avoid reading memory out of bounds. This padding was recently removed, and now these kernels read memory out of bounds.\n\nThis change adds a new dimension that...\n\nPiperOrigin-RevId: 978819614\n"
    },
    {
      "commit": "8fc448634e1fa6ebe64c510cdf2ea248f669c124",
      "tree": "63e45f4d82e2ed31de1589c8ab00f049caf06927",
      "parents": [
        "74732d1001a7aadeb515c3c58cde7ef4bbe43635"
      ],
      "author": {
        "name": "Frank Barchard",
        "email": "fbarchard@google.com",
        "time": "Wed Sep 09 22:38:52 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 09 22:40:15 2026"
      },
      "message": "Install qemu-user in standard Docker image for armhf emulation.\n\nPiperOrigin-RevId: 978790925\n"
    },
    {
      "commit": "74732d1001a7aadeb515c3c58cde7ef4bbe43635",
      "tree": "4f31ec92f802275d6fe15e71a6f20a79359a092f",
      "parents": [
        "ed430beb1d74c6fb551ed74effd4dab3b4562a2d"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Wed Sep 09 22:31:11 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 09 22:32:26 2026"
      },
      "message": "Update XNNPACk dependencies\n\nPiperOrigin-RevId: 978787169\n"
    },
    {
      "commit": "ed430beb1d74c6fb551ed74effd4dab3b4562a2d",
      "tree": "2cd534c122ce0b91284896c35d8f5dcfd5c7dc67",
      "parents": [
        "dd6695558c9ab1740b9c72b4a4c6217c778fb852"
      ],
      "author": {
        "name": "Volodymyr Kysenko",
        "email": "vksnk@google.com",
        "time": "Wed Sep 09 20:57:03 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 09 20:58:47 2026"
      },
      "message": "Update help text for --type option in dot_bench.cc\n\nCorrect the listed type names from int8xint4 and int8xint2 to int8_int4 and int8_int2 in the command-line options help message.\n\nPiperOrigin-RevId: 978736672\n"
    },
    {
      "commit": "dd6695558c9ab1740b9c72b4a4c6217c778fb852",
      "tree": "226c9526b085ad80fe32d0a0481779a210c475a6",
      "parents": [
        "5b8b21020f653e19975d1afcb59d612104b5e7cd",
        "bc12c147ebc82871431c1083ca07e21f81034ab3"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 09 15:10:44 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 09 15:10:44 2026"
      },
      "message": "Merge pull request #11177 from destro4evr-rgb:fix/litert-topk-rank0-oob-write\n\nPiperOrigin-RevId: 978554145\n"
    },
    {
      "commit": "1f8df2cdd551e014db6e0a1fad4b6d3d07040b82",
      "tree": "25b4b9cb66af929481ea2008eeb2bc60bc73da6b",
      "parents": [
        "f506afc8b8146f1dd76b8d120769b6503fa3d90e"
      ],
      "author": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Tue Sep 08 16:37:34 2026"
      },
      "committer": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Wed Sep 09 14:28:24 2026"
      },
      "message": "Clean up stale comment reference in qb4w fallback test\n"
    },
    {
      "commit": "f506afc8b8146f1dd76b8d120769b6503fa3d90e",
      "tree": "098707e611fbb7b4ed4e2402a9a9372d10ab2578",
      "parents": [
        "a95831ac4dbf942f26a3585fc4dee10d04cda0c1"
      ],
      "author": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Tue Sep 08 16:32:08 2026"
      },
      "committer": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Wed Sep 09 14:28:24 2026"
      },
      "message": "Use Tensor API to build qd8_bf16_qb4w fallback test graph\n\nBuild the InlineQd8Bf16Qb4wFullyConnected test graph with XnnTensor,\nFullyConnected, and BuildXnnpackGraph like fp16-to-fp32-fallback,\npatching only what the Tensor API cannot express (BF16 blockwise\nscales, output datatype overrides, packed-LHS fusion state).\n\nAddresses review feedback on google/XNNPACK#11112.\n"
    },
    {
      "commit": "a95831ac4dbf942f26a3585fc4dee10d04cda0c1",
      "tree": "d6e1b5085fc2aacc0b819e788dd453c608e1112f",
      "parents": [
        "5b8b21020f653e19975d1afcb59d612104b5e7cd"
      ],
      "author": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Tue Sep 01 15:46:18 2026"
      },
      "committer": {
        "name": "Jake Stevens",
        "email": "jrstevens@meta.com",
        "time": "Wed Sep 09 14:28:24 2026"
      },
      "message": "Accelerate Arm BF16 QB4W fully connected\n\nKeep qd8_bf16_qb4w fully connected native on Arm only when an optimized i8mm or NEON dot-product kernel is available and the input, output, and weight scales use the supported BF16 types. Otherwise, retain the fp32 rewrite fallback.\n\nAdd NEON v8 BF16-to-QS8 conversion microkernels and select the u32 kernel for Arm packed-LHS conversion. This replaces the scalar-imagic conversion path on Arm while preserving scalar and x86 fallback behavior.\n\nTest plan:\n  cmake --build build-test --target bf16-qs8-vcvt-test -j8\n  ./build-test/test/bf16-qs8-vcvt-test  # 64/64 pass\n  cmake --build build-android-arm64 --target bf16-qs8-vcvt-test -j8\n\nBenchmark (Pixel 10, Android 17/API 37, arm64-v8a):\n  Configured a Release build for Android API 24 with NDK r29/Clang 21.\n  cmake --build build-android-arm64 --target vunary-bench -j8\n  adb push build-android-arm64/bench/vunary-bench /data/local/tmp/\n  adb shell /data/local/tmp/vunary-bench --benchmark_filter\u003d\u0027bf16_qs8_vcvt.*(neonv8_u32|scalar_imagic_u4)\u0027\n\n  Results (real time, CPU scaling and ASLR enabled):\n    N\u003d8192:  neonv8_u32 1110 ns, 22.1348 GB/s; scalar_imagic_u4 1182 ns, 20.7856 GB/s\n    N\u003d65536: neonv8_u32 8886 ns, 22.1246 GB/s; scalar_imagic_u4 9455 ns, 20.7941 GB/s\n    neonv8_u32 was 1.064-1.065x faster than scalar_imagic_u4.\n"
    },
    {
      "commit": "bc12c147ebc82871431c1083ca07e21f81034ab3",
      "tree": "226c9526b085ad80fe32d0a0481779a210c475a6",
      "parents": [
        "5b8b21020f653e19975d1afcb59d612104b5e7cd"
      ],
      "author": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Wed Sep 09 04:24:05 2026"
      },
      "committer": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Wed Sep 09 04:24:05 2026"
      },
      "message": "litert/tensor: guard TopK() against rank-0 input to prevent heap OOB write\n\nWhen the input tensor has rank 0 (scalar), `values_info.shape` and\n`indices_info.shape` are both empty after copying input_info.shape.\nCalling `back()` on an empty vector is UB: the implementation returns\na reference one word before the heap allocation, and the subsequent\nassignment writes the attacker-controlled k value to that address,\ncorrupting heap metadata.\n\nAdd a rank guard immediately after copying the input shape, mirroring\nthe pattern used for EmbeddingLookup at line 1994 of the same file.\n\nReported-by: destro4evr@gmail.com\n"
    },
    {
      "commit": "5b8b21020f653e19975d1afcb59d612104b5e7cd",
      "tree": "65fe9a65abb644d77df33f4a5a490809fe3cc6f6",
      "parents": [
        "3c4596adb505f51c042ee14e76731b9004524b1a"
      ],
      "author": {
        "name": "Frank Barchard",
        "email": "fbarchard@google.com",
        "time": "Wed Sep 09 02:15:12 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Wed Sep 09 02:17:01 2026"
      },
      "message": "pqs8_qc4w_gemm_minmax_test for Kleidi detect bug in x8_packlh_neonsme/neonsme2.\n- Add k_large (k\u003d32, 128) unit tests for pqs8_qc4w to verify vectorized packing.\n- Fix x8_packlh_neonsme and x8_packlh_neonsme2 to pack all m rows when mr_packed \u003d\u003d 1.\n\nPiperOrigin-RevId: 978239278\n"
    },
    {
      "commit": "3c4596adb505f51c042ee14e76731b9004524b1a",
      "tree": "dec22795db716382e7009e3bf38818dabd990362",
      "parents": [
        "eaab2c631c2c502576343b25ee0fb96769b942b0"
      ],
      "author": {
        "name": "Frank Barchard",
        "email": "fbarchard@google.com",
        "time": "Tue Sep 08 22:07:36 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 08 22:09:07 2026"
      },
      "message": "Workaround for KleidiAI SME2 RHS packing on Apple Silicon.\n\nPiperOrigin-RevId: 978136789\n"
    },
    {
      "commit": "eaab2c631c2c502576343b25ee0fb96769b942b0",
      "tree": "653071b6a45e4e88ec71439e21b757262826f5bc",
      "parents": [
        "61050fcc056d79b6a1df42d71f69b953154267d8",
        "8d589b64cb836b01ad1f64bf13850bc9f2c4b097"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 08 19:47:32 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 08 19:47:32 2026"
      },
      "message": "Merge pull request #11123 from rahulchaphalkar:f16-rdmax\n\nPiperOrigin-RevId: 978062887\n"
    },
    {
      "commit": "61050fcc056d79b6a1df42d71f69b953154267d8",
      "tree": "32a3b7d426a97b4204135281a1fc780bdba33b3d",
      "parents": [
        "53aa4974f3724ec040296eaef840892a7ae37012"
      ],
      "author": {
        "name": "Quentin Khan",
        "email": "qkhan@google.com",
        "time": "Tue Sep 08 15:35:54 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 08 15:37:10 2026"
      },
      "message": "Add a getter to retrieve the underlying shared pointer to a tensor buffer.\n\nThis will allow sharing buffers between tensor.\n\nPiperOrigin-RevId: 977931223\n"
    },
    {
      "commit": "53aa4974f3724ec040296eaef840892a7ae37012",
      "tree": "56ad8f05f3700ddc12f7bed33cc72298e8635728",
      "parents": [
        "b3bcd40a148ad0d22b8f6c5de4711e7b8cc9b48f"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Tue Sep 08 13:52:41 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 08 13:53:44 2026"
      },
      "message": "Add more documentation\n\nThis is hopefully useful to both human and AI coders.\n\nPiperOrigin-RevId: 977886193\n"
    },
    {
      "commit": "24225329c58ad102a022c9e5395c645622a377ec",
      "tree": "e823268045e5ecd0f35d45321489b33be5011f70",
      "parents": [
        "b494cf205f6584aba5213f76e2bf5e303adb5234"
      ],
      "author": {
        "name": "Aizal Khan",
        "email": "aizumusheer2@gmail.com",
        "time": "Tue Aug 25 11:17:24 2026"
      },
      "committer": {
        "name": "“rootvector2”",
        "email": "“dxbnaveed.k@gmail.com”",
        "time": "Tue Sep 08 11:14:04 2026"
      },
      "message": "hold the allocation count in the allocator context\n"
    },
    {
      "commit": "b494cf205f6584aba5213f76e2bf5e303adb5234",
      "tree": "9e8f50fe514c9f0ec5b4dea71d005aba23864a30",
      "parents": [
        "240f90c4b9066cf8db9c3850b86631e45ae1d59a"
      ],
      "author": {
        "name": "Aizal Khan",
        "email": "aizumusheer2@gmail.com",
        "time": "Tue Aug 18 10:42:57 2026"
      },
      "committer": {
        "name": "“rootvector2”",
        "email": "“dxbnaveed.k@gmail.com”",
        "time": "Tue Sep 08 11:14:04 2026"
      },
      "message": "restore test allocator with an RAII guard\n"
    },
    {
      "commit": "240f90c4b9066cf8db9c3850b86631e45ae1d59a",
      "tree": "0de1653f74c985208f8a5b32c117f8550fb5a33d",
      "parents": [
        "b3bcd40a148ad0d22b8f6c5de4711e7b8cc9b48f"
      ],
      "author": {
        "name": "Aizal Khan",
        "email": "aizumusheer2@gmail.com",
        "time": "Fri Jul 31 22:24:35 2026"
      },
      "committer": {
        "name": "“rootvector2”",
        "email": "“dxbnaveed.k@gmail.com”",
        "time": "Tue Sep 08 11:14:04 2026"
      },
      "message": "use valid_batch_size to free zero buffers in xnn_destroy_operator\n"
    },
    {
      "commit": "b3bcd40a148ad0d22b8f6c5de4711e7b8cc9b48f",
      "tree": "fb2d6c606f4c01b1819a103cc160b549ef122566",
      "parents": [
        "16b05de89d5ebdf158fea45968d9efd58c416f77",
        "b80b85d928bce2e8d704c25e6d6511356eb1846f"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 08 11:02:41 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 08 11:02:41 2026"
      },
      "message": "Merge pull request #11158 from kejcao:fix/deconvolution-zero-output-reshape\n\nPiperOrigin-RevId: 977824223\n"
    },
    {
      "commit": "16b05de89d5ebdf158fea45968d9efd58c416f77",
      "tree": "8b65d007da78fad9b73a8070912403ca9fbb78f3",
      "parents": [
        "852a300c8db542fbf1577d6654bc1cb674a32dc1"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Tue Sep 08 05:41:47 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Tue Sep 08 05:42:58 2026"
      },
      "message": "Optimize `get_dot_kernel` by lifting some flag logic out of the per-kernel check\n\n```\nname                                                                     time/op         time/op     vs base\nget_dot_kernel/fp32_fp32_fp32/M:6720/N:6720/K:6720/TileK:0/BlockN:0       242.7n ± 13%   143.5n ±  2%  -40.88% (p\u003d0.002 n\u003d6)\nget_dot_kernel/fp32_fp32_fp32/M:6720/N:6720/K:6720/TileK:1/BlockN:16     118.68n ±  3%   74.01n ±  2%  -37.64% (p\u003d0.002 n\u003d6)\nget_dot_kernel/fp32_fp32_fp32/M:6720/N:6720/K:6720/TileK:2/BlockN:16      93.36n ±  3%   61.45n ±  1%  -34.18% (p\u003d0.002 n\u003d6)\nget_dot_kernel/fp32_fp32_fp32/M:6720/N:6720/K:6720/TileK:4/BlockN:16      47.49n ±  4%   35.14n ±  3%  -26.00% (p\u003d0.002 n\u003d6)\nget_dot_kernel/bf16_bf16_fp32/M:6720/N:6720/K:6720/TileK:0/BlockN:0      143.43n ±  1%   91.75n ± 29%  -36.03% (p\u003d0.002 n\u003d6)\nget_dot_kernel/bf16_bf16_fp32/M:6720/N:6720/K:6720/TileK:1/BlockN:16      82.61n ± 25%   53.11n ± 11%  -35.71% (p\u003d0.002 n\u003d6)\nget_dot_kernel/bf16_bf16_fp32/M:6720/N:6720/K:6720/TileK:2/BlockN:16      80.72n ±  1%   55.20n ±  8%  -31.61% (p\u003d0.002 n\u003d6)\nget_dot_kernel/bf16_bf16_fp32/M:6720/N:6720/K:6720/TileK:4/BlockN:16      24.57n ±  6%   19.14n ±  4%  -22.09% (p\u003d0.002 n\u003d6)\nget_dot_kernel/fp16_fp16_fp32/M:6720/N:6720/K:6720/TileK:0/BlockN:0       81.45n ±  3%   51.42n ±  3%  -36.87% (p\u003d0.002 n\u003d6)\nget_dot_kernel/fp16_fp16_fp32/M:6720/N:6720/K:6720/TileK:1/BlockN:16      81.47n ±  6%   52.00n ±  2%  -36.17% (p\u003d0.002 n\u003d6)\nget_dot_kernel/fp16_fp16_fp32/M:6720/N:6720/K:6720/TileK:2/BlockN:16      18.38n ± 14%   15.08n ±  5%  -17.96% (p\u003d0.002 n\u003d6)\nget_dot_kernel/fp16_fp16_fp32/M:6720/N:6720/K:6720/TileK:4/BlockN:16      18.32n ±  4%   15.11n ±  1%  -17.53% (p\u003d0.002 n\u003d6)\nget_dot_kernel/int8_int8_int32/M:6720/N:6720/K:6720/TileK:0/BlockN:0     131.00n ±  3%   86.84n ±  4%  -33.71% (p\u003d0.002 n\u003d6)\nget_dot_kernel/int8_int8_int32/M:6720/N:6720/K:6720/TileK:1/BlockN:16     63.90n ±  3%   47.93n ±  2%  -25.00% (p\u003d0.002 n\u003d6)\nget_dot_kernel/int8_int8_int32/M:6720/N:6720/K:6720/TileK:2/BlockN:16     21.85n ±  2%   21.75n ±  3%        ~ (p\u003d0.589 n\u003d6)\nget_dot_kernel/int8_int8_int32/M:6720/N:6720/K:6720/TileK:4/BlockN:16     58.43n ±  2%   46.48n ± 16%  -20.46% (p\u003d0.002 n\u003d6)\nget_dot_kernel/int8_int4_int32/M:6720/N:6720/K:6720/TileK:0/BlockN:0      19.88n ±  3%   19.22n ±  2%   -3.34% (p\u003d0.002 n\u003d6)\nget_dot_kernel/int8_int4_int32/M:6720/N:6720/K:6720/TileK:1/BlockN:16     17.55n ±  3%   16.45n ±  1%   -6.28% (p\u003d0.002 n\u003d6)\nget_dot_kernel/int8_int4_int32/M:6720/N:6720/K:6720/TileK:2/BlockN:16     19.70n ±  3%   19.00n ±  3%   -3.53% (p\u003d0.002 n\u003d6)\nget_dot_kernel/int8_int4_int32/M:6720/N:6720/K:6720/TileK:4/BlockN:16     17.75n ±  2%   16.40n ±  2%   -7.58% (p\u003d0.002 n\u003d6)\ngeomean                                                                  49.78n         37.47n        -24.73%\n```\n\nPiperOrigin-RevId: 977698800\n"
    },
    {
      "commit": "852a300c8db542fbf1577d6654bc1cb674a32dc1",
      "tree": "db762546626e74bfcf64fa03f11847310506c443",
      "parents": [
        "6daa0c0d4df5c50896ad079e977a6c0efdd6c474"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Mon Sep 07 21:03:55 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 07 21:07:28 2026"
      },
      "message": "Fix `static_size_of_value` for implicit broadcast dimensions\n\nPiperOrigin-RevId: 977573159\n"
    },
    {
      "commit": "6daa0c0d4df5c50896ad079e977a6c0efdd6c474",
      "tree": "ed7129fdcb58fb73336150abd8619ce285396412",
      "parents": [
        "fdf2b7f7aa4965a8565d870021fa0791773f2828"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Mon Sep 07 21:02:40 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 07 21:04:01 2026"
      },
      "message": "Reassociate pack_b and gather in subgraph fusion.\n\nAdds a subgraph fusion rewrite that reassociates pack_b over a gather of constant weights:\n  pack_b(gather(w, index, axes)) -\u003e gather(pack_b(w), index\u0027, axes + 2)\n\nThis allows pack_b on static weight tensors to be constant-folded at initialization time by fold_constants(), eliminating runtime weight packing when gathering weights (such as in MoE models).\n\nAlso updates should_pack_b in dot.cc to ensure constant-folded packing is selected for gather-of-constant inputs, and adds unit tests and matchers.\n\nPiperOrigin-RevId: 977572752\n"
    },
    {
      "commit": "fdf2b7f7aa4965a8565d870021fa0791773f2828",
      "tree": "42d5b7bbe2723a1cc1cbb8f53164e75fec6af917",
      "parents": [
        "6c19e6b883bb602c38bbd458e0ba9dd35af01631"
      ],
      "author": {
        "name": "Quentin Khan",
        "email": "qkhan@google.com",
        "time": "Mon Sep 07 17:22:45 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 07 17:25:39 2026"
      },
      "message": "Add a static getter to retrieve buffer implementations\u0027 type identifier.\n\nPiperOrigin-RevId: 977518315\n"
    },
    {
      "commit": "b80b85d928bce2e8d704c25e6d6511356eb1846f",
      "tree": "ebb20c68cc05febfaf451cc30b616c65785ceb15",
      "parents": [
        "d50a82e9579b22b83c97de62e2964163f03d73de"
      ],
      "author": {
        "name": "kejcao",
        "email": "kjcao@proton.me",
        "time": "Mon Sep 07 15:56:43 2026"
      },
      "committer": {
        "name": "kejcao",
        "email": "kjcao@proton.me",
        "time": "Mon Sep 07 15:56:43 2026"
      },
      "message": "Reject deconvolution reshape with zero output dimensions\n\nxnn_reshape_deconvolution2d_nhwc_* computes the output dimensions with\nxnn_compute_deconvolution_output_dimension() and never validates the\nresult. When the padding is large enough relative to the kernel, input\nsize, stride and adjustment (e.g. a 4x4 kernel with 3 pixels of padding\non a 2x2 input at stride 1), the computed output dimension saturates to\nzero. reshape_igemm_path() then calls xnn_indirection_init_deconv2d(),\nwhich divides by the zero output width:\n\n  clamp_oy \u003d (output_size - 1) / output_width;   // output_width \u003d\u003d 0\n\ncausing a SIGFPE (integer division by zero) instead of returning an\nerror. The crash is reachable through the public operator API and\naffects every deconvolution data type (F32/F16/QS8/QU8), which all\nshare reshape_deconvolution2d_nhwc().\n\nReturn xnn_status_invalid_parameter from the reshape when either\ncomputed output dimension is zero, mirroring the existing input\ndimension and adjustment validation in the same function.\n"
    },
    {
      "commit": "6c19e6b883bb602c38bbd458e0ba9dd35af01631",
      "tree": "b220da87e0ef23d9b501651a215513bd74eee7ba",
      "parents": [
        "d50a82e9579b22b83c97de62e2964163f03d73de",
        "bc8d01b6815f97e9a95c4b98b808c9d4db575609"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 07 15:43:18 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Mon Sep 07 15:43:18 2026"
      },
      "message": "Merge pull request #11141 from digantdesai:hexagon-extra-bytes-fix\n\nPiperOrigin-RevId: 977488790\n"
    },
    {
      "commit": "d50a82e9579b22b83c97de62e2964163f03d73de",
      "tree": "6edf2b5dc3a6ef3a655c84c7394cf7f0dc8cc80f",
      "parents": [
        "e93f3371a2e4698eccadfab0253420d985310c43"
      ],
      "author": {
        "name": "Frank Barchard",
        "email": "fbarchard@google.com",
        "time": "Sat Sep 05 02:40:38 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Sat Sep 05 02:42:00 2026"
      },
      "message": "xnnpack_configurable_defines match xnnpack_kleidiai_defines\n\nPiperOrigin-RevId: 976603339\n"
    },
    {
      "commit": "e93f3371a2e4698eccadfab0253420d985310c43",
      "tree": "95642fc210d02b018670f8b0bb8c9b2e53e1646e",
      "parents": [
        "303dc14a1fa8814ee93a0e1685d060ea3ec91ff5",
        "3a329358782e167e562a99e70232edaa6e50e397"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Sat Sep 05 02:04:12 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Sat Sep 05 02:04:12 2026"
      },
      "message": "Merge pull request #11142 from destro4evr-rgb:fix/litert-rank0-crash-fc-embedlookup-gathernd\n\nPiperOrigin-RevId: 976594474\n"
    },
    {
      "commit": "303dc14a1fa8814ee93a0e1685d060ea3ec91ff5",
      "tree": "18fa40fb057ac919a5058427cd3c4448716a6432",
      "parents": [
        "47fef97c1fc45acd58b8c5e5dc313491a782ed83"
      ],
      "author": {
        "name": "Volodymyr Kysenko",
        "email": "vksnk@google.com",
        "time": "Sat Sep 05 00:10:57 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Sat Sep 05 00:13:27 2026"
      },
      "message": "Add ARM SME dot product kernels for int8 activations with int4 and int2 weights.\n\nThe new kernels are very similar to the existing sme_dot kernel except that the new ones also do weight unpacking on-the-fly using SVE.\n\nPiperOrigin-RevId: 976562539\n"
    },
    {
      "commit": "47fef97c1fc45acd58b8c5e5dc313491a782ed83",
      "tree": "916bc0095f4c2295c0d0a08d0b058fb94ca8e025",
      "parents": [
        "426b707fecc112e902e274617e42f186425b927a"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Sat Sep 05 00:09:18 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Sat Sep 05 00:10:12 2026"
      },
      "message": "Simplify away provably true checks\n\nWe have a lot of these checks, and for small models, checking them all can cost a significant amount of time.\n\nMost of these checks are provably true even for symbolic extents, so checking that and filtering them out can be a surprisingly significant optimization.\n\nPiperOrigin-RevId: 976561940\n"
    },
    {
      "commit": "426b707fecc112e902e274617e42f186425b927a",
      "tree": "b5de028d42bd5c497125a69f5cb4b7765c9ce98c",
      "parents": [
        "373f03cf59b0cdb39b9e21fb1752ddb1cc8b49c9",
        "a9e1d53c405ef0b465a0c208756c9852169b0b57"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 23:58:49 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 23:58:49 2026"
      },
      "message": "Merge pull request #10791 from aizu-m:deconv-igemm-indirection-output-size\n\nPiperOrigin-RevId: 976557781\n"
    },
    {
      "commit": "373f03cf59b0cdb39b9e21fb1752ddb1cc8b49c9",
      "tree": "6dd8433e1aa74074cc8383b40167a90b11d1e5d9",
      "parents": [
        "54ea1b239f70b9754e5888bdab5ebde1d5cb7473"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Fri Sep 04 23:49:48 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 23:51:55 2026"
      },
      "message": "Remove internal implementation details from fully-connected subgraph test\n\nPiperOrigin-RevId: 976555090\n"
    },
    {
      "commit": "3a329358782e167e562a99e70232edaa6e50e397",
      "tree": "89ddb41de1615f681cb276fe6f06725c79e7713b",
      "parents": [
        "735a9936facc30f8701b48ac0edc034becbc8b6a"
      ],
      "author": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Fri Sep 04 16:11:10 2026"
      },
      "committer": {
        "name": "destro4evr-rgb",
        "email": "destro4evr@proton.me",
        "time": "Fri Sep 04 16:11:10 2026"
      },
      "message": "litert/tensor: guard FullyConnected, EmbeddingLookup, GatherNd against rank-0 input tensors\n"
    },
    {
      "commit": "54ea1b239f70b9754e5888bdab5ebde1d5cb7473",
      "tree": "b89202bb5908a4ad7c87cddc2e2f29b749abcb74",
      "parents": [
        "735a9936facc30f8701b48ac0edc034becbc8b6a",
        "42992dfdef4ccb22c49c8381b516c691da2799ef"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 16:02:29 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 16:02:29 2026"
      },
      "message": "Merge pull request #11131 from destro4evr-rgb:fix/litert-select-rank0-null-deref\n\nPiperOrigin-RevId: 976343771\n"
    },
    {
      "commit": "bc8d01b6815f97e9a95c4b98b808c9d4db575609",
      "tree": "f2cfbc971ebe09bf70d8a20616334df66b14da89",
      "parents": [
        "d36e64d40110c6fa09c0c38ce61a75d4ab549dae"
      ],
      "author": {
        "name": "Digant Desai",
        "email": "digantdesai@meta.com",
        "time": "Fri Sep 04 14:49:21 2026"
      },
      "committer": {
        "name": "Digant Desai",
        "email": "digantdesai@meta.com",
        "time": "Fri Sep 04 14:58:56 2026"
      },
      "message": "Fix -Wundef error and dead Hexagon guard in xnnpack.h\n\nConsumers compiling the public header with -Wundef -Werror fail on any\narchitecture:\n\n  error: \u0027XNN_ARCH_HEXAGON\u0027 is not defined, evaluates to 0\n  [-Werror,-Wundef]  #if XNN_ARCH_HEXAGON\n\nXNN_ARCH_HEXAGON is defined only in src/xnnpack/common.h, an internal\nheader xnnpack.h cannot include, so the guard tested an undefined macro\nand the 128-byte value never took effect. HVX vectors are 1024-bit: a\nfull-width load can read up to 128 bytes past a tensor callers padded\nby 16.\n\nDeriving from __hexagon__ keeps the internal header internal, and both\ndefinitions expand identically so neither redefinition warns.\n"
    },
    {
      "commit": "735a9936facc30f8701b48ac0edc034becbc8b6a",
      "tree": "5c763ca2d795b8dcd5e4fdecff41c0386e062be0",
      "parents": [
        "d36e64d40110c6fa09c0c38ce61a75d4ab549dae",
        "175d008655a7b57df633cbd41ab398209e11f7f0"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 14:15:43 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 14:15:43 2026"
      },
      "message": "Merge pull request #10986 from damdoo001-arm:damdoo01/int4_qc4w\n\nPiperOrigin-RevId: 976302212\n"
    },
    {
      "commit": "175d008655a7b57df633cbd41ab398209e11f7f0",
      "tree": "5c763ca2d795b8dcd5e4fdecff41c0386e062be0",
      "parents": [
        "f742e007b5e86e00bc23b70a644a9165a93b0225"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:29:15 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:31:17 2026"
      },
      "message": "Clean up rebased INT4 integration\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "f742e007b5e86e00bc23b70a644a9165a93b0225",
      "tree": "044849f02cbfcc5a1ed8047d0cbb27c7583bd518",
      "parents": [
        "cd321f815b5a9782938b86fd29fb7ff298642fd5"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Tue Sep 01 16:27:38 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:31:17 2026"
      },
      "message": "Added kernels to build.gn\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "cd321f815b5a9782938b86fd29fb7ff298642fd5",
      "tree": "13f3f8ae7c5389a80193d23e51f904e617010027",
      "parents": [
        "48e5f8a691c5faf4355be6a359d5dbe2bb19cbcf"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Mon Aug 31 18:09:08 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:19:57 2026"
      },
      "message": "Guard SME2 QC4W MR before configuration\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "48e5f8a691c5faf4355be6a359d5dbe2bb19cbcf",
      "tree": "e55153570ad3066afefb63525b48a3513eff6481",
      "parents": [
        "8a3f46e079d2b64fdd2d797f98e46b1cb0e2b742"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Mon Aug 24 21:00:37 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:19:57 2026"
      },
      "message": "Addressed feedback re:assert, licence header and yoda condition\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "8a3f46e079d2b64fdd2d797f98e46b1cb0e2b742",
      "tree": "1831752da1e5b0ee7456b0c5d44b6082bb500840",
      "parents": [
        "45eeefdbeeb533c5855eadf357241e4d56504ed9"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Aug 14 09:39:11 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:19:30 2026"
      },
      "message": "Keep generated copyright headers generator-owned\n\nRemove manually added Arm notices from generated outputs and restore the headers emitted by their generators.\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "45eeefdbeeb533c5855eadf357241e4d56504ed9",
      "tree": "04b527779a3ea006492b956611e16e68d97a9309",
      "parents": [
        "510c0d83719fce35a12bd6ae6a777b11af8df473"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Aug 14 09:27:56 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:19:29 2026"
      },
      "message": "Use Arm copyright notice format 2\n\nFollow the existing-project convention by using Arm copyright notice Format-2 without adding a license identifier.\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "510c0d83719fce35a12bd6ae6a777b11af8df473",
      "tree": "4be12c58fb2b6cbb05ad2fd83ddbb606c2ea41a1",
      "parents": [
        "bd10b216bf11d1e411913c1efd46e8cc97ee7e56"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Aug 14 08:50:10 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:18:32 2026"
      },
      "message": "Use XNNPACK license for added files\n\nReplace the incorrect MIT identifiers with XNNPACK BSD license references while retaining the Arm copyright notices.\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "bd10b216bf11d1e411913c1efd46e8cc97ee7e56",
      "tree": "5d3729e966bed77f55fc9a23cdb5d7b9a3895d80",
      "parents": [
        "168e8c969cc6a049d7abc4b39891d7895bed0234"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Thu Aug 13 15:39:23 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:18:32 2026"
      },
      "message": "Add Arm copyright notices\n\nAdd Arm copyright notices to modified upstream files and use Arm/MIT headers for newly added files.\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "168e8c969cc6a049d7abc4b39891d7895bed0234",
      "tree": "2da7ebfec815c8070daaea66333e01b08e373f17",
      "parents": [
        "2b1a0e9c8c16bd773f57d4fb319a32d803e4a526"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Wed Aug 12 14:50:14 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:16:44 2026"
      },
      "message": "Gate packed QC4W rewrite on zero point\n\nSelect packed-LHS PQS8/QC4W only when the filter zero point is supported by the SME2 creator.\n\nCover both supported zero points and verify unsupported metadata remains on the unpacked path.\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "2b1a0e9c8c16bd773f57d4fb319a32d803e4a526",
      "tree": "49d46b7077a0dc01a4c8f7573a7954e1dfc20882",
      "parents": [
        "76fa737a0b70fa506226b23432633e3781c2a470"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Wed Aug 12 14:24:53 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:16:44 2026"
      },
      "message": "Validate SME2 QC4W packing parameters\n\nReject unsupported QC4W kernel zero points before selecting the SME2 packer, and guard the void packing entry point in release builds.\n\nPass the negated input zero point as KleidiAI\u0027s packed-bias sum scale so the public API produces the correct accumulator offset. Add signed and unsigned packed-operator, packing, and micro-kernel coverage, including bias-free paths.\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "76fa737a0b70fa506226b23432633e3781c2a470",
      "tree": "20c4700b19f7e2735076c7ced604d3440e089f68",
      "parents": [
        "d36e64d40110c6fa09c0c38ce61a75d4ab549dae"
      ],
      "author": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Wed Aug 12 10:20:53 2026"
      },
      "committer": {
        "name": "Damien Dooley",
        "email": "damien.dooley@arm.com",
        "time": "Fri Sep 04 11:14:55 2026"
      },
      "message": "Integrate SME2 INT4 fully connected kernels\n\nAdd the packed-QS8/QC4W SME2 fully connected path inherited from the combined INT2/INT4 development branch.\n\nWire the KleidiAI packing and GEMM interfaces through operator and subgraph selection, adapt the wrappers to the current KleidiAI API, guard SME2-only packing tests at runtime, and omit the unsafe M\u003d1 registration.\n\nCo-authored-by: Colm Donelan \u003ccolm.donelan@arm.com\u003e\n\nSigned-off-by: Damien Dooley \u003cdamien.dooley@arm.com\u003e\n"
    },
    {
      "commit": "d36e64d40110c6fa09c0c38ce61a75d4ab549dae",
      "tree": "2f1a4b284eb7c7e508043e935a6282d885de9319",
      "parents": [
        "f10c3e9bb7abac753fb9b9b6c54c22b113b4c051"
      ],
      "author": {
        "name": "Dillon Sharlet",
        "email": "dsharlet@google.com",
        "time": "Fri Sep 04 02:39:58 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 02:41:14 2026"
      },
      "message": "Remove DotSchedulingTest.OpaqueSplitFactorBoundsAreProvable\n\nThis test relies on internal implementation details that are being invalidated by slinky optimizing the symbol IDs.\n\nPiperOrigin-RevId: 976051004\n"
    },
    {
      "commit": "f10c3e9bb7abac753fb9b9b6c54c22b113b4c051",
      "tree": "ba9ca2b3726decb3b1540cfa08582a43c004ed1a",
      "parents": [
        "29196162a78b83ec688c45d51be00a5d3fdf09e8"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 00:58:07 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 00:59:20 2026"
      },
      "message": "Align the `m` dimension of `pack_a` outputs\n\n`transpose_a` dot kernels read multiples of `tile_m` rows at a time. Before a recent change, we were relying on some accidentally added padding for this to avoid reading memory out of bounds. This padding was recently removed, and now these kernels read memory out of bounds.\n\nThis change adds a new dimension that correctly requires the padding, instead of relying it to be added accidentally.\n\nPiperOrigin-RevId: 976019721\n"
    },
    {
      "commit": "29196162a78b83ec688c45d51be00a5d3fdf09e8",
      "tree": "3ccd81ee02b3d0a735ee2f11c505b948bc2337f9",
      "parents": [
        "d3bfd205e6ee5e111680f6b61d1af89c06ef398c",
        "deaf412b063d52279e83baf4fd157ca79ff946b5"
      ],
      "author": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 00:17:51 2026"
      },
      "committer": {
        "name": "XNNPACK Team",
        "email": "xnnpack-github-robot@google.com",
        "time": "Fri Sep 04 00:17:51 2026"
      },
      "message": "Merge pull request #11105 from destro4evr-rgb:fix/litert-xnnpack-scale-array-oob-read\n\nPiperOrigin-RevId: 976004732\n"
    }
  ],
  "next": "d3bfd205e6ee5e111680f6b61d1af89c06ef398c"
}
