20 #ifndef VC_SSE_DEINTERLEAVE_H
21 #define VC_SSE_DEINTERLEAVE_H
41 template<
typename A>
static void deinterleave(float_v &, float_v &,
const float *,
A);
42 template<
typename A>
static void deinterleave(float_v &, float_v &,
const short *,
A);
43 template<
typename A>
static void deinterleave(float_v &, float_v &,
const unsigned short *,
A);
45 template<
typename A>
static void deinterleave(sfloat_v &, sfloat_v &,
const float *,
A);
46 template<
typename A>
static void deinterleave(sfloat_v &, sfloat_v &,
const short *,
A);
47 template<
typename A>
static void deinterleave(sfloat_v &, sfloat_v &,
const unsigned short *,
A);
49 template<
typename A>
static void deinterleave(double_v &, double_v &,
const double *,
A);
51 template<
typename A>
static void deinterleave(int_v &, int_v &,
const int *,
A);
52 template<
typename A>
static void deinterleave(int_v &, int_v &,
const short *,
A);
54 template<
typename A>
static void deinterleave(uint_v &, uint_v &,
const unsigned int *,
A);
55 template<
typename A>
static void deinterleave(uint_v &, uint_v &,
const unsigned short *,
A);
57 template<
typename A>
static void deinterleave(short_v &, short_v &,
const short *,
A);
59 template<
typename A>
static void deinterleave(ushort_v &, ushort_v &,
const unsigned short *,
A);
67 template<Vc::MallocAlignment A>
82 #include "deinterleave.tcc"
83 #include "prefetches.tcc"
84 #include "helperimpl.tcc"
87 #endif // VC_SSE_DEINTERLEAVE_H
Vc_ALWAYS_INLINE void deinterleave(V *a, V *b, const M *memory, A align)
Loads two vectors of values from an interleaved array.
Namespace for new ROOT classes and functions.
x86 SSE + SSE2 + SSE3 + SSSE3 + SSE4.1 + SSE4.2
SSE::Vector< double > double_v
SSE::Vector< short > short_v
Vc_ALWAYS_INLINE void prefetchForModify(const void *addr)
Prefetch the cacheline containing addr for modification.
Vc_ALWAYS_INLINE void free(T *p)
Frees memory that was allocated with Vc::malloc.
x86 SSE + SSE2 + SSE3 + SSSE3 + SSE4.1
Vc_ALWAYS_INLINE void prefetchForOneRead(const void *addr)
Prefetch the cacheline containing addr for a single read access.
Vc_ALWAYS_INLINE void prefetchClose(const void *addr)
Prefetch the cacheline containing addr to L1 cache.
#define Vc_ALWAYS_INLINE_R
SSE::Vector< unsigned int > uint_v
Vc_ALWAYS_INLINE void prefetchMid(const void *addr)
Prefetch the cacheline containing addr to L2 cache.
SSE::Vector< unsigned short > ushort_v
Vc_ALWAYS_INLINE void prefetchFar(const void *addr)
Prefetch the cacheline containing addr to L3 cache.
SSE::Vector< SSE::float8 > sfloat_v
#define Vc_ALWAYS_INLINE_L
x86 SSE + SSE2 + SSE3 + SSSE3
SSE::Vector< float > float_v
Vc_ALWAYS_INLINE_L T *Vc_ALWAYS_INLINE_R malloc(size_t n)
Allocates memory on the Heap with alignment and padding suitable for vectorized access.