beautypg.com

Texas Instruments TMS320C64X User Manual

Page 136

background image

DSP_fft16x16t

4-108

# 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;