/* { dg-do compile } */ /* { dg-options "-O2" } */ int foo (int x) { return __builtin_popcount (x); } long foo1 (long x) { return __builtin_popcountl (x); } long long foo2 (long long x) { return __builtin_popcountll (x); } int foo3 (int *p) { return __builtin_popcount (*p); } /* { dg-final { scan-assembler-not {popcount} } } */ /* { dg-final { scan-assembler-times {cnt\t} 4 } } */ /* { dg-final { scan-assembler-times {fmov\ts} 1 {target lp64} } } */ /* { dg-final { scan-assembler-times {fmov\td} 2 {target lp64} } } */ /* { dg-final { scan-assembler-times {fmov\ts} 2 {target ilp32} } } */ /* { dg-final { scan-assembler-times {fmov\td} 1 {target ilp32} } } */ /* { dg-final { scan-assembler-times {ldr\ts} 1 } } */