diff options
author | James Zern <jzern@google.com> | 2023-03-21 20:20:51 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-03-21 20:20:51 +0000 |
commit | 0a5f886a0c46da785688584befca315e0c1a24aa (patch) | |
tree | f52cf44f0722f91c3bc47319d83939e7fe875d3c | |
parent | 9c643a5ef22a497cf06afe7db8997e710f84e8c4 (diff) | |
parent | 44250287fb3d0c51118478a447fa032cab6e3700 (diff) | |
download | libvpx-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.cc | 4 | ||||
-rw-r--r-- | vp8/common/arm/neon/sixtappredict_neon.c | 13 | ||||
-rw-r--r-- | vp8/common/rtcd_defs.pl | 4 |
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/; |