File indexing completed on 2025-09-16 09:11:25
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 #include "../scalar/types.h"
0029
0030 #ifndef VC_SSE_TYPES_H_
0031 #define VC_SSE_TYPES_H_
0032
0033 #ifdef Vc_DEFAULT_IMPL_SSE
0034 #define Vc_DOUBLE_V_SIZE 2
0035 #define Vc_FLOAT_V_SIZE 4
0036 #define Vc_INT_V_SIZE 4
0037 #define Vc_UINT_V_SIZE 4
0038 #define Vc_SHORT_V_SIZE 8
0039 #define Vc_USHORT_V_SIZE 8
0040 #endif
0041
0042 namespace Vc_VERSIONED_NAMESPACE
0043 {
0044 namespace SSE
0045 {
0046 template <typename T> using Vector = Vc::Vector<T, VectorAbi::Sse>;
0047 typedef Vector<double> double_v;
0048 typedef Vector<float> float_v;
0049 typedef Vector<int> int_v;
0050 typedef Vector<unsigned int> uint_v;
0051 typedef Vector<short> short_v;
0052 typedef Vector<unsigned short> ushort_v;
0053
0054 template <typename T> using Mask = Vc::Mask<T, VectorAbi::Sse>;
0055 typedef Mask<double> double_m;
0056 typedef Mask<float> float_m;
0057 typedef Mask<int> int_m;
0058 typedef Mask<unsigned int> uint_m;
0059 typedef Mask<short> short_m;
0060 typedef Mask<unsigned short> ushort_m;
0061
0062 template <typename T> struct Const;
0063
0064 template <typename T> struct is_vector : public std::false_type {};
0065 template <typename T> struct is_vector<Vector<T>> : public std::true_type {};
0066 template <typename T> struct is_mask : public std::false_type {};
0067 template <typename T> struct is_mask<Mask<T>> : public std::true_type {};
0068 }
0069
0070 namespace Traits
0071 {
0072 template <class T> struct
0073 is_simd_vector_internal<Vector<T, VectorAbi::Sse>>
0074 : public is_valid_vector_argument<T> {};
0075
0076 template<typename T> struct is_simd_mask_internal<Mask<T, VectorAbi::Sse>>
0077 : public std::true_type {};
0078 }
0079 }
0080
0081 #endif