Move ARM asm into its own directories.
authorTimothy B. Terriberry <tterribe@xiph.org>
Tue, 21 May 2013 19:53:33 +0000 (12:53 -0700)
committerTimothy B. Terriberry <tterribe@xiph.org>
Tue, 21 May 2013 19:53:33 +0000 (12:53 -0700)
12 files changed:
celt/_kiss_fft_guts.h
celt/arch.h
celt/arm/fixed_armv4.h [moved from celt/fixed_armv4.h with 100% similarity]
celt/arm/fixed_armv5e.h [moved from celt/fixed_armv5e.h with 100% similarity]
celt/arm/kiss_fft_armv4.h [new file with mode: 0644]
celt/arm/kiss_fft_armv5e.h [new file with mode: 0644]
silk/SigProc_FIX.h
silk/arm/SigProc_FIX_armv4.h [moved from silk/SigProc_FIX_armv4.h with 100% similarity]
silk/arm/SigProc_FIX_armv5e.h [moved from silk/SigProc_FIX_armv5e.h with 100% similarity]
silk/arm/macros_armv4.h [moved from silk/macros_armv4.h with 100% similarity]
silk/arm/macros_armv5e.h [moved from silk/macros_armv5e.h with 100% similarity]
silk/macros.h

index cbe7557..f0c6976 100644 (file)
     }while(0)
 
 #if defined(ARMv4_ASM)
