blob: dba1552cb57d4a3f3cb2b81c9e57638b3aab3431 [file] [log] [blame]
/* Verify that the TST insn is used to extract a zero extended
single bit into the T bit (for a following conditional branch) and into
a GP register. */
/* { dg-do compile } */
/* { dg-options "-O2" } */
/* { dg-final { scan-assembler-not "exts|extu|sha|shld|subc|xor" } } */
/* { dg-final { scan-assembler-times "tst" 61 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#1," 1 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#2" 2 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#4" 2 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#8" 2 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#16" 2 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#32" 2 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#64" 2 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#128" 2 { target { ! sh2a } } } } */
/* { dg-final { scan-assembler-times "tst" 54 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#1," 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#2" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#4" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#8" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#16" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#32" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#64" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "tst\t#128" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "bld\t#1," 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "bld\t#2" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "bld\t#3" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "bld\t#4" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "bld\t#5" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "bld\t#6" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "bld\t#7" 1 { target { sh2a } } } } */
/* { dg-final { scan-assembler-times "and\t#1" 1 } } */
/* { dg-final { scan-assembler-times "cmp/pz" 1 } } */
/* { dg-final { scan-assembler-times "shll" 1 } } */
typedef struct
{
unsigned int b31 : 1;
unsigned int b30 : 1;
unsigned int b29 : 1;
unsigned int b28 : 1;
unsigned int b27 : 1;
unsigned int b26 : 1;
unsigned int b25 : 1;
unsigned int b24 : 1;
unsigned int b23 : 1;
unsigned int b22 : 1;
unsigned int b21 : 1;
unsigned int b20 : 1;
unsigned int b19 : 1;
unsigned int b18 : 1;
unsigned int b17 : 1;
unsigned int b16 : 1;
unsigned int b15 : 1;
unsigned int b14 : 1;
unsigned int b13 : 1;
unsigned int b12 : 1;
unsigned int b11 : 1;
unsigned int b10 : 1;
unsigned int b9 : 1;
unsigned int b8 : 1;
unsigned int b7 : 1;
unsigned int b6 : 1;
unsigned int b5 : 1;
unsigned int b4 : 1;
unsigned int b3 : 1;
unsigned int b2 : 1;
unsigned int b1 : 1;
unsigned int b0 : 1;
} S;
#define make_funcs(bitpos)\
unsigned int test_b##bitpos##_0 (S s)\
{\
return s.b##bitpos;\
}\
unsigned int test_b##bitpos##_1 (S s)\
{\
return !s.b##bitpos;\
}\
make_funcs (0)
make_funcs (1)
make_funcs (2)
make_funcs (3)
make_funcs (4)
make_funcs (5)
make_funcs (6)
make_funcs (7)
make_funcs (8)
make_funcs (9)
make_funcs (10)
make_funcs (11)
make_funcs (12)
make_funcs (13)
make_funcs (14)
make_funcs (15)
make_funcs (16)
make_funcs (17)
make_funcs (18)
make_funcs (19)
make_funcs (20)
make_funcs (21)
make_funcs (22)
make_funcs (23)
make_funcs (24)
make_funcs (25)
make_funcs (26)
make_funcs (27)
make_funcs (28)
make_funcs (29)
make_funcs (30)
make_funcs (31)