[X86] Add BSR/BSF/BSWAP intrinsics to ia32intrin.h to match gcc.
authorCraig Topper <craig.topper@intel.com>
Sun, 24 Mar 2019 00:56:52 +0000 (00:56 +0000)
committerCraig Topper <craig.topper@intel.com>
Sun, 24 Mar 2019 00:56:52 +0000 (00:56 +0000)
commit88f4054f48c56b816a555569ccd6e94c7072ab26
tree78795d31146377fbeee755500f9d55dfa314bfce
parent4b7bf6a02c9700d6f455533ce76b1a0ffb99bd27
[X86] Add BSR/BSF/BSWAP intrinsics to ia32intrin.h to match gcc.

Summary:
These are all implemented by icc as well.

I made bit_scan_forward/reverse forward to the __bsfd/__bsrq since we also have
__bsfq/__bsrq.

Note, when lzcnt is enabled the bsr intrinsics generates lzcnt+xor instead of bsr.

Reviewers: RKSimon, spatel

Subscribers: cfe-commits, llvm-commits

Tags: #clang

Differential Revision: https://reviews.llvm.org/D59682

llvm-svn: 356848
clang/lib/Headers/ia32intrin.h
clang/lib/Headers/immintrin.h
clang/test/CodeGen/bitscan-builtins.c
clang/test/CodeGen/x86-bswap.c [new file with mode: 0644]