00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _EXMAT_SIMD_SSE2_INTRINSICS_H
00024 #define _EXMAT_SIMD_SSE2_INTRINSICS_H
00025
00026
00027 #include <emmintrin.h>
00028 #include "../../PlatformSpec.h"
00029
00030 namespace exmat {
00031 namespace SIMD {
00032 namespace Intrinsics {
00033
00034 EXMAT_INLINE2 static __m128d load1_p(const double* a) {
00035 return _mm_load1_pd((double*)(a));
00036 }
00037
00038 EXMAT_INLINE2 static __m128d add_p(__m128d a, __m128d b) {
00039 return _mm_add_pd(a, b);
00040 }
00041
00042 EXMAT_INLINE2 static __m128d sub_p(__m128d a, __m128d b) {
00043 return _mm_sub_pd(a, b);
00044 }
00045
00046 EXMAT_INLINE2 static __m128d mul_p(__m128d a, __m128d b) {
00047 return _mm_mul_pd(a, b);
00048 }
00049
00050 EXMAT_INLINE2 static __m128d div_p(__m128d a, __m128d b) {
00051 return _mm_div_pd(a, b);
00052 }
00053
00054 };
00055 };
00056 };
00057
00058
00059 #endif // _EXMAT_SIMD_SSE_INTRINSICS_H