Commit 71acc41b authored by Tudor Bosman's avatar Tudor Bosman

Remove 1 instruction from popcount

Summary:
by removing the unnecessary constraint that the input and output be in
the same register (copypasta from https://phabricator.fb.com/D542718)

Test Plan: folly/test

Reviewed By: soren@fb.com

FB internal diff: D543310
parent 7fd87e7e
......@@ -25,8 +25,9 @@
namespace {
int popcount_inst(unsigned int x) {
asm ("popcntl %0, %0" : "=r" (x) : "0" (x));
return x;
int n;
asm ("popcntl %1, %0" : "=r" (n) : "r" (x));
return n;
}
int popcount_builtin(unsigned int x) {
......@@ -34,8 +35,9 @@ int popcount_builtin(unsigned int x) {
}
int popcountll_inst(unsigned long long x) {
asm ("popcntq %0, %0" : "=r" (x) : "0" (x));
return x;
unsigned long long n;
asm ("popcntq %1, %0" : "=r" (n) : "r" (x));
return n;
}
int popcountll_builtin(unsigned long long x) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment