Reduce the scope of Ne10 includes
[opus.git] / celt / _kiss_fft_guts.h
index cbe7557..17392b3 100644 (file)
 #   define S_MUL(a,b) MULT16_32_Q15(b, a)
 
 #   define C_MUL(m,a,b) \
-      do{ (m).r = SUB32(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \
-          (m).i = ADD32(S_MUL((a).r,(b).i) , S_MUL((a).i,(b).r)); }while(0)
+      do{ (m).r = SUB32_ovflw(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \
+          (m).i = ADD32_ovflw(S_MUL((a).r,(b).i) , S_MUL((a).i,(b).r)); }while(0)
 
 #   define C_MULC(m,a,b) \
-      do{ (m).r = ADD32(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \
-          (m).i = SUB32(S_MUL((a).i,(b).r) , S_MUL((a).r,(b).i)); }while(0)
-
-#   define C_MUL4(m,a,b) \
-      do{ (m).r = SHR32(SUB32(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)),2); \
-          (m).i = SHR32(ADD32(S_MUL((a).r,(b).i) , S_MUL((a).i,(b).r)),2); }while(0)
+      do{ (m).r = ADD32_ovflw(S_MUL((a).r,(b).r) , S_MUL((a).i,(b).i)); \
+          (m).i = SUB32_ovflw(S_MUL((a).i,(b).r) , S_MUL((a).r,(b).i)); }while(0)
 
 #   define C_MULBYSCALAR( c, s ) \
       do{ (c).r =  S_MUL( (c).r , s ) ;\
                 DIVSCALAR( (c).i  , div); }while (0)
 
 #define  C_ADD( res, a,b)\
-    do {(res).r=ADD32((a).r,(b).r);  (res).i=ADD32((a).i,(b).i); \
+    do {(res).r=ADD32_ovflw((a).r,(b).r);  (res).i=ADD32_ovflw((a).i,(b).i); \
     }while(0)
 #define  C_SUB( res, a,b)\
-    do {(res).r=SUB32((a).r,(b).r);  (res).i=SUB32((a).i,(b).i); \
+    do {(res).r=SUB32_ovflw((a).r,(b).r);  (res).i=SUB32_ovflw((a).i,(b).i); \
     }while(0)
 #define C_ADDTO( res , a)\
-    do {(res).r = ADD32((res).r, (a).r);  (res).i = ADD32((res).i,(a).i);\
+    do {(res).r = ADD32_ovflw((res).r, (a).r);  (res).i = ADD32_ovflw((res).i,(a).i);\
     }while(0)
 
 #define C_SUBFROM( res , a)\
-    do {(res).r = ADD32((res).r,(a).r);  (res).i = SUB32((res).i,(a).i); \
+    do {(res).r = ADD32_ovflw((res).r,(a).r);  (res).i = SUB32_ovflw((res).i,(a).i); \
     }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 */
-
-#if defined(ARMv5E_ASM)
-
-#if defined(__thumb__)||defined(__thumb2__)
-#define LDRD_CONS "Q"
-#else
-#define LDRD_CONS "Uq"
+#if defined(OPUS_ARM_INLINE_ASM)
+#include "arm/kiss_fft_armv4.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 */
+#if defined(OPUS_ARM_INLINE_EDSP)
+#include "arm/kiss_fft_armv5e.h"
+#endif
+#if defined(MIPSr1_ASM)
+#include "mips/kiss_fft_mipsr1.h"
+#endif
 
 #else  /* not FIXED_POINT*/