21 #ifndef FUB_EXT_VC_HPP 
   22 #define FUB_EXT_VC_HPP 
   24 #include <Vc/vector.h> 
   25 #include <immintrin.h> 
   26 #include <xmmintrin.h> 
   30 template <
typename Abi>
 
   31 Vc::Vector<double, Abi> 
mask_load(
const double* p, Vc::Mask<double, Abi> mask) {
 
   32   if constexpr (std::is_same_v<Abi, Vc::VectorAbi::Sse>) {
 
   34     __m128i native_mask = *
reinterpret_cast<__m128i*
>(&mask);
 
   35     __m128d xmm = _mm_maskload_pd(p, native_mask);
 
   36     Vc::Vector<double, Abi> x(xmm);
 
   39     Vc::Vector<double, Abi> x;
 
   46   } 
else if constexpr (std::is_same_v<Abi, Vc::VectorAbi::Avx>) {
 
   47     __m256i native_mask = *
reinterpret_cast<__m256i*
>(&mask);
 
   48     __m256d ymm = _mm256_maskload_pd(p, native_mask);
 
   49     Vc::Vector<double, Abi> x(ymm);
 
The fub namespace.
Definition: AnyBoundaryCondition.hpp:31
 
Vc::Vector< double, Abi > mask_load(const double *p, Vc::Mask< double, Abi > mask)
Definition: Vc.hpp:31