28 #ifndef VC_COMMON_VECTORABI_H_
29 #define VC_COMMON_VECTORABI_H_
31 namespace Vc_VERSIONED_NAMESPACE
36 using Avx1Abi =
typename std::conditional<std::is_integral<T>::value, VectorAbi::Sse,
37 VectorAbi::Avx>::type;
39 template <
typename T>
struct DeduceCompatible {
49 using type =
typename std::conditional<
51 typename std::conditional<
53 typename std::conditional<
54 CurrentImplementation::is(
AVXImpl), Avx1Abi<T>,
55 typename std::conditional<CurrentImplementation::is(
AVX2Impl), Avx,
56 void>::type>::type>::type>::type;
58 template <
typename T>
using Best =
typename DeduceBest<T>::type;
62 #include "simdarrayfwd.h"
64 namespace Vc_VERSIONED_NAMESPACE
69 template <
class T>
struct is_fixed_size_abi : std::false_type {
71 template <
int N>
struct is_fixed_size_abi<simd_abi::fixed_size<N>> : std::true_type {
76 using not_fixed_size_abi =
typename std::enable_if<!is_fixed_size_abi<T>::value, T>::type;
81 #endif // VC_COMMON_VECTORABI_H_