diff options
Diffstat (limited to 'tools/osx/osx-depends/libmpeg2/02-neon.patch')
-rw-r--r-- | tools/osx/osx-depends/libmpeg2/02-neon.patch | 385 |
1 files changed, 0 insertions, 385 deletions
diff --git a/tools/osx/osx-depends/libmpeg2/02-neon.patch b/tools/osx/osx-depends/libmpeg2/02-neon.patch deleted file mode 100644 index 329551b65e..0000000000 --- a/tools/osx/osx-depends/libmpeg2/02-neon.patch +++ /dev/null @@ -1,385 +0,0 @@ -Index: include/mpeg2.h -=================================================================== ---- include/mpeg2.h (révision 1193) -+++ include/mpeg2.h (copie de travail) -@@ -164,6 +164,7 @@ - #define MPEG2_ACCEL_SPARC_VIS 1 - #define MPEG2_ACCEL_SPARC_VIS2 2 - #define MPEG2_ACCEL_ARM 1 -+#define MPEG2_ACCEL_ARM_NEON 2 - #define MPEG2_ACCEL_DETECT 0x80000000 - - uint32_t mpeg2_accel (uint32_t accel); -Index: libmpeg2/motion_comp_neon.c -=================================================================== ---- libmpeg2/motion_comp_neon.c (révision 0) -+++ libmpeg2/motion_comp_neon.c (révision 0) -@@ -0,0 +1,302 @@ -+/* -+ * motion_comp_neon.c -+ * Copyright (C) 2009 Rémi Denis-Courmont -+ * -+ * This file is part of mpeg2dec, a free MPEG-2 video stream decoder. -+ * See http://libmpeg2.sourceforge.net/ for updates. -+ * -+ * mpeg2dec is free software; you can redistribute it and/or modify -+ * it under the terms of the GNU General Public License as published by -+ * the Free Software Foundation; either version 2 of the License, or -+ * (at your option) any later version. -+ * -+ * mpeg2dec is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ * GNU General Public License for more details. -+ * -+ * You should have received a copy of the GNU General Public License along -+ * with mpeg2dec; if not, write to the Free Software Foundation, Inc., -+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -+ */ -+ -+#include "config.h" -+ -+#if defined(ARCH_ARM) -+ -+#include <stdint.h> -+#include <string.h> -+ -+#include "mpeg2.h" -+#include "attributes.h" -+#include "mpeg2_internal.h" -+ -+/* dest = ref */ -+static void MC_put_o_16_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ do { -+ memcpy (dest, ref, 16); -+ ref += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+static void MC_put_o_8_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ do { -+ memcpy (dest, ref, 8); -+ ref += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+/* dest = (src1 + src2 + 1) / 2 */ -+static void MC_avg_1_16_neon (uint8_t * dest, const uint8_t * src1, -+ const uint8_t * src2, -+ const int stride, unsigned height) -+{ -+ do { -+ asm volatile ( -+ "vld1.u8 {q0}, [%[src1]]\n" -+ "vld1.u8 {q1}, [%[src2]]\n" -+ "vrhadd.u8 q0, q0, q1\n" -+ /* XXX: three cycles stall */ -+ "vst1.u8 {q0}, [%[dest]]\n" -+ : -+ : [dest]"r"(dest), [src1]"r"(src1), [src2]"r"(src2) -+ : "memory", "q0", "q1"); -+ src1 += stride; -+ src2 += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+static void MC_avg_1_8_neon (uint8_t * dest, const uint8_t * src1, -+ const uint8_t * src2, -+ const int stride, unsigned height) -+{ -+ do { -+ asm volatile ( -+ "vld1.u8 {d0}, [%[src1]]\n" -+ "vld1.u8 {d1}, [%[src2]]\n" -+ "vrhadd.u8 d0, d0, d1\n" -+ "vst1.u8 {d0}, [%[dest]]\n" -+ : -+ : [dest]"r"(dest), [src1]"r"(src1), [src2]"r"(src2) -+ : "memory", "q0"); -+ -+ src1 += stride; -+ src2 += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+/* dest = (dest + ((src1 + src2 + 1) / 2) + 1) / 2 */ -+static void MC_avg_2_16_neon (uint8_t * dest, const uint8_t * src1, -+ const uint8_t * src2, -+ const int stride, unsigned height) -+{ -+ do { -+ asm volatile ( -+ "vld1.u8 {q0}, [%[src1]]\n" -+ "vld1.u8 {q1}, [%[src2]]\n" -+ "vrhadd.u8 q0, q0, q1\n" -+ "vld1.u8 {q2}, [%[dest]]\n" -+ /* XXX: one cycle stall */ -+ "vrhadd.u8 q0, q0, q2\n" -+ /* XXX: three cycles stall */ -+ "vst1.u8 {q0}, [%[dest]]\n" -+ : -+ : [dest]"r"(dest), [src1]"r"(src1), [src2]"r"(src2) -+ : "memory", "q0", "q1", "q2"); -+ src1 += stride; -+ src2 += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+static void MC_avg_2_8_neon (uint8_t * dest, const uint8_t * src1, -+ const uint8_t * src2, -+ const int stride, unsigned height) -+{ -+ do { -+ asm volatile ( -+ "vld1.u8 {d0}, [%[src1]]\n" -+ "vld1.u8 {d1}, [%[src2]]\n" -+ "vrhadd.u8 d0, d0, d1\n" -+ "vld1.u8 {d2}, [%[dest]]\n" -+ "vrhadd.u8 d0, d0, d2\n" -+ "vst1.u8 {d0}, [%[dest]]\n" -+ : -+ : [dest]"r"(dest), [src1]"r"(src1), [src2]"r"(src2) -+ : "memory", "q0", "d2"); -+ src1 += stride; -+ src2 += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+static void MC_avg_o_16_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_1_16_neon (dest, dest, ref, stride, height); -+} -+ -+static void MC_avg_o_8_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_1_8_neon (dest, dest, ref, stride, height); -+} -+ -+static void MC_put_x_16_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_1_16_neon (dest, ref, ref + 1, stride, height); -+} -+ -+static void MC_put_x_8_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_1_8_neon (dest, ref, ref + 1, stride, height); -+} -+ -+static void MC_avg_x_16_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_2_16_neon (dest, ref, ref + 1, stride, height); -+} -+ -+static void MC_avg_x_8_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_2_8_neon (dest, ref, ref + 1, stride, height); -+} -+ -+static void MC_put_y_16_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_1_16_neon (dest, ref, ref + stride, stride, height); -+} -+static void MC_put_y_8_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_1_8_neon (dest, ref, ref + stride, stride, height); -+} -+ -+static void MC_avg_y_16_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_2_16_neon (dest, ref, ref + stride, stride, height); -+} -+ -+static void MC_avg_y_8_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ MC_avg_2_8_neon (dest, ref, ref + stride, stride, height); -+} -+ -+static void MC_put_xy_16_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ do { -+ asm volatile ( -+ "vld1.u8 {q0}, [%[ref]]\n" -+ "vld1.u8 {q1}, [%[refx]]\n" -+ "vrhadd.u8 q0, q0, q1\n" -+ "vld1.u8 {q2}, [%[refy]]\n" -+ "vld1.u8 {q3}, [%[refxy]]\n" -+ "vrhadd.u8 q2, q2, q3\n" -+ /* XXX: three cycles stall */ -+ "vrhadd.u8 q0, q0, q2\n" -+ /* XXX: three cycles stall */ -+ "vst1.u8 {q0}, [%[dest]]\n" -+ : -+ : [dest]"r"(dest), [ref]"r"(ref), [refx]"r"(ref + 1), -+ [refy]"r"(ref + stride), [refxy]"r"(ref + stride + 1) -+ : "memory", "q0", "q1", "q2", "q3"); -+ ref += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+static void MC_put_xy_8_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ do { -+ asm volatile ( -+ "vld1.u8 {d0}, [%[ref]]\n" -+ "vld1.u8 {d1}, [%[refx]]\n" -+ "vrhadd.u8 d0, d0, d1\n" -+ "vld1.u8 {d2}, [%[refy]]\n" -+ "vld1.u8 {d3}, [%[refxy]]\n" -+ "vrhadd.u8 d2, d2, d3\n" -+ /* XXX: three cycles stall */ -+ "vrhadd.u8 d0, d0, d2\n" -+ /* XXX: three cycles stall */ -+ "vst1.u8 {d0}, [%[dest]]\n" -+ : -+ : [dest]"r"(dest), [ref]"r"(ref), [refx]"r"(ref + 1), -+ [refy]"r"(ref + stride), [refxy]"r"(ref + stride + 1) -+ : "memory", "q0", "q1"); -+ ref += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+static void MC_avg_xy_16_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ do { -+ asm volatile ( -+ "vld1.u8 {q0}, [%[ref]]\n" -+ "vld1.u8 {q1}, [%[refx]]\n" -+ "vrhadd.u8 q0, q0, q1\n" -+ "vld1.u8 {q2}, [%[refy]]\n" -+ "vld1.u8 {q3}, [%[refxy]]\n" -+ "vrhadd.u8 q2, q2, q3\n" -+ "vld1.u8 {q4}, [%[dest]]\n" -+ /* XXX: one cycle stall */ -+ "vrhadd.u8 q0, q0, q2\n" -+ /* XXX: three cycles stall */ -+ "vrhadd.u8 q0, q4, q0\n" -+ "vst1.u8 {q0}, [%[dest]]\n" -+ : -+ : [dest]"r"(dest), [ref]"r"(ref), [refx]"r"(ref + 1), -+ [refy]"r"(ref + stride), [refxy]"r"(ref + stride + 1) -+ : "memory", "q0", "q1", "q2", "q3", "q4"); -+ ref += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+static void MC_avg_xy_8_neon (uint8_t * dest, const uint8_t * ref, -+ const int stride, int height) -+{ -+ do { -+ asm volatile ( -+ "vld1.u8 {d0}, [%[ref]]\n" -+ "vld1.u8 {d1}, [%[refx]]\n" -+ "vrhadd.u8 d0, d0, d1\n" -+ "vld1.u8 {d2}, [%[refy]]\n" -+ "vld1.u8 {d3}, [%[refxy]]\n" -+ "vrhadd.u8 d2, d2, d3\n" -+ "vld1.u8 {d4}, [%[dest]]\n" -+ /* XXX: one cycle stall */ -+ "vrhadd.u8 d0, d0, d2\n" -+ /* XXX: three cycles stall */ -+ "vrhadd.u8 d0, d4, d0\n" -+ "vst1.u8 {d0}, [%[dest]]\n" -+ : -+ : [dest]"r"(dest), [ref]"r"(ref), [refx]"r"(ref + 1), -+ [refy]"r"(ref + stride), [refxy]"r"(ref + stride + 1) -+ : "memory", "q0", "q1", "d4"); -+ ref += stride; -+ dest += stride; -+ } while (--height); -+} -+ -+MPEG2_MC_EXTERN (neon) -+ -+#endif /* ARCH_ARM */ - -Modification de propriétés sur libmpeg2/motion_comp_neon.c -___________________________________________________________________ -Ajouté : svn:eol-style - + native - -Index: libmpeg2/mpeg2_internal.h -=================================================================== ---- libmpeg2/mpeg2_internal.h (révision 1193) -+++ libmpeg2/mpeg2_internal.h (copie de travail) -@@ -313,5 +313,6 @@ - extern mpeg2_mc_t mpeg2_mc_alpha; - extern mpeg2_mc_t mpeg2_mc_vis; - extern mpeg2_mc_t mpeg2_mc_arm; -+extern mpeg2_mc_t mpeg2_mc_neon; - - #endif /* LIBMPEG2_MPEG2_INTERNAL_H */ -Index: libmpeg2/motion_comp.c -=================================================================== ---- libmpeg2/motion_comp.c (révision 1193) -+++ libmpeg2/motion_comp.c (copie de travail) -@@ -58,6 +58,11 @@ - else - #endif - #ifdef ARCH_ARM -+#ifdef ARCH_ARM -+ if (accel & MPEG2_ACCEL_ARM) -+ mpeg2_mc = mpeg2_mc_neon; -+ else -+#endif - if (accel & MPEG2_ACCEL_ARM) { - mpeg2_mc = mpeg2_mc_arm; - } else -Index: libmpeg2/Makefile.am -=================================================================== ---- libmpeg2/Makefile.am (révision 1193) -+++ libmpeg2/Makefile.am (copie de travail) -@@ -14,7 +14,7 @@ - motion_comp_vis.c motion_comp_arm.c \ - cpu_accel.c cpu_state.c - if ARCH_ARM --libmpeg2arch_la_SOURCES += motion_comp_arm_s.S -+libmpeg2arch_la_SOURCES += motion_comp_arm_s.S motion_comp_neon.c - endif - libmpeg2arch_la_CFLAGS = $(OPT_CFLAGS) $(ARCH_OPT_CFLAGS) $(LIBMPEG2_CFLAGS) - -Index: configure.ac -=================================================================== ---- configure.ac (révision 1193) -+++ configure.ac (copie de travail) -@@ -103,7 +103,14 @@ - AC_DEFINE([ARCH_ALPHA],,[alpha architecture]);; - arm*) - arm_conditional=: -- AC_DEFINE([ARCH_ARM],,[ARM architecture]);; -+ AC_DEFINE([ARCH_ARM],,[ARM architecture]) -+ AC_MSG_CHECKING([if inline ARM Advanced SIMD assembly is supported]) -+ AC_TRY_COMPILE([], -+ [asm ("vqmovun.s64 d0, q1":::"d0");], -+ [AC_DEFINE([ARCH_ARM_NEON],, [ARM Advanced SIMD assembly]) -+ AC_MSG_RESULT(yes)], -+ [AC_MSG_RESULT(no)]) -+ ;; - esac - elif test x"$CC" = x"tendracc"; then - dnl TenDRA portability checking compiler |