ARM: Move asm.S from libavcodec to libavutil
authorJustin Ruggles <justin.ruggles@gmail.com>
Mon, 21 May 2012 19:46:23 +0000 (15:46 -0400)
committerJustin Ruggles <justin.ruggles@gmail.com>
Fri, 8 Jun 2012 17:14:38 +0000 (13:14 -0400)
This will allow for easier implementation of ARM-optimized functions in
libraries other than libavcodec.

40 files changed:
libavcodec/arm/aacpsdsp_neon.S
libavcodec/arm/ac3dsp_arm.S
libavcodec/arm/ac3dsp_armv6.S
libavcodec/arm/ac3dsp_neon.S
libavcodec/arm/asm.S [deleted file]
libavcodec/arm/dcadsp_neon.S
libavcodec/arm/dsputil_arm.S
libavcodec/arm/dsputil_armv6.S
libavcodec/arm/dsputil_neon.S
libavcodec/arm/dsputil_vfp.S
libavcodec/arm/fft_fixed_neon.S
libavcodec/arm/fft_neon.S
libavcodec/arm/fmtconvert_neon.S
libavcodec/arm/fmtconvert_vfp.S
libavcodec/arm/h264cmc_neon.S
libavcodec/arm/h264dsp_neon.S
libavcodec/arm/h264idct_neon.S
libavcodec/arm/h264pred_neon.S
libavcodec/arm/int_neon.S
libavcodec/arm/jrevdct_arm.S
libavcodec/arm/mdct_fixed_neon.S
libavcodec/arm/mdct_neon.S
libavcodec/arm/mpegaudiodsp_fixed_armv6.S
libavcodec/arm/mpegvideo_armv5te_s.S
libavcodec/arm/mpegvideo_neon.S
libavcodec/arm/rdft_neon.S
libavcodec/arm/rv34dsp_neon.S
libavcodec/arm/rv40dsp_neon.S
libavcodec/arm/sbrdsp_neon.S
libavcodec/arm/simple_idct_arm.S
libavcodec/arm/simple_idct_armv5te.S
libavcodec/arm/simple_idct_armv6.S
libavcodec/arm/simple_idct_neon.S
libavcodec/arm/synth_filter_neon.S
libavcodec/arm/vp3dsp_neon.S
libavcodec/arm/vp56dsp_neon.S
libavcodec/arm/vp8_armv6.S
libavcodec/arm/vp8dsp_armv6.S
libavcodec/arm/vp8dsp_neon.S
libavutil/arm/asm.S [new file with mode: 0644]

index e75760a2d63714d147f27d1bef954685fd2e250e..fb00900a4dc4467a8ad02b8ecdad50cc707c4ee0 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 function ff_ps_add_squares_neon, export=1
         mov             r3,  r0
index 9a7d20eb7babd8e5e8b16462153783060c45ab58..ed8eb3784555a12567a85b5a15a5739853700bc6 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 function ff_ac3_update_bap_counts_arm, export=1
         push            {lr}
index df8bfbaa030077ea0eee0c98f3c5cdabe2b1e8d7..7e2f40edf078d6137c1b29c4e20fc3eae9de72c1 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 function ff_ac3_bit_alloc_calc_bap_armv6, export=1
         ldr             r12, [sp]
index e97197c27a832d71858aadebba16efc25c4d95fd..82ff8af9fb445efa5ac09a6ea509b81e62e3878d 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 function ff_ac3_max_msb_abs_int16_neon, export=1
         vmov.i16        q0,  #0
