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