# 1 "../fe_TestDsp.c" # 1 "/disk0/scratch/working/src/fe/detector/blackfin//" # 1 "" # 1 "" # 1 "../fe_TestDsp.c" # 1 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 1 # 17 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" # 18 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 3 # 1 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex_typedef.h" 1 3 # 16 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex_typedef.h" 3 # 19 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex_typedef.h" 3 # 1 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/fract_typedef.h" 1 3 # 4 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/fract_typedef.h" 3 # 25 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/fract_typedef.h" 3 typedef short fract16; typedef long fract32; # 27 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex_typedef.h" 2 3 typedef struct complex_fract16 { fract16 re, im; } __attribute__((aligned(4))) complex_fract16; typedef union composite_complex_fract16 { struct complex_fract16 x; long raw; } composite_complex_fract16; typedef struct complex_fract32 { fract32 re, im; } complex_fract32; typedef union composite_complex_fract32 { struct complex_fract32 x; long long raw; } composite_complex_fract32; typedef struct complex_float { float re; float im; } complex_float; typedef struct complex_long_double { long double re; long double im; } complex_long_double; typedef complex_long_double complex_double; # 24 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 2 3 # 1 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/fr2x16_typedef.h" 1 3 # 4 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/fr2x16_typedef.h" 3 # 27 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/fr2x16_typedef.h" 3 # 1 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/r2x16_typedef.h" 1 3 # 4 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/r2x16_typedef.h" 3 # 27 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/r2x16_typedef.h" 3 # 1 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/raw_typedef.h" 1 3 # 4 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/raw_typedef.h" 3 # 25 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/raw_typedef.h" 3 typedef char _raw8; typedef short _raw16; typedef int _raw32; typedef int __v2hi __attribute__ ((__mode__ (__V2HI__))); # 28 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/r2x16_typedef.h" 2 3 typedef __v2hi raw2x16; # 28 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/fr2x16_typedef.h" 2 3 typedef raw2x16 fract2x16; typedef fract2x16 fr2x16; # 25 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 2 3 # 35 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 3 float cabsf (complex_float _a) asm("__cabsf"); long double cabsd (complex_long_double _a) asm("__cabsd"); double cabs (complex_double _a) asm("__cabsd"); fract16 cabs_fr16 (complex_fract16 _a); complex_fract16 conj_fr16 (complex_fract16 _a); # 56 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 3 static __inline complex_fract16 cadd_fr16(complex_fract16 _a, complex_fract16 _b) { complex_fract16 r; fract2x16 i = __builtin_bfin_add_fr2x16(__builtin_bfin_compose_2x16(_a.im, _a.re), __builtin_bfin_compose_2x16(_b.im, _b.re)); { r.re = __builtin_bfin_extract_lo(i); r.im = __builtin_bfin_extract_hi(i); }; return r; } static __inline complex_fract16 csub_fr16(complex_fract16 _a, complex_fract16 _b) { complex_fract16 r; fract2x16 i = __builtin_bfin_sub_fr2x16(__builtin_bfin_compose_2x16(_a.im, _a.re), __builtin_bfin_compose_2x16(_b.im, _b.re)); { r.re = __builtin_bfin_extract_lo(i); r.im = __builtin_bfin_extract_hi(i); }; return r; } # 98 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 3 complex_fract16 cmlt_fr16 (complex_fract16 _a, complex_fract16 _b); static __inline complex_fract16 cmac_fr16(complex_fract16 _sum, complex_fract16 _a, complex_fract16 _b){ complex_fract16 r; fract2x16 i = __builtin_bfin_cmplx_mac(__builtin_bfin_compose_2x16(_sum.im, _sum.re), __builtin_bfin_compose_2x16(_a.im, _a.re), __builtin_bfin_compose_2x16(_b.im, _b.re)); { r.re = __builtin_bfin_extract_lo(i); r.im = __builtin_bfin_extract_hi(i); }; return r; } static __inline complex_fract16 cmsu_fr16(complex_fract16 _sum, complex_fract16 _a, complex_fract16 _b){ complex_fract16 r; fract2x16 i = __builtin_bfin_cmplx_msu(__builtin_bfin_compose_2x16(_sum.im, _sum.re), __builtin_bfin_compose_2x16(_a.im, _a.re), __builtin_bfin_compose_2x16(_b.im, _b.re)); { r.re = __builtin_bfin_extract_lo(i); r.im = __builtin_bfin_extract_hi(i); }; return r; } static __inline fract16 csqu_add_fr16(complex_fract16 _c) { return __builtin_bfin_add_fr1x16(__builtin_bfin_mult_fr1x16(_c.re, _c.re), __builtin_bfin_mult_fr1x16(_c.im, _c.im)); } static __inline fract32 csqu_add_fr32(complex_fract16 _c) { return __builtin_bfin_add_fr1x32(__builtin_bfin_mult_fr1x32(_c.re, _c.re), __builtin_bfin_mult_fr1x32(_c.im,_c.im)); } static __inline fract16 cdst_fr16(complex_fract16 _x, complex_fract16 _y) { return __builtin_bfin_add_fr1x16( __builtin_bfin_mult_fr1x16(__builtin_bfin_sub_fr1x16(_x.re,_y.re), __builtin_bfin_sub_fr1x16(_x.re,_y.re)), __builtin_bfin_mult_fr1x16(__builtin_bfin_sub_fr1x16(_x.im,_y.im), __builtin_bfin_sub_fr1x16(_x.im,_y.im))); } static __inline fract32 cdst_fr32(complex_fract16 _x, complex_fract16 _y) { return __builtin_bfin_add_fr1x32( __builtin_bfin_mult_fr1x32(__builtin_bfin_sub_fr1x16(_x.re,_y.re), __builtin_bfin_sub_fr1x16(_x.re,_y.re)), __builtin_bfin_mult_fr1x32(__builtin_bfin_sub_fr1x16(_x.im,_y.im), __builtin_bfin_sub_fr1x16(_x.im,_y.im))); } # 166 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 3 complex_fract16 cdiv_fr16 (complex_fract16 _a, complex_fract16 _b) asm("__cdiv_fr16"); # 176 "/disk0/scratch/working/uClinux-dist/lib/libbfdsp/include/complex.h" 3 float argf (complex_float _a) asm("__argf"); fract16 arg_fr16 (complex_fract16 _a); complex_fract16 polar_fr16 (fract16 _magnitude, fract16 _phase); fract16 cartesian_fr16 (complex_fract16 _a, fract16* _phase); extern long long __builtin_bfin_conj_fr32(long long); extern int __builtin_bfin_csqu_fr16(int); static __inline complex_fract32 ccompose_fr32(fract32 _real, fract32 _imag) { complex_fract32 _x; _x.re = _real; _x.im = _imag; return _x; } static __inline fract32 real_fr32(complex_fract32 _a) { return _a.re; } static __inline fract32 imag_fr32(complex_fract32 _a) { return _a.im; } static __inline complex_fract32 cadd_fr32(complex_fract32 _a, complex_fract32 _b) { complex_fract32 _x; _x.re = __builtin_bfin_add_fr1x32 (_a.re, _b.re); _x.im = __builtin_bfin_add_fr1x32 (_a.im, _b.im); return _x; } static __inline complex_fract32 csub_fr32(complex_fract32 _a, complex_fract32 _b) { complex_fract32 _x; _x.re = __builtin_bfin_sub_fr1x32 (_a.re, _b.re); _x.im = __builtin_bfin_sub_fr1x32 (_a.im, _b.im); return _x; } static __inline complex_fract32 conj_fr32(complex_fract32 _a) { complex_fract32 _x; _x.im = __builtin_bfin_sub_fr1x32 (0, _a.im); _x.re = _a.re; return _x; } extern complex_fract32 cmul_fr32(complex_fract32, complex_fract32); static __inline complex_fract16 csqu_fr16(complex_fract16 _a) { composite_complex_fract16 _x; _x.x.re = _a.re; _x.x.im = _a.im; _x.raw = __builtin_bfin_csqu_fr16(_x.raw); return _x.x; } # 4 "../fe_TestDsp.c" 2 int main(){ complex_fract16 c,d; c.re = 5*(1<<12); c.im = 0; d.re = 4*(1<<12); d.im = 0; complex_fract16 answer; answer = cmlt_fr16(c,d); return 0; }