diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Headers/immintrin.h')
-rw-r--r-- | contrib/llvm/tools/clang/lib/Headers/immintrin.h | 111 |
1 files changed, 110 insertions, 1 deletions
diff --git a/contrib/llvm/tools/clang/lib/Headers/immintrin.h b/contrib/llvm/tools/clang/lib/Headers/immintrin.h index 637646122653..4b2752353d6f 100644 --- a/contrib/llvm/tools/clang/lib/Headers/immintrin.h +++ b/contrib/llvm/tools/clang/lib/Headers/immintrin.h @@ -24,22 +24,45 @@ #ifndef __IMMINTRIN_H #define __IMMINTRIN_H +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__MMX__) #include <mmintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE__) #include <xmmintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE2__) #include <emmintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSE3__) #include <pmmintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__SSSE3__) #include <tmmintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || \ + (defined(__SSE4_2__) || defined(__SSE4_1__)) #include <smmintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || \ + (defined(__AES__) || defined(__PCLMUL__)) #include <wmmintrin.h> +#endif + +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__CLFLUSHOPT__) +#include <clflushoptintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX__) #include <avxintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX2__) #include <avx2intrin.h> /* The 256-bit versions of functions in f16cintrin.h. @@ -54,33 +77,90 @@ _mm256_cvtph_ps(__m128i __a) { return (__m256)__builtin_ia32_vcvtph2ps256((__v8hi)__a); } +#endif /* __AVX2__ */ +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__BMI__) #include <bmiintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__BMI2__) #include <bmi2intrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__LZCNT__) #include <lzcntintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__FMA__) #include <fmaintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512F__) #include <avx512fintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512VL__) #include <avx512vlintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512BW__) #include <avx512bwintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512CD__) #include <avx512cdintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512DQ__) #include <avx512dqintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || \ + (defined(__AVX512VL__) && defined(__AVX512BW__)) #include <avx512vlbwintrin.h> +#endif + +#if !defined(_MSC_VER) || __has_feature(modules) || \ + (defined(__AVX512VL__) && defined(__AVX512CD__)) +#include <avx512vlcdintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || \ + (defined(__AVX512VL__) && defined(__AVX512DQ__)) #include <avx512vldqintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512ER__) #include <avx512erintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512IFMA__) +#include <avx512ifmaintrin.h> +#endif + +#if !defined(_MSC_VER) || __has_feature(modules) || \ + (defined(__AVX512IFMA__) && defined(__AVX512VL__)) +#include <avx512ifmavlintrin.h> +#endif + +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512VBMI__) +#include <avx512vbmiintrin.h> +#endif + +#if !defined(_MSC_VER) || __has_feature(modules) || \ + (defined(__AVX512VBMI__) && defined(__AVX512VL__)) +#include <avx512vbmivlintrin.h> +#endif + +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__AVX512PF__) +#include <avx512pfintrin.h> +#endif + +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__PKU__) #include <pkuintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__RDRND__) static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd"))) _rdrand16_step(unsigned short *__p) { @@ -93,6 +173,18 @@ _rdrand32_step(unsigned int *__p) return __builtin_ia32_rdrand32_step(__p); } +/* __bit_scan_forward */ +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_bit_scan_forward(int __A) { + return __builtin_ctz(__A); +} + +/* __bit_scan_reverse */ +static __inline__ int __attribute__((__always_inline__, __nodebug__)) +_bit_scan_reverse(int __A) { + return 31 - __builtin_clz(__A); +} + #ifdef __x86_64__ static __inline__ int __attribute__((__always_inline__, __nodebug__, __target__("rdrnd"))) _rdrand64_step(unsigned long long *__p) @@ -100,7 +192,9 @@ _rdrand64_step(unsigned long long *__p) return __builtin_ia32_rdrand64_step(__p); } #endif +#endif /* __RDRND__ */ +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__FSGSBASE__) #ifdef __x86_64__ static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__, __target__("fsgsbase"))) _readfsbase_u32(void) @@ -149,23 +243,38 @@ _writegsbase_u64(unsigned long long __V) { return __builtin_ia32_wrgsbase64(__V); } + #endif +#endif /* __FSGSBASE__ */ +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__RTM__) #include <rtmintrin.h> - #include <xtestintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__SHA__) #include <shaintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__FXSR__) #include <fxsrintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVE__) #include <xsaveintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVEOPT__) #include <xsaveoptintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVEC__) #include <xsavecintrin.h> +#endif +#if !defined(_MSC_VER) || __has_feature(modules) || defined(__XSAVES__) #include <xsavesintrin.h> +#endif /* Some intrinsics inside adxintrin.h are available only on processors with ADX, * whereas others are also available at all times. */ |