00001
00002
00003
00004
00005 #ifndef __SSEPLUS_NATIVE_SSE3_H__
00006 #define __SSEPLUS_NATIVE_SSE3_H__
00007
00008 #include "../SSEPlus_base.h"
00009 #include SSP_INCLUDE_FILE_SSE3
00010
00011
00018 SSP_FORCEINLINE __m128 ssp_addsub_ps_SSE3(__m128 a, __m128 b)
00019 {
00020 return _mm_addsub_ps( a, b );
00021 }
00023 SSP_FORCEINLINE __m128d ssp_addsub_pd_SSE3( __m128d a, __m128d b)
00024 {
00025 return _mm_addsub_pd( a, b );
00026 }
00028 SSP_FORCEINLINE __m128d ssp_hadd_pd_SSE3( __m128d a, __m128d b)
00029 {
00030 return _mm_hadd_pd(a, b );
00031 }
00033 SSP_FORCEINLINE __m128 ssp_hadd_ps_SSE3( __m128 a, __m128 b)
00034 {
00035 return _mm_hadd_ps( a, b);
00036 }
00038 SSP_FORCEINLINE __m128d ssp_hsub_pd_SSE3( __m128d a, __m128d b)
00039 {
00040 return _mm_hsub_pd (a, b);
00041 }
00043 SSP_FORCEINLINE __m128 ssp_hsub_ps_SSE3( __m128 a, __m128 b)
00044 {
00045 return _mm_hsub_ps (a, b);
00046 }
00048 SSP_FORCEINLINE __m128i ssp_lddqu_si128_SSE3( __m128i const *p)
00049 {
00050 return _mm_lddqu_si128 (p);
00051 }
00053 SSP_FORCEINLINE __m128d ssp_loaddup_pd_SSE3 (double const * dp)
00054 {
00055 return _mm_loaddup_pd (dp);
00056 }
00058 SSP_FORCEINLINE __m128d ssp_movedup_pd_SSE3( __m128d a)
00059 {
00060 return _mm_movedup_pd (a);
00061 }
00063 SSP_FORCEINLINE __m128 ssp_movehdup_ps_SSE3( __m128 a)
00064 {
00065 return _mm_movehdup_ps (a);
00066 }
00068 SSP_FORCEINLINE __m128 ssp_moveldup_ps_SSE3( __m128 a)
00069 {
00070 return _mm_moveldup_ps (a);
00071 }
00072
00074
00075
00076 #endif // __SSEPLUS_NATIVE_SSE3_H__