#include "config.h"
#include "t1ha_bits.h"
+#if defined(__ia32__) || defined(__e2k__)
+#include <x86intrin.h>
+#endif
+
+#if defined(__ia32__)
+#include <cpuid.h>
+#endif
+
static __always_inline uint32_t tail32_le(const void *v, size_t tail) {
const uint8_t *p = (const uint8_t *)v;
#ifdef can_read_underside
#include "t1ha_bits.h"
+
#if T1HA0_AESNI_AVAILABLE
#pragma GCC push_options
#define __AES__
#endif
#include <immintrin.h>
+#if defined(__ia32__) || defined(__e2k__)
+#include <x86intrin.h>
+#endif
+
+#if defined(__ia32__)
+#include <cpuid.h>
+#endif
+
+uint64_t T1HA_IA32AES_NAME(const void *data, size_t len, uint64_t seed) __attribute__((target("aes")));
uint64_t T1HA_IA32AES_NAME(const void *data, size_t len, uint64_t seed) {
uint64_t a = seed;
#if __GNUC_PREREQ(4, 4) || defined(__clang__)
-#if defined(__ia32__) || defined(__e2k__)
-#include <x86intrin.h>
-#endif
-
-#if defined(__ia32__)
-#include <cpuid.h>
-#endif
#if defined(__e2k__)
#include <e2kbuiltin.h>