首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使gccgo生成矢量化代码?

如何使gccgo生成矢量化代码?
EN

Stack Overflow用户
提问于 2014-05-09 17:02:41
回答 1查看 659关注 0票数 20

我试图说服gccgo,但没有成功地将以下代码片段矢量化:

代码语言:javascript
复制
package foo

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

我正在验证以下程序集生成的程序集:

代码语言:javascript
复制
$ gccgo -O3 -ffast-math -march=native -S test.go

gccgo版本是:

代码语言:javascript
复制
$ gccgo --version
gccgo (Ubuntu 4.9-20140406-0ubuntu1) 4.9.0 20140405 (experimental) [trunk revision 209157]

gccgo不应该能够将这段代码向量化吗?具有相同gcc选项的等效C代码与AVX指令完全矢量化.

更新

这里有相应的C示例:

代码语言:javascript
复制
#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;
}

用下列方法汇编:

代码语言:javascript
复制
$ gcc -O3 -ffast-math -march=native -S test.c
EN

回答 1

Stack Overflow用户

发布于 2014-11-22 19:56:59

为什么不直接用gcc构建.so或.a,然后从go开始调用c函数呢?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23570235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档