)]}'
{
  "commit": "8418badedc4a737e018322c1b751ea33af2b0cf7",
  "tree": "75d5e598abcaf9fe66936eacbbbc4f68351b8a2a",
  "parents": [
    "b2bc71346627dad9956c0e48ed5d216c5e4ee631"
  ],
  "author": {
    "name": "Frank Barchard",
    "email": "fbarchard@google.com",
    "time": "Tue May 13 09:55:57 2025"
  },
  "committer": {
    "name": "XNNPACK Team",
    "email": "xnnpack-github-robot@google.com",
    "time": "Tue May 13 11:03:29 2025"
  },
  "message": "F32-VSQRT for Hexagon\n\n- Implement xnn_rsqrt_f32 for simd/f32-hvx.h use Carmack approximation\n- Add portable simd.c.in template for hvx\n\n34.65x faster than scalar_approx_rsqrt on Samsung S23\nxnn_f32_vrsqrt_ukernel__hvx_u32/N:32640/real_time                     24841 ns\nxnn_f32_vrsqrt_ukernel__hvx_u64/N:32640/real_time                     13128 ns\nxnn_f32_vrsqrt_ukernel__hvx_u128/N:32640/real_time                     8642 ns\nxnn_f32_vrsqrt_ukernel__scalar_rsqrt_u1/N:32640/real_time           2293708 ns\nxnn_f32_vrsqrt_ukernel__scalar_rsqrt_u2/N:32640/real_time           2310264 ns\nxnn_f32_vrsqrt_ukernel__scalar_rsqrt_u4/N:32640/real_time           2200541 ns\nxnn_f32_vrsqrt_ukernel__scalar_approx_rsqrt_u1/N:32640/real_time     790721 ns\nxnn_f32_vrsqrt_ukernel__scalar_approx_rsqrt_u2/N:32640/real_time     444373 ns\nxnn_f32_vrsqrt_ukernel__scalar_approx_rsqrt_u4/N:32640/real_time     299529 ns\nxnn_f32_vsqrt_ukernel__scalar_sqrt_u1/N:32640/real_time             1123451 ns\nxnn_f32_vsqrt_ukernel__scalar_sqrt_u2/N:32640/real_time             1217916 ns\nxnn_f32_vsqrt_ukernel__scalar_sqrt_u4/N:32640/real_time             1206876 ns\n\nPiperOrigin-RevId: 758132404\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "3eb82a52097cb1b0efdb41f7337900674f44425c",
      "old_mode": 33188,
      "old_path": "cmake/gen/avx2_microkernels.cmake",
      "new_id": "5f4798ae6b9b7f5d3d910019b1e1e4263a94f08e",
      "new_mode": 33188,
      "new_path": "cmake/gen/avx2_microkernels.cmake"
    },
    {
      "type": "modify",
      "old_id": "a5c29cbd9819d57d2543fa09a2b33e478ee0992a",
      "old_mode": 33188,
      "old_path": "cmake/gen/avx_microkernels.cmake",
      "new_id": "7979c6c36959c5089780e73e2d2570608d5cf1eb",
      "new_mode": 33188,
      "new_path": "cmake/gen/avx_microkernels.cmake"
    },
    {
      "type": "modify",
      "old_id": "7e91b5a31f1cf84add47de5d091aeeedb754e57f",
      "old_mode": 33188,
      "old_path": "cmake/gen/hvx_microkernels.cmake",
      "new_id": "f895f6a1806a58bfb789eea51cebd8d5aaf908d4",
      "new_mode": 33188,
      "new_path": "cmake/gen/hvx_microkernels.cmake"
    },
    {
      "type": "modify",
      "old_id": "f580547e070998fc1a6cfc638f16f4cc67965e47",
      "old_mode": 33188,
      "old_path": "cmake/gen/scalar_microkernels.cmake",
      "new_id": "8f296db0c52f25126970912fae88c15dd44883c7",
      "new_mode": 33188,
      "new_path": "cmake/gen/scalar_microkernels.cmake"
    },
    {
      "type": "modify",
      "old_id": "95896f59b1326f9945e47022fd81d259facbddf4",
      "old_mode": 33188,
      "old_path": "cmake/gen/sse2_microkernels.cmake",
      "new_id": "ea85906e601ed060c25dd3fdf88cc1b9509c1928",
      "new_mode": 33188,
      "new_path": "cmake/gen/sse2_microkernels.cmake"
    },
    {
      "type": "modify",
      "old_id": "17b701793c19bd6cee8932124354408f6507d72c",
      "old_mode": 33188,
      "old_path": "cmake/gen/sse_microkernels.cmake",
      "new_id": "158dae6f3bac82df17f466202d57206fef3ec27b",
      "new_mode": 33188,
      "new_path": "cmake/gen/sse_microkernels.cmake"
    },
    {
      "type": "modify",
      "old_id": "ef8ea72d8d282d42f1e7b8377bf17e2f97cc03f5",
      "old_mode": 33188,
      "old_path": "gen/avx2_microkernels.bzl",
      "new_id": "7785af96bd7f5613080139891b3ac549fa38421a",
      "new_mode": 33188,
      "new_path": "gen/avx2_microkernels.bzl"
    },
    {
      "type": "modify",
      "old_id": "08fd93d902cb11bf6af3dfa60d20c7a8bfeabf31",
      "old_mode": 33188,
      "old_path": "gen/avx_microkernels.bzl",
      "new_id": "cc36c594de6f3079b592c2a8debf6f965e86e53d",
      "new_mode": 33188,
      "new_path": "gen/avx_microkernels.bzl"
    },
    {
      "type": "modify",
      "old_id": "7d7f8d134cc4a53c4bb7076b19fc49991340a789",
      "old_mode": 33188,
      "old_path": "gen/hvx_microkernels.bzl",
      "new_id": "1502004c477ee87ea97f5f025cbd24f583739bda",
      "new_mode": 33188,
      "new_path": "gen/hvx_microkernels.bzl"
    },
    {
      "type": "modify",
      "old_id": "6f30c8a9e4598346f8493940dc58732a567d61f3",
      "old_mode": 33188,
      "old_path": "gen/scalar_microkernels.bzl",
      "new_id": "40515c61da699818cd320121699eebe2852cd3d7",
      "new_mode": 33188,
      "new_path": "gen/scalar_microkernels.bzl"
    },
    {
      "type": "modify",
      "old_id": "8088064544f456996a8d099f9990a264f9e2c1f7",
      "old_mode": 33188,
      "old_path": "gen/sse2_microkernels.bzl",
      "new_id": "39136ed446dfbd350d273a804f58f0f59c8d0b56",
      "new_mode": 33188,
      "new_path": "gen/sse2_microkernels.bzl"
    },
    {
      "type": "modify",
      "old_id": "4579cb2138aca5bc38e02e00ded552cdd5658f64",
      "old_mode": 33188,
      "old_path": "gen/sse_microkernels.bzl",
      "new_id": "3f83f34a9a2c10d6c2c371abc6b179ef3293db61",
      "new_mode": 33188,
      "new_path": "gen/sse_microkernels.bzl"
    },
    {
      "type": "modify",
      "old_id": "564b0bc702a6a61943538c1779f74369ca01145a",
      "old_mode": 33261,
      "old_path": "scripts/generate-f32-vrsqrt.sh",
      "new_id": "102de5584a13859e83c6655c02b22caae571e12b",
      "new_mode": 33261,
      "new_path": "scripts/generate-f32-vrsqrt.sh"
    },
    {
      "type": "modify",
      "old_id": "1af028c022e2418dc8f6ea4e5bb54ce6fd7c6202",
      "old_mode": 33188,
      "old_path": "src/configs/unary-elementwise-config.c",
      "new_id": "ecd31b4691a01810f155b721cc6b9f3c4022396f",
      "new_mode": 33188,
      "new_path": "src/configs/unary-elementwise-config.c"
    },
    {
      "type": "modify",
      "old_id": "412cf7f1e950d16d52b21e8f7913fff55b4b292f",
      "old_mode": 33188,
      "old_path": "src/f32-vrsqrt/f32-vrsqrt.h",
      "new_id": "0b7646f989692b984916afbc66189b4167d2962c",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/f32-vrsqrt.h"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fbe8524e2acd824109bc71086cc22cd6f684cd71",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/gen/f32-vrsqrt-avx-approx-rsqrt.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f605a3056a2c48fdf9fd00bb434b3bbd6d4529e",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/gen/f32-vrsqrt-avx2-approx-rsqrt.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "1def4589e3d3ee268abd6c9e4ae9bd6f07df6dff",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/gen/f32-vrsqrt-hvx-u128.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b68435ed3ded2661d34ca91da887587b122e5632",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/gen/f32-vrsqrt-hvx-u32.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "eaec28591acfd564caff6d49c3b0019f3f1bd625",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/gen/f32-vrsqrt-hvx-u64.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dc169ca5b48747582bdc79d7f5d9e62642653303",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/gen/f32-vrsqrt-scalar-approx-rsqrt.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9a84b958c6f6a7d89a24b22b5d6a21d78e61d619",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/gen/f32-vrsqrt-sse2-approx-rsqrt.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "bc055c5349e44caa13a8acea13919e3f5ccb420b",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/simd-approx-rsqrt.c.in"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7eca932f48dc54e99304d346ed0448bd07786079",
      "new_mode": 33188,
      "new_path": "src/f32-vrsqrt/simd.c.in"
    },
    {
      "type": "modify",
      "old_id": "3b3e3a4c1a91f84dcd404fd1a43c3c8f27290fba",
      "old_mode": 33188,
      "old_path": "src/xnnpack/simd/f32-hvx.h",
      "new_id": "fd2e34e2bedebebf5b2e111638ae2f9711d84076",
      "new_mode": 33188,
      "new_path": "src/xnnpack/simd/f32-hvx.h"
    }
  ]
}
