)]}'
{
  "commit": "5e6b124c6daeb6c92a6da70758d71fb247db411c",
  "tree": "2ce32b5584ac80770bd0518d65834165f33ed35e",
  "parents": [
    "de45b6e71c1c3ffda2a86ca628d0ad7cd05b09ff"
  ],
  "author": {
    "name": "Jerome Jiang",
    "email": "jianj@google.com",
    "time": "Tue Jun 23 17:01:03 2026 -0400"
  },
  "committer": {
    "name": "Jerome Jiang",
    "email": "jianj@google.com",
    "time": "Wed Jun 24 12:04:43 2026 -0700"
  },
  "message": "Optimize av1_dist_wtd_convolve_2d_avx2\n\n- Folds the offset addition into the vertical rounding constant\n(`round_offset_const_v`), enabling the use of `_mm256_packus_epi32`\ninstead of `_mm256_packs_epi32` followed by a vector add instruction.\n\n- Reduces initialization loads from 4 to 3 by loading non-overlapping\n256-bit vectors and reconstructing intermediate lines using\n`_mm256_permute2x128_si256`.\n\n- Caches `coeffs_y[1]` and `coeffs_y[2]` in registers to avoid\nredundant memory accesses inside the loop.\n\n- Localizes scope for `wt`, `offset_const`, and `rounding_const` to\nminimize register pressure.\n\nSpeed up:\n\n     Block    |  Before  |   After  |   Delta   | Speedup\n    ----------+----------+----------+-----------+---------\n     4x4      |    39.77 |    35.49 |   -10.75% |    1.12x\n     4x8      |    44.35 |    40.01 |    -9.79% |    1.11x\n     4x16     |    54.71 |    51.32 |    -6.21% |    1.07x\n     8x4      |    42.03 |    37.36 |   -11.10% |    1.12x\n     8x8      |    49.94 |    44.43 |   -11.03% |    1.12x\n     8x16     |    65.87 |    60.02 |    -8.88% |    1.10x\n     8x32     |   101.20 |    97.14 |    -4.01% |    1.04x\n     16x4     |    73.46 |    64.61 |   -12.05% |    1.14x\n     16x8     |    88.90 |    78.48 |   -11.72% |    1.13x\n     16x16    |   120.40 |   110.90 |    -7.89% |    1.09x\n     16x32    |   190.76 |   183.38 |    -3.87% |    1.04x\n     16x64    |   358.98 |   343.80 |    -4.23% |    1.04x\n     32x8     |   166.80 |   146.77 |   -12.01% |    1.14x\n     32x16    |   229.80 |   212.71 |    -7.44% |    1.08x\n     32x32    |   370.39 |   358.12 |    -3.31% |    1.03x\n     32x64    |   709.49 |   679.62 |    -4.21% |    1.04x\n     64x16    |   448.85 |   417.14 |    -7.07% |    1.08x\n     64x32    |   727.52 |   703.81 |    -3.26% |    1.03x\n     64x64    |  1413.65 |  1355.12 |    -4.14% |    1.04x\n     64x128   |  3088.88 |  3005.88 |    -2.69% |    1.03x\n     128x64   |  2826.65 |  2709.65 |    -4.14% |    1.04x\n     128x128  |  5984.29 |  5790.35 |    -3.24% |    1.03x\n\nChange-Id: I416da6f9f7489e359d649a45d2a2dec9eb12776e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "e3ac6d466d596a6380c22787b14b7f3002259d4e",
      "old_mode": 33188,
      "old_path": "av1/common/x86/jnt_convolve_avx2.c",
      "new_id": "2eefb38aef9aaf835924e4408ccea3e1b05e9917",
      "new_mode": 33188,
      "new_path": "av1/common/x86/jnt_convolve_avx2.c"
    }
  ]
}
