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 } */
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
;