File indexing completed on 2025-01-31 10:25:44
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028 #ifndef VC_SSE_DEINTERLEAVE_H_
0029 #define VC_SSE_DEINTERLEAVE_H_
0030
0031 #include "macros.h"
0032
0033 namespace Vc_VERSIONED_NAMESPACE
0034 {
0035 namespace Detail
0036 {
0037 template <typename A>
0038 inline void deinterleave(SSE::float_v &, SSE::float_v &, const float *, A);
0039 template <typename A>
0040 inline void deinterleave(SSE::float_v &, SSE::float_v &, const short *, A);
0041 template <typename A>
0042 inline void deinterleave(SSE::float_v &, SSE::float_v &, const ushort *, A);
0043 template <typename A>
0044 inline void deinterleave(SSE::double_v &, SSE::double_v &, const double *, A);
0045 template <typename A>
0046 inline void deinterleave(SSE::int_v &, SSE::int_v &, const int *, A);
0047 template <typename A>
0048 inline void deinterleave(SSE::int_v &, SSE::int_v &, const short *, A);
0049 template <typename A>
0050 inline void deinterleave(SSE::uint_v &, SSE::uint_v &, const uint *, A);
0051 template <typename A>
0052 inline void deinterleave(SSE::uint_v &, SSE::uint_v &, const ushort *, A);
0053 template <typename A>
0054 inline void deinterleave(SSE::short_v &, SSE::short_v &, const short *, A);
0055 template <typename A>
0056 inline void deinterleave(SSE::ushort_v &, SSE::ushort_v &, const ushort *, A);
0057
0058 Vc_ALWAYS_INLINE_L void prefetchForOneRead(const void *addr, VectorAbi::Sse) Vc_ALWAYS_INLINE_R;
0059 Vc_ALWAYS_INLINE_L void prefetchForModify(const void *addr, VectorAbi::Sse) Vc_ALWAYS_INLINE_R;
0060 Vc_ALWAYS_INLINE_L void prefetchClose(const void *addr, VectorAbi::Sse) Vc_ALWAYS_INLINE_R;
0061 Vc_ALWAYS_INLINE_L void prefetchMid(const void *addr, VectorAbi::Sse) Vc_ALWAYS_INLINE_R;
0062 Vc_ALWAYS_INLINE_L void prefetchFar(const void *addr, VectorAbi::Sse) Vc_ALWAYS_INLINE_R;
0063 }
0064 }
0065
0066 #include "deinterleave.tcc"
0067 #include "prefetches.tcc"
0068
0069 #endif