Chciałbym włączyć NEON wektoryzacji na mój ARM Cortex-A9, ale mam to wyjście na kompilacji:ARM NEON awaria wektoryzacja
„nie wektorowy: istotne stmt nie obsługiwane: D.14140_82 = D.14143_77 * D.14141_81"
Oto moja pętla:
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];
}
}
i opcje używane przy kompilacji:
-march=armv7-a -mcpu=cortex-a9 -mfpu=neon -mfloat-abi=softfp -ftree-vectorize -mvectorize-with-neon-quad -ftree-vectorizer-verbose=2
Używam kompilatora arm-linux-gnueabi (v4.6).
Należy zauważyć, że problem występuje tylko w przypadku wektorów float32. Jeśli przełączę się w int32, to wektoryzacja jest wykonywana. Może wektoryzacja dla float32 nie jest jeszcze dostępna ...
Czy ktoś ma pomysł? Czy zapomnę coś w linii cmd lub w mojej implementacji?
Z góry dziękuję za pomoc.
Guix
Dziękuję, '-funsafe-matematyczne-optymalizacje' robi lewę! – user2092113