1 /* Tests to check if mov instructions are emitted efficiently. */
2 /* { dg-require-effective-target codedensity } */
3 /* { dg-options "-Os" } */
4
5 int rule1 (void)
6 {
7 return 0x3f000000;
8 }
9
10 int rule2 (void)
11 {
12 return 0x3f00;
13 }
14
15 int rule3 (void)
16 {
17 return 0x3f0000;
18 }
19
20 int rule4 (void)
21 {
22 return 0x22000;
23 }
24
25 int rule5 (void)
26 {
27 return 0x8000001f;
28 }
29
30 int rule6 (void)
31 {
32 return 0x3fffff;
33 }
34
35 /* { dg-final { scan-assembler "ror8\\s+r0,63" } } */
36 /* { dg-final { scan-assembler "lsl8\\s+r0,63" } } */
37 /* { dg-final { scan-assembler "lsl16\\s+r0,63" } } */
38 /* { dg-final { scan-assembler "ror\\s+r0,63" } } */
39 /* { dg-final { scan-assembler "mov_s\\s+r0,17" } } */
40 /* { dg-final { scan-assembler "asl_s\\s+r0,r0,13" } } */
41 /* { dg-final { scan-assembler "mov_s\\s+r0,-1" } } */
42 /* { dg-final { scan-assembler "bmsk_s\\s+r0,r0,21" } } */