X-Git-Url: https://bearssl.org/gitweb//home/git/?p=BearSSL;a=blobdiff_plain;f=src%2Fsymcipher%2Faes_x86ni.c;h=d5408f1360fae82c143051dad3f130cff3df2a07;hp=dcc395208198eac4376418280e9e3ac9306fe3b4;hb=af9c79a0710a45361f9ae4313f8bb5bf738c3b7a;hpb=5f045c759957fdff8c85716e6af99e10901fdac0 diff --git a/src/symcipher/aes_x86ni.c b/src/symcipher/aes_x86ni.c index dcc3952..d5408f1 100644 --- a/src/symcipher/aes_x86ni.c +++ b/src/symcipher/aes_x86ni.c @@ -22,6 +22,7 @@ * SOFTWARE. */ +#define BR_ENABLE_INTRINSICS 1 #include "inner.h" /* @@ -31,15 +32,6 @@ #if BR_AES_X86NI -#if BR_AES_X86NI_GCC -#include -#include -#endif - -#if BR_AES_X86NI_MSC -#include -#endif - /* see inner.h */ int br_aes_x86ni_supported(void) @@ -49,28 +41,11 @@ br_aes_x86ni_supported(void) * 19 SSE4.1 (used for _mm_insert_epi32(), for AES-CTR) * 25 AES-NI */ -#define MASK 0x02080000 - -#if BR_AES_X86NI_GCC - unsigned eax, ebx, ecx, edx; - - if (__get_cpuid(1, &eax, &ebx, &ecx, &edx)) { - return (ecx & MASK) == MASK; - } else { - return 0; - } -#elif BR_AES_X86NI_MSC - int info[4]; - - __cpuid(info, 1); - return ((uint32_t)info[2] & MASK) == MASK; -#else - return 0; -#endif - -#undef MASK + return br_cpuid(0, 0, 0x02080000, 0); } +BR_TARGETS_X86_UP + BR_TARGET("sse2,aes") static inline __m128i expand_step128(__m128i k, __m128i k2) @@ -260,4 +235,6 @@ br_aes_x86ni_keysched_dec(unsigned char *skni, const void *key, size_t len) return num_rounds; } +BR_TARGETS_X86_DOWN + #endif