-
-#undef C_MUL
-#define C_MUL(m,a,b) \
-    do{ \
-       int br__; \
-       int bi__; \
-       int tt__; \
-        __asm__ __volatile__( \
-            "#C_MUL\n\t" \
-            "ldm %[ap], {r0,r1}\n\t" \
-            "ldrsh %[br], [%[bp], #0]\n\t" \
-            "ldrsh %[bi], [%[bp], #2]\n\t" \
-            "smull %[tt], %[mi], r1, %[br]\n\t" \
-            "smlal %[tt], %[mi], r0, %[bi]\n\t" \
-            "rsb %[bi], %[bi], #0\n\t" \
-            "smull r0, %[mr], %[br], r0\n\t" \
-            "mov %[tt], %[tt], lsr #15\n\t" \
-            "smlal r0, %[mr], r1, %[bi]\n\t" \
-            "orr %[mi], %[tt], %[mi], lsl #17\n\t" \
-            "mov r0, r0, lsr #15\n\t" \
-            "orr %[mr], r0, %[mr], lsl #17\n\t" \
-            : [mr]"=r"((m).r), [mi]"=r"((m).i), \
-              [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
-            : [ap]"r"(&(a)), [bp]"r"(&(b)) \
-            : "r0", "r1" \
-        ); \
-    } \
-    while(0)
-
-#undef C_MUL4
-#define C_MUL4(m,a,b) \
-    do{ \
-       int br__; \
-       int bi__; \
-       int tt__; \
-        __asm__ __volatile__( \
-            "#C_MUL4\n\t" \
-            "ldm %[ap], {r0,r1}\n\t" \
-            "ldrsh %[br], [%[bp], #0]\n\t" \
-            "ldrsh %[bi], [%[bp], #2]\n\t" \
-            "smull %[tt], %[mi], r1, %[br]\n\t" \
-            "smlal %[tt], %[mi], r0, %[bi]\n\t" \
-            "rsb %[bi], %[bi], #0\n\t" \
-            "smull r0, %[mr], %[br], r0\n\t" \
-            "mov %[tt], %[tt], lsr #17\n\t" \
-            "smlal r0, %[mr], r1, %[bi]\n\t" \
-            "orr %[mi], %[tt], %[mi], lsl #15\n\t" \
-            "mov r0, r0, lsr #17\n\t" \
-            "orr %[mr], r0, %[mr], lsl #15\n\t" \
-            : [mr]"=r"((m).r), [mi]"=r"((m).i), \
-              [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
-            : [ap]"r"(&(a)), [bp]"r"(&(b)) \
-            : "r0", "r1" \
-        ); \
-    } \
-    while(0)
-
-#undef C_MULC
-#define C_MULC(m,a,b) \
-    do{ \
-       int br__; \
-       int bi__; \
-       int tt__; \
-        __asm__ __volatile__( \
-            "#C_MULC\n\t" \
-            "ldm %[ap], {r0,r1}\n\t" \
-            "ldrsh %[br], [%[bp], #0]\n\t" \
-            "ldrsh %[bi], [%[bp], #2]\n\t" \
-            "smull %[tt], %[mr], r0, %[br]\n\t" \
-            "smlal %[tt], %[mr], r1, %[bi]\n\t" \
-            "rsb %[bi], %[bi], #0\n\t" \
-            "smull r1, %[mi], %[br], r1\n\t" \
-            "mov %[tt], %[tt], lsr #15\n\t" \
-            "smlal r1, %[mi], r0, %[bi]\n\t" \
-            "orr %[mr], %[tt], %[mr], lsl #17\n\t" \
-            "mov r1, r1, lsr #15\n\t" \
-            "orr %[mi], r1, %[mi], lsl #17\n\t" \
-            : [mr]"=r"((m).r), [mi]"=r"((m).i), \
-              [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
-            : [ap]"r"(&(a)), [bp]"r"(&(b)) \
-            : "r0", "r1" \
-        ); \
-    } \
-    while(0)
-
-#endif /* ARMv4_ASM */
+#include "arm/kiss_fft_armv4.h"
+#endif
 
 #if defined(ARMv5E_ASM)
-
-#if defined(__thumb__)||defined(__thumb2__)
-#define LDRD_CONS "Q"
-#else
-#define LDRD_CONS "Uq"
+#include "arm/kiss_fft_armv5e.h"
 #endif
 
-#undef C_MUL
-#define C_MUL(m,a,b) \
-    do{ \
-        int mr1__; \
-        int mr2__; \
-        int mi__; \
-        long long aval__; \
-        int bval__; \
-        __asm__( \
-            "#C_MUL\n\t" \
-            "ldrd %[aval], %H[aval], %[ap]\n\t" \
-            "ldr %[bval], %[bp]\n\t" \
-            "smulwb %[mi], %H[aval], %[bval]\n\t" \
-            "smulwb %[mr1], %[aval], %[bval]\n\t" \
-            "smulwt %[mr2], %H[aval], %[bval]\n\t" \
-            "smlawt %[mi], %[aval], %[bval], %[mi]\n\t" \
-            : [mr1]"=r"(mr1__), [mr2]"=r"(mr2__), [mi]"=r"(mi__), \
-              [aval]"=&r"(aval__), [bval]"=r"(bval__) \
-            : [ap]LDRD_CONS(a), [bp]"m"(b) \
-        ); \
-        (m).r = SHL32(SUB32(mr1__, mr2__), 1); \
-        (m).i = SHL32(mi__, 1); \
-    } \
-    while(0)
-
-#undef C_MUL4
-#define C_MUL4(m,a,b) \
-    do{ \
-        int mr1__; \
-        int mr2__; \
-        int mi__; \
-        long long aval__; \
-        int bval__; \
-        __asm__( \
-            "#C_MUL4\n\t" \
-            "ldrd %[aval], %H[aval], %[ap]\n\t" \
-            "ldr %[bval], %[bp]\n\t" \
-            "smulwb %[mi], %H[aval], %[bval]\n\t" \
-            "smulwb %[mr1], %[aval], %[bval]\n\t" \
-            "smulwt %[mr2], %H[aval], %[bval]\n\t" \
-            "smlawt %[mi], %[aval], %[bval], %[mi]\n\t" \
-            : [mr1]"=r"(mr1__), [mr2]"=r"(mr2__), [mi]"=r"(mi__), \
-              [aval]"=&r"(aval__), [bval]"=r"(bval__) \
-            : [ap]LDRD_CONS(a), [bp]"m"(b) \
-        ); \
-        (m).r = SHR32(SUB32(mr1__, mr2__), 1); \
-        (m).i = SHR32(mi__, 1); \
-    } \
-    while(0)
-
-#undef C_MULC
-#define C_MULC(m,a,b) \
-    do{ \
-        int mr__; \
-        int mi1__; \
-        int mi2__; \
-        long long aval__; \
-        int bval__; \
-        __asm__( \
-            "#C_MULC\n\t" \
-            "ldrd %[aval], %H[aval], %[ap]\n\t" \
-            "ldr %[bval], %[bp]\n\t" \
-            "smulwb %[mr], %[aval], %[bval]\n\t" \
-            "smulwb %[mi1], %H[aval], %[bval]\n\t" \
-            "smulwt %[mi2], %[aval], %[bval]\n\t" \
-            "smlawt %[mr], %H[aval], %[bval], %[mr]\n\t" \
-            : [mr]"=r"(mr__), [mi1]"=r"(mi1__), [mi2]"=r"(mi2__), \
-              [aval]"=&r"(aval__), [bval]"=r"(bval__) \
-            : [ap]LDRD_CONS(a), [bp]"m"(b) \
-        ); \
-        (m).r = SHL32(mr__, 1); \
-        (m).i = SHL32(SUB32(mi1__, mi2__), 1); \
-    } \
-    while(0)
-
-#endif /* ARMv5E_ASM */
-
 #else  /* not FIXED_POINT*/
 
 #   define S_MUL(a,b) ( (a)*(b) )
index 529d252..feab0fa 100644 (file)
@@ -113,9 +113,9 @@ typedef opus_val32 celt_ener;
 #include "fixed_generic.h"
 
 #ifdef ARMv5E_ASM
-#include "fixed_armv5e.h"
+#include "arm/fixed_armv5e.h"
 #elif defined (ARMv4_ASM)
-#include "fixed_armv4.h"
+#include "arm/fixed_armv4.h"
 #elif defined (BFIN_ASM)
 #include "fixed_bfin.h"
 #elif defined (TI_C5X_ASM)
similarity index 100%
rename from celt/fixed_armv4.h
rename to celt/arm/fixed_armv4.h
similarity index 100%
rename from celt/fixed_armv5e.h
rename to celt/arm/fixed_armv5e.h
diff --git a/celt/arm/kiss_fft_armv4.h b/celt/arm/kiss_fft_armv4.h
new file mode 100644 (file)
index 0000000..dc9e01b
--- /dev/null
@@ -0,0 +1,121 @@
+/*Copyright (c) 2013, Xiph.Org Foundation and contributors.
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+       this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.*/
+
+#ifndef KISS_FFT_ARMv4_H
+#define KISS_FFT_ARMv4_H
+
+#if !defined(KISS_FFT_GUTS_H)
+#error "This file should only be included from _kiss_fft_guts.h"
+#endif
+
+#ifdef FIXED_POINT
+
+#undef C_MUL
+#define C_MUL(m,a,b) \
+    do{ \
+       int br__; \
+       int bi__; \
+       int tt__; \
+        __asm__ __volatile__( \
+            "#C_MUL\n\t" \
+            "ldm %[ap], {r0,r1}\n\t" \
+            "ldrsh %[br], [%[bp], #0]\n\t" \
+            "ldrsh %[bi], [%[bp], #2]\n\t" \
+            "smull %[tt], %[mi], r1, %[br]\n\t" \
+            "smlal %[tt], %[mi], r0, %[bi]\n\t" \
+            "rsb %[bi], %[bi], #0\n\t" \
+            "smull r0, %[mr], %[br], r0\n\t" \
+            "mov %[tt], %[tt], lsr #15\n\t" \
+            "smlal r0, %[mr], r1, %[bi]\n\t" \
+            "orr %[mi], %[tt], %[mi], lsl #17\n\t" \
+            "mov r0, r0, lsr #15\n\t" \
+            "orr %[mr], r0, %[mr], lsl #17\n\t" \
+            : [mr]"=r"((m).r), [mi]"=r"((m).i), \
+              [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
+            : [ap]"r"(&(a)), [bp]"r"(&(b)) \
+            : "r0", "r1" \
+        ); \
+    } \
+    while(0)
+
+#undef C_MUL4
+#define C_MUL4(m,a,b) \
+    do{ \
+       int br__; \
+       int bi__; \
+       int tt__; \
+        __asm__ __volatile__( \
+            "#C_MUL4\n\t" \
+            "ldm %[ap], {r0,r1}\n\t" \
+            "ldrsh %[br], [%[bp], #0]\n\t" \
+            "ldrsh %[bi], [%[bp], #2]\n\t" \
+            "smull %[tt], %[mi], r1, %[br]\n\t" \
+            "smlal %[tt], %[mi], r0, %[bi]\n\t" \
+            "rsb %[bi], %[bi], #0\n\t" \
+            "smull r0, %[mr], %[br], r0\n\t" \
+            "mov %[tt], %[tt], lsr #17\n\t" \
+            "smlal r0, %[mr], r1, %[bi]\n\t" \
+            "orr %[mi], %[tt], %[mi], lsl #15\n\t" \
+            "mov r0, r0, lsr #17\n\t" \
+            "orr %[mr], r0, %[mr], lsl #15\n\t" \
+            : [mr]"=r"((m).r), [mi]"=r"((m).i), \
+              [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
+            : [ap]"r"(&(a)), [bp]"r"(&(b)) \
+            : "r0", "r1" \
+        ); \
+    } \
+    while(0)
+
+#undef C_MULC
+#define C_MULC(m,a,b) \
+    do{ \
+       int br__; \
+       int bi__; \
+       int tt__; \
+        __asm__ __volatile__( \
+            "#C_MULC\n\t" \
+            "ldm %[ap], {r0,r1}\n\t" \
+            "ldrsh %[br], [%[bp], #0]\n\t" \
+            "ldrsh %[bi], [%[bp], #2]\n\t" \
+            "smull %[tt], %[mr], r0, %[br]\n\t" \
+            "smlal %[tt], %[mr], r1, %[bi]\n\t" \
+            "rsb %[bi], %[bi], #0\n\t" \
+            "smull r1, %[mi], %[br], r1\n\t" \
+            "mov %[tt], %[tt], lsr #15\n\t" \
+            "smlal r1, %[mi], r0, %[bi]\n\t" \
+            "orr %[mr], %[tt], %[mr], lsl #17\n\t" \
+            "mov r1, r1, lsr #15\n\t" \
+            "orr %[mi], r1, %[mi], lsl #17\n\t" \
+            : [mr]"=r"((m).r), [mi]"=r"((m).i), \
+              [br]"=&r"(br__), [bi]"=r"(bi__), [tt]"=r"(tt__) \
+            : [ap]"r"(&(a)), [bp]"r"(&(b)) \
+            : "r0", "r1" \
+        ); \
+    } \
+    while(0)
+
+#endif /* FIXED_POINT */
+
+#endif /* KISS_FFT_ARMv4_H */
diff --git a/celt/arm/kiss_fft_armv5e.h b/celt/arm/kiss_fft_armv5e.h
new file mode 100644 (file)
index 0000000..9eca183
--- /dev/null
@@ -0,0 +1,118 @@
+/*Copyright (c) 2013, Xiph.Org Foundation and contributors.
+
+  All rights reserved.
+
+  Redistribution and use in source and binary forms, with or without
+   modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+       this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+       this list of conditions and the following disclaimer in the
+       documentation and/or other materials provided with the distribution.
+
+  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+  ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+  POSSIBILITY OF SUCH DAMAGE.*/
+
+#ifndef KISS_FFT_ARMv5E_H
+#define KISS_FFT_ARMv5E_H
+
+#if !defined(KISS_FFT_GUTS_H)
+#error "This file should only be included from _kiss_fft_guts.h"
+#endif
+
+#ifdef FIXED_POINT
+
+#if defined(__thumb__)||defined(__thumb2__)
+#define LDRD_CONS "Q"
+#else
+#define LDRD_CONS "Uq"
+#endif
+
+#undef C_MUL
+#define C_MUL(m,a,b) \
+    do{ \
+        int mr1__; \
+        int mr2__; \
+        int mi__; \
+        long long aval__; \
+        int bval__; \
+        __asm__( \
+            "#C_MUL\n\t" \
+            "ldrd %[aval], %H[aval], %[ap]\n\t" \
+            "ldr %[bval], %[bp]\n\t" \
+            "smulwb %[mi], %H[aval], %[bval]\n\t" \
+            "smulwb %[mr1], %[aval], %[bval]\n\t" \
+            "smulwt %[mr2], %H[aval], %[bval]\n\t" \
+            "smlawt %[mi], %[aval], %[bval], %[mi]\n\t" \
+            : [mr1]"=r"(mr1__), [mr2]"=r"(mr2__), [mi]"=r"(mi__), \
+              [aval]"=&r"(aval__), [bval]"=r"(bval__) \
+            : [ap]LDRD_CONS(a), [bp]"m"(b) \
+        ); \
+        (m).r = SHL32(SUB32(mr1__, mr2__), 1); \
+        (m).i = SHL32(mi__, 1); \
+    } \
+    while(0)
+
+#undef C_MUL4
+#define C_MUL4(m,a,b) \
+    do{ \
+        int mr1__; \
+        int mr2__; \
+        int mi__; \
+        long long aval__; \
+        int bval__; \
+        __asm__( \
+            "#C_MUL4\n\t" \
+            "ldrd %[aval], %H[aval], %[ap]\n\t" \
+            "ldr %[bval], %[bp]\n\t" \
+            "smulwb %[mi], %H[aval], %[bval]\n\t" \
+            "smulwb %[mr1], %[aval], %[bval]\n\t" \
+            "smulwt %[mr2], %H[aval], %[bval]\n\t" \
+            "smlawt %[mi], %[aval], %[bval], %[mi]\n\t" \
+            : [mr1]"=r"(mr1__), [mr2]"=r"(mr2__), [mi]"=r"(mi__), \
+              [aval]"=&r"(aval__), [bval]"=r"(bval__) \
+            : [ap]LDRD_CONS(a), [bp]"m"(b) \
+        ); \
+        (m).r = SHR32(SUB32(mr1__, mr2__), 1); \
+        (m).i = SHR32(mi__, 1); \
+    } \
+    while(0)
+
+#undef C_MULC
+#define C_MULC(m,a,b) \
+    do{ \
+        int mr__; \
+        int mi1__; \
+        int mi2__; \
+        long long aval__; \
+        int bval__; \
+        __asm__( \
+            "#C_MULC\n\t" \
+            "ldrd %[aval], %H[aval], %[ap]\n\t" \
+            "ldr %[bval], %[bp]\n\t" \
+            "smulwb %[mr], %[aval], %[bval]\n\t" \
+            "smulwb %[mi1], %H[aval], %[bval]\n\t" \
+            "smulwt %[mi2], %[aval], %[bval]\n\t" \
+            "smlawt %[mr], %H[aval], %[bval], %[mr]\n\t" \
+            : [mr]"=r"(mr__), [mi1]"=r"(mi1__), [mi2]"=r"(mi2__), \
+              [aval]"=&r"(aval__), [bval]"=r"(bval__) \
+            : [ap]LDRD_CONS(a), [bp]"m"(b) \
+        ); \
+        (m).r = SHL32(mr__, 1); \
+        (m).i = SHL32(SUB32(mi1__, mi2__), 1); \
+    } \
+    while(0)
+
+#endif /* FIXED_POINT */
+
+#endif /* KISS_FFT_GUTS_H */
index 9631d7f..64c0b0e 100644 (file)
@@ -577,11 +577,11 @@ static inline opus_int64 silk_max_64(opus_int64 a, opus_int64 b)
 #include "MacroDebug.h"
 
 #ifdef ARMv4_ASM
-#include "SigProc_FIX_armv4.h"
+#include "arm/SigProc_FIX_armv4.h"
 #endif
 
 #ifdef ARMv5E_ASM
-#include "SigProc_FIX_armv5e.h"
+#include "arm/SigProc_FIX_armv5e.h"
 #endif
 
 #ifdef  __cplusplus
similarity index 100%
rename from silk/macros_armv4.h
rename to silk/arm/macros_armv4.h
index c477dfa..8aba9bb 100644 (file)
@@ -101,11 +101,11 @@ static inline opus_int32 silk_CLZ32(opus_int32 in32)
 #endif
 
 #ifdef ARMv4_ASM
-#include "macros_armv4.h"
+#include "arm/macros_armv4.h"
 #endif
 
 #ifdef ARMv5E_ASM
-#include "macros_armv5e.h"
+#include "arm/macros_armv5e.h"
 #endif
 
 #endif /* SILK_MACROS_H */