Ich habe Probleme mit der Verwendung von NEON-Intrinsics und Inline-Assemblierung in Android NDK.
NEON-Typen wie float32x4_t
geben einen Fehler "ungültige Argumente" beim Kompilieren von C ++ - Code mit GCC 4.6 und 4.8, aber der Code kompiliert gut, wenn als C kompiliert.
Hier ist zum Beispiel ein Code:
%Vor%Ich bekomme hier zwei Fehler:
Invalid arguments ' Candidates are: ? vaddq_f32(?, ?) '
. Invalid arguments ' Candidates are: ? VectorAdd(?, ?) '
. Alle NEON-Typen werden als angezeigt? in der Fehlermeldung, während Nicht-NEON-Typen korrekt angezeigt werden.
Es ist auch seltsam, dass Funktionen, die nur NEON-Typen als Rückgabewerte verwenden (zB vld1q_f32
und mein abstrakter Wrapper davon), nicht unter dem Fehler leiden.
Ich habe den gleichen Code im GCC Explorer 4.6 und 4.5 ausprobiert, und es gibt keinen Fehler, und eine korrekte und optimierte Assemblierung wird jedoch generiert funktioniert es nicht mit Android NDK.
Tags und Links android c++ android-ndk intrinsics neon