2014-05-09 21 views
20

che sto cercando di convincere gccgo senza successo vectorize il seguente frammento:come è possibile ottenere il codice vectorized di gccgo?

package foo 

func Sum(v []float32) float32 { 
    var sum float32 = 0 
    for _, x := range v { 
     sum += x 
    } 
    return sum 
} 

sto verificando l'assembly generato da:

$ gccgo -O3 -ffast-math -march=native -S test.go 

versione gccgo è:

$ gccgo --version 
gccgo (Ubuntu 4.9-20140406-0ubuntu1) 4.9.0 20140405 (experimental) [trunk revision 209157] 

Non è possibile che gccgo sia in grado di vettorializzare questo codice? il codice equivalente C con le stesse opzioni di gcc è perfettamente vectorized con le istruzioni AVX ...

UPDATE

qui si ha l'esempio C corrispondente:

#include <stdlib.h> 

float sum(float *v, size_t n) { 
    size_t i; 
    float sum = 0; 
    for(i = 0; i < n; i++) { 
     sum += v[i]; 
    } 
    return sum; 
} 

compilare con:

$ gcc -O3 -ffast-math -march=native -S test.c 
+0

potresti fornire anche l'esempio C? – creack

+0

@creack fatto! grazie –

+0

qualche aggiornamento a questo? – konsolebox

risposta

1

Perché non solo creare il .so o .a con gcc e chiamare la funzione c di go?