Commit ab70a26a authored by Michael Kuron's avatar Michael Kuron Committed by Michael Kuron
Browse files

Workaround for __BIGGEST_ALIGNMENT__ on Clang

On x86_64, this is always 128 bits, rendering it incompatible with AVX.
GCC reports the maximum enabled vector width (which is what we want) and Intel reports the maximum supported vector width (which is okay too).
parent c9de19eb
......@@ -316,14 +316,20 @@ namespace field {
// Automatically select allocator if none was given
if ( alloc == nullptr )
{
#ifdef __BIGGEST_ALIGNMENT__
const uint_t alignment = __BIGGEST_ALIGNMENT__;
#if defined(__ARM_FEATURE_SVE) && defined(__ARM_FEATURE_SVE_BITS) && __ARM_FEATURE_SVE_BITS > 0
const uint_t alignment = __ARM_FEATURE_SVE_BITS/8;
#elif defined(__ARM_FEATURE_SVE)
const uint_t alignment = 64;
#elif defined(__ARM_NEON)
const uint_t alignment = 16;
#elif defined(__AVX512F__)
const uint_t alignment = 64;
#elif defined(__AVX__)
const uint_t alignment = 32;
#elif defined(__SSE__) || defined(_MSC_VER)
const uint_t alignment = 16;
#elif defined(__BIGGEST_ALIGNMENT__)
const uint_t alignment = __BIGGEST_ALIGNMENT__;
#else
const uint_t alignment = 64;
#endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment