diff options
author | Howard Hinnant <hhinnant@apple.com> | 2013-08-14 18:00:20 +0000 |
---|---|---|
committer | Howard Hinnant <hhinnant@apple.com> | 2013-08-14 18:00:20 +0000 |
commit | 5d1a701d6def1e4e6ae3d5bce67efd40b07fba16 (patch) | |
tree | f24f148cd0e121eac7f27d1423983ac369ea1bb3 /libcxx/include/support/ibm/support.h | |
parent | a8c7c154bb820e21a141602297514b5849607148 (diff) | |
download | bcm5719-llvm-5d1a701d6def1e4e6ae3d5bce67efd40b07fba16.tar.gz bcm5719-llvm-5d1a701d6def1e4e6ae3d5bce67efd40b07fba16.zip |
Xing Xue: port to IBM XLC++/AIX.
llvm-svn: 188396
Diffstat (limited to 'libcxx/include/support/ibm/support.h')
-rw-r--r-- | libcxx/include/support/ibm/support.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/libcxx/include/support/ibm/support.h b/libcxx/include/support/ibm/support.h new file mode 100644 index 00000000000..3effbaed160 --- /dev/null +++ b/libcxx/include/support/ibm/support.h @@ -0,0 +1,54 @@ +// -*- C++ -*- +//===----------------------- support/ibm/support.h ----------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is dual licensed under the MIT and the University of Illinois Open +// Source Licenses. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef _LIBCPP_SUPPORT_IBM_SUPPORT_H +#define _LIBCPP_SUPPORT_IBM_SUPPORT_H + +extern "builtin" int __popcnt4(unsigned int); +extern "builtin" int __popcnt8(unsigned long long); +extern "builtin" unsigned int __cnttz4(unsigned int); +extern "builtin" unsigned int __cnttz8(unsigned long long); +extern "builtin" unsigned int __cntlz4(unsigned long long); +extern "builtin" unsigned int __cntlz8(unsigned long long); + +// Builtin functions for counting population +#define __builtin_popcount(x) __popcnt4(x) +#define __builtin_popcountll(x) __popcnt8(x) +#if defined(__64BIT__) +#define __builtin_popcountl(x) __builtin_popcountll(x) +#else +#define __builtin_popcountl(x) __builtin_popcount(x) +#endif + +// Builtin functions for counting trailing zeros +#define __builtin_ctz(x) __cnttz4(x) +#define __builtin_ctzll(x) __cnttz8(x) +#if defined(__64BIT__) +#define __builtin_ctzl(x) __builtin_ctzll(x) +#else +#define __builtin_ctzl(x) __builtin_ctz(x) +#endif + +// Builtin functions for counting leading zeros +#define __builtin_clz(x) __cntlz4(x) +#define __builtin_clzll(x) __cntlz8(x) +#if defined(__64BIT__) +#define __builtin_clzl(x) __builtin_clzll(x) +#else +#define __builtin_clzl(x) __builtin_clz(x) +#endif + +#if defined(__64BIT__) +#define __SIZE_WIDTH__ 64 +#else +#define __SIZE_WIDTH__ 32 +#endif + +#endif // _LIBCPP_SUPPORT_IBM_SUPPORT_H |