]> git.sesse.net Git - x264/blobdiff - common/arm/asm.S
aarch64: NEON asm for missing x264_zigzag_* functions
[x264] / common / arm / asm.S
index 310c981355e5ddd52e51df46c12172dc833eead0..3fb11b86700db9f86cc1a6ea03d738131db453b7 100644 (file)
@@ -1,7 +1,7 @@
 /*****************************************************************************
  * asm.S: arm utility macros
  *****************************************************************************
- * Copyright (C) 2008-2012 x264 project
+ * Copyright (C) 2008-2014 x264 project
  *
  * Authors: Mans Rullgard <mans@mansr.com>
  *          David Conrad <lessen42@gmail.com>
 
 #include "config.h"
 
+.syntax unified
+
+#if   HAVE_NEON
+        .arch           armv7-a
+#elif HAVE_ARMV6T2
+        .arch           armv6t2
+#elif HAVE_ARMV6
+        .arch           armv6
+#endif
+
+.fpu neon
+
 #ifdef PREFIX
 #   define EXTERN_ASM _
 #else
 #   define ELF @
 #endif
 
-        .macro require8, val=1
+#if HAVE_AS_FUNC
+#   define FUNC
+#else
+#   define FUNC @
+#endif
+
+.macro require8, val=1
 ELF     .eabi_attribute 24, \val
-        .endm
+.endm
 
-        .macro preserve8, val=1
+.macro preserve8, val=1
 ELF     .eabi_attribute 25, \val
-        .endm
+.endm
 
-        .macro function name
-        .global EXTERN_ASM\name
+.macro function name, export=1
+    .macro endfunc
+ELF     .size   \name, . - \name
+FUNC    .endfunc
+        .purgem endfunc
+    .endm
         .align  2
+.if \export == 1
+        .global EXTERN_ASM\name
+ELF     .hidden EXTERN_ASM\name
+ELF     .type   EXTERN_ASM\name, %function
+FUNC    .func   EXTERN_ASM\name
 EXTERN_ASM\name:
+.else
 ELF     .hidden \name
 ELF     .type   \name, %function
-        .func   \name
+FUNC    .func   \name
 \name:
-        .endm
+.endif
+.endm
 
-        .macro movrel rd, val
+.macro movrel rd, val
 #if HAVE_ARMV6T2 && !defined(PIC)
         movw            \rd, #:lower16:\val
         movt            \rd, #:upper16:\val
 #else
         ldr             \rd, =\val
 #endif
-        .endm
+.endm
 
 .macro movconst rd, val
 #if HAVE_ARMV6T2
@@ -76,6 +105,10 @@ ELF     .type   \name, %function
 #endif
 .endm
 
+#define GLUE(a, b) a ## b
+#define JOIN(a, b) GLUE(a, b)
+#define X(s) JOIN(EXTERN_ASM, s)
+
 #define FENC_STRIDE 16
 #define FDEC_STRIDE 32