Always use inline-asm version on GCC/Clang
authorChristopher Dykes <cdykes@fb.com>
Thu, 10 Nov 2016 20:46:19 +0000 (12:46 -0800)
committerFacebook Github Bot <facebook-github-bot-bot@fb.com>
Thu, 10 Nov 2016 20:53:34 +0000 (12:53 -0800)
commit7213df65aa8d4d6fca18b1a6cfe76a77eed6a797
tree8c312cd637ff1653141cafeb12900bad91d09f54
parentf588dc4a026c53004abb33bbf869030b4bee6f18
Always use inline-asm version on GCC/Clang

Summary:
Because the intrinsic version requires explicitly adding `__target__` attributes, which results in things not being inlined. Although the code generated with the `__target__` attribute is strictly better, ensuring it's applied on all the relevant functions is error-prone, so just use the inline assembly version for GCC/Clang so that it can be inlined elsewhere. MSVC will inline the intrinsic version without any issue.
This also marks the functions as `ALWAYS_INLINE`, as the diff that is getting reverted made that change as well.

Reviewed By: yfeldblum, philippv, ot

Differential Revision: D3963935

fbshipit-source-id: 47175d64e7be351eb455a4d053b91ce9392bf152
folly/experimental/Instructions.h
folly/experimental/Select64.h