我试图说服gccgo,但没有成功地将以下代码片段矢量化:
package foo
func Sum(v []float32) float32 {
var sum float32 = 0
for _, x := range v {
sum += x
}
return sum
} 我正在验证以下程序集生成的程序集:
$ gccgo -O3 -ffast-math -march=native -S test.gogccgo版本是:
$ gccgo --version
gccgo (Ubuntu 4.9-20140406-0ubuntu1) 4.9.0 20140405 (experimental) [trunk revision 209157]gccgo不应该能够将这段代码向量化吗?具有相同gcc选项的等效C代码与AVX指令完全矢量化.
更新
这里有相应的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;
}用下列方法汇编:
$ gcc -O3 -ffast-math -march=native -S test.c发布于 2014-11-22 19:56:59
为什么不直接用gcc构建.so或.a,然后从go开始调用c函数呢?
https://stackoverflow.com/questions/23570235
复制相似问题