#include<iostream>
#include<emmintrin.h>
#include<smmintrin.h>
using namespace std;
int main()
{
__m128i xx1 = _mm_setr_epi32(1, 2, 3, 5);
__m128i xx2 = _mm_setr_epi32(11, 12, 13, 15);
__m128i add;
add = _mm_add_epi32(xx1, xx2);
int add_out[4];
_mm_storeu_si128((__m128i*)add_out, add);
for (int i = 0; i < 4; i++)
cout << "add out: "<< add_out[i] << endl;//加法例子 SSE2
__m128i sub;
sub = _mm_sub_epi32(xx1, xx2);
int sub_out[4];
_mm_storeu_si128((__m128i*)sub_out, sub);
for (int i = 0; i < 4; i++)
cout << "sub out: " << sub_out[i] << endl;//减法例子 SSE2
__m128i mul;
mul = _mm_mullo_epi32(xx1, xx2);
int mul_out[4];
_mm_storeu_si128((__m128i*)mul_out, mul);
for (int i = 0; i < 4; i++)
cout << "mul out: " << mul_out[i] << endl;//乘法例子 SSE4
__m128i left_shift;
left_shift = _mm_slli_epi32(xx2, 1);
int left_shift_out[4];
_mm_storeu_si128((__m128i*)left_shift_out, left_shift);
for (int i = 0; i < 4; i++)
cout << "left shift out: " << left_shift_out[i] << endl;//左移例子 SSE2
__m128i right_shift;
right_shift = _mm_srai_epi32(xx2, 1);
int right_shift_out[4];
_mm_storeu_si128((__m128i*)right_shift_out, right_shift);
for (int i = 0; i < 4; i++)
cout << "right shift out: " << right_shift_out[i] << endl;//右移例子 SSE2
system("pause");
return 0;
}
#include<emmintrin.h>
#include<smmintrin.h>
using namespace std;
int main()
{
__m128i xx1 = _mm_setr_epi32(1, 2, 3, 5);
__m128i xx2 = _mm_setr_epi32(11, 12, 13, 15);
__m128i add;
add = _mm_add_epi32(xx1, xx2);
int add_out[4];
_mm_storeu_si128((__m128i*)add_out, add);
for (int i = 0; i < 4; i++)
cout << "add out: "<< add_out[i] << endl;//加法例子 SSE2
__m128i sub;
sub = _mm_sub_epi32(xx1, xx2);
int sub_out[4];
_mm_storeu_si128((__m128i*)sub_out, sub);
for (int i = 0; i < 4; i++)
cout << "sub out: " << sub_out[i] << endl;//减法例子 SSE2
__m128i mul;
mul = _mm_mullo_epi32(xx1, xx2);
int mul_out[4];
_mm_storeu_si128((__m128i*)mul_out, mul);
for (int i = 0; i < 4; i++)
cout << "mul out: " << mul_out[i] << endl;//乘法例子 SSE4
__m128i left_shift;
left_shift = _mm_slli_epi32(xx2, 1);
int left_shift_out[4];
_mm_storeu_si128((__m128i*)left_shift_out, left_shift);
for (int i = 0; i < 4; i++)
cout << "left shift out: " << left_shift_out[i] << endl;//左移例子 SSE2
__m128i right_shift;
right_shift = _mm_srai_epi32(xx2, 1);
int right_shift_out[4];
_mm_storeu_si128((__m128i*)right_shift_out, right_shift);
for (int i = 0; i < 4; i++)
cout << "right shift out: " << right_shift_out[i] << endl;//右移例子 SSE2
system("pause");
return 0;
}