DSP_fft16x16t

#define DIG_REV(i, m, j) ((j) = (_shfl(_rotl(_bitr(_deal(i)), 16)) >> (m))) #else

# define DIG_REV(i, m, j)

 

 

 

\

do {

 

 

 

\

unsigned _ = (i);

 

 

 

\

_ = ((_ & 0x33333333) <<

2)

((_ & ~0x33333333) >>

2);

\

_ = ((_ & 0x0F0F0F0F) <<

4)

((_ & ~0x0F0F0F0F) >>

4);

\

_ = ((_ & 0x00FF00FF) <<

8)

((_ & ~0x00FF00FF) >>

8);

\

_ = ((_ & 0x0000FFFF) << 16)

((_ & ~0x0000FFFF) >> 16);

\

(j) = _ >> (m);

 

 

 

\

} while (0)

 

 

 

 

#endif

 

 

 

 

void DSP_fft16x16t_cn(const short *restrict ptr_w, int npoints, short * ptr_x, short * ptr_y)

{

int

i, j, l1, l2, h2, predj, tw_offset, stride, fft_jmp;

short

xt0_0, yt0_0, xt1_0, yt1_0, xt2_0, yt2_0;

short

xt0_1, yt0_1, xt1_1, yt1_1, xt2_1, yt2_1;

short

xh0_0, xh1_0, xh20_0, xh21_0, xl0_0, xl1_0, xl20_0, xl21_0;

short

xh0_1, xh1_1, xh20_1, xh21_1, xl0_1, xl1_1, xl20_1, xl21_1;

short

x_0, x_1, x_2, x_3, x_l1_0, x_l1_1, x_l1_2, x_l1_3, x_l2_0, x_l2_1;

short

xh0_2, xh1_2, xl0_2, xl1_2, xh0_3, xh1_3, xl0_3, xl1_3;

short

x_4, x_5, x_6, x_7, x_l2_2, x_l2_3, x_h2_0, x_h2_1, x_h2_2, x_h2_3;

short

x_8, x_9, x_a, x_b, x_c, x_d, x_e, x_f;

short

si10, si20, si30, co10, co20, co30;

short

si11, si21, si31, co11, co21, co31;

short

* x, * x2, * x0;

short

* y0, * y1, * y2, *y3;

short

n00, n10, n20, n30, n01, n11, n21, n31;

short

n02, n12, n22, n32, n03, n13, n23, n33;

short

y0r, y0i, y4r, y4i;

int

n0, j0;

int

radix, m;

int

norm;

const

short *w;

4-108

Page 136
Image 136
Texas Instruments TMS320C64X manual 108