From 648dae663d74c71bdbb8c2d9e31185f81dd672a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= Date: Mon, 12 Sep 2016 17:04:05 +0200 Subject: [PATCH 18/18] deinterlace-merge-arm64: fix linking on appleOS --- modules/arm_neon/asm64.S | 46 ++++++++++++++++++++++++++ modules/video_filter/deinterlace/merge_arm64.S | 14 ++++---- 2 files changed, 52 insertions(+), 8 deletions(-) create mode 100644 modules/arm_neon/asm64.S diff --git a/modules/arm_neon/asm64.S b/modules/arm_neon/asm64.S new file mode 100644 index 0000000..d778163 --- /dev/null +++ b/modules/arm_neon/asm64.S @@ -0,0 +1,46 @@ + //***************************************************************************** + // asm.S : defines and macros + //***************************************************************************** + // Copyright (C) 2012 David Geldreich + // Copyright (C) 2016 Felix Paul Kühne + // + // This program is free software; you can redistribute it and/or modify + // it under the terms of the GNU Lesser General Public License as published by + // the Free Software Foundation; either version 2.1 of the License, or + // (at your option) any later version. + // + // This program 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 Lesser General Public License for more details. + // + // You should have received a copy of the GNU Lesser General Public License + // along with this program; if not, write to the Free Software Foundation, + // Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + //****************************************************************************/ + +#ifdef __APPLE__ +# define EXTERN_ASM _ +#else +# define EXTERN_ASM +#endif + +# define ELF + +.macro function name, export=0 + .macro endfunc + .size \name, . - \name + .endfunc + .purgem endfunc + .endm + .text + .align 2 + .if \export + .global EXTERN_ASM\name +EXTERN_ASM\name: + .endif + .type \name, %function + .func \name +\name: +.endm + diff --git a/modules/video_filter/deinterlace/merge_arm64.S b/modules/video_filter/deinterlace/merge_arm64.S index ad898a3..27b662d 100644 --- a/modules/video_filter/deinterlace/merge_arm64.S +++ b/modules/video_filter/deinterlace/merge_arm64.S @@ -19,6 +19,8 @@ // Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. //****************************************************************************/ +#include "../../arm_neon/asm64.S" + .text #define DEST x0 @@ -26,11 +28,8 @@ #define SRC2 x2 #define SIZE x3 - .align 2 - .global merge8_arm64_neon - .type merge8_arm64_neon, %function // NOTE: Offset and pitch must be multiple of 16-bytes in VLC. -merge8_arm64_neon: +function merge8_arm64_neon, export=1 ands x5, SIZE, #~63 b.eq 2f mov x10, #64 @@ -65,11 +64,9 @@ merge8_arm64_neon: st1 {v0.16b}, [DEST] 4: ret +endfunc - .align 2 - .global merge16_arm64_neon - .type merge16_arm64_neon, %function -merge16_arm64_neon: +function merge16_arm64_neon, export=1 ands x5, SIZE, #~63 b.eq 2f 1: @@ -100,3 +97,4 @@ merge16_arm64_neon: st1 {v0.8h}, [DEST] 4: ret +endfunc -- 2.9.3