1010# include "aegis128x2.h"
1111# include "aegis128x2_avx2.h"
1212
13- # ifdef __clang__
14- # pragma clang attribute push(__attribute__((target("vaes,avx2"))), apply_to = function)
15- # elif defined(__GNUC__ )
16- # pragma GCC target("vaes,avx2")
17- # endif
13+ # ifdef HAVE_VAESINTRIN_H
14+
15+ # ifdef __clang__
16+ # pragma clang attribute push(__attribute__((target("vaes,avx2"))), apply_to = function)
17+ # elif defined(__GNUC__ )
18+ # pragma GCC target("vaes,avx2")
19+ # endif
1820
19- # include <immintrin.h>
21+ # include <immintrin.h>
2022
21- # define AES_BLOCK_LENGTH 32
23+ # define AES_BLOCK_LENGTH 32
2224
2325typedef __m256i aes_block_t ;
2426
25- # define AES_BLOCK_XOR (A , B ) _mm256_xor_si256((A), (B))
26- # define AES_BLOCK_AND (A , B ) _mm256_and_si256((A), (B))
27- # define AES_BLOCK_LOAD128_BROADCAST (A ) \
28- _mm256_broadcastsi128_si256(_mm_loadu_si128((const void *) (A)))
29- # define AES_BLOCK_LOAD (A ) _mm256_loadu_si256((const aes_block_t *) (const void *) (A))
30- # define AES_BLOCK_LOAD_64x2 (A , B ) _mm256_broadcastsi128_si256(_mm_set_epi64x((A), (B)))
31- # define AES_BLOCK_STORE (A , B ) _mm256_storeu_si256((aes_block_t *) (void *) (A), (B))
32- # define AES_ENC (A , B ) _mm256_aesenc_epi128((A), (B))
27+ # define AES_BLOCK_XOR (A , B ) _mm256_xor_si256((A), (B))
28+ # define AES_BLOCK_AND (A , B ) _mm256_and_si256((A), (B))
29+ # define AES_BLOCK_LOAD128_BROADCAST (A ) \
30+ _mm256_broadcastsi128_si256(_mm_loadu_si128((const void *) (A)))
31+ # define AES_BLOCK_LOAD (A ) _mm256_loadu_si256((const aes_block_t *) (const void *) (A))
32+ # define AES_BLOCK_LOAD_64x2 (A , B ) _mm256_broadcastsi128_si256(_mm_set_epi64x((A), (B)))
33+ # define AES_BLOCK_STORE (A , B ) _mm256_storeu_si256((aes_block_t *) (void *) (A), (B))
34+ # define AES_ENC (A , B ) _mm256_aesenc_epi128((A), (B))
3335
3436static inline void
3537aegis128x2_update (aes_block_t * const state , const aes_block_t d1 , const aes_block_t d2 )
@@ -50,7 +52,7 @@ aegis128x2_update(aes_block_t *const state, const aes_block_t d1, const aes_bloc
5052 state [4 ] = AES_BLOCK_XOR (state [4 ], d2 );
5153}
5254
53- # include "aegis128x2_common.h"
55+ # include "aegis128x2_common.h"
5456
5557struct aegis128x2_implementation aegis128x2_avx2_implementation = {
5658 .encrypt_detached = encrypt_detached ,
@@ -66,8 +68,10 @@ struct aegis128x2_implementation aegis128x2_avx2_implementation = {
6668 .state_decrypt_detached_final = state_decrypt_detached_final ,
6769};
6870
69- # ifdef __clang__
70- # pragma clang attribute pop
71+ # ifdef __clang__
72+ # pragma clang attribute pop
73+ # endif
74+
7175# endif
7276
7377#endif
0 commit comments