Pregunta

Estoy usando el procesador Cortex-A8 y no voy a entender cómo usar la bandera -mfpu.

En el Cortex-A8 hay tanto vfpv3 y neón co-procesadores. Anteriormente era no saber cómo utilizar el neón por lo que sólo estaba usando

gcc -marm -mfloat-abi=softfp -mfpu=vfpv3

Ahora he entendido cómo funcionan los procesadores SIMD y he escrito determinado código usando las características intrínsecas de neón. Para el uso de neón coprocesador ahora mi bandera -mfpu tiene que cambiar para -mfpu=neon, por lo que mi compilador de línea de comandos es similar al siguiente

gcc -marm -mfloat-abi=softfp -mfpu=neon

Ahora bien, ¿significa esto que mi vfpv3 no se utiliza más? Tengo un montón de código que no está haciendo uso de neón, no las partes que no hacen uso de vfpv3.

Si tanto neón y vfpv3 todavía se utiliza entonces yo no tengo problemas, pero si se utiliza sólo uno de ellos, ¿cómo puedo hacer uso de ambos?

¿Fue útil?

Solución

NEON implica contar con el apoyo tradicional de VFP también. VFP se puede utilizar para los cálculos de "normal" (no vectorial) de punto flotante. Además, NEON no soporta FP doble precisión por lo que sólo instrucciones VFP se pueden utilizar para eso.
Lo que puede hacer es añadir -S a la línea de comandos de gcc y comprobar el montaje. Instrucciones de arranque con V (por ejemplo vld1.32, vmla.f32) son instrucciones de neón, y los que comienzan con F (DMDF, fmacd) son VFP. (Aunque docs ARM ahora prefieren usar el prefijo V, incluso para las instrucciones VFP, GCC no hace eso.)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top