Imported Upstream version 4.8.1
[platform/upstream/gcc48.git] / gcc / testsuite / gcc.target / sh / pr51244-17.c
1 /* Check that no unnecessary zero extensions are done on values that are
2    results of arithmetic with T bit inputs.  */
3 /* { dg-do compile { target "sh*-*-*" } } */
4 /* { dg-options "-O1" } */
5 /* { dg-skip-if "" { "sh*-*-*" } { "-m5*" } { "" } } */
6 /* { dg-final { scan-assembler-not "extu|exts" } } */
7
8 int
9 test00 (int a, int b, int c, int d)
10 {
11   int x = a == b;
12   int y = c == 0;
13   return x == y;
14 }
15
16 int
17 test01 (int a, int b, int c, int d)
18 {
19   int x = a == b;
20   int y = c == d;
21   return x == y;
22 }
23
24 int
25 test02 (int a, int b, int c, int d)
26 {
27   int x = a != b;
28   int y = c == d;
29   return x == y;
30 }
31
32 int
33 test03 (int a, int b, int c, int d)
34 {
35   int x = a != b;
36   int y = c != d;
37   return x == y;
38 }
39
40 int
41 test04 (int a, int b, int c, int d)
42 {
43   int x = a != b;
44   int y = c != d;
45   return x == y;
46 }
47
48 int
49 test05 (int a, int b, int c, int d)
50 {
51   int x = a == b;
52   int y = c == 0;
53   return x != y;
54 }
55
56 int
57 test06 (int a, int b, int c, int d)
58 {
59   int x = a == b;
60   int y = c == 0;
61   return x ^ y;
62 }
63
64 int
65 test07 (int a, int b, int c, int d)
66 {
67   int x = a == b;
68   int y = c == 0;
69   return x | y;
70 }
71
72 int
73 test08 (int a, int b, int c, int d)
74 {
75   int x = a == b;
76   int y = c == 0;
77   return x & y;
78 }
79
80 int
81 test09 (int a, int b, int c, int d)
82 {
83   int x = a == b;
84   int y = c == d;
85   return x != y;
86 }
87
88 int
89 test10 (int a, int b, int c, int d)
90 {
91   int x = a != b;
92   int y = c == d;
93   return x != y;
94 }
95
96 int
97 test11 (int a, int b, int c, int d)
98 {
99   int x = a != b;
100   int y = c != d;
101   return x != y;
102 }
103
104 int
105 test12 (int a, int b, int c, int d)
106 {
107   int x = a != b;
108   int y = c != d;
109   return x != y;
110 }
111
112 int
113 test13 (int a, int b, int c, int d, int e, int f)
114 {
115   int x = a == b;
116   int y = c == 0;
117   int z = d == e;
118   return x == y || x == z;
119 }
120
121 int
122 test14 (int a, int b, int c, int d, int e, int f)
123 {
124   int x = a == b;
125   int y = c == 0;
126   int z = d == e;
127   return x == y && x == z;
128 }
129
130 int
131 test15 (int a, int b, int c, int d, int e, int f)
132 {
133   int x = a != b;
134   int y = c == 0;
135   int z = d == e;
136   return x == y || x == z;
137 }
138
139 int
140 test16 (int a, int b, int c, int d, int e, int f)
141 {
142   int x = a != b;
143   int y = c == 0;
144   int z = d == e;
145   return x == y && x == z;
146 }
147
148 int
149 test17 (int a, int b, int c, int d, int e, int f)
150 {
151   int x = a != b;
152   int y = c != 0;
153   int z = d == e;
154   return x == y || x == z;
155 }
156
157 int
158 test18 (int a, int b, int c, int d, int e, int f)
159 {
160   int x = a != b;
161   int y = c != 0;
162   int z = d == e;
163   return x == y && x == z;
164 }
165
166 int
167 test19 (int a, int b, int c, int d, int e, int f)
168 {
169   int x = a != b;
170   int y = c != 0;
171   int z = d == e;
172   return x == y || x == z;
173 }
174
175 int
176 test20 (int a, int b, int c, int d, int e, int f)
177 {
178   int x = a != b;
179   int y = c != 0;
180   int z = d != e;
181   return x == y && x == z;
182 }
183
184 int
185 test21 (int a, int b, int c, int d)
186 {
187   int x = a == b;
188   int y = c == 0;
189   return x + y;
190 }
191
192 int
193 test22 (int a, int b, int c, int d)
194 {
195   int x = a != b;
196   int y = c == 0;
197   return x + y;
198 }
199
200 int
201 test23 (int a, int b, int c, int d)
202 {
203   int x = a != b;
204   int y = c != 0;
205   return x + y;
206 }
207
208 int
209 test24 (int a, int b, int c, int d)
210 {
211   int x = a == b;
212   int y = c == 0;
213   return x - y;
214 }
215
216 int
217 test25 (int a, int b, int c, int d)
218 {
219   int x = a != b;
220   int y = c == 0;
221   return x - y;
222 }
223
224 int
225 test26 (int a, int b, int c, int d)
226 {
227   int x = a != b;
228   int y = c != 0;
229   return x - y;
230 }
231
232 int
233 test27 (int a, int b, int c, int d)
234 {
235   int x = a == b;
236   int y = c == 0;
237   return x * y;
238 }
239
240 int
241 test28 (int a, int b, int c, int d)
242 {
243   int x = a != b;
244   int y = c == 0;
245   return x * y;
246 }
247
248 int
249 test29 (int a, int b, int c, int d)
250 {
251   int x = a != b;
252   int y = c != 0;
253   return x * y;
254 }
255
256 int
257 test30 (int a, int b)
258 {
259   return ((a & 0x7F) == 1)
260           | ((a & 0xFF00) == 0x0200)
261           | ((a & 0xFF0000) == 0x030000);
262 }
263
264 int
265 test31 (int a, int b)
266 {
267   return ((a & 0x7F) == 1)
268           | ((a & 0xFF00) == 0x0200)
269           | ((a & 0xFF0000) == 0x030000)
270           | ((a & 0xFF000000) == 0x04000000);
271 }
272
273 int
274 test32 (int* a, int b, int c, volatile char* d)
275 {
276   d[1] = a[0] != 0;
277   return b;
278 }
279
280 int
281 test33 (int* a, int b, int c, volatile char* d)
282 {
283   d[1] = a[0] == 0;
284   return b;
285 }
286
287 char
288 test34 (int a, int* b)
289 {
290   return (b[4] & b[0] & a) == a;
291 }
292
293 unsigned char
294 test35 (int a, int* b)
295 {
296   return (b[4] & b[0] & a) == a;
297 }