diff --git a/configure.ac b/configure.ac index df83ef5..be67d34 100644 --- a/configure.ac +++ b/configure.ac @@ -398,11 +398,6 @@ AS_IF([test "x$EMSCRIPTEN" = "x"], [ have_armcrypto=no AC_MSG_CHECKING(for ARM crypto instructions set) AC_LINK_IFELSE([AC_LANG_PROGRAM([[ - #ifdef __clang__ - # pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) - #elif defined(__GNUC__) - # pragma GCC target("+simd+crypto") - #endif #ifndef __ARM_FEATURE_CRYPTO # define __ARM_FEATURE_CRYPTO 1 #endif @@ -411,6 +406,12 @@ AS_IF([test "x$EMSCRIPTEN" = "x"], [ #endif #include + + #ifdef __clang__ + # pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) + #elif defined(__GNUC__) + # pragma GCC target("+simd+crypto") + #endif ]], [[ vaeseq_u8(vmovq_n_u8(0), vmovq_n_u8(0)); diff --git a/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c b/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c index 825de8a..a01f60c 100644 --- a/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c +++ b/src/libsodium/crypto_aead/aegis128l/aegis128l_armcrypto.c @@ -17,12 +17,6 @@ #include "aegis128l_armcrypto.h" -#ifdef __clang__ -#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) -#elif defined(__GNUC__) -#pragma GCC target("+simd+crypto") -#endif - #ifndef __ARM_FEATURE_CRYPTO #define __ARM_FEATURE_CRYPTO 1 #endif @@ -32,6 +26,12 @@ #include +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + #define AES_BLOCK_LENGTH 16 typedef uint8x16_t aes_block_t; diff --git a/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c b/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c index e1ebd57..058e207 100644 --- a/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c +++ b/src/libsodium/crypto_aead/aegis256/aegis256_armcrypto.c @@ -17,12 +17,6 @@ #include "aegis256_armcrypto.h" -#ifdef __clang__ -#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) -#elif defined(__GNUC__) -#pragma GCC target("+simd+crypto") -#endif - #ifndef __ARM_FEATURE_CRYPTO #define __ARM_FEATURE_CRYPTO 1 #endif @@ -32,6 +26,12 @@ #include +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + #define AES_BLOCK_LENGTH 16 typedef uint8x16_t aes_block_t; diff --git a/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c b/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c index 0a5a128..aa76f5c 100644 --- a/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c +++ b/src/libsodium/crypto_aead/aes256gcm/armcrypto/aead_aes256gcm_armcrypto.c @@ -19,12 +19,6 @@ #define __vectorcall #endif -#ifdef __clang__ -#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) -#elif defined(__GNUC__) -#pragma GCC target("+simd+crypto") -#endif - #ifndef __ARM_FEATURE_CRYPTO #define __ARM_FEATURE_CRYPTO 1 #endif @@ -34,6 +28,12 @@ #include +#ifdef __clang__ +#pragma clang attribute push(__attribute__((target("neon,crypto,aes"))), apply_to = function) +#elif defined(__GNUC__) +#pragma GCC target("+simd+crypto") +#endif + #define ABYTES crypto_aead_aes256gcm_ABYTES #define NPUBBYTES crypto_aead_aes256gcm_NPUBBYTES #define KEYBYTES crypto_aead_aes256gcm_KEYBYTES