私は私のARMのCortex-A9にNEONベクトル化を可能にしたいと思いますが、私は、コンパイル時にこの出力を得る:ARM 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行や実装で何かを忘れていますか?
ご協力いただきありがとうございます。
Guix
ありがとう、 '-funsafe-math-optimizations'がトリックです! – user2092113