Rebase.
[official-gcc.git] / gcc / testsuite / gcc.target / mips / octeon-bbit-1.c
blobf91c68bcdcc7659460a3e2b6fe51e61afbca0cf7
1 /* { dg-do compile } */
2 /* { dg-options "-march=octeon" } */
3 /* { dg-skip-if "code quality test" { *-*-* } { "-O0" } { "" } } */
4 /* { dg-final { scan-assembler "\tbbit1\t" } } */
5 /* { dg-final { scan-assembler "\tbbit0\t" } } */
6 /* { dg-final { scan-assembler-times "\tbbit.\t" 6 } } */
7 /* { dg-final { scan-assembler-not "andi\t" } } */
9 NOMIPS16 void foo (void);
11 NOMIPS16 void
12 f1 (long long i)
14 if (i & 0x80)
15 foo ();
18 NOMIPS16 void
19 f2 (int i)
21 if (!(i & 0x80))
22 foo ();
25 NOMIPS16 void
26 f3 (int i)
28 if (i % 2)
29 foo ();
32 NOMIPS16 void
33 f4 (int i)
35 if (i & 1)
36 foo ();
39 NOMIPS16 void
40 f5 (long long i)
42 if ((i >> 3) & 1)
43 foo ();
46 unsigned long long r;
48 NOMIPS16 static inline __attribute__((always_inline)) int
49 test_bit(unsigned long long nr, const unsigned long long *addr)
51 return 1UL & (addr[nr >> 6] >> (nr & 63ULL));
54 NOMIPS16 void
55 f6 ()
57 if (!test_bit(0, &r))
58 foo ();