1 /* Ensure 32-bit ALU instructions are not generated if -malu32 is
2 not enabled. */
3
4 /* { dg-do compile } */
5 /* { dg-options "-mno-alu32" } */
6
7 int foo (int a, int b)
8 {
9 a += 1;
10 b += a;
11 b -= 5;
12 a -= a;
13
14 a *= 2;
15 b *= a;
16
17 a |= 0xfafa;
18 b |= a;
19 b &= 0x00ffff00;
20 b &= a;
21
22 a <<= 2;
23 b <<= a;
24 b >>= 5;
25 a >>= b;
26
27 int c = a;
28 int d = 5;
29
30 d ^= a;
31 c ^= 0xe5e5e5e5;
32 c = -c;
33
34 unsigned int x = a;
35 unsigned int y = b;
36 x /= 3;
37 y /= x;
38 x %= 4;
39 y %= x;
40
41 return a + b - c + d - x + y;
42 }
43
44 /* { dg-final { scan-assembler-times "mov32\t0" 0 } } */
45 /* { dg-final { scan-assembler-times "add32\t0" 0 } } */
46 /* { dg-final { scan-assembler-times "sub32\t0" 0 } } */
47 /* { dg-final { scan-assembler-times "mul32\t0" 0 } } */
48 /* { dg-final { scan-assembler-times "div32\t0" 0 } } */
49 /* { dg-final { scan-assembler-times "mod32\t0" 0 } } */
50 /* { dg-final { scan-assembler-times "neg32\t0" 0 } } */
51 /* { dg-final { scan-assembler-times "and32\t0" 0 } } */
52 /* { dg-final { scan-assembler-times "or32\t0" 0 } } */
53 /* { dg-final { scan-assembler-times "xor32\t0" 0 } } */
54 /* { dg-final { scan-assembler-times "rsh32\t0" 0 } } */
55 /* { dg-final { scan-assembler-times "lsh32\t0" 0 } } */
56 /* { dg-final { scan-assembler-times "arsh32\t0" 0 } } */