SSE的指令系统
SSE2和SSE的指令系统非常相似,仅仅多了少量额外的浮点运算,64位浮点/整数运算支持
SSE比传统浮点运算要快,因为它使用128位存储单元。
在windows使用#include <emmintrin.h>
在linux下使用#include <xmmintrin.h>
1. 变量定义和使用
__m128 S1 = { 1.0f, 2.0f, 3,0f, 4,0f };
S1.m128_f32[2] = 6.0f;
S1 = _mm_set_ps1(2.0f);
S1 = _mm_load_si128((__m128i*)sa);
S1 = _mm_and_si128(s2, s3);
s1 = _mm_or_si128(s2,s3);
s1 = _mm_and_si128(s2, s3);
s1 = _mm_store_pi128(s2, s3); //?
//第一个字母: p把结果作为指向数组的指针,每个元素都参与运算
s只将结果变量的第一个元素参与运算
//第二个字母: s:32位浮点数d:64位浮点数i32:32位整数i64:64位整数
2.常规运算
__mm_add_pi128(a,b)
3.AMD64位机
extern __int64 _mm_cvtsd_si64(__m128d);
extern __int64 _mm_cvttsd_si64(__m128d);
extern __m128d _mm_cvtsi64_sd(__m128d, __int64);
extern __m128i _mm_cvtsi64_si128(__int64);
extern __int64 _mm_cvtsi128_si64(__m128i);