Bonjour
J'essaye de tester l'implémentation d'instruction ss3 avec l'example ci-dessous qui fonctionne bien

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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;
Maintenant je voudrais passer tout ca en double mais je n'y arrive pas. Je n'arrive pas non plus à savoir si les instruction ss3 acceptent des doubles.

Merci de votre aide