Por padrão, quando a instrução personalizada é usada, as constantes de ponto flutuante são compiladas conforme as operações de precisão única e ponto flutuante de precisão única são implementadas no hardware. As soluções alternativas a seguir forçarão as constantes de pontos flutuantes a serem compiladas à medida que operações de precisão dupla e ponto flutuante de precisão dupla são implementadas no software.
Você pode usar uma das seguintes soluções alternativas:
Opção 1 - Modifique seu software adicionando o postfix "L" a constantes de ponto flutuante de precisão dupla para garantir que as constantes não se convertam em uma única precisão.
A tabela a seguir mostra o código de exemplo e o uso personalizado de hardware de instrução de ponto flutuante, precisão e se a implementação está em hardware ou software.
Código de exemplo | Uso de CI de FP | Precisão | Implementação |
b= a * 4,67 | Sim | Único | Hardware |
b = a * 4,67 | Não | Duplo | Software |
b = a * 4,67f | Sim | Único | Hardware |
b = a * 4,67f | Não | Único | Software |
b = a * 4,67L | não se importa* | Duplo | Software |
Opção 2 - Em public.mk, remova manualmente o sinalizador -mcustom-fpu-config e substitua-o por bandeiras individuais do compilador, mas omita a bandeira -fsingle-precision-constant.
"-mcustom-fpu-config=60-1" para "-mcustom-fmuls=252 –mcustom-fadds=253 –mcustom-fsubs=254" ou
"-mcustom-fpu-config=60-2" a "-mcustom-fmuls=252 –mcustom-fadds=253 –mcustom-fsubs=254 –mcustom-divs=255"
Observe que a diferença entre 60-1 e 60-2 é que 60-1 não tem a bandeira -mcustom-divs.
Para obter mais detalhes, consulte o Apêndice D em http://www.altera.com/literature/ug/ug_nios2_custom_instruction.pdf