Index: source/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c |
=================================================================== |
--- source/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c (revision 292608) |
+++ source/libvpx/vp8/common/arm/neon/loopfiltersimpleverticaledge_neon.c (working copy) |
@@ -10,45 +10,9 @@ |
#include <arm_neon.h> |
#include "./vpx_config.h" |
+#include "vpx_ports/arm.h" |
-#if (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) |
-static INLINE void write_2x8(unsigned char *dst, int pitch, |
- const uint8x8x2_t result, |
- const uint8x8x2_t result2) { |
- vst2_lane_u8(dst, result, 0); |
- dst += pitch; |
- vst2_lane_u8(dst, result, 1); |
- dst += pitch; |
- vst2_lane_u8(dst, result, 2); |
- dst += pitch; |
- vst2_lane_u8(dst, result, 3); |
- dst += pitch; |
- vst2_lane_u8(dst, result, 4); |
- dst += pitch; |
- vst2_lane_u8(dst, result, 5); |
- dst += pitch; |
- vst2_lane_u8(dst, result, 6); |
- dst += pitch; |
- vst2_lane_u8(dst, result, 7); |
- dst += pitch; |
- |
- vst2_lane_u8(dst, result2, 0); |
- dst += pitch; |
- vst2_lane_u8(dst, result2, 1); |
- dst += pitch; |
- vst2_lane_u8(dst, result2, 2); |
- dst += pitch; |
- vst2_lane_u8(dst, result2, 3); |
- dst += pitch; |
- vst2_lane_u8(dst, result2, 4); |
- dst += pitch; |
- vst2_lane_u8(dst, result2, 5); |
- dst += pitch; |
- vst2_lane_u8(dst, result2, 6); |
- dst += pitch; |
- vst2_lane_u8(dst, result2, 7); |
-} |
-#else |
+#ifdef VPX_INCOMPATIBLE_GCC |
static INLINE void write_2x4(unsigned char *dst, int pitch, |
const uint8x8x2_t result) { |
/* |
@@ -88,32 +52,49 @@ |
dst += pitch * 8; |
write_2x4(dst, pitch, result2); |
} |
-#endif |
+#else |
+static INLINE void write_2x8(unsigned char *dst, int pitch, |
+ const uint8x8x2_t result, |
+ const uint8x8x2_t result2) { |
+ vst2_lane_u8(dst, result, 0); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result, 1); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result, 2); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result, 3); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result, 4); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result, 5); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result, 6); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result, 7); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result2, 0); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result2, 1); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result2, 2); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result2, 3); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result2, 4); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result2, 5); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result2, 6); |
+ dst += pitch; |
+ vst2_lane_u8(dst, result2, 7); |
+} |
+#endif // VPX_INCOMPATIBLE_GCC |
-#if (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) |
+ |
+#ifdef VPX_INCOMPATIBLE_GCC |
static INLINE |
uint8x8x4_t read_4x8(unsigned char *src, int pitch, uint8x8x4_t x) { |
- x = vld4_lane_u8(src, x, 0); |
- src += pitch; |
- x = vld4_lane_u8(src, x, 1); |
- src += pitch; |
- x = vld4_lane_u8(src, x, 2); |
- src += pitch; |
- x = vld4_lane_u8(src, x, 3); |
- src += pitch; |
- x = vld4_lane_u8(src, x, 4); |
- src += pitch; |
- x = vld4_lane_u8(src, x, 5); |
- src += pitch; |
- x = vld4_lane_u8(src, x, 6); |
- src += pitch; |
- x = vld4_lane_u8(src, x, 7); |
- return x; |
-} |
-#else |
-static INLINE |
-uint8x8x4_t read_4x8(unsigned char *src, int pitch, uint8x8x4_t x) { |
const uint8x8_t a = vld1_u8(src); |
const uint8x8_t b = vld1_u8(src + pitch * 1); |
const uint8x8_t c = vld1_u8(src + pitch * 2); |
@@ -169,7 +150,27 @@ |
return x; |
} |
-#endif |
+#else |
+static INLINE |
+uint8x8x4_t read_4x8(unsigned char *src, int pitch, uint8x8x4_t x) { |
+ x = vld4_lane_u8(src, x, 0); |
+ src += pitch; |
+ x = vld4_lane_u8(src, x, 1); |
+ src += pitch; |
+ x = vld4_lane_u8(src, x, 2); |
+ src += pitch; |
+ x = vld4_lane_u8(src, x, 3); |
+ src += pitch; |
+ x = vld4_lane_u8(src, x, 4); |
+ src += pitch; |
+ x = vld4_lane_u8(src, x, 5); |
+ src += pitch; |
+ x = vld4_lane_u8(src, x, 6); |
+ src += pitch; |
+ x = vld4_lane_u8(src, x, 7); |
+ return x; |
+} |
+#endif // VPX_INCOMPATIBLE_GCC |
static INLINE void vp8_loop_filter_simple_vertical_edge_neon( |
unsigned char *s, |