1 /* Verify that the TST insn is used to extract a zero extended
2 single bit into the T bit (for a following conditional branch) and into
3 a GP register. */
4 /* { dg-do compile } */
5 /* { dg-options "-O2" } */
6 /* { dg-final { scan-assembler-not "exts|extu|sha|shld|subc|xor" } } */
7
8 /* { dg-final { scan-assembler-times "tst" 61 { target { ! sh2a } } } } */
9 /* { dg-final { scan-assembler-times "tst\t#1," 1 { target { ! sh2a } } } } */
10 /* { dg-final { scan-assembler-times "tst\t#2" 2 { target { ! sh2a } } } } */
11 /* { dg-final { scan-assembler-times "tst\t#4" 2 { target { ! sh2a } } } } */
12 /* { dg-final { scan-assembler-times "tst\t#8" 2 { target { ! sh2a } } } } */
13 /* { dg-final { scan-assembler-times "tst\t#16" 2 { target { ! sh2a } } } } */
14 /* { dg-final { scan-assembler-times "tst\t#32" 2 { target { ! sh2a } } } } */
15 /* { dg-final { scan-assembler-times "tst\t#64" 2 { target { ! sh2a } } } } */
16 /* { dg-final { scan-assembler-times "tst\t#128" 2 { target { ! sh2a } } } } */
17
18 /* { dg-final { scan-assembler-times "tst" 54 { target { sh2a } } } } */
19 /* { dg-final { scan-assembler-times "tst\t#1," 1 { target { sh2a } } } } */
20 /* { dg-final { scan-assembler-times "tst\t#2" 1 { target { sh2a } } } } */
21 /* { dg-final { scan-assembler-times "tst\t#4" 1 { target { sh2a } } } } */
22 /* { dg-final { scan-assembler-times "tst\t#8" 1 { target { sh2a } } } } */
23 /* { dg-final { scan-assembler-times "tst\t#16" 1 { target { sh2a } } } } */
24 /* { dg-final { scan-assembler-times "tst\t#32" 1 { target { sh2a } } } } */
25 /* { dg-final { scan-assembler-times "tst\t#64" 1 { target { sh2a } } } } */
26 /* { dg-final { scan-assembler-times "tst\t#128" 1 { target { sh2a } } } } */
27 /* { dg-final { scan-assembler-times "bld\t#1," 1 { target { sh2a } } } } */
28 /* { dg-final { scan-assembler-times "bld\t#2" 1 { target { sh2a } } } } */
29 /* { dg-final { scan-assembler-times "bld\t#3" 1 { target { sh2a } } } } */
30 /* { dg-final { scan-assembler-times "bld\t#4" 1 { target { sh2a } } } } */
31 /* { dg-final { scan-assembler-times "bld\t#5" 1 { target { sh2a } } } } */
32 /* { dg-final { scan-assembler-times "bld\t#6" 1 { target { sh2a } } } } */
33 /* { dg-final { scan-assembler-times "bld\t#7" 1 { target { sh2a } } } } */
34
35 /* { dg-final { scan-assembler-times "and\t#1" 1 } } */
36 /* { dg-final { scan-assembler-times "cmp/pz" 1 } } */
37 /* { dg-final { scan-assembler-times "shll" 1 } } */
38
39 typedef struct
40 {
41 unsigned int b31 : 1;
42 unsigned int b30 : 1;
43 unsigned int b29 : 1;
44 unsigned int b28 : 1;
45 unsigned int b27 : 1;
46 unsigned int b26 : 1;
47 unsigned int b25 : 1;
48 unsigned int b24 : 1;
49 unsigned int b23 : 1;
50 unsigned int b22 : 1;
51 unsigned int b21 : 1;
52 unsigned int b20 : 1;
53 unsigned int b19 : 1;
54 unsigned int b18 : 1;
55 unsigned int b17 : 1;
56 unsigned int b16 : 1;
57 unsigned int b15 : 1;
58 unsigned int b14 : 1;
59 unsigned int b13 : 1;
60 unsigned int b12 : 1;
61 unsigned int b11 : 1;
62 unsigned int b10 : 1;
63 unsigned int b9 : 1;
64 unsigned int b8 : 1;
65 unsigned int b7 : 1;
66 unsigned int b6 : 1;
67 unsigned int b5 : 1;
68 unsigned int b4 : 1;
69 unsigned int b3 : 1;
70 unsigned int b2 : 1;
71 unsigned int b1 : 1;
72 unsigned int b0 : 1;
73 } S;
74
75 #define make_funcs(bitpos)\
76 unsigned int test_b##bitpos##_0 (S s)\
77 {\
78 return s.b##bitpos;\
79 }\
80 unsigned int test_b##bitpos##_1 (S s)\
81 {\
82 return !s.b##bitpos;\
83 }\
84
85 make_funcs (0)
86 make_funcs (1)
87 make_funcs (2)
88 make_funcs (3)
89 make_funcs (4)
90 make_funcs (5)
91 make_funcs (6)
92 make_funcs (7)
93 make_funcs (8)
94 make_funcs (9)
95 make_funcs (10)
96 make_funcs (11)
97 make_funcs (12)
98 make_funcs (13)
99 make_funcs (14)
100 make_funcs (15)
101 make_funcs (16)
102 make_funcs (17)
103 make_funcs (18)
104 make_funcs (19)
105 make_funcs (20)
106 make_funcs (21)
107 make_funcs (22)
108 make_funcs (23)
109 make_funcs (24)
110 make_funcs (25)
111 make_funcs (26)
112 make_funcs (27)
113 make_funcs (28)
114 make_funcs (29)
115 make_funcs (30)
116 make_funcs (31)