Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Los tipos intrínsecos NEON funcionan en C pero arrojan error de argumentos no válidos en C ++

Tengo problemas con el uso de NEON intrinsics y el montaje en línea en Android NDK.

Los tipos NEON como float32x4_t dan un error de "argumentos no válidos" al compilar código C ++ con GCC 4.6 y 4.8, sin embargo, el código se compila bien si se compila como C.

Por ejemplo, he aquí un código:

 inline float32x4_t VectorAdd(float32x4_t a, float32x4_t b) { return vaddq_f32(a, b); } 

Tengo dos errores aquí:

  • En la función en sí: Invalid arguments ' Candidates are: ? vaddq_f32(?, ?) ' Invalid arguments ' Candidates are: ? vaddq_f32(?, ?) ' .
  • Donde se llama la función: Invalid arguments ' Candidates are: ? VectorAdd(?, ?) ' Invalid arguments ' Candidates are: ? VectorAdd(?, ?) ' .

Todos los tipos NEON se muestran como? En el mensaje de error, mientras que los tipos no-NEON se muestran correctamente.

Lo que también es extraño es que las funciones que sólo utilizan tipos NEON como valores de retorno (por ejemplo, vld1q_f32 y mi contenedor abstracto) no sufren el error.

He intentado el mismo código en GCC Explorer 4.6 y 4.5, y no hay error, y se genera el montaje correcto y optimizado, sin embargo, no funciona con Android NDK.

  • Cómo dividir en neón intrínseca por un número de flotador
  • One Solution collect form web for “Los tipos intrínsecos NEON funcionan en C pero arrojan error de argumentos no válidos en C ++”

    Como solución alternativa, en Ventana / Preferencias / C / C ++ / Análisis de código, establezca los errores Severidad de "Argumentos no válidos" en Advertencia, para que estos errores falsos no impidan el inicio de la aplicación.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.