diff --git a/libavcodec/arm/asm.S b/libavcodec/arm/asm.S
deleted file mode 100644 (file)
index 6038a63..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (c) 2008 Mans Rullgard <mans@mansr.com>
- *
- * This file is part of Libav.
- *
- * Libav 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.
- *
- * Libav 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 Libav; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- */
-
-#include "config.h"
-
-#ifdef __ELF__
-#   define ELF
-#else
-#   define ELF @
-#endif
-
-#if CONFIG_THUMB
-#   define A @
-#   define T
-#else
-#   define A
-#   define T @
-#endif
-
-#if   HAVE_NEON
-        .arch           armv7-a
-#elif HAVE_ARMV6T2
-        .arch           armv6t2
-#elif HAVE_ARMV6
-        .arch           armv6
-#elif HAVE_ARMV5TE
-        .arch           armv5te
-#endif
-
-#if   HAVE_NEON
-        .fpu            neon
-#elif HAVE_ARMVFP
-        .fpu            vfp
-#endif
-
-        .syntax unified
-T       .thumb
-
-.macro  require8 val=1
-ELF     .eabi_attribute 24, \val
-.endm
-
-.macro  preserve8 val=1
-ELF     .eabi_attribute 25, \val
-.endm
-
-.macro  function name, export=0
-    .macro endfunc
-ELF     .size   \name, . - \name
-        .endfunc
-        .purgem endfunc
-    .endm
-        .text
-        .align          2
-    .if \export
-        .global EXTERN_ASM\name
-EXTERN_ASM\name:
-    .endif
-ELF     .type   \name, %function
-        .func   \name
-\name:
-.endm
-
-.macro  const   name, align=2
-    .macro endconst
-ELF     .size   \name, . - \name
-        .purgem endconst
-    .endm
-        .section        .rodata
-        .align          \align
-\name:
-.endm
-
-#if !HAVE_ARMV6T2
-.macro  movw    rd, val
-        mov     \rd, \val &  255
-        orr     \rd, \val & ~255
-.endm
-#endif
-
-.macro  mov32   rd, val
-#if HAVE_ARMV6T2
-        movw            \rd, #(\val) & 0xffff
-    .if (\val) >> 16
-        movt            \rd, #(\val) >> 16
-    .endif
-#else
-        ldr             \rd, =\val
-#endif
-.endm
-
-.macro  movrel rd, val
-#if HAVE_ARMV6T2 && !CONFIG_PIC && !defined(__APPLE__)
-        movw            \rd, #:lower16:\val
-        movt            \rd, #:upper16:\val
-#else
-        ldr             \rd, =\val
-#endif
-.endm
-
-.macro  ldr_pre         rt,  rn,  rm:vararg
-A       ldr             \rt, [\rn, \rm]!
-T       add             \rn, \rn, \rm
-T       ldr             \rt, [\rn]
-.endm
-
-.macro  ldr_dpre        rt,  rn,  rm:vararg
-A       ldr             \rt, [\rn, -\rm]!
-T       sub             \rn, \rn, \rm
-T       ldr             \rt, [\rn]
-.endm
-
-.macro  ldr_nreg        rt,  rn,  rm:vararg
-A       ldr             \rt, [\rn, -\rm]
-T       sub             \rt, \rn, \rm
-T       ldr             \rt, [\rt]
-.endm
-
-.macro  ldr_post        rt,  rn,  rm:vararg
-A       ldr             \rt, [\rn], \rm
-T       ldr             \rt, [\rn]
-T       add             \rn, \rn, \rm
-.endm
-
-.macro  ldrd_reg        rt,  rt2, rn,  rm
-A       ldrd            \rt, \rt2, [\rn, \rm]
-T       add             \rt, \rn, \rm
-T       ldrd            \rt, \rt2, [\rt]
-.endm
-
-.macro  ldrd_post       rt,  rt2, rn,  rm
-A       ldrd            \rt, \rt2, [\rn], \rm
-T       ldrd            \rt, \rt2, [\rn]
-T       add             \rn, \rn, \rm
-.endm
-
-.macro  ldrh_pre        rt,  rn,  rm
-A       ldrh            \rt, [\rn, \rm]!
-T       add             \rn, \rn, \rm
-T       ldrh            \rt, [\rn]
-.endm
-
-.macro  ldrh_dpre       rt,  rn,  rm
-A       ldrh            \rt, [\rn, -\rm]!
-T       sub             \rn, \rn, \rm
-T       ldrh            \rt, [\rn]
-.endm
-
-.macro  ldrh_post       rt,  rn,  rm
-A       ldrh            \rt, [\rn], \rm
-T       ldrh            \rt, [\rn]
-T       add             \rn, \rn, \rm
-.endm
-
-.macro  ldrb_post       rt,  rn,  rm
-A       ldrb            \rt, [\rn], \rm
-T       ldrb            \rt, [\rn]
-T       add             \rn, \rn, \rm
-.endm
-
-.macro  str_post       rt,  rn,  rm:vararg
-A       str             \rt, [\rn], \rm
-T       str             \rt, [\rn]
-T       add             \rn, \rn, \rm
-.endm
-
-.macro  strb_post       rt,  rn,  rm:vararg
-A       strb            \rt, [\rn], \rm
-T       strb            \rt, [\rn]
-T       add             \rn, \rn, \rm
-.endm
-
-.macro  strd_post       rt,  rt2, rn,  rm
-A       strd            \rt, \rt2, [\rn], \rm
-T       strd            \rt, \rt2, [\rn]
-T       add             \rn, \rn, \rm
-.endm
-
-.macro  strh_pre        rt,  rn,  rm
-A       strh            \rt, [\rn, \rm]!
-T       add             \rn, \rn, \rm
-T       strh            \rt, [\rn]
-.endm
-
-.macro  strh_dpre       rt,  rn,  rm
-A       strh            \rt, [\rn, -\rm]!
-T       sub             \rn, \rn, \rm
-T       strh            \rt, [\rn]
-.endm
-
-.macro  strh_post       rt,  rn,  rm
-A       strh            \rt, [\rn], \rm
-T       strh            \rt, [\rn]
-T       add             \rn, \rn, \rm
-.endm
-
-.macro  strh_dpost       rt,  rn,  rm
-A       strh            \rt, [\rn], -\rm
-T       strh            \rt, [\rn]
-T       sub             \rn, \rn, \rm
-.endm
-
-#if HAVE_VFP_ARGS
-        .eabi_attribute 28, 1
-#   define VFP
-#   define NOVFP @
-#else
-#   define VFP   @
-#   define NOVFP
-#endif
-
-#define GLUE(a, b) a ## b
-#define JOIN(a, b) GLUE(a, b)
-#define X(s) JOIN(EXTERN_ASM, s)
index 71f5dd843bdc337ec58066fdadad5886860f2ce0..fe3aae801a5cc8dca45c4b44a3d8a39da3c7b0b7 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 function ff_dca_lfe_fir_neon, export=1
         push            {r4-r6,lr}
