X-Git-Url: https://www.bearssl.org/gitweb//home/git/?p=BearSSL;a=blobdiff_plain;f=src%2Finner.h;h=bcf61b04d9bc0dbd8feff5dff392d2e3313177b4;hp=b03f043ed0f0ccff01edd4490602e1973fdda97c;hb=5db2d48b128326704cd33aff56c8b46e463f3bf6;hpb=db8f1b664524e3fbeea8a0730b2bbe2f0bdcea86 diff --git a/src/inner.h b/src/inner.h index b03f043..bcf61b0 100644 --- a/src/inner.h +++ b/src/inner.h @@ -154,6 +154,18 @@ #define BR_TARGET(x) #endif +/* + * GCC versions from 4.4 to 4.8 (inclusive) must use a special #pragma + * to activate extra opcodes before including the relevant intrinsic + * headers. But these don't work with Clang (which does not need them + * either). + */ +#if BR_AES_X86NI_GCC && !defined BR_AES_X86NI_GCC_OLD +#if __GNUC__ == 4 && __GNUC_MINOR__ >= 4 && __GNUC_MINOR__ <= 8 && !__clang__ +#define BR_AES_X86NI_GCC_OLD 1 +#endif +#endif + /* * POWER8 crypto support. We rely on compiler macros for the * architecture, since we do not have a reliable, simple way to detect @@ -197,6 +209,17 @@ #endif #endif +/* + * Detect support for 128-bit integers. + */ +#if !defined BR_INT128 && !defined BR_UMUL128 +#ifdef __SIZEOF_INT128__ +#define BR_INT128 1 +#elif _M_X64 +#define BR_UMUL128 1 +#endif +#endif + /* ==================================================================== */ /* * Encoding/decoding functions.