Pergunta

Estou usando o processador Cortex-A8 e não estou entendendo como usar o -mfpu bandeira.

No Cortex-A8, existem ambos VFPV3 e néon co-processadores. Anteriormente eu não estava sabendo usar neon, então estava usando apenas

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

Agora eu entendi como os processadores SIMD são executados e escrevi certos código usando a Intrinsics de Neon. Para usar o co -processador de neon agora minha bandeira -mfpu tem que mudar para -mfpu=neon, então minha linha de comando do compilador se parece com isso

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

Agora, isso significa que meu vfpv3 não é mais usado? Eu tenho muito código que não está usando neon, as peças não usam vfpv3.

Se o Neon e o VFPV3 ainda forem usados, não tenho problemas, mas se apenas um deles for usado, como posso usar os dois?

Foi útil?

Solução

O neon implica ter o suporte tradicional de VFP também. O VFP pode ser usado para cálculos de ponto flutuante "normal" (não vetor). Além disso, o NEON não suporta FP de precisão dupla para que apenas as instruções VFP possam ser usadas para isso.
O que você pode fazer é adicionar -s à linha de comando do GCC e verificar a montagem. As instruções começando com v (por exemplo, vld1.32, vmla.f32) são instruções de neon, e aquelas que começam com f (fldd, fmacd) são VFP. (Embora os documentos do ARM agora preferam usar o prefixo V, mesmo para instruções de VFP, o GCC não faz isso.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top