2018-03-08 Richard Biener <rguenther@suse.de>
[official-gcc.git] / gcc / testsuite / gcc.target / mips / fixed-vector-type.c
blobddd9660f1d4e1545b279652ac7110e228840a79e
1 /* Test vector fixed-point instructions */
2 /* { dg-do compile { target { fixed_point } } } */
3 /* { dg-options "-mdspr2" } */
4 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
5 /* { dg-final { scan-assembler-times "\taddq_s.ph\t" 2 } } */
6 /* { dg-final { scan-assembler-times "\tsubq_s.ph\t" 2 } } */
7 /* { dg-final { scan-assembler-times "\taddu_s.qb\t" 1 } } */
8 /* { dg-final { scan-assembler-times "\taddu_s.ph\t" 2 } } */
9 /* { dg-final { scan-assembler-times "\tsubu_s.qb\t" 1 } } */
10 /* { dg-final { scan-assembler-times "\tsubu_s.ph\t" 2 } } */
11 /* { dg-final { scan-assembler-times "\tmulq_rs.ph\t" 1 } } */
13 typedef _Sat unsigned short _Fract sat_v4uqq __attribute__ ((vector_size(4)));
14 typedef _Sat unsigned _Fract sat_v2uhq __attribute__ ((vector_size(4)));
15 typedef _Sat unsigned short _Accum sat_v2uha __attribute__ ((vector_size(4)));
16 typedef _Sat _Fract sat_v2hq __attribute__ ((vector_size(4)));
17 typedef _Sat short _Accum sat_v2ha __attribute__ ((vector_size(4)));
19 typedef unsigned short _Fract v4uqq __attribute__ ((vector_size(4)));
20 typedef unsigned _Fract v2uhq __attribute__ ((vector_size(4)));
21 typedef unsigned short _Accum v2uha __attribute__ ((vector_size(4)));
22 typedef _Fract v2hq __attribute__ ((vector_size(4)));
23 typedef short _Accum v2ha __attribute__ ((vector_size(4)));
25 NOMIPS16 sat_v2hq test1 (sat_v2hq a, sat_v2hq b)
27 return a + b;
30 NOMIPS16 sat_v2ha test2 (sat_v2ha a, sat_v2ha b)
32 return a + b;
35 NOMIPS16 sat_v2hq test3 (sat_v2hq a, sat_v2hq b)
37 return a - b;
40 NOMIPS16 sat_v2ha test4 (sat_v2ha a, sat_v2ha b)
42 return a - b;
45 NOMIPS16 sat_v4uqq test5 (sat_v4uqq a, sat_v4uqq b)
47 return a + b;
50 NOMIPS16 sat_v2uhq test6 (sat_v2uhq a, sat_v2uhq b)
52 return a + b;
55 NOMIPS16 sat_v2uha test7 (sat_v2uha a, sat_v2uha b)
57 return a + b;
60 NOMIPS16 sat_v4uqq test8 (sat_v4uqq a, sat_v4uqq b)
62 return a - b;
65 NOMIPS16 sat_v2uhq test9 (sat_v2uhq a, sat_v2uhq b)
67 return a - b;
70 NOMIPS16 sat_v2uha test10 (sat_v2uha a, sat_v2uha b)
72 return a - b;
75 NOMIPS16 sat_v2hq test11 (sat_v2hq a, sat_v2hq b)
77 return a * b;
80 NOMIPS16 v2hq test12 (v2hq a, v2hq b)
82 return a + b;
85 NOMIPS16 v2hq test13 (v2hq a, v2hq b)
87 return a - b;
90 NOMIPS16 v2hq test14 (v2hq a, v2hq b)
92 return a * b;
95 NOMIPS16 v2ha test15 (v2ha a, v2ha b)
97 return a + b;
100 NOMIPS16 v2ha test16 (v2ha a, v2ha b)
102 return a - b;
105 NOMIPS16 v4uqq test17 (v4uqq a, v4uqq b)
107 return a + b;
110 NOMIPS16 v4uqq test18 (v4uqq a, v4uqq b)
112 return a - b;
115 NOMIPS16 v2uhq test19 (v2uhq a, v2uhq b)
117 return a + b;
120 NOMIPS16 v2uhq test20 (v2uhq a, v2uhq b)
122 return a - b;
125 NOMIPS16 v2uha test21 (v2uha a, v2uha b)
127 return a + b;
130 NOMIPS16 v2uha test22 (v2uha a, v2uha b)
132 return a - b;