Commit 9ec6728592 for aom
commit 9ec672859299bd1f6216773a5ffda151979858a4
Author: Li Zhang <li.zhang2@arm.com>
Date: Wed Feb 18 12:51:59 2026 +0100
Remove Armv8.4 Neon DotProd 4x4 variance kernel
The Armv8.0 Neon implementation is faster for 4x4 blocks.
This is a port from SVT-AV1:
https://gitlab.com/AOMediaCodec/SVT-AV1/-/merge_requests/2608
Originally authored by: Jonathan Wright <Jonathan.Wright@arm.com>
Change-Id: I458e70c618b9b067cd6d6ccbdb37289383fa04ed
diff --git a/aom_dsp/aom_dsp_rtcd_defs.pl b/aom_dsp/aom_dsp_rtcd_defs.pl
index 7a5a615600..776d272d23 100755
--- a/aom_dsp/aom_dsp_rtcd_defs.pl
+++ b/aom_dsp/aom_dsp_rtcd_defs.pl
@@ -1404,7 +1404,7 @@ if (aom_config("CONFIG_AV1_ENCODER") eq "yes") {
specialize qw/aom_variance8x8 sse2 neon neon_dotprod/;
specialize qw/aom_variance8x4 sse2 neon neon_dotprod/;
specialize qw/aom_variance4x8 sse2 neon neon_dotprod/;
- specialize qw/aom_variance4x4 sse2 neon neon_dotprod/;
+ specialize qw/aom_variance4x4 sse2 neon/;
specialize qw/aom_sub_pixel_variance128x128 avx2 neon ssse3/;
specialize qw/aom_sub_pixel_variance128x64 avx2 neon ssse3/;
diff --git a/aom_dsp/arm/variance_neon_dotprod.c b/aom_dsp/arm/variance_neon_dotprod.c
index dd03443a7a..3a3965e23e 100644
--- a/aom_dsp/arm/variance_neon_dotprod.c
+++ b/aom_dsp/arm/variance_neon_dotprod.c
@@ -178,7 +178,7 @@ static inline void variance_128xh_neon_dotprod(const uint8_t *src,
return *sse - (uint32_t)(((int64_t)sum * sum) >> shift); \
}
-VARIANCE_WXH_NEON_DOTPROD(4, 4, 4)
+// The Armv8.0 Neon implementation is faster than Neon DotProd for 4x4.
VARIANCE_WXH_NEON_DOTPROD(4, 8, 5)
VARIANCE_WXH_NEON_DOTPROD(8, 4, 5)
diff --git a/test/variance_test.cc b/test/variance_test.cc
index c95183fe12..2a1bf4f165 100644
--- a/test/variance_test.cc
+++ b/test/variance_test.cc
@@ -3661,7 +3661,6 @@ const VarianceParams kArrayVariance_neon_dotprod[] = {
VarianceParams(3, 3, &aom_variance8x8_neon_dotprod),
VarianceParams(3, 2, &aom_variance8x4_neon_dotprod),
VarianceParams(2, 3, &aom_variance4x8_neon_dotprod),
- VarianceParams(2, 2, &aom_variance4x4_neon_dotprod),
#if !CONFIG_REALTIME_ONLY
VarianceParams(2, 4, &aom_variance4x16_neon_dotprod),
VarianceParams(4, 2, &aom_variance16x4_neon_dotprod),