我希望在我的ARM cortex-a9上启用NEON向量化,但在编译时出现如下输出:
"not vectorized: relevant stmt not supported: 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的向量化功能...
有人有什么想法吗?我在命令行或实现中忘记了什么吗?
提前感谢您的帮助。
Guix