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 } } */
14 test_00 (unsigned char x
)
17 return x
& -129 ? -20 : -40;
21 test_01 (signed char x
)
24 return x
& -129 ? -20 : -40;
28 test_02 (unsigned short x
)
31 return x
& -129 ? -20 : -40;
35 test_03 (unsigned short* x
)
38 return x
[0] & -129 ? -20 : -40;
42 test_04 (unsigned short x
)
44 /* 1x extu.w, 1x tst -129 */
45 return x
& -129 ? x
: -1;
49 test_05 (unsigned char* x
)
52 return x
[0] & -129 ? -20 : -40;