Frank Barchard 339feb40e7 [libyuv] Optimize SsimWindowRow with SIMD and use compare_win on x86-32
- Route 32-bit x86 (__i386__ / _M_IX86) to compare_win.cc (intrinsics)
  and restrict compare_gcc.cc to 64-bit x86 (__x86_64__), avoiding x87
  float discrepancies and enabling SSE2, AVX2, and AVX-512 on 32-bit
  and 64-bit MinGW, GCC, Clang, and MSan (LIBYUV_ENABLE_ROWWIN).
- Enable AVX-512BW on GCC >= 6 (GCC_HAS_AVX512) and add
  LIBYUV_TARGET_AVX512BW attributes to compare_gcc.cc and compare_win.cc.
- Refactor SsimWindowRow_C and Ssim8x8_C to use int32_t and float, and
  add SsimWindowRow_SSE2, SsimWindowRow_AVX2, and SsimWindowRow_AVX512BW
  in both compare_win.cc and compare_gcc.cc (~10x faster end-to-end SSIM).
- Update SSIM unit tests in compare_test.cc to use EXPECT_NEAR,
  deterministic test patterns (identical, different, similar), and
  benchmark_iterations_.
- Update util/compare.cc and linux.mk to compute I420Ssim / CalcFrameSsim.

R=rrwinterton@gmail.com

Bug: b/493910265
Test: out/Release/libyuv_unittest --gtest_filter=*Ssim*
Co-authored-by: Martin Storsjö <martin@martin.st>
2026-10-20 13:43:58 -07:00
..
libyuv [libyuv] Optimize SsimWindowRow with SIMD and use compare_win on x86-32 2026-10-20 13:43:58 -07:00
libyuv.h libyuv.h: Add scale_rgb.h and remove scale_row.h 2026-08-26 19:06:22 -07:00