]> granicus.if.org Git - libvpx/commit
Restore vp8_sixtap_predict4x4_neon
authorJohann <johannkoenig@google.com>
Fri, 2 Sep 2016 18:29:20 +0000 (11:29 -0700)
committerJohann <johannkoenig@google.com>
Thu, 15 Sep 2016 21:56:47 +0000 (14:56 -0700)
commitd9dce2f48eed1368a44c368fa87a506bd89ffec5
tree224fa01a75dc5534e65a691388af99f997397202
parent4d1540f8ce1c9965bc89674ba4e46e332f52599d
Restore vp8_sixtap_predict4x4_neon

This function was removed when clang started introducing alignment hints
which caused the 32 bit vld1_lane_u32/vst1_lane_u32 to fail:
https://llvm.org/bugs/show_bug.cgi?id=24421

The load has been rendered safe with an implementation ~indiscernible
performance-wise that uses _u8 and over-reads just a touch.

The store, when unaligned, has a version that is ~25% slower but safe
when xoffset = 0 (second pass filter only). When the first pass filter
(or both) are in play, the new version is almost identical in speed.

Worst case performance (both filters, unaligned stores) is roughly 3-4x
faster than C.

BUG=webm:817
BUG=webm:1273

Change-Id: I1e490e94453e0872151fe0dafb05557463f6247d
test/sixtap_predict_test.cc
vp8/common/arm/neon/sixtappredict_neon.c
vp8/common/rtcd_defs.pl