From 04828296f72cdd7f8e32dbea2cc844badbbef868 Mon Sep 17 00:00:00 2001 From: unknown Date: Tue, 10 Mar 2015 15:11:56 +0100 Subject: [PATCH 1/2] =?UTF-8?q?SIMD=20f=C3=BCr=20Stufe=201=20der=20FFT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fft-org.c | 2 ++ fft.c | 49 +++++++++++++++++++++------------ fft_inst.tie | 77 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 3 files changed, 109 insertions(+), 19 deletions(-) diff --git a/fft-org.c b/fft-org.c index e33de5b..a74dfad 100644 --- a/fft-org.c +++ b/fft-org.c @@ -126,6 +126,7 @@ int fix_fft_org(fixed fr[], fixed fi[], int m, int inverse) wr >>= 1; wi >>= 1; } + for(i=m; i Date: Tue, 10 Mar 2015 15:13:19 +0100 Subject: [PATCH 2/2] FFT_simd_store in inline asm kombiniert --- fft.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/fft.c b/fft.c index e6fdbf0..47811a5 100644 --- a/fft.c +++ b/fft.c @@ -37,6 +37,14 @@ #include +#define FFT_combined_store(_fr, _fi, _i, _simd_r, _simd_i) \ + asm ("{" "\n" \ + " fft_simd_store %1, %0, %2" "\n" \ + " nop" "\n" \ + " fft_simd_store %3, %0, %4" "\n" \ + "}" \ + :: "r" (_i), "r" (_fr), "r" (_simd_r), "r" (_fi), "r" (_simd_i)); + /* * fix_fft() - perform fast Fourier transform. * @@ -122,8 +130,7 @@ int fix_fft(fixed fr[], fixed fi[], int m, int inverse) simd_r = FFT_simd_load(fr, i); simd_i = FFT_simd_load(fi, i); FFT_simd_first(simd_r, simd_i, (xtbool) shift); - FFT_simd_store(fr, i, simd_r); - FFT_simd_store(fi, i, simd_i); + FFT_combined_store(fr, fi, i, simd_r, simd_i); } } else