2018-02-09 Sebastian Perta <sebastian.perta@renesas.com>
[official-gcc.git] / gcc / testsuite / gcc.target / sh / pr49263-2.c
bloba6318fcd432bec18df147bf09cff8f24d751894b
1 /* Verify that TST #imm, R0 instruction is generated when QImode or HImode
2 values are tested against a negative constant. */
3 /* { dg-do compile } */
4 /* { dg-options "-O2" } */
5 /* { dg-final { scan-assembler-not "and" } } */
6 /* { dg-final { scan-assembler-not "exts" } } */
7 /* { dg-final { scan-assembler-times "tst\t#127,r0" 2 } } */
8 /* { dg-final { scan-assembler-times "tst\t#255,r0" 1 } } */
9 /* { dg-final { scan-assembler-times "65407" 1 } } */
10 /* { dg-final { scan-assembler-times "-129" 2 } } */
11 /* { dg-final { scan-assembler-times "extu" 1 } } */
13 int
14 test_00 (unsigned char x)
16 /* 1x tst #127 */
17 return x & -129 ? -20 : -40;
20 int
21 test_01 (signed char x)
23 /* 1x tst #255 */
24 return x & -129 ? -20 : -40;
27 int
28 test_02 (unsigned short x)
30 /* 1x tst 65407 */
31 return x & -129 ? -20 : -40;
34 int
35 test_03 (unsigned short* x)
37 /* 1x tst -129 */
38 return x[0] & -129 ? -20 : -40;
41 int
42 test_04 (unsigned short x)
44 /* 1x extu.w, 1x tst -129 */
45 return x & -129 ? x : -1;
48 int
49 test_05 (unsigned char* x)
51 /* 1x tst #127 */
52 return x[0] & -129 ? -20 : -40;