小编use*_*113的帖子

ARM NEON矢量化失败

我想在我的ARM cortex-a9上启用NEON矢量化,但是我在编译时得到了这个输出:

"未向量化:不支持相关的stmt:D.14140_82 = D.14143_77*D.14141_81"

这是我的循环:

void my_mul(float32_t * __restrict data1, float32_t * __restrict data2, float32_t * __restrict out){    
    for(int i=0; i<SIZE*4; i+=1){
        out[i] = data1[i]*data2[i];
    }
}
Run Code Online (Sandbox Code Playgroud)

以及编译时使用的选项:

-march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize -mvectorize-with-neon-quad -ftree-vectorizer-verbose=2
Run Code Online (Sandbox Code Playgroud)

我正在使用arm-linux-gnueabi(v4.6)编译器.

重要的是要注意,问题只出现在float32向量中.如果我切换int32,那么矢量化就完成了.也许float32的矢量化还没有...

有没有人有想法?我是否忘记了cmd行或我的实现中的某些内容?

在此先感谢您的帮助.

Guix

compiler-construction arm vectorization neon

5
推荐指数
1
解决办法
3098
查看次数

标签 统计

arm ×1

compiler-construction ×1

neon ×1

vectorization ×1