Pass correct second argument to _mm256_avg_epu16()
In aom_highbd_var_filter_block2d_bil_avx2(), pass src[2] instead of
src[1] as the second argument to _mm256_avg_epu16(), because src[1] is
not assigned a value. This fixes the GCC compiler warning:
aom/aom_dsp/x86/highbd_variance_avx2.c: In function ‘aom_highbd_var_filter_block2d_bil_avx2’:
aom/aom_dsp/x86/highbd_variance_avx2.c:189:33: warning: ‘src[1]’ may be used uninitialized in this function [-Wmaybe-uninitialized]
189 | __m256i V_S_SRC = _mm256_avg_epu16(src[0], src[1]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Declare aom_highbd_var_filter_block2d_bil_avx2() as static.
Remove the commented-out argument 'temp2' in a macro definition.
Remove unused instantiations of aom_highbd_10_sub_pixel_varianceWxH_avx2
functions.
BUG=aomedia:2731
Change-Id: I5cfa85455135a0717512421013d976c9bc710b92
diff --git a/aom_dsp/x86/highbd_variance_avx2.c b/aom_dsp/x86/highbd_variance_avx2.c
index 1f5c917..b70e4f02 100644
--- a/aom_dsp/x86/highbd_variance_avx2.c
+++ b/aom_dsp/x86/highbd_variance_avx2.c
@@ -20,7 +20,7 @@
const uint16_t *ref, int ref_stride,
uint32_t *sse, int *sum);
-uint32_t aom_highbd_var_filter_block2d_bil_avx2(
+static uint32_t aom_highbd_var_filter_block2d_bil_avx2(
const uint8_t *src_ptr8, unsigned int src_pixels_per_line, int pixel_step,
unsigned int output_height, unsigned int output_width,
const uint32_t xoffset, const uint32_t yoffset, const uint8_t *dst_ptr8,
@@ -186,7 +186,7 @@
src1 = _mm256_insertf128_si256(filter1, src0[curr], 0);
src[2] = _mm256_insertf128_si256(src1, src0[next], 1);
- __m256i V_S_SRC = _mm256_avg_epu16(src[0], src[1]);
+ __m256i V_S_SRC = _mm256_avg_epu16(src[0], src[2]);
dst0[0] = _mm_loadu_si128((const __m128i *)dst_ptr);
dst_ptr += dst_stride;
@@ -1546,13 +1546,12 @@
#undef VAR_FN
-#define HIGHBD_SUBPIX_VAR(W, H) \
- uint32_t aom_highbd_10_sub_pixel_variance##W##x##H##_avx2( \
- const uint8_t *src, int src_stride, int xoffset, int yoffset, \
- const uint8_t *dst, int dst_stride, uint32_t *sse) { \
- return aom_highbd_var_filter_block2d_bil_avx2(src, /*temp2,*/ src_stride, \
- 1, H, W, xoffset, yoffset, \
- dst, dst_stride, sse); \
+#define HIGHBD_SUBPIX_VAR(W, H) \
+ uint32_t aom_highbd_10_sub_pixel_variance##W##x##H##_avx2( \
+ const uint8_t *src, int src_stride, int xoffset, int yoffset, \
+ const uint8_t *dst, int dst_stride, uint32_t *sse) { \
+ return aom_highbd_var_filter_block2d_bil_avx2( \
+ src, src_stride, 1, H, W, xoffset, yoffset, dst, dst_stride, sse); \
}
HIGHBD_SUBPIX_VAR(128, 128);
@@ -1566,11 +1565,6 @@
HIGHBD_SUBPIX_VAR(16, 32);
HIGHBD_SUBPIX_VAR(16, 16);
HIGHBD_SUBPIX_VAR(16, 8);
-HIGHBD_SUBPIX_VAR(16, 4);
-HIGHBD_SUBPIX_VAR(8, 32);
-HIGHBD_SUBPIX_VAR(32, 8);
-HIGHBD_SUBPIX_VAR(16, 64);
-HIGHBD_SUBPIX_VAR(64, 16);
#undef HIGHBD_SUBPIX_VAR
uint64_t aom_mse_4xh_16bit_highbd_avx2(uint16_t *dst, int dstride,