26 #ifndef KISS_FFT_MIPSR1_H 27 #define KISS_FFT_MIPSR1_H 29 #if !defined(KISS_FFT_GUTS_H) 30 #error "This file should only be included from _kiss_fft_guts.h" 35 #define S_MUL_ADD(a, b, c, d) (S_MUL(a,b)+S_MUL(c,d)) 36 #define S_MUL_SUB(a, b, c, d) (S_MUL(a,b)-S_MUL(c,d)) 39 static inline int S_MUL_ADD(
int a,
int b,
int c,
int d) {
41 asm volatile(
"MULT $ac1, %0, %1" : :
"r" ((
int)a),
"r" ((
int)b));
42 asm volatile(
"madd $ac1, %0, %1" : :
"r" ((
int)c),
"r" ((
int)d));
43 asm volatile(
"EXTR.W %0,$ac1, %1" :
"=r" (
m):
"i" (15));
48 static inline int S_MUL_SUB(
int a,
int b,
int c,
int d) {
50 asm volatile(
"MULT $ac1, %0, %1" : :
"r" ((
int)a),
"r" ((
int)b));
51 asm volatile(
"msub $ac1, %0, %1" : :
"r" ((
int)c),
"r" ((
int)d));
52 asm volatile(
"EXTR.W %0,$ac1, %1" :
"=r" (
m):
"i" (15));
57 # define C_MUL(m,a,b) (m=C_MUL_fun(a,b)) 61 asm volatile(
"MULT $ac1, %0, %1" : :
"r" ((
int)a.
r),
"r" ((
int)b.
r));
62 asm volatile(
"msub $ac1, %0, %1" : :
"r" ((
int)a.
i),
"r" ((
int)b.
i));
63 asm volatile(
"EXTR.W %0,$ac1, %1" :
"=r" (m.
r):
"i" (15));
64 asm volatile(
"MULT $ac1, %0, %1" : :
"r" ((
int)a.
r),
"r" ((
int)b.
i));
65 asm volatile(
"madd $ac1, %0, %1" : :
"r" ((
int)a.
i),
"r" ((
int)b.
r));
66 asm volatile(
"EXTR.W %0,$ac1, %1" :
"=r" (m.
i):
"i" (15));
71 # define C_MULC(m,a,b) (m=C_MULC_fun(a,b)) 75 asm volatile(
"MULT $ac1, %0, %1" : :
"r" ((
int)a.
r),
"r" ((
int)b.
r));
76 asm volatile(
"madd $ac1, %0, %1" : :
"r" ((
int)a.
i),
"r" ((
int)b.
i));
77 asm volatile(
"EXTR.W %0,$ac1, %1" :
"=r" (m.
r):
"i" (15));
78 asm volatile(
"MULT $ac1, %0, %1" : :
"r" ((
int)a.
i),
"r" ((
int)b.
r));
79 asm volatile(
"msub $ac1, %0, %1" : :
"r" ((
int)a.
r),
"r" ((
int)b.
i));
80 asm volatile(
"EXTR.W %0,$ac1, %1" :
"=r" (m.
i):
"i" (15));
87 #define OVERRIDE_kf_bfly5 119 Fout = Fout_beg + i*mm;
127 for ( u=0; u<
m; ++
u ) {
131 C_MUL(scratch[1] ,*Fout1, tw[u*fstride]);
132 C_MUL(scratch[2] ,*Fout2, tw[2*u*fstride]);
133 C_MUL(scratch[3] ,*Fout3, tw[3*u*fstride]);
134 C_MUL(scratch[4] ,*Fout4, tw[4*u*fstride]);
136 C_ADD( scratch[7],scratch[1],scratch[4]);
137 C_SUB( scratch[10],scratch[1],scratch[4]);
138 C_ADD( scratch[8],scratch[2],scratch[3]);
139 C_SUB( scratch[9],scratch[2],scratch[3]);
141 Fout0->
r += scratch[7].
r + scratch[8].
r;
142 Fout0->
i += scratch[7].
i + scratch[8].
i;
143 scratch[5].
r = scratch[0].
r + S_MUL_ADD(scratch[7].
r,ya.
r,scratch[8].
r,yb.
r);
144 scratch[5].
i = scratch[0].
i + S_MUL_ADD(scratch[7].i,ya.
r,scratch[8].
i,yb.
r);
146 scratch[6].
r = S_MUL_ADD(scratch[10].i,ya.
i,scratch[9].
i,yb.
i);
147 scratch[6].
i = -S_MUL_ADD(scratch[10].r,ya.
i,scratch[9].
r,yb.
i);
149 C_SUB(*Fout1,scratch[5],scratch[6]);
150 C_ADD(*Fout4,scratch[5],scratch[6]);
152 scratch[11].
r = scratch[0].
r + S_MUL_ADD(scratch[7].r,yb.
r,scratch[8].
r,ya.
r);
153 scratch[11].
i = scratch[0].
i + S_MUL_ADD(scratch[7].i,yb.
r,scratch[8].
i,ya.
r);
155 scratch[12].
r = S_MUL_SUB(scratch[9].i,ya.
i,scratch[10].
i,yb.
i);
156 scratch[12].
i = S_MUL_SUB(scratch[10].r,yb.
i,scratch[9].
r,ya.
i);
158 C_ADD(*Fout2,scratch[11],scratch[12]);
159 C_SUB(*Fout3,scratch[11],scratch[12]);
161 ++Fout0;++Fout1;++Fout2;++Fout3;++Fout4;
kiss_fft_scalar i
Definition: kiss_fft.h:67
int c
Definition: cpp_unittests.cpp:275
OPENSSL_EXPORT pem_password_cb void * u
Definition: pem.h:398
#define C_MUL(m, a, b)
Definition: _kiss_fft_guts.h:107
#define C_SUB(res, a, b)
Definition: _kiss_fft_guts.h:133
const GLfloat * m
Definition: gl2ext.h:850
#define C_ADD(res, a, b)
Definition: _kiss_fft_guts.h:127
Definition: kiss_fft.h:86
int
Definition: runtests.py:53
kiss_twiddle_scalar r
Definition: kiss_fft.h:71
GLboolean GLboolean GLboolean GLboolean a
Definition: gl2ext.h:306
#define N
Definition: gcc-loops.cpp:14
Definition: kiss_fft.h:65
for i
Definition: complexityMeasures.m:24
const kiss_twiddle_cpx * twiddles
Definition: kiss_fft.h:95
GLboolean GLboolean GLboolean b
Definition: gl2ext.h:306
Definition: kiss_fft.h:70
kiss_fft_scalar r
Definition: kiss_fft.h:66
#define d
Definition: float-mm.c:30
kiss_twiddle_scalar i
Definition: kiss_fft.h:72
GLboolean r
Definition: gl2ext.h:306