Frank Barchard
|
700f153cb8
|
[libyuv] Add Qualcomm Hexagon HVX SIMD support
Implement Qualcomm Hexagon Vector Extensions (HVX) 128-byte SIMD
optimizations and runtime CPU detection for Hexagon DSP targets:
- CPU detection: Add kCpuHasHexagon and kCpuHasHVX flags,
LIBYUV_DISABLE_HVX environment variable support, and Hexagon
unit_test mmap/munmap shims.
- Rotate/Transpose (rotate_hvx.cc): Implement TransposeWxH_HVX,
TransposeUVWxH_HVX, TransposeWxH_16_HVX, and TransposeWxH_32_HVX
using power-of-2 vdeal/vshuff butterfly networks.
- Compare (compare_hvx.cc): Implement HammingDistance_HVX,
SumSquareError_HVX, HashDjb2_HVX, and Ssim4x4Row_HVX.
- Scale (scale_hvx.cc): Implement 16 scale row kernels including
ScaleAddRow_HVX, ScaleRowDown2*_HVX (8-bit and 16-bit),
ScaleRowDown4*_HVX, ScaleARGBRowDown2*_HVX, and
ScaleUVRowDown2*_HVX.
- Row functions (row_hvx.cc): Implement 58 row kernels covering
copy/set/mirror, split/merge, 8/16-bit conversions, YUV-to-ARGB,
ARGB-to-YUV, ARGB channel swizzles, blend, attenuate, and
interpolate using hardware-predicated partial loads/stores.
R=rrwinterton@gmail.com
Bug: None
Test: libyuv_unittest on Hexagon v81 simulator and Snapdragon 8 Elite
Change-Id: Ib6713de51f6246d95e58c95e629ff03f18e3b91e
Reviewed-on: https://chromium-review.googlesource.com/c/libyuv/libyuv/+/8604586
Reviewed-by: richard winterton <rrwinterton@gmail.com>
|
2026-10-19 14:16:18 -07:00 |
|