]> granicus.if.org Git - libvpx/commitdiff
vp9_reconintra_neon/tm: improve above_left load
authorJames Zern <jzern@google.com>
Sat, 30 May 2015 02:10:27 +0000 (19:10 -0700)
committerJames Zern <jzern@google.com>
Sat, 30 May 2015 02:18:43 +0000 (19:18 -0700)
use vld1?_dup_u8 over vdup?_n_u8, reduces general register use; mildly
faster

Change-Id: Ie0e4e550849a207b34b378541196b553c9f12011

vp9/common/arm/neon/vp9_reconintra_neon.c

index 53e640640579a202c04f68148e385a451b6eca6b..499c42ac3aca9145b3a2921000b0cf17b4a91057 100644 (file)
@@ -359,7 +359,7 @@ void vp9_tm_predictor_4x4_neon(uint8_t *dst, ptrdiff_t stride,
   uint8x8_t d0u8 = vdup_n_u8(0);
   uint32x2_t d2u32 = vdup_n_u32(0);
 
-  d0u8 = vdup_n_u8(above[-1]);
+  d0u8 = vld1_dup_u8(above - 1);
   d2u32 = vld1_lane_u32((const uint32_t *)above, d2u32, 0);
   q3u16 = vsubl_u8(vreinterpret_u8_u32(d2u32), d0u8);
   for (i = 0; i < 4; i++, dst += stride) {
@@ -379,7 +379,7 @@ void vp9_tm_predictor_8x8_neon(uint8_t *dst, ptrdiff_t stride,
   uint16x4_t d20u16;
   uint8x8_t d0u8, d2u8, d30u8;
 
-  d0u8 = vdup_n_u8(above[-1]);
+  d0u8 = vld1_dup_u8(above - 1);
   d30u8 = vld1_u8(left);
   d2u8 = vld1_u8(above);
   q10u16 = vmovl_u8(d30u8);
@@ -422,7 +422,7 @@ void vp9_tm_predictor_16x16_neon(uint8_t *dst, ptrdiff_t stride,
   uint16x4_t d20u16;
   uint8x8_t d2u8, d3u8, d18u8, d22u8, d23u8;
 
-  q0u8 = vdupq_n_u8(above[-1]);
+  q0u8 = vld1q_dup_u8(above - 1);
   q1u8 = vld1q_u8(above);
   q2u16 = vsubl_u8(vget_low_u8(q1u8), vget_low_u8(q0u8));
   q3u16 = vsubl_u8(vget_high_u8(q1u8), vget_high_u8(q0u8));
@@ -485,7 +485,7 @@ void vp9_tm_predictor_32x32_neon(uint8_t *dst, ptrdiff_t stride,
   uint16x4_t d6u16;
   uint8x8_t d0u8, d1u8, d2u8, d3u8, d26u8;
 
-  q0u8 = vdupq_n_u8(above[-1]);
+  q0u8 = vld1q_dup_u8(above - 1);
   q1u8 = vld1q_u8(above);
   q2u8 = vld1q_u8(above + 16);
   q8u16 = vsubl_u8(vget_low_u8(q1u8), vget_low_u8(q0u8));