Ich habe einen Kompilierfehler "Argument muss eine Konstante sein" bei Verwendung von NEON intrinsischen vshr_n_u32
. Der Funktionsprototyp ist:NEON intrinsisch, kompilieren Fehler "Argument muss eine Konstante sein" bei der Verwendung von vshr_n_u32
__extension__ static __inline uint32x2_t __attribute__ ((__always_inline__))
vshr_n_u32 (uint32x2_t __a, const int __b)
{
return (uint32x2_t)__builtin_neon_vshr_nv2si ((int32x2_t) __a, __b, 0);
}
Und hier ist meine Funktion:
uint32x2_t shift_func(int index)
{
int shift_bit[] = {2, 4, 5, 6, 7, 8, 9, 10};
int n_val = shift_bit[index];
uint32x2_t src_reg = {16, 32};
return vshr_n_u32(src_reg, n_val);
}
Der Wert n_val
kann nur zur Laufzeit bekannt sein. Aber nach Kompilierungsfehler scheint es, dass der Wert n_val
zur Kompilierzeit bekannt sein sollte. Obwohl der Typ __b
const int
ist, denke ich, dass es richtig sein sollte, eine int-Variable einzugeben.
Wie den Kompilierungsfehler zu entfernen? Oder wie benutzt man vshr_n_u32
in dieser Funktion?
Vielen Dank! Das ist hilfreich. – maofu