shithub: libvpx

Download patch

ref: 2c24f7178dd7dfe3e637d04b110eb91ae2fbb863
parent: 7ba9d31e3f547128ea3eed9cddc94caf160f916a
author: Johann <johannkoenig@google.com>
date: Fri Dec 9 07:54:55 EST 2016

Move load_and_transpose to transpose_neon.h

Allows for use outside the idcts without pulling in idct_neon.h

Change-Id: I4a94c1af3dac3e1b5bc8296ec9eab0ddcc8cfecf

--- a/vpx_dsp/arm/idct32x32_34_add_neon.c
+++ b/vpx_dsp/arm/idct32x32_34_add_neon.c
@@ -13,6 +13,7 @@
 #include "./vpx_config.h"
 #include "./vpx_dsp_rtcd.h"
 #include "vpx_dsp/arm/idct_neon.h"
+#include "vpx_dsp/arm/transpose_neon.h"
 #include "vpx_dsp/txfm_common.h"
 
 // Only for the first pass of the  _34_ variant. Since it only uses values from
--- a/vpx_dsp/arm/idct_neon.h
+++ b/vpx_dsp/arm/idct_neon.h
@@ -120,30 +120,6 @@
   return vcombine_s16(vrshrn_n_s32(temp_low, 14), vrshrn_n_s32(temp_high, 14));
 }
 
-static INLINE void load_and_transpose_s16_8x8(const int16_t *a, int a_stride,
-                                              int16x8_t *a0, int16x8_t *a1,
-                                              int16x8_t *a2, int16x8_t *a3,
-                                              int16x8_t *a4, int16x8_t *a5,
-                                              int16x8_t *a6, int16x8_t *a7) {
-  *a0 = vld1q_s16(a);
-  a += a_stride;
-  *a1 = vld1q_s16(a);
-  a += a_stride;
-  *a2 = vld1q_s16(a);
-  a += a_stride;
-  *a3 = vld1q_s16(a);
-  a += a_stride;
-  *a4 = vld1q_s16(a);
-  a += a_stride;
-  *a5 = vld1q_s16(a);
-  a += a_stride;
-  *a6 = vld1q_s16(a);
-  a += a_stride;
-  *a7 = vld1q_s16(a);
-
-  transpose_s16_8x8(a0, a1, a2, a3, a4, a5, a6, a7);
-}
-
 // Shift the output down by 6 and add it to the destination buffer.
 static INLINE void add_and_store_u8_s16(const int16x8_t a0, const int16x8_t a1,
                                         const int16x8_t a2, const int16x8_t a3,
--- a/vpx_dsp/arm/transpose_neon.h
+++ b/vpx_dsp/arm/transpose_neon.h
@@ -936,4 +936,27 @@
   *o15 = e7.val[1];
 }
 
+static INLINE void load_and_transpose_s16_8x8(const int16_t *a, int a_stride,
+                                              int16x8_t *a0, int16x8_t *a1,
+                                              int16x8_t *a2, int16x8_t *a3,
+                                              int16x8_t *a4, int16x8_t *a5,
+                                              int16x8_t *a6, int16x8_t *a7) {
+  *a0 = vld1q_s16(a);
+  a += a_stride;
+  *a1 = vld1q_s16(a);
+  a += a_stride;
+  *a2 = vld1q_s16(a);
+  a += a_stride;
+  *a3 = vld1q_s16(a);
+  a += a_stride;
+  *a4 = vld1q_s16(a);
+  a += a_stride;
+  *a5 = vld1q_s16(a);
+  a += a_stride;
+  *a6 = vld1q_s16(a);
+  a += a_stride;
+  *a7 = vld1q_s16(a);
+
+  transpose_s16_8x8(a0, a1, a2, a3, a4, a5, a6, a7);
+}
 #endif  // VPX_DSP_ARM_TRANSPOSE_NEON_H_