Line data Source code
1 : ///////////////////////////////////////////////////////////////////////////
2 : // Inastemp - Berenger Bramas MPCDF - 2016
3 : // Under MIT Licence, please you must read the LICENCE file.
4 : ///////////////////////////////////////////////////////////////////////////
5 : #ifndef INAVECSSSE3DOUBLE_HPP
6 : #define INAVECSSSE3DOUBLE_HPP
7 :
8 : #include "SSE3/InaVecSSE3Double.hpp"
9 :
10 : #ifndef INASTEMP_USE_SSSE3
11 : #error InaVecSSSE3<double> is included but SSSE3 is not enable in the configuration
12 : #endif
13 :
14 : #include <tmmintrin.h>
15 : #include <emmintrin.h>
16 :
17 : // Forward declarations
18 : template <class RealType>
19 : class InaVecSSSE3;
20 :
21 : // No optimization to make for SSSE in double
22 : template <>
23 : class alignas(16) InaVecSSSE3<double> : public InaVecSSE3<double> {
24 : using Parent = InaVecSSE3<double>;
25 :
26 : public:
27 : using Parent::GetVecLength;
28 :
29 17954 : using InaVecSSE3<double>::InaVecSSE3;
30 :
31 321 : inline InaVecSSSE3(){}
32 :
33 : inline InaVecSSSE3(const InaVecSSE3<double>& other)
34 1573 : : Parent(other){}
35 :
36 : inline static const char* GetName() {
37 : return "InaVecSSSE3<double>";
38 : }
39 :
40 : inline static InaIfElse< InaVecSSSE3<double> >::ThenClass If(const typename Parent::MaskType& inTest) {
41 30 : return InaIfElse< InaVecSSSE3<double> >::IfClass().If(inTest);
42 : }
43 : };
44 :
45 : #endif
|