【发布时间】:2013-03-05 13:50:30
【问题描述】:
我想在我的 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];
}
}
以及编译时使用的选项:
-march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize -mvectorize-with-neon-quad -ftree-vectorizer-verbose=2
我正在使用 arm-linux-gnueabi (v4.6) 编译器。
请务必注意,该问题仅出现在 float32 向量中。如果我切换到 int32,那么 矢量化就完成了。也许 float32 的矢量化还不可用……
有人有想法吗?我是否忘记了 cmd 行或实现中的某些内容?
提前感谢您的帮助。
吉克斯
【问题讨论】:
标签: compiler-construction arm vectorization neon