Fix warning with -Wsign-compare -Wsystem-headers
[official-gcc.git] / gcc / testsuite / gcc.target / powerpc / fold-vec-logical-ors-longlong.c
blob10c69d3d87b56249dbc44a181f82f7af5c05c387
1 /* Verify that overloaded built-ins for vec_or, vec_xor, vec_nor with
2 * long long inputs produce the right results. */
4 /* { dg-do compile } */
5 /* { dg-require-effective-target powerpc_p8vector_ok } */
6 /* { dg-options "-mpower8-vector -O2" } */
8 #include <altivec.h>
10 vector signed long long
11 test1_or (vector bool long long x, vector signed long long y)
13 vector signed long long *foo;
14 *foo += vec_or (x, y);
15 return *foo;
18 vector signed long long
19 test1_xor (vector bool long long x, vector signed long long y)
21 vector signed long long *foo;
22 *foo += vec_xor (x, y);
23 return *foo;
26 vector signed long long
27 test1_nor (vector bool long long x, vector signed long long y)
29 vector signed long long *foo;
30 *foo += vec_nor (x, y);
31 return *foo;
34 vector signed long long
35 test2_or (vector signed long long x, vector bool long long y)
37 vector signed long long *foo;
38 *foo += vec_or (x, y);
39 return *foo;
42 vector signed long long
43 test2_xor (vector signed long long x, vector bool long long y)
45 vector signed long long *foo;
46 *foo += vec_xor (x, y);
47 return *foo;
50 vector signed long long
51 test2_nor (vector signed long long x, vector bool long long y)
53 vector signed long long *foo;
54 *foo += vec_nor (x, y);
55 return *foo;
58 vector signed long long
59 test3_or (vector signed long long x, vector signed long long y)
61 vector signed long long *foo;
62 *foo += vec_or (x, y);
63 return *foo;
66 vector signed long long
67 test3_xor (vector signed long long x, vector signed long long y)
69 vector signed long long *foo;
70 *foo += vec_xor (x, y);
71 return *foo;
74 vector signed long long
75 test3_nor (vector signed long long x, vector signed long long y)
77 vector signed long long *foo;
78 *foo += vec_nor (x, y);
79 return *foo;
82 vector unsigned long long
83 test4_or (vector bool long long x, vector unsigned long long y)
85 vector unsigned long long *foo;
86 *foo += vec_or (x, y);
87 return *foo;
90 vector unsigned long long
91 test4_xor (vector bool long long x, vector unsigned long long y)
93 vector unsigned long long *foo;
94 *foo += vec_xor (x, y);
95 return *foo;
98 vector unsigned long long
99 test4_nor (vector bool long long x, vector unsigned long long y)
101 vector unsigned long long *foo;
102 *foo += vec_nor (x, y);
103 return *foo;
106 vector unsigned long long
107 test5_or (vector unsigned long long x, vector bool long long y)
109 vector unsigned long long *foo;
110 *foo += vec_or (x, y);
111 return *foo;
114 vector unsigned long long
115 test5_xor (vector unsigned long long x, vector bool long long y)
117 vector unsigned long long *foo;
118 *foo += vec_xor (x, y);
119 return *foo;
122 vector unsigned long long
123 test5_nor (vector unsigned long long x, vector bool long long y)
125 vector unsigned long long *foo;
126 *foo += vec_nor (x, y);
127 return *foo;
130 vector unsigned long long
131 test6_or (vector unsigned long long x, vector unsigned long long y)
133 vector unsigned long long *foo;
134 *foo += vec_or (x, y);
135 return *foo;
138 vector unsigned long long
139 test6_xor (vector unsigned long long x, vector unsigned long long y)
141 vector unsigned long long *foo;
142 *foo += vec_xor (x, y);
143 return *foo;
146 vector unsigned long long
147 test6_nor (vector unsigned long long x, vector unsigned long long y)
149 vector unsigned long long *foo;
150 *foo += vec_nor (x, y);
151 return *foo;
154 // The number of xxlor instructions generated varies between 6 and 24 for
155 // older systems (power6,power7), as well as for 32-bit versus 64-bit targets.
156 // For simplicity, this test now only targets "powerpc_p8vector_ok" environments
157 // where the answer is expected to be 6.
159 /* { dg-final { scan-assembler-times {\mxxlor\M} 6 } } */
160 /* { dg-final { scan-assembler-times {\mxxlxor\M} 6 } } */
161 /* { dg-final { scan-assembler-times {\mxxlnor\M} 6 } } */