diff options
Diffstat (limited to 'lib/Headers/immintrin.h')
-rw-r--r-- | lib/Headers/immintrin.h | 76 |
1 files changed, 76 insertions, 0 deletions
diff --git a/lib/Headers/immintrin.h b/lib/Headers/immintrin.h index df4bea8..2400fea 100644 --- a/lib/Headers/immintrin.h +++ b/lib/Headers/immintrin.h @@ -76,6 +76,26 @@ #include <fmaintrin.h> #endif +#ifdef __AVX512F__ +#include <avx512fintrin.h> +#endif + +#ifdef __AVX512VL__ +#include <avx512vlintrin.h> +#endif + +#ifdef __AVX512BW__ +#include <avx512bwintrin.h> +#endif + +#if defined (__AVX512VL__) && defined (__AVX512BW__) +#include <avx512vlbwintrin.h> +#endif + +#ifdef __AVX512ER__ +#include <avx512erintrin.h> +#endif + #ifdef __RDRND__ static __inline__ int __attribute__((__always_inline__, __nodebug__)) _rdrand16_step(unsigned short *__p) @@ -98,6 +118,58 @@ _rdrand64_step(unsigned long long *__p) #endif #endif /* __RDRND__ */ +#ifdef __FSGSBASE__ +#ifdef __x86_64__ +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_readfsbase_u32(void) +{ + return __builtin_ia32_rdfsbase32(); +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +_readfsbase_u64(void) +{ + return __builtin_ia32_rdfsbase64(); +} + +static __inline__ unsigned int __attribute__((__always_inline__, __nodebug__)) +_readgsbase_u32(void) +{ + return __builtin_ia32_rdgsbase32(); +} + +static __inline__ unsigned long long __attribute__((__always_inline__, __nodebug__)) +_readgsbase_u64(void) +{ + return __builtin_ia32_rdgsbase64(); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_writefsbase_u32(unsigned int __V) +{ + return __builtin_ia32_wrfsbase32(__V); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_writefsbase_u64(unsigned long long __V) +{ + return __builtin_ia32_wrfsbase64(__V); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_writegsbase_u32(unsigned int __V) +{ + return __builtin_ia32_wrgsbase32(__V); +} + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_writegsbase_u64(unsigned long long __V) +{ + return __builtin_ia32_wrgsbase64(__V); +} +#endif +#endif /* __FSGSBASE__ */ + #ifdef __RTM__ #include <rtmintrin.h> #endif @@ -115,4 +187,8 @@ _xtest(void) #include <shaintrin.h> #endif +/* Some intrinsics inside adxintrin.h are available only if __ADX__ defined, + * whereas others are also available if __ADX__ undefined */ +#include <adxintrin.h> + #endif /* __IMMINTRIN_H */ |