diff options
author | Jacky Chen <jackychen@google.com> | 2015-12-09 06:09:33 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2015-12-09 06:09:33 +0000 |
commit | d9bba21306fdf5f005c1054c79d2d1a371596094 (patch) | |
tree | 63e7c2128ef534a176541a7e9edae41b711a4fc0 /vp9/encoder | |
parent | 3dc19feb29e2a8354a6103cb2b5e3a3a9c44eb18 (diff) | |
parent | 303f144eefc739c44a3e18a24f8cf61d2fe103a7 (diff) | |
download | libvpx-d9bba21306fdf5f005c1054c79d2d1a371596094.tar libvpx-d9bba21306fdf5f005c1054c79d2d1a371596094.tar.gz libvpx-d9bba21306fdf5f005c1054c79d2d1a371596094.tar.bz2 libvpx-d9bba21306fdf5f005c1054c79d2d1a371596094.zip |
Merge "Add vp9_avg_4x4_neon and the unit test."
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/arm/neon/vp9_avg_neon.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/vp9/encoder/arm/neon/vp9_avg_neon.c b/vp9/encoder/arm/neon/vp9_avg_neon.c index 5996bd426..78467cebd 100644 --- a/vp9/encoder/arm/neon/vp9_avg_neon.c +++ b/vp9/encoder/arm/neon/vp9_avg_neon.c @@ -24,6 +24,18 @@ static INLINE unsigned int horizontal_add_u16x8(const uint16x8_t v_16x8) { return vget_lane_u32(c, 0); } +unsigned int vp9_avg_4x4_neon(const uint8_t *s, int p) { + uint16x8_t v_sum; + uint32x2_t v_s0 = vdup_n_u32(0); + uint32x2_t v_s1 = vdup_n_u32(0); + v_s0 = vld1_lane_u32((const uint32_t *)s, v_s0, 0); + v_s0 = vld1_lane_u32((const uint32_t *)(s + p), v_s0, 1); + v_s1 = vld1_lane_u32((const uint32_t *)(s + 2 * p), v_s1, 0); + v_s1 = vld1_lane_u32((const uint32_t *)(s + 3 * p), v_s1, 1); + v_sum = vaddl_u8(vreinterpret_u8_u32(v_s0), vreinterpret_u8_u32(v_s1)); + return (horizontal_add_u16x8(v_sum) + 8) >> 4; +} + unsigned int vp9_avg_8x8_neon(const uint8_t *s, int p) { uint8x8_t v_s0 = vld1_u8(s); const uint8x8_t v_s1 = vld1_u8(s + p); |