summaryrefslogtreecommitdiff
path: root/common_audio/signal_processing/complex_fft.c
diff options
context:
space:
mode:
Diffstat (limited to 'common_audio/signal_processing/complex_fft.c')
-rw-r--r--common_audio/signal_processing/complex_fft.c33
1 files changed, 16 insertions, 17 deletions
diff --git a/common_audio/signal_processing/complex_fft.c b/common_audio/signal_processing/complex_fft.c
index a026b70b..c8230647 100644
--- a/common_audio/signal_processing/complex_fft.c
+++ b/common_audio/signal_processing/complex_fft.c
@@ -105,7 +105,6 @@ int WebRtcSpl_ComplexFFT(int16_t frfi[], int stages, int mode)
#ifdef WEBRTC_ARCH_ARM_V7
int32_t wri = 0;
- int32_t frfi_r = 0;
__asm __volatile("pkhbt %0, %1, %2, lsl #16" : "=r"(wri) :
"r"((int32_t)wr), "r"((int32_t)wi));
#endif
@@ -115,19 +114,19 @@ int WebRtcSpl_ComplexFFT(int16_t frfi[], int stages, int mode)
j = i + l;
#ifdef WEBRTC_ARCH_ARM_V7
- __asm __volatile(
- "pkhbt %[frfi_r], %[frfi_even], %[frfi_odd], lsl #16\n\t"
- "smlsd %[tr32], %[wri], %[frfi_r], %[cfftrnd]\n\t"
- :[frfi_r]"+r"(frfi_r),
- [tr32]"=r"(tr32)
- :[frfi_even]"r"((int32_t)frfi[2*j]),
- [frfi_odd]"r"((int32_t)frfi[2*j +1]),
- [wri]"r"(wri),
- [cfftrnd]"r"(CFFTRND)
- );
- __asm __volatile("smladx %0, %1, %2, %3\n\t" : "=r"(ti32) :
- "r"(wri), "r"(frfi_r), "r"(CFFTRND));
-
+ register int32_t frfi_r;
+ __asm __volatile(
+ "pkhbt %[frfi_r], %[frfi_even], %[frfi_odd],"
+ " lsl #16\n\t"
+ "smlsd %[tr32], %[wri], %[frfi_r], %[cfftrnd]\n\t"
+ "smladx %[ti32], %[wri], %[frfi_r], %[cfftrnd]\n\t"
+ :[frfi_r]"=&r"(frfi_r),
+ [tr32]"=&r"(tr32),
+ [ti32]"=r"(ti32)
+ :[frfi_even]"r"((int32_t)frfi[2*j]),
+ [frfi_odd]"r"((int32_t)frfi[2*j +1]),
+ [wri]"r"(wri),
+ [cfftrnd]"r"(CFFTRND));
#else
tr32 = WEBRTC_SPL_MUL_16_16(wr, frfi[2 * j])
- WEBRTC_SPL_MUL_16_16(wi, frfi[2 * j + 1]) + CFFTRND;
@@ -252,7 +251,6 @@ int WebRtcSpl_ComplexIFFT(int16_t frfi[], int stages, int mode)
#ifdef WEBRTC_ARCH_ARM_V7
int32_t wri = 0;
- int32_t frfi_r = 0;
__asm __volatile("pkhbt %0, %1, %2, lsl #16" : "=r"(wri) :
"r"((int32_t)wr), "r"((int32_t)wi));
#endif
@@ -262,12 +260,13 @@ int WebRtcSpl_ComplexIFFT(int16_t frfi[], int stages, int mode)
j = i + l;
#ifdef WEBRTC_ARCH_ARM_V7
+ register int32_t frfi_r;
__asm __volatile(
"pkhbt %[frfi_r], %[frfi_even], %[frfi_odd], lsl #16\n\t"
"smlsd %[tr32], %[wri], %[frfi_r], %[cifftrnd]\n\t"
"smladx %[ti32], %[wri], %[frfi_r], %[cifftrnd]\n\t"
- :[frfi_r]"+r"(frfi_r),
- [tr32]"=r"(tr32),
+ :[frfi_r]"=&r"(frfi_r),
+ [tr32]"=&r"(tr32),
[ti32]"=r"(ti32)
:[frfi_even]"r"((int32_t)frfi[2*j]),
[frfi_odd]"r"((int32_t)frfi[2*j +1]),