summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Zern <jzern@google.com>2023-03-21 20:20:51 +0000
committerGerrit Code Review <noreply-gerritcodereview@google.com>2023-03-21 20:20:51 +0000
commit0a5f886a0c46da785688584befca315e0c1a24aa (patch)
treef52cf44f0722f91c3bc47319d83939e7fe875d3c
parent9c643a5ef22a497cf06afe7db8997e710f84e8c4 (diff)
parent44250287fb3d0c51118478a447fa032cab6e3700 (diff)
downloadlibvpx-0a5f886a0c46da785688584befca315e0c1a24aa.tar
libvpx-0a5f886a0c46da785688584befca315e0c1a24aa.tar.gz
libvpx-0a5f886a0c46da785688584befca315e0c1a24aa.tar.bz2
libvpx-0a5f886a0c46da785688584befca315e0c1a24aa.zip
Merge changes I650b305c,If3e4cf37,I4c791e3a into main
* changes: sixtappredict_neon.c: remove redundant returns sixtappredict_neon.c,cosmetics: fix a typo vp8_sixtap_predict16x16_neon: fix overread
-rw-r--r--test/predict_test.cc4
-rw-r--r--vp8/common/arm/neon/sixtappredict_neon.c13
-rw-r--r--vp8/common/rtcd_defs.pl4
3 files changed, 6 insertions, 15 deletions
diff --git a/test/predict_test.cc b/test/predict_test.cc
index e49d98272..747297057 100644
--- a/test/predict_test.cc
+++ b/test/predict_test.cc
@@ -307,9 +307,7 @@ INSTANTIATE_TEST_SUITE_P(
#if HAVE_NEON
INSTANTIATE_TEST_SUITE_P(
NEON, SixtapPredictTest,
- ::testing::Values(/*TODO(https://crbug.com/webm/1795): enable this after
- buffer overflows are fixed.
- make_tuple(16, 16, &vp8_sixtap_predict16x16_neon),*/
+ ::testing::Values(make_tuple(16, 16, &vp8_sixtap_predict16x16_neon),
make_tuple(8, 8, &vp8_sixtap_predict8x8_neon),
make_tuple(8, 4, &vp8_sixtap_predict8x4_neon),
make_tuple(4, 4, &vp8_sixtap_predict4x4_neon)));
diff --git a/vp8/common/arm/neon/sixtappredict_neon.c b/vp8/common/arm/neon/sixtappredict_neon.c
index 4960d1651..ee3c281f0 100644
--- a/vp8/common/arm/neon/sixtappredict_neon.c
+++ b/vp8/common/arm/neon/sixtappredict_neon.c
@@ -16,7 +16,7 @@
#include "vpx_ports/mem.h"
static const int8_t vp8_sub_pel_filters[8][8] = {
- { 0, 0, 128, 0, 0, 0, 0, 0 }, /* note that 1/8 pel positionyys are */
+ { 0, 0, 128, 0, 0, 0, 0, 0 }, /* note that 1/8 pel positions are */
{ 0, -6, 123, 12, -1, 0, 0, 0 }, /* just as per alpha -0.5 bicubic */
{ 2, -11, 108, 36, -8, 1, 0, 0 }, /* New 1/4 pel 6 tap filter */
{ 0, -9, 93, 50, -6, 0, 0, 0 },
@@ -781,7 +781,6 @@ void vp8_sixtap_predict8x4_neon(unsigned char *src_ptr, int src_pixels_per_line,
vst1_u8(dst_ptr, d8u8);
dst_ptr += dst_pitch;
vst1_u8(dst_ptr, d9u8);
- return;
}
void vp8_sixtap_predict8x8_neon(unsigned char *src_ptr, int src_pixels_per_line,
@@ -1250,12 +1249,8 @@ void vp8_sixtap_predict8x8_neon(unsigned char *src_ptr, int src_pixels_per_line,
vst1_u8(dst_ptr, d9u8);
dst_ptr += dst_pitch;
}
- return;
}
-// TODO(https://crbug.com/webm/1795): enable this after buffer overflows are
-// fixed.
-#if 0
void vp8_sixtap_predict16x16_neon(unsigned char *src_ptr,
int src_pixels_per_line, int xoffset,
int yoffset, unsigned char *dst_ptr,
@@ -1507,7 +1502,9 @@ void vp8_sixtap_predict16x16_neon(unsigned char *src_ptr,
src += src_pixels_per_line;
d12u8 = vld1_u8(src);
d13u8 = vld1_u8(src + 8);
- d14u8 = vld1_u8(src + 16);
+ // Only 5 pixels are needed, avoid a potential out of bounds read.
+ d14u8 = vld1_u8(src + 13);
+ d14u8 = vext_u8(d14u8, d14u8, 3);
src += src_pixels_per_line;
__builtin_prefetch(src);
@@ -1729,6 +1726,4 @@ void vp8_sixtap_predict16x16_neon(unsigned char *src_ptr,
dst += dst_pitch;
}
}
- return;
}
-#endif // 0
diff --git a/vp8/common/rtcd_defs.pl b/vp8/common/rtcd_defs.pl
index 05e67ce11..739a61284 100644
--- a/vp8/common/rtcd_defs.pl
+++ b/vp8/common/rtcd_defs.pl
@@ -146,9 +146,7 @@ if (vpx_config("CONFIG_POSTPROC") eq "yes") {
# Subpixel
#
add_proto qw/void vp8_sixtap_predict16x16/, "unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch";
-# TODO(https://crbug.com/webm/1795): enable neon after buffer overflows are
-# fixed.
-specialize qw/vp8_sixtap_predict16x16 sse2 ssse3 dspr2 msa mmi lsx/;
+specialize qw/vp8_sixtap_predict16x16 sse2 ssse3 neon dspr2 msa mmi lsx/;
add_proto qw/void vp8_sixtap_predict8x8/, "unsigned char *src_ptr, int src_pixels_per_line, int xoffset, int yoffset, unsigned char *dst_ptr, int dst_pitch";
specialize qw/vp8_sixtap_predict8x8 sse2 ssse3 neon dspr2 msa mmi lsx/;