1 /* { dg-do compile { target bfin-*-* } } */
2 /* { dg-options "-O2" } */
3 
4 typedef short __v2hi __attribute__ ((vector_size (4)));
5 typedef __v2hi raw2x16;
6 typedef raw2x16 fract2x16;
7 typedef short fract16;
8 typedef struct complex_fract16
9 {
10   fract16 re;
11   fract16 im;
12 } __attribute__ ((aligned (4))) complex_fract16;
13 
14 
15 __inline__ __attribute__ ((always_inline))
csqu_fr16(complex_fract16 _a)16      static complex_fract16 csqu_fr16 (complex_fract16 _a)
17 {
18   complex_fract16 _x;
19   fract2x16 i =
20     __builtin_bfin_csqu_fr16 (__builtin_bfin_compose_2x16 ((_a).im, (_a).re));
21   (_x).re = __builtin_bfin_extract_lo (i);
22   (_x).im = __builtin_bfin_extract_hi (i);
23   return _x;
24 }
25 
f(complex_fract16 _a)26 complex_fract16 f (complex_fract16 _a)
27 {
28   return csqu_fr16 (_a);
29 }
30