 |
Vc
1.4.2
SIMD Vector Classes for C++
|
|
32 #include "scalar/vector.h"
34 #if defined(Vc_IMPL_SSE)
35 # include "sse/vector.h"
38 # include "avx/vector.h"
41 namespace Vc_VERSIONED_NAMESPACE
149 #if defined INT64_MAX && defined UINT64_MAX
155 #if defined INT32_MAX && defined UINT32_MAX
161 #if defined INT16_MAX && defined UINT16_MAX
167 #if defined INT8_MAX && defined UINT8_MAX
175 static_assert(double_v::Size ==
Vc_DOUBLE_V_SIZE,
"Vc_DOUBLE_V_SIZE macro defined to an incorrect value");
176 static_assert(float_v::Size ==
Vc_FLOAT_V_SIZE ,
"Vc_FLOAT_V_SIZE macro defined to an incorrect value ");
177 static_assert(int_v::Size ==
Vc_INT_V_SIZE ,
"Vc_INT_V_SIZE macro defined to an incorrect value ");
178 static_assert(uint_v::Size ==
Vc_UINT_V_SIZE ,
"Vc_UINT_V_SIZE macro defined to an incorrect value ");
179 static_assert(short_v::Size ==
Vc_SHORT_V_SIZE ,
"Vc_SHORT_V_SIZE macro defined to an incorrect value ");
180 static_assert(ushort_v::Size ==
Vc_USHORT_V_SIZE,
"Vc_USHORT_V_SIZE macro defined to an incorrect value");
186 #include "common/operators.h"
188 #include "common/simdarray.h"
192 #include "common/alignedbase.h"
193 namespace Vc_VERSIONED_NAMESPACE {
218 #define Vc_VECTOR_DECLARED_ 1
220 #include "scalar/helperimpl.h"
221 #include "scalar/math.h"
222 #include "scalar/simd_cast_caller.tcc"
223 #if defined(Vc_IMPL_SSE)
224 # include "sse/helperimpl.h"
225 # include "sse/math.h"
226 # include "sse/simd_cast_caller.tcc"
228 #if defined(Vc_IMPL_AVX)
229 # include "avx/helperimpl.h"
230 # include "avx/math.h"
231 # include "avx/simd_cast_caller.tcc"
234 #include "common/math.h"
243 #include "common/vectortuple.h"
244 #include "common/where.h"
245 #include "common/iif.h"
247 #ifndef Vc_NO_STD_FUNCTIONS
279 #endif // VC_VECTOR_H_
constexpr std::size_t MemoryAlignment
fixed_size_simd< T, N > atan(const SimdArray< T, N, V, M > &x)
Applies the std:: atan function component-wise and concurrently.
fixed_size_simd_mask< T, N > isnan(const SimdArray< T, N, V, M > &x)
Applies the std:: isnan function component-wise and concurrently.
fixed_size_simd< T, N > cos(const SimdArray< T, N, V, M > &x)
Applies the std:: cos function component-wise and concurrently.
SimdArray< T, N > fma(const SimdArray< T, N > &a, const SimdArray< T, N > &b, const SimdArray< T, N > &c)
Applies the std::fma function component-wise and concurrently.
fixed_size_simd< T, N > asin(const SimdArray< T, N, V, M > &x)
Applies the std:: asin function component-wise and concurrently.
fixed_size_simd< T, N > exp(const SimdArray< T, N, V, M > &x)
Applies the std:: exp function component-wise and concurrently.
AlignedBase< Detail::max(alignof(Vector< float >), alignof(Vector< double >), alignof(Vector< ullong >), alignof(Vector< llong >), alignof(Vector< ulong >), alignof(Vector< long >), alignof(Vector< uint >), alignof(Vector< int >), alignof(Vector< ushort >), alignof(Vector< short >), alignof(Vector< uchar >), alignof(Vector< schar >))> VectorAlignedBase
fixed_size_simd< T, N > abs(const SimdArray< T, N, V, M > &x)
Applies the std:: abs function component-wise and concurrently.
fixed_size_simd< T, N > max(const SimdArray< T, N, V, M > &x, const SimdArray< T, N, V, M > &y)
Applies the std:: max function component-wise and concurrently.
fixed_size_simd< T, N > atan2(const SimdArray< T, N, V, M > &x, const SimdArray< T, N, V, M > &y)
Applies the std:: atan2 function component-wise and concurrently.
fixed_size_simd< T, N > floor(const SimdArray< T, N, V, M > &x)
Applies the std:: floor function component-wise and concurrently.
SimdArray< T, N > frexp(const SimdArray< T, N > &x, SimdArray< int, N > *e)
Applies the std::frexp function component-wise and concurrently.
fixed_size_simd< T, N > log2(const SimdArray< T, N, V, M > &x)
Applies the std:: log2 function component-wise and concurrently.
AlignedBase< Detail::max(Vector< float >::MemoryAlignment, Vector< double >::MemoryAlignment, Vector< ullong >::MemoryAlignment, Vector< llong >::MemoryAlignment, Vector< ulong >::MemoryAlignment, Vector< long >::MemoryAlignment, Vector< uint >::MemoryAlignment, Vector< int >::MemoryAlignment, Vector< ushort >::MemoryAlignment, Vector< short >::MemoryAlignment, Vector< uchar >::MemoryAlignment, Vector< schar >::MemoryAlignment)> MemoryAlignedBase
fixed_size_simd< T, N > log(const SimdArray< T, N, V, M > &x)
Applies the std:: log function component-wise and concurrently.
fixed_size_simd_mask< T, N > isfinite(const SimdArray< T, N, V, M > &x)
Applies the std:: isfinite function component-wise and concurrently.
fixed_size_simd< T, N > sqrt(const SimdArray< T, N, V, M > &x)
Applies the std:: sqrt function component-wise and concurrently.
fixed_size_simd< T, N > trunc(const SimdArray< T, N, V, M > &x)
Applies the std:: trunc function component-wise and concurrently.
fixed_size_simd< T, N > log10(const SimdArray< T, N, V, M > &x)
Applies the std:: log10 function component-wise and concurrently.
SimdArray< T, N > ldexp(const SimdArray< T, N > &x, const SimdArray< int, N > &e)
Applies the std::ldexp function component-wise and concurrently.
constexpr std::size_t VectorAlignment
Vector< double > double_v
vector of double precision
fixed_size_simd< T, N > round(const SimdArray< T, N, V, M > &x)
Applies the std:: round function component-wise and concurrently.
fixed_size_simd< T, N > min(const SimdArray< T, N, V, M > &x, const SimdArray< T, N, V, M > &y)
Applies the std:: min function component-wise and concurrently.
fixed_size_simd< T, N > ceil(const SimdArray< T, N, V, M > &x)
Applies the std:: ceil function component-wise and concurrently.
fixed_size_simd< T, N > sin(const SimdArray< T, N, V, M > &x)
Applies the std:: sin function component-wise and concurrently.