Par défaut, lorsque l’instruction personnalisée est utilisée, les constantes en virgule flottante sont compilées au fur et à mesure que des opérations de précision unique en virgule flottante sont implémentées dans le matériel. Les solutions suivantes forceront la compilation des constantes de virgule flottante à mesure que des opérations de double précision et de double précision en virgule flottante seront implémentées dans le logiciel.
Vous pouvez utiliser l’une des solutions de contournement suivantes :
Option 1 - Modifiez votre logiciel en ajoutant le postfixe « L » aux doubles constantes de virgule flottante de précision pour s’assurer que les constantes ne sont pas converties en une seule précision.
Le tableau suivant montre l’utilisation du code et des instructions personnalisées en virgule flottante, la précision et le fait que l’implémentation se trouve dans le matériel ou les logiciels.
Exemple de code | Utilisation du FP CI | Précision | Application |
b= un * 4,67 | Oui | Seul | Matériel |
b = a * 4,67 | Non | Double | Logiciel |
b = a * 4,67f | Oui | Seul | Matériel |
b = a * 4,67f | Non | Seul | Logiciel |
b = a * 4,67L | s’en fiche* | Double | Logiciel |
Option 2 - Dans public.mk , retirez manuellement la drapeau -mcustom-fpu-config et remplacez par les drapeau du compilateur individuel, mais omettre le drapeau -fsingle-precision-constant.
« -mcustom-fpu-config=60-1 » à « -mcustom-fmuls=252 -mcustom-253 -mcustom-fsubs=254 » ou
« -mcustom-fpu-config=60-2 » à « -mcustom-fmuls=252 -mcustom-253 -mcustom-fsubs=254 -mcustom-divs=255 »
Veuillez noter que la différence entre 60-1 et 60-2 est que 60-1 ne possède pas la drapeau -mcustom-divs.
Pour plus de détails, reportez-vous à l’Annexe D de http://www.altera.com/literature/ug/ug_nios2_custom_instruction.pdf