+ echo "warning: USE_SSE specified but compiler could not use PCLMUL intrinsics, disabling" >&2
+fi
+
+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS $TRY_AVX2 -x c++ - -o /dev/null 2>/dev/null <<EOF
+ #include <cstdint>
+ #include <immintrin.h>
+ int main() {
+ const auto a = _mm256_setr_epi32(0, 1, 2, 3, 4, 7, 6, 5);
+ const auto b = _mm256_permutevar8x32_epi32(a, a);
+ (void)b;
+ }
+EOF
+if [ "$?" = 0 ]; then
+ COMMON_FLAGS="$COMMON_FLAGS $TRY_AVX2 -DHAVE_AVX2"
+elif test "$USE_SSE"; then
+ echo "warning: USE_SSE specified but compiler could not use AVX2 intrinsics, disabling" >&2
+fi
+
+$CXX $PLATFORM_CXXFLAGS $COMMON_FLAGS -x c++ - -o /dev/null 2>/dev/null <<EOF
+ #include <cstdint>
+ int main() {
+ uint64_t a = 0xffffFFFFffffFFFF;
+ __uint128_t b = __uint128_t(a) * a;
+ a = static_cast<uint64_t>(b >> 64);
+ (void)a;
+ }
+EOF
+if [ "$?" = 0 ]; then
+ COMMON_FLAGS="$COMMON_FLAGS -DHAVE_UINT128_EXTENSION"