Fixed compilation for GCC 4.4 to 4.8 (AES-NI opcodes; intrinsics headers require target options to be set).

This commit is contained in:
Thomas Pornin 2017-03-09 20:13:23 +00:00
parent 98432a0a30
commit 2f88a67304
6 changed files with 43 additions and 1 deletions

View file

@ -32,8 +32,15 @@
#if BR_AES_X86NI
#if BR_AES_X86NI_GCC
#if BR_AES_X86NI_GCC_OLD
#pragma GCC push_options
#pragma GCC target("sse2,sse4.1,aes,pclmul")
#endif
#include <wmmintrin.h>
#include <cpuid.h>
#if BR_AES_X86NI_GCC_OLD
#pragma GCC pop_options
#endif
#endif
#if BR_AES_X86NI_MSC
@ -71,6 +78,14 @@ br_aes_x86ni_supported(void)
#undef MASK
}
/*
* Per-function attributes appear unreliable on old GCC, so we use the
* pragma for all remaining functions in this file.
*/
#if BR_AES_X86NI_GCC_OLD
#pragma GCC target("sse2,sse4.1,aes,pclmul")
#endif
BR_TARGET("sse2,aes")
static inline __m128i
expand_step128(__m128i k, __m128i k2)

View file

@ -27,6 +27,9 @@
#if BR_AES_X86NI
#if BR_AES_X86NI_GCC
#if BR_AES_X86NI_GCC_OLD
#pragma GCC target("sse2,sse4.1,aes,pclmul")
#endif
#include <wmmintrin.h>
#endif

View file

@ -27,6 +27,9 @@
#if BR_AES_X86NI
#if BR_AES_X86NI_GCC
#if BR_AES_X86NI_GCC_OLD
#pragma GCC target("sse2,sse4.1,aes,pclmul")
#endif
#include <wmmintrin.h>
#endif

View file

@ -27,6 +27,9 @@
#if BR_AES_X86NI
#if BR_AES_X86NI_GCC
#if BR_AES_X86NI_GCC_OLD
#pragma GCC target("sse2,sse4.1,aes,pclmul")
#endif
#include <smmintrin.h>
#include <wmmintrin.h>
#define bswap32 __builtin_bswap32