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 のベクトル化がまだ利用できない可能性があります…</p>
誰にもアイデアはありますか?コマンドラインまたは実装で何かを忘れていますか?
よろしくお願いします。
ギクス