1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
void testSSE2(float* v1, float* v2)
{
__m128 v1m, v2m;
memcpy(&v1m, v1, 4* sizeof(float));
memcpy(&v2m, v2, 4* sizeof(float));
v1m = _mm_add_ps(v1m, v2m);
v1m = _mm_sub_ps(v1m, v2m);
v1m = _mm_mul_ps(v1m, v2m);
v1m = _mm_div_ps(v1m, v2m);
v1m = _mm_sqrt_ps(v1m);
memcpy(v1, &v1m, 4* sizeof(float));
}
float v1[4] = { 1, 2, 3, 4};
float v2[4] = { 1, 2, 3, 4};
for(int i = 0; i < 1000; i++) testSSE2(v1,v2);
std::cout << v1[0] << " " << v1[1] << " " << v1[2] << " " << v1[3] << std::endl; |
Partager