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" } } */
9 test00 (int a, int b, int c, int d)
17 test01 (int a, int b, int c, int d)
25 test02 (int a, int b, int c, int d)
33 test03 (int a, int b, int c, int d)
41 test04 (int a, int b, int c, int d)
49 test05 (int a, int b, int c, int d)
57 test06 (int a, int b, int c, int d)
65 test07 (int a, int b, int c, int d)
73 test08 (int a, int b, int c, int d)
81 test09 (int a, int b, int c, int d)
89 test10 (int a, int b, int c, int d)
97 test11 (int a, int b, int c, int d)
105 test12 (int a, int b, int c, int d)
113 test13 (int a, int b, int c, int d, int e, int f)
118 return x == y || x == z;
122 test14 (int a, int b, int c, int d, int e, int f)
127 return x == y && x == z;
131 test15 (int a, int b, int c, int d, int e, int f)
136 return x == y || x == z;
140 test16 (int a, int b, int c, int d, int e, int f)
145 return x == y && x == z;
149 test17 (int a, int b, int c, int d, int e, int f)
154 return x == y || x == z;
158 test18 (int a, int b, int c, int d, int e, int f)
163 return x == y && x == z;
167 test19 (int a, int b, int c, int d, int e, int f)
172 return x == y || x == z;
176 test20 (int a, int b, int c, int d, int e, int f)
181 return x == y && x == z;
185 test21 (int a, int b, int c, int d)
193 test22 (int a, int b, int c, int d)
201 test23 (int a, int b, int c, int d)
209 test24 (int a, int b, int c, int d)
217 test25 (int a, int b, int c, int d)
225 test26 (int a, int b, int c, int d)
233 test27 (int a, int b, int c, int d)
241 test28 (int a, int b, int c, int d)
249 test29 (int a, int b, int c, int d)
257 test30 (int a, int b)
259 return ((a & 0x7F) == 1)
260 | ((a & 0xFF00) == 0x0200)
261 | ((a & 0xFF0000) == 0x030000);
265 test31 (int a, int b)
267 return ((a & 0x7F) == 1)
268 | ((a & 0xFF00) == 0x0200)
269 | ((a & 0xFF0000) == 0x030000)
270 | ((a & 0xFF000000) == 0x04000000);
274 test32 (int* a, int b, int c, volatile char* d)
281 test33 (int* a, int b, int c, volatile char* d)
288 test34 (int a, int* b)
290 return (b[4] & b[0] & a) == a;
294 test35 (int a, int* b)
296 return (b[4] & b[0] & a) == a;