2014-05-09 13 views
20

Próbuję przekonać gccgo bez powodzenia do wektoryzacji następujący fragment:Jak można uzyskać wektoryzowany kod w gccgo?

package foo 

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

ja weryfikacji montaż generowany przez:

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

wersji gccgo jest:

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

Czy gccgo nie może wektoryzować tego kodu? kod C równoważne z tymi samymi opcjami gcc jest doskonale vectorized instrukcje AVX ...

UPDATE

tutaj masz odpowiedni przykład C:

#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; 
} 

skompilować z:

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

czy mógłbyś podać przykład C? – creack

+0

@creack done! dzięki –

+0

jakiejkolwiek aktualizacji do tego? – konsolebox

Odpowiedz

1

Dlaczego nie po prostu zbudować .so lub .a z gcc i wywołać funkcję c z go?

Powiązane problemy