29 #ifndef VC_COMMON_VECTORABI_H_ 
   30 #define VC_COMMON_VECTORABI_H_ 
   32 namespace Vc_VERSIONED_NAMESPACE
 
   41 using Avx1Abi = 
typename std::conditional<std::is_integral<T>::value, VectorAbi::Sse,
 
   42                                           VectorAbi::Avx>::type;
 
   44 using Best = 
typename std::conditional<
 
   46     typename std::conditional<
 
   48         typename std::conditional<
 
   49             CurrentImplementation::is(
AVXImpl), Avx1Abi<T>,
 
   50             typename std::conditional<
 
   51                 CurrentImplementation::is(
AVX2Impl), Avx,
 
   52                 typename std::conditional<CurrentImplementation::is(
MICImpl), Mic,
 
   53                                           void>::type>::type>::type>::type>::type;
 
   55 static_assert(std::is_same<Best<float>, Avx>::value, 
"");
 
   56 static_assert(std::is_same<Best<int>, Avx>::value, 
"");
 
   57 #elif defined Vc_IMPL_AVX 
   58 static_assert(std::is_same<Best<float>, Avx>::value, 
"");
 
   59 static_assert(std::is_same<Best<int>, Sse>::value, 
"");
 
   60 #elif defined Vc_IMPL_SSE 
   62 static_assert(std::is_same<Best<float>, Sse>::value, 
"");
 
   63 static_assert(std::is_same<Best<int>, Sse>::value, 
"");
 
   64 #elif defined Vc_IMPL_MIC 
   65 static_assert(std::is_same<Best<float>, Mic>::value, 
"");
 
   66 static_assert(std::is_same<Best<int>, Mic>::value, 
"");
 
   67 #elif defined Vc_IMPL_Scalar 
   68 static_assert(std::is_same<Best<float>, Scalar>::value, 
"");
 
   69 static_assert(std::is_same<Best<int>, Scalar>::value, 
"");
 
   74 #endif  // VC_COMMON_VECTORABI_H_ 
x86 SSE + SSE2 + SSE3 + SSSE3 + SSE4.1 + SSE4.2 
uses only fundamental types