diff options
Diffstat (limited to 'contrib/llvm/tools/clang/lib/Headers/wmmintrin.h')
-rw-r--r-- | contrib/llvm/tools/clang/lib/Headers/wmmintrin.h | 18 |
1 files changed, 15 insertions, 3 deletions
diff --git a/contrib/llvm/tools/clang/lib/Headers/wmmintrin.h b/contrib/llvm/tools/clang/lib/Headers/wmmintrin.h index 8f58850..dca896f 100644 --- a/contrib/llvm/tools/clang/lib/Headers/wmmintrin.h +++ b/contrib/llvm/tools/clang/lib/Headers/wmmintrin.h @@ -24,11 +24,13 @@ #ifndef _WMMINTRIN_H #define _WMMINTRIN_H -#if !defined (__AES__) -# error "AES instructions not enabled" +#include <emmintrin.h> + +#if !defined (__AES__) && !defined (__PCLMUL__) +# error "AES/PCLMUL instructions not enabled" #else -#include <xmmintrin.h> +#ifdef __AES__ static __inline__ __m128i __attribute__((__always_inline__, __nodebug__)) _mm_aesenc_si128(__m128i __V, __m128i __R) @@ -64,4 +66,14 @@ _mm_aesimc_si128(__m128i __V) __builtin_ia32_aeskeygenassist128((C), (R)) #endif /* __AES__ */ + +#ifdef __PCLMUL__ + +#define _mm_clmulepi64_si128(__X, __Y, __I) \ + ((__m128i)__builtin_ia32_pclmulqdq128((__v2di)(__m128i)(__X), \ + (__v2di)(__m128i)(__Y), (char)(__I))) + +#endif /* __PCLMUL__ */ + +#endif /* __AES__ || __PCLMUL__ */ #endif /* _WMMINTRIN_H */ |