mirror of
https://github.com/cuberite/polarssl.git
synced 2025-09-15 10:08:30 -04:00
Fix #8372 - Error compiling AESNI in Mbed-TLS with clang on Windows
It can successfully compile w/ or w/o the clang options -maes -mpclmul. Signed-off-by: Sergey Markelov <sergey@solidstatenetworks.com>
This commit is contained in:
parent
47e8cc9db2
commit
9902a6b752
3
ChangeLog.d/8372.txt
Normal file
3
ChangeLog.d/8372.txt
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
Features
|
||||||
|
* AES-NI is now supported in Windows builds with clang and clang-cl.
|
||||||
|
Resolves #8372.
|
@ -58,7 +58,7 @@
|
|||||||
* macros that may change in future releases.
|
* macros that may change in future releases.
|
||||||
*/
|
*/
|
||||||
#undef MBEDTLS_AESNI_HAVE_INTRINSICS
|
#undef MBEDTLS_AESNI_HAVE_INTRINSICS
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER) && !defined(__clang__)
|
||||||
/* Visual Studio supports AESNI intrinsics since VS 2008 SP1. We only support
|
/* Visual Studio supports AESNI intrinsics since VS 2008 SP1. We only support
|
||||||
* VS 2013 and up for other reasons anyway, so no need to check the version. */
|
* VS 2013 and up for other reasons anyway, so no need to check the version. */
|
||||||
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
||||||
@ -66,7 +66,7 @@
|
|||||||
/* GCC-like compilers: currently, we only support intrinsics if the requisite
|
/* GCC-like compilers: currently, we only support intrinsics if the requisite
|
||||||
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
* target flag is enabled when building the library (e.g. `gcc -mpclmul -msse2`
|
||||||
* or `clang -maes -mpclmul`). */
|
* or `clang -maes -mpclmul`). */
|
||||||
#if defined(__GNUC__) && defined(__AES__) && defined(__PCLMUL__)
|
#if (defined(__GNUC__) || defined(__clang__)) && defined(__AES__) && defined(__PCLMUL__)
|
||||||
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
#define MBEDTLS_AESNI_HAVE_INTRINSICS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -57,7 +57,7 @@ int mbedtls_aesni_has_support(unsigned int what)
|
|||||||
|
|
||||||
if (!done) {
|
if (!done) {
|
||||||
#if MBEDTLS_AESNI_HAVE_CODE == 2
|
#if MBEDTLS_AESNI_HAVE_CODE == 2
|
||||||
static unsigned info[4] = { 0, 0, 0, 0 };
|
static int info[4] = { 0, 0, 0, 0 };
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
__cpuid(info, 1);
|
__cpuid(info, 1);
|
||||||
#else
|
#else
|
||||||
@ -191,7 +191,7 @@ void mbedtls_aesni_gcm_mult(unsigned char c[16],
|
|||||||
const unsigned char a[16],
|
const unsigned char a[16],
|
||||||
const unsigned char b[16])
|
const unsigned char b[16])
|
||||||
{
|
{
|
||||||
__m128i aa, bb, cc, dd;
|
__m128i aa = { 0 }, bb = { 0 }, cc, dd;
|
||||||
|
|
||||||
/* The inputs are in big-endian order, so byte-reverse them */
|
/* The inputs are in big-endian order, so byte-reverse them */
|
||||||
for (size_t i = 0; i < 16; i++) {
|
for (size_t i = 0; i < 16; i++) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user