From 9608bca840dbcf939d9d5ed159062eb425dea86c Mon Sep 17 00:00:00 2001 From: Frank Denis Date: Thu, 27 Aug 2026 18:17:47 +0200 Subject: [PATCH] Add evex flags for old LLVM versions, for chacha and salsa Fixes #1553 --- .../chacha20/dolbeau/chacha20_dolbeau-avx512.c | 6 +++++- .../crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx512.c | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx512.c b/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx512.c index 57053569..49a33156 100644 --- a/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx512.c +++ b/src/libsodium/crypto_stream/chacha20/dolbeau/chacha20_dolbeau-avx512.c @@ -13,7 +13,11 @@ defined(HAVE_SMMINTRIN_H) # ifdef __clang__ -# pragma clang attribute push(__attribute__((target("sse2,ssse3,sse4.1,avx2,avx512f"))), apply_to = function) +# if __clang_major__ >= 18 && __clang_major__ < 22 +# pragma clang attribute push(__attribute__((target("sse2,ssse3,sse4.1,avx2,avx512f,evex512"))), apply_to = function) +# else +# pragma clang attribute push(__attribute__((target("sse2,ssse3,sse4.1,avx2,avx512f"))), apply_to = function) +# endif # elif defined(__GNUC__) # pragma GCC target("sse2,ssse3,sse4.1,avx2,avx512f") # endif diff --git a/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx512.c b/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx512.c index e41e8d1e..50c70019 100644 --- a/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx512.c +++ b/src/libsodium/crypto_stream/salsa20/xmm6int/salsa20_xmm6int-avx512.c @@ -12,7 +12,11 @@ defined(HAVE_SMMINTRIN_H) # ifdef __clang__ -# pragma clang attribute push(__attribute__((target("sse2,ssse3,sse4.1,avx2,avx512f"))), apply_to = function) +# if __clang_major__ >= 18 && __clang_major__ < 22 +# pragma clang attribute push(__attribute__((target("sse2,ssse3,sse4.1,avx2,avx512f,evex512"))), apply_to = function) +# else +# pragma clang attribute push(__attribute__((target("sse2,ssse3,sse4.1,avx2,avx512f"))), apply_to = function) +# endif # elif defined(__GNUC__) # pragma GCC target("sse2,ssse3,sse4.1,avx2,avx512f") # endif