| /* { dg-options "-O2" } */ |
| /* { dg-do compile { target has_arch_ppc64 } } */ |
| |
| /* { dg-final { scan-assembler-times {\mcmpldi\M} 10 } } */ |
| /* { dg-final { scan-assembler-times {\mcmpdi\M} 4 } } */ |
| /* { dg-final { scan-assembler-times {\mrotldi\M} 14 } } */ |
| |
| int foo (int a); |
| |
| int __attribute__ ((noinline)) udi_fun (unsigned long long in) |
| { |
| if (in == (0x8642000000000000ULL)) |
| return foo (1); |
| if (in == (0x7642000000000000ULL)) |
| return foo (12); |
| if (in == (0x8000000000000000ULL)) |
| return foo (32); |
| if (in == (0x8700000000000091ULL)) |
| return foo (33); |
| if (in == (0x8642FFFFFFFFFFFFULL)) |
| return foo (46); |
| if (in == (0x7642FFFFFFFFFFFFULL)) |
| return foo (51); |
| if (in == (0x7567000000ULL)) |
| return foo (9); |
| if (in == (0xFFF8567FFFFFFFFFULL)) |
| return foo (19); |
| |
| return 0; |
| } |
| |
| int __attribute__ ((noinline)) di_fun (long long in) |
| { |
| if (in == (0x8642000000000000LL)) |
| return foo (1); |
| if (in == (0x7642000000000000LL)) |
| return foo (12); |
| if (in == (0x8000000000000000LL)) |
| return foo (32); |
| if (in == (0x8700000000000091LL)) |
| return foo (33); |
| if (in == (0x8642FFFFFFFFFFFFLL)) |
| return foo (46); |
| if (in == (0x7642FFFFFFFFFFFFLL)) |
| return foo (51); |
| if (in == (0x7567000000LL)) |
| return foo (9); |
| if (in == (0xFFF8567FFFFFFFFFLL)) |
| return foo (19); |
| |
| return 0; |
| } |