Skip to content

Commit 35f3c7b

Browse files
committed
compiler guard for gcc and clang added
1 parent de58d7a commit 35f3c7b

2 files changed

Lines changed: 17 additions & 2 deletions

File tree

crypto/aes/aes_ctr_vaes_intrinsic.c

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,28 @@
1717

1818
#if defined(__x86_64__) || defined(__x86_64) || defined(_M_AMD64) || defined(_M_X64)
1919

20+
#if ( (defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 10)) || \
21+
(defined(__clang__) && (__clang_major__ >= 11)) )
22+
2023
#include <openssl/modes.h>
2124

25+
/* Function prototypes */
26+
void ossl_aes_ctr_vaes(const unsigned char *in, unsigned char *out,
27+
size_t length, const AES_KEY *key,
28+
unsigned char *counter,
29+
unsigned char *ecount_buf, unsigned int *num);
30+
int ossl_aes_ctr_vaes_eligible(void);
31+
2232
/* Forward declaration — defined in aesni-x86_64.pl assembly */
2333
void aesni_encrypt(const unsigned char *in, unsigned char *out, const AES_KEY *key);
2434

2535
/* Portable compiler abstractions for inlining and ISA target selection */
2636
#if defined(__GNUC__) || defined(__clang__) /* GCC, Clang, and clang-cl */
2737
# define OSSL_FUNC_ALWAYS_INLINE __attribute__((always_inline))
2838
# define OSSL_FUNC_NOINLINE __attribute__((noinline))
29-
# pragma GCC target("avx512f,avx512dq,avx512bw,vaes,aes")
39+
#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 10)
40+
# pragma GCC target("avx512f,avx512dq,avx512bw,vaes,aes")
41+
# endif
3042
/* GCC/Clang require this pragma to make AVX-512/VAES intrinsics available.
3143
* MSVC does not need it: all intrinsics are always declared in <immintrin.h>. */
3244
#elif defined(_MSC_VER) /* MSVC */
@@ -405,4 +417,5 @@ int ossl_aes_ctr_vaes_eligible(void)
405417
#undef OSSL_FUNC_ALWAYS_INLINE
406418
#undef OSSL_FUNC_NOINLINE
407419

420+
#endif /* compiler version guard */
408421
#endif /* __x86_64__ || _M_AMD64 */

providers/implementations/ciphers/cipher_aes_hw_aesni.inc

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,9 @@
1515
#define cipher_hw_aesni_ofb128 ossl_cipher_hw_generic_ofb128
1616

1717

18-
#if !(defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64))
18+
#if !(defined(__x86_64) || defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)) \
19+
|| (!((defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 10)) || \
20+
(defined(__clang__) && (__clang_major__ >= 11))))
1921
#define cipher_hw_vaes_ctr ossl_cipher_hw_generic_ctr
2022
#else
2123

0 commit comments

Comments
 (0)