Merged revisions 143552,143554,143557,143560,143562,143564-143567,143570-143573,14357...
[official-gcc.git] / gcc / testsuite / gcc.target / mips / fixed-scalar-type.c
blobb4734f4d5224b6c51acfa48763493c5c2d421dc7
1 /* Test scalar fixed-point instructions */
2 /* { dg-do compile { target { fixed_point } } } */
3 /* { dg-options "-mdspr2 -O2" } */
4 /* { dg-final { scan-assembler-times "\taddu\t" 10 } } */
5 /* { dg-final { scan-assembler-times "\tsubu\t" 10 } } */
6 /* { dg-final { scan-assembler "\taddu_s.qb\t" } } */
7 /* { dg-final { scan-assembler-times "\taddu_s.ph\t" 2 } } */
8 /* { dg-final { scan-assembler-times "\taddq_s.ph\t" 2 } } */
9 /* { dg-final { scan-assembler-times "\taddq_s.w\t" 2 } } */
10 /* { dg-final { scan-assembler "\tsubu_s.qb\t" } } */
11 /* { dg-final { scan-assembler-times "\tsubu_s.ph\t" 2 } } */
12 /* { dg-final { scan-assembler-times "\tsubq_s.ph\t" 2 } } */
13 /* { dg-final { scan-assembler-times "\tsubq_s.w\t" 2 } } */
14 /* { dg-final { scan-assembler-times "\tmulq_rs.ph\t" 1 } } */
15 /* { dg-final { scan-assembler-times "\tmulq_rs.w\t" 1 } } */
17 short _Fract non_sat_test1 (short _Fract a, short _Fract b)
19 return a + b;
22 _Fract non_sat_test2 (_Fract a, _Fract b)
24 return a + b;
27 long _Fract non_sat_test3 (long _Fract a, long _Fract b)
29 return a + b;
32 unsigned short _Fract non_sat_test4 (unsigned short _Fract a,
33 unsigned short _Fract b)
35 return a + b;
38 unsigned _Fract non_sat_test5 (unsigned _Fract a, unsigned _Fract b)
40 return a + b;
43 unsigned long _Fract non_sat_test6 (unsigned long _Fract a,
44 unsigned long _Fract b)
46 return a + b;
49 short _Accum non_sat_test7 (short _Accum a, short _Accum b)
51 return a + b;
54 _Accum non_sat_test8 (_Accum a, _Accum b)
56 return a + b;
59 unsigned short _Accum non_sat_test9 (unsigned short _Accum a,
60 unsigned short _Accum b)
62 return a + b;
65 unsigned _Accum non_sat_test10 (unsigned _Accum a, unsigned _Accum b)
67 return a + b;
70 short _Fract non_sat_test11 (short _Fract a, short _Fract b)
72 return a - b;
75 _Fract non_sat_test12 (_Fract a, _Fract b)
77 return a - b;
80 long _Fract non_sat_test13 (long _Fract a, long _Fract b)
82 return a - b;
85 unsigned short _Fract non_sat_test14 (unsigned short _Fract a,
86 unsigned short _Fract b)
88 return a - b;
91 unsigned _Fract non_sat_test15 (unsigned _Fract a, unsigned _Fract b)
93 return a - b;
96 unsigned long _Fract non_sat_test16 (unsigned long _Fract a,
97 unsigned long _Fract b)
99 return a - b;
102 short _Accum non_sat_test17 (short _Accum a, short _Accum b)
104 return a - b;
107 _Accum non_sat_test18 (_Accum a, _Accum b)
109 return a - b;
112 unsigned short _Accum non_sat_test19 (unsigned short _Accum a,
113 unsigned short _Accum b)
115 return a - b;
118 unsigned _Accum non_sat_test20 (unsigned _Accum a, unsigned _Accum b)
120 return a - b;
123 NOMIPS16 _Sat unsigned short _Fract test1 (_Sat unsigned short _Fract a,
124 _Sat unsigned short _Fract b)
126 return a + b;
129 NOMIPS16 _Sat unsigned _Fract test2 (_Sat unsigned _Fract a,
130 _Sat unsigned _Fract b)
132 return a + b;
135 NOMIPS16 _Sat unsigned short _Accum test3 (_Sat unsigned short _Accum a,
136 _Sat unsigned short _Accum b)
138 return a + b;
141 NOMIPS16 _Sat _Fract test4 (_Sat _Fract a, _Sat _Fract b)
143 return a + b;
146 NOMIPS16 _Sat long _Fract test5 (_Sat long _Fract a, _Sat long _Fract b)
148 return a + b;
151 NOMIPS16 _Sat short _Accum test6 (_Sat short _Accum a, _Sat short _Accum b)
153 return a + b;
156 NOMIPS16 _Sat _Accum test7 (_Sat _Accum a, _Sat _Accum b)
158 return a + b;
161 NOMIPS16 _Sat unsigned short _Fract test8 (_Sat unsigned short _Fract a,
162 _Sat unsigned short _Fract b)
164 return a - b;
167 NOMIPS16 _Sat unsigned _Fract test9 (_Sat unsigned _Fract a,
168 _Sat unsigned _Fract b)
170 return a - b;
173 NOMIPS16 _Sat unsigned short _Accum test10 (_Sat unsigned short _Accum a,
174 _Sat unsigned short _Accum b)
176 return a - b;
179 NOMIPS16 _Sat _Fract test11 (_Sat _Fract a, _Sat _Fract b)
181 return a - b;
184 NOMIPS16 _Sat long _Fract test12 (_Sat long _Fract a, _Sat long _Fract b)
186 return a - b;
189 NOMIPS16 _Sat short _Accum test13 (_Sat short _Accum a, _Sat short _Accum b)
191 return a - b;
194 NOMIPS16 _Sat _Accum test14 (_Sat _Accum a, _Sat _Accum b)
196 return a - b;
199 NOMIPS16 _Sat _Fract test15 (_Sat _Fract a, _Sat _Fract b)
201 return a * b;
204 NOMIPS16 _Sat long _Fract test16 (_Sat long _Fract a, _Sat long _Fract b)
206 return a * b;
209 NOMIPS16 _Fract test17 (_Fract a, _Fract b)
211 return a * b;
214 NOMIPS16 long _Fract test18 (long _Fract a, long _Fract b)
216 return a * b;