index 136551f4c94624eb670d53d7b79177aa69dbb334..dd65f705a76b25ed36b4e01ca41429ab15f4c5a9 100644 (file)
@@ -20,7 +20,7 @@
 @
 
 #include "config.h"
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index becf85182dbf52f8a106eb524c192c6d8e4e9963..6eabeee7abc14d63d8f5684c5718d97bbb0024e1 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index b59c901ea61b4a352952850918439d225a49f55a..b2243c8ccb3a41a7d273218b4a0e423692c30bd6 100644 (file)
@@ -20,7 +20,7 @@
  */
 
 #include "config.h"
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index cbc4bd6c700fdeb260f75993ee913ce781fbcb9b..8d385c7e42ca260405102f80d41bbefdf9c4678d 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 #include "config.h"
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 /*
  * VFP is a floating point coprocessor used in some ARM cores. VFP11 has 1 cycle
index 05080885908813fea1920dd532b3f260c147a489..4d891ba1a4bf9a010c46056e937ee1dfba146cbc 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 .macro  bflies          d0,  d1,  r0,  r1
         vrev64.32       \r0, \d1                @ t5, t6, t1, t2
index a45898592eea2f03635f19187d7efd37dc2f6a02..aa06e6daa7b7b83c495076f48bcde1c59b9c9058 100644 (file)
@@ -24,7 +24,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 #define M_SQRT1_2 0.70710678118654752440
 
index ad1c15d0fa895ea44aa9095cbe71f9238a67a55c..66ff166f24896c0bc4f49e83934a66de915a15c9 100644 (file)
@@ -20,7 +20,7 @@
  */
 
 #include "config.h"
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index f7b0e3dcb5f5b6b81ea49faeac01df92c53e183e..8aeec2aa126f72e17633051771147958d45c755c 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 #include "config.h"
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 /**
  * ARM VFP optimized float to int16 conversion.
index a6feadd18978a7b1a78871f2b2704f6e4a5bfeaa..e82394d899714f7a8cd52790690e754659b5b346 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 /* chroma_mc8(uint8_t *dst, uint8_t *src, int stride, int h, int x, int y) */
 .macro  h264_chroma_mc8 type, codec=h264
