1#ifndef VECCORE_BACKEND_VC_SCALAR_H
2#define VECCORE_BACKEND_VC_SCALAR_H
10 static constexpr size_t Size = 1;
16 using MaskType =
typename Vc::Scalar::Vector<T>::MaskType;
17 using IndexType =
typename Vc::Scalar::Vector<T>::IndexType;
18 static constexpr size_t Size = 1;
23template <
typename T = Real_s>
26 using Real_v = Vc::Scalar::Vector<T>;
27 using Float_v = Vc::Scalar::Vector<float>;
30 using Int_v = Vc::Scalar::Vector<int>;
31 using Int16_v = Vc::Scalar::Vector<int16_t>;
32 using Int32_v = Vc::Scalar::Vector<int32_t>;
33 using Int64_v = Vc::Scalar::Vector<int64_t>;
35 using UInt_v = Vc::Scalar::Vector<unsigned int>;
49 return mask.isEmpty();
61 using M = Vc::Scalar::Mask<T>;
62 static inline bool Get(
const M &mask,
size_t i) {
return mask[i]; }
64 static inline void Set(
M &mask,
size_t i,
const bool val) { mask[i] = val; }
69 using M = Vc::Scalar::Mask<T>;
70 using V = Vc::Scalar::Vector<T>;
72 static inline void Assign(
V &dst,
M const &mask,
V const &src) { dst(mask) = src; }
74 static inline void Blend(
V &dst,
M const &mask,
V const &src1,
V const src2)
81inline namespace math {
85Vc::Scalar::Mask<T>
IsInf(
const Vc::Scalar::Vector<T> &x)
#define VECCORE_FORCE_INLINE
Vc::Scalar::Vector< int > Int_v
Vc::Scalar::Vector< T > Real_v
Vc::Scalar::Vector< int32_t > Int32_v
Vc::Scalar::Vector< uint64_t > UInt64_v
Vc::Scalar::Vector< unsigned int > UInt_v
Vc::Scalar::Vector< uint16_t > UInt16_v
Vc::Scalar::Vector< float > Float_v
Vc::Scalar::Vector< int64_t > Int64_v
Vc::Scalar::Vector< uint32_t > UInt32_v
Vc::Scalar::Vector< int16_t > Int16_v
Vc::Scalar::Vector< double > Double_v
VECCORE_FORCE_INLINE UME::SIMD::SIMDVecMask< N > IsInf(const UME::SIMD::SIMDVec_f< T, N > &x)
VECCORE_ATT_HOST_DEVICE bool MaskEmpty(const M &mask)
VECCORE_ATT_HOST_DEVICE bool MaskFull(const M &mask)
static bool Get(const M &mask, size_t i)
static void Set(M &mask, size_t i, const bool val)
Vc::Scalar::Vector< T > V
static void Blend(V &dst, M const &mask, V const &src1, V const src2)
static void Assign(V &dst, M const &mask, V const &src)
typename Vc::Scalar::Vector< T >::IndexType IndexType
typename Vc::Scalar::Vector< T >::MaskType MaskType
static constexpr size_t Size