Merge -r 127928:132243 from trunk
[official-gcc.git] / gcc / testsuite / gcc.target / mips / fixed-vector-type.c
blob08208f2c2d7f78d9ef5281581d030829da1dad8e
1 /* Test vector fixed-point instructions */
2 /* { dg-do compile { target {fixed_point} } } */
3 /* { dg-mips-options "-march=mips32r2 -mdspr2 -O2" } */
4 /* { dg-final { scan-assembler-times "\taddq_s.ph\t" 2 } } */
5 /* { dg-final { scan-assembler-times "\tsubq_s.ph\t" 2 } } */
6 /* { dg-final { scan-assembler-times "\taddu_s.qb\t" 1 } } */
7 /* { dg-final { scan-assembler-times "\taddu_s.ph\t" 2 } } */
8 /* { dg-final { scan-assembler-times "\tsubu_s.qb\t" 1 } } */
9 /* { dg-final { scan-assembler-times "\tsubu_s.ph\t" 2 } } */
10 /* { dg-final { scan-assembler-times "\tmulq_rs.ph\t" 1 } } */
12 typedef _Sat unsigned short _Fract sat_v4uqq __attribute__ ((vector_size(4)));
13 typedef _Sat unsigned _Fract sat_v2uhq __attribute__ ((vector_size(4)));
14 typedef _Sat unsigned short _Accum sat_v2uha __attribute__ ((vector_size(4)));
15 typedef _Sat _Fract sat_v2hq __attribute__ ((vector_size(4)));
16 typedef _Sat short _Accum sat_v2ha __attribute__ ((vector_size(4)));
18 typedef unsigned short _Fract v4uqq __attribute__ ((vector_size(4)));
19 typedef unsigned _Fract v2uhq __attribute__ ((vector_size(4)));
20 typedef unsigned short _Accum v2uha __attribute__ ((vector_size(4)));
21 typedef _Fract v2hq __attribute__ ((vector_size(4)));
22 typedef short _Accum v2ha __attribute__ ((vector_size(4)));
24 NOMIPS16 sat_v2hq test1 (sat_v2hq a, sat_v2hq b)
26 return a + b;
29 NOMIPS16 sat_v2ha test2 (sat_v2ha a, sat_v2ha b)
31 return a + b;
34 NOMIPS16 sat_v2hq test3 (sat_v2hq a, sat_v2hq b)
36 return a - b;
39 NOMIPS16 sat_v2ha test4 (sat_v2ha a, sat_v2ha b)
41 return a - b;
44 NOMIPS16 sat_v4uqq test5 (sat_v4uqq a, sat_v4uqq b)
46 return a + b;
49 NOMIPS16 sat_v2uhq test6 (sat_v2uhq a, sat_v2uhq b)
51 return a + b;
54 NOMIPS16 sat_v2uha test7 (sat_v2uha a, sat_v2uha b)
56 return a + b;
59 NOMIPS16 sat_v4uqq test8 (sat_v4uqq a, sat_v4uqq b)
61 return a - b;
64 NOMIPS16 sat_v2uhq test9 (sat_v2uhq a, sat_v2uhq b)
66 return a - b;
69 NOMIPS16 sat_v2uha test10 (sat_v2uha a, sat_v2uha b)
71 return a - b;
74 NOMIPS16 sat_v2hq test11 (sat_v2hq a, sat_v2hq b)
76 return a * b;
79 NOMIPS16 v2hq test12 (v2hq a, v2hq b)
81 return a + b;
84 NOMIPS16 v2hq test13 (v2hq a, v2hq b)
86 return a - b;
89 NOMIPS16 v2hq test14 (v2hq a, v2hq b)
91 return a * b;
94 NOMIPS16 v2ha test15 (v2ha a, v2ha b)
96 return a + b;
99 NOMIPS16 v2ha test16 (v2ha a, v2ha b)
101 return a - b;
104 NOMIPS16 v4uqq test17 (v4uqq a, v4uqq b)
106 return a + b;
109 NOMIPS16 v4uqq test18 (v4uqq a, v4uqq b)
111 return a - b;
114 NOMIPS16 v2uhq test19 (v2uhq a, v2uhq b)
116 return a + b;
119 NOMIPS16 v2uhq test20 (v2uhq a, v2uhq b)
121 return a - b;
124 NOMIPS16 v2uha test21 (v2uha a, v2uha b)
126 return a + b;
129 NOMIPS16 v2uha test22 (v2uha a, v2uha b)
131 return a - b;