J'ai une erreur de compilation "l'argument doit être une constante" lors de l'utilisation de NEON intrinsèque vshr_n_u32
. Le prototype de la fonction est:NEON intrinsèque, erreur de compilation "argument doit être une constante" lors de l'utilisation de 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);
}
Et voici ma fonction:
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);
}
La valeur de n_val
ne peut être connue au moment de l'exécution. Mais selon l'erreur de compilation, il semble que la valeur de n_val
devrait être connue à la compilation. Bien que le type de __b
soit const int
, je pense qu'il devrait être bon d'entrer une variable int.
Comment faire pour supprimer l'erreur de compilation? Ou comment utiliser vshr_n_u32
dans cette fonction?
Merci, c'est utile. – maofu