Di solito io lavoro con i vettori 3D utilizzando i seguenti tipi:C - Come accedere elementi del vettore utilizzando GCC SSE vettore estensione
typedef vec3_t float[3];
vettori di inizializzazione utilizzando smth. come:
vec3_t x_basis = {1.0, 0.0, 0.0};
vec3_t y_basis = {0.0, 1.0, 0.0};
vec3_t z_basis = {0.0, 0.0, 1.0};
e accedervi utilizzando smth. Mi piace:
x_basis[X] * y_basis[X] + ...
Ora ho bisogno di un'aritmetica vettoriale utilizzando le istruzioni SSE. Ho il seguente codice:
typedef float v4sf __attribute__ ((mode(V4SF)))
int main(void)
{
v4sf a,b,c;
a = (v4sf){0.1f,0.2f,0.3f,0.4f};
b = (v4sf){0.1f,0.2f,0.3f,0.4f};
c = (v4sf){0.1f,0.2f,0.3f,0.4f};
a = b + c;
printf("a=%f \n", a);
return 0;
}
GCC supporta tale modo. Ma ... Innanzitutto, mi dà 0.00000 come risultato. Secondo, non posso accedere agli elementi di tali vettori. La mia domanda è: come posso accedere agli elementi di tali vettori? Ho bisogno di smth. come un [0] per accedere elemento X, un [1] per accedere elemento Y, ecc
PS: compilo questo codice utilizzando:
gcc -msse testgcc.c -o testgcc
Le domande non erano così difficili e non mi considero un esperto di GCC. La prossima volta usare un titolo più innocuo, ho quasi saltato la domanda. – hirschhornsalz