index a4abf66494c9d9d7c936c4a86a6743b7da66717d..4ad886334c2e54d4de84598f6743a2f41173e3a8 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 #include "neon.S"
 
         /* H.264 loop filter */
index edb2ae5270eef4366700fee2ea554e32eb470c4f..182d3b2393c8268eaaaa6df9835ac233ee00dfb3 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index 815b67b81fdbcff8030ddd4a9808593b3acb1d1c..332f94bd53cdd19bddcf57ff73a84f4a1d959a9f 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         .macro ldcol.8  rd,  rs,  rt,  n=8,  hi=0
 .if \n == 8 || \hi == 0
index ea479bb5807d24e1f4c2522aa25149b84517e1d7..92cc518338ba585aca2ad2aea530a88dc45373ab 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
         .fpu neon
index 93cbbbe8eb52eee961a468a9eb58a2bef2429487..331ad85328b6352470c13293ac17476229847530 100644 (file)
@@ -25,7 +25,7 @@
 
 */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 #define FIX_0_298631336 2446
 #define FIX_0_541196100 4433
index d219216a20ed9265b9eac35ff459dca3151cf4be..08a388777a84ea4bdfeb420d48f9d1213dd44dba 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index 5669075521dd3c938bbfd9c2cd5d60799591d611..09dfdf4dd2b7a761e1faa834bf332f1e864e4bbe 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index b517b973e7c717f6c7f4d0e3d51cd37cd8ac264c..49bd0bcaf292e159d154b899d7db494d4aeab978 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 .macro  skip            args:vararg
 .endm
index 952c8d74cb8878e8cbdb9c02948ba5bcb32c8ea6..ec95346d37880f599464bd33450ee9c93ee713fb 100644 (file)
@@ -20,7 +20,7 @@
  */
 
 #include "config.h"
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 /*
  * Special optimized version of dct_unquantize_h263_helper_c, it
index 206a71a14da22c22d49b3ba95013993be00e887e..0c6c428854e4b08d7b5d5223a6be6ff176b72922 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 #include "asm-offsets.h"
 
 function ff_dct_unquantize_h263_inter_neon, export=1
index fba275eb8c18c66de11682f414050e9b7aa1bc89..eb7433aca4a3fb3c98245584f58ceb750047ddc8 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index 15a015deef31f8c83ca5fdcb1734fd6c897b13bc..522e387582b14d04c98c03eb4a1fd802e6e5a12d 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 #include "neon.S"
 
 .macro rv34_inv_transform    r0
index f68f38234afc3b6cd5e8db69560982d67356fa3b..6bd45eb5ad97a29eeceeaf5e183f0ce35048f61d 100644 (file)
@@ -19,7 +19,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 #include "neon.S"
 
 .macro  qpel_lowpass    r0,  r1,  rc1, rc2, shift
index 835c32caeeb6d528511cf71cd9047d72eb2f26ff..4b681bfe6a41304b68b879d110e8d195ec1609a7 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 function ff_sbr_sum64x5_neon, export=1
         push            {lr}
index a9c3095157764cc3bedbe77cab5541222b415c10..c6540a1e40993418294eea9104f28ad4ee3dcbbd 100644 (file)
@@ -23,7 +23,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 /* useful constants for the algorithm, they are save in __constant_ptr__ at */
 /* the end of the source code.*/
index 24641e47b6264ee861885eeb3005e7722799bf58..e880a8aab265c224bcb6fbb0199e6dddac1ad06a 100644 (file)
@@ -21,7 +21,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 #define W1  22725   /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
 #define W2  21407   /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
index 284eb1f94164b797217ec13868f7c6c3d8a6ea98..9395f880840ff0d7e00759e48e5f101fbb04474f 100644 (file)
@@ -21,7 +21,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 #define W1  22725   /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
 #define W2  21407   /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
index 0c4e05d869bea8d3cc8fcad8ff82fbd412d77975..df24a4527047d79464bd70cb20e00875abab38a1 100644 (file)
@@ -23,7 +23,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 #define W1  22725  //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5
 #define W2  21407  //cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5
index 1d6e5b2b86223d5f2ed849450e7bb43a1a53feb9..6dabce6db8ebeefd4a05c7b6492cf335e4444857 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
         preserve8
 
index 279b13225b8158a078413f8e2d3a064aa259bada..8d22d00038a69fafacd8ff622c1d16cd9ac4cd4d 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 const   vp3_idct_constants, align=4
 .short 64277, 60547, 54491, 46341, 36410, 25080, 12785
index b95d8ab28b2a7e729b215747846df139e83716c5..10b4d0f14c1e27a23f7303fdda19c7ee066490c1 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 .macro  vp6_edge_filter
         vdup.16         q3,  r2                 @ t
index c9dc30b46d4bc89b5d7e9121c033016d44f48c06..1fa6d156172be01fd45406d7cd31e5ec569fd06c 100644 (file)
@@ -18,7 +18,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 .macro rac_get_prob     h, bs, buf, cw, pr, t0, t1
         adds            \bs, \bs, \t0
index 08054ff262f91cc208a843a8e501602db0d5f2ac..a26a2a9813ffc81a2a90e57954be84f80740daf0 100644 (file)
@@ -52,7 +52,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 
 @ idct
 
index c1a91e14616432480c0315b1aaeed7d5468c8c0c..0cd2efa523d80562cd36e395bb03d85c29c817eb 100644 (file)
@@ -21,7 +21,7 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
-#include "asm.S"
+#include "libavutil/arm/asm.S"
 #include "neon.S"
 
 function ff_vp8_luma_dc_wht_neon, export=1
diff --git a/libavutil/arm/asm.S b/libavutil/arm/asm.S
new file mode 100644 (file)
index 0000000..6038a63
--- /dev/null
@@ -0,0 +1,231 @@
+/*
+ * Copyright (c) 2008 Mans Rullgard <mans@mansr.com>
+ *
+ * This file is part of Libav.
+ *
+ * Libav 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.
+ *
+ * Libav 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 Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#include "config.h"
+
+#ifdef __ELF__
+#   define ELF
+#else
+#   define ELF @
+#endif
+
+#if CONFIG_THUMB
+#   define A @
+#   define T
+#else
+#   define A
+#   define T @
+#endif
+
+#if   HAVE_NEON
+        .arch           armv7-a
+#elif HAVE_ARMV6T2
+        .arch           armv6t2
+#elif HAVE_ARMV6
+        .arch           armv6
+#elif HAVE_ARMV5TE
+        .arch           armv5te
+#endif
+
+#if   HAVE_NEON
+        .fpu            neon
+#elif HAVE_ARMVFP
+        .fpu            vfp
+#endif
+
+        .syntax unified
+T       .thumb
+
+.macro  require8 val=1
+ELF     .eabi_attribute 24, \val
+.endm
+
+.macro  preserve8 val=1
+ELF     .eabi_attribute 25, \val
+.endm
+
+.macro  function name, export=0
+    .macro endfunc
+ELF     .size   \name, . - \name
+        .endfunc
+        .purgem endfunc
+    .endm
+        .text
+        .align          2
+    .if \export
+        .global EXTERN_ASM\name
+EXTERN_ASM\name:
+    .endif
+ELF     .type   \name, %function
+        .func   \name
+\name:
+.endm
+
+.macro  const   name, align=2
+    .macro endconst
+ELF     .size   \name, . - \name
+        .purgem endconst
+    .endm
+        .section        .rodata
+        .align          \align
+\name:
+.endm
+
+#if !HAVE_ARMV6T2
+.macro  movw    rd, val
+        mov     \rd, \val &  255
+        orr     \rd, \val & ~255
+.endm
+#endif
+
+.macro  mov32   rd, val
+#if HAVE_ARMV6T2
+        movw            \rd, #(\val) & 0xffff
+    .if (\val) >> 16
+        movt            \rd, #(\val) >> 16
+    .endif
+#else
+        ldr             \rd, =\val
+#endif
+.endm
+
+.macro  movrel rd, val
+#if HAVE_ARMV6T2 && !CONFIG_PIC && !defined(__APPLE__)
+        movw            \rd, #:lower16:\val
+        movt            \rd, #:upper16:\val
+#else
+        ldr             \rd, =\val
+#endif
+.endm
+
+.macro  ldr_pre         rt,  rn,  rm:vararg
+A       ldr             \rt, [\rn, \rm]!
+T       add             \rn, \rn, \rm
+T       ldr             \rt, [\rn]
+.endm
+
+.macro  ldr_dpre        rt,  rn,  rm:vararg
+A       ldr             \rt, [\rn, -\rm]!
+T       sub             \rn, \rn, \rm
+T       ldr             \rt, [\rn]
+.endm
+
+.macro  ldr_nreg        rt,  rn,  rm:vararg
+A       ldr             \rt, [\rn, -\rm]
+T       sub             \rt, \rn, \rm
+T       ldr             \rt, [\rt]
+.endm
+
+.macro  ldr_post        rt,  rn,  rm:vararg
+A       ldr             \rt, [\rn], \rm
+T       ldr             \rt, [\rn]
+T       add             \rn, \rn, \rm
+.endm
+
+.macro  ldrd_reg        rt,  rt2, rn,  rm
+A       ldrd            \rt, \rt2, [\rn, \rm]
+T       add             \rt, \rn, \rm
+T       ldrd            \rt, \rt2, [\rt]
+.endm
+
+.macro  ldrd_post       rt,  rt2, rn,  rm
+A       ldrd            \rt, \rt2, [\rn], \rm
+T       ldrd            \rt, \rt2, [\rn]
+T       add             \rn, \rn, \rm
+.endm
+
+.macro  ldrh_pre        rt,  rn,  rm
+A       ldrh            \rt, [\rn, \rm]!
+T       add             \rn, \rn, \rm
+T       ldrh            \rt, [\rn]
+.endm
+
+.macro  ldrh_dpre       rt,  rn,  rm
+A       ldrh            \rt, [\rn, -\rm]!
+T       sub             \rn, \rn, \rm
+T       ldrh            \rt, [\rn]
+.endm
+
+.macro  ldrh_post       rt,  rn,  rm
+A       ldrh            \rt, [\rn], \rm
+T       ldrh            \rt, [\rn]
+T       add             \rn, \rn, \rm
+.endm
+
+.macro  ldrb_post       rt,  rn,  rm
+A       ldrb            \rt, [\rn], \rm
+T       ldrb            \rt, [\rn]
+T       add             \rn, \rn, \rm
+.endm
+
+.macro  str_post       rt,  rn,  rm:vararg
+A       str             \rt, [\rn], \rm
+T       str             \rt, [\rn]
+T       add             \rn, \rn, \rm
+.endm
+
+.macro  strb_post       rt,  rn,  rm:vararg
+A       strb            \rt, [\rn], \rm
+T       strb            \rt, [\rn]
+T       add             \rn, \rn, \rm
+.endm
+
+.macro  strd_post       rt,  rt2, rn,  rm
+A       strd            \rt, \rt2, [\rn], \rm
+T       strd            \rt, \rt2, [\rn]
+T       add             \rn, \rn, \rm
+.endm
+
+.macro  strh_pre        rt,  rn,  rm
+A       strh            \rt, [\rn, \rm]!
+T       add             \rn, \rn, \rm
+T       strh            \rt, [\rn]
+.endm
+
+.macro  strh_dpre       rt,  rn,  rm
+A       strh            \rt, [\rn, -\rm]!
+T       sub             \rn, \rn, \rm
+T       strh            \rt, [\rn]
+.endm
+
+.macro  strh_post       rt,  rn,  rm
+A       strh            \rt, [\rn], \rm
+T       strh            \rt, [\rn]
+T       add             \rn, \rn, \rm
+.endm
+
+.macro  strh_dpost       rt,  rn,  rm
+A       strh            \rt, [\rn], -\rm
+T       strh            \rt, [\rn]
+T       sub             \rn, \rn, \rm
+.endm
+
+#if HAVE_VFP_ARGS
+        .eabi_attribute 28, 1
+#   define VFP
+#   define NOVFP @
+#else
+#   define VFP   @
+#   define NOVFP
+#endif
+
+#define GLUE(a, b) a ## b
+#define JOIN(a, b) GLUE(a, b)
+#define X(s) JOIN(EXTERN_ASM, s)