Secara bawaan, ketika instruksi kustom digunakan, konstanta titik ambang dikompilasi sebagai operasi presisi tunggal dan titik ambang presisi tunggal diimplementasikan dalam perangkat keras. Solusi berikut akan memaksa konstanta titik ambang untuk dikompilasi sebagai operasi titik ambang presisi ganda dan presisi ganda diterapkan dalam perangkat lunak.
Anda dapat menggunakan salah satu solusi berikut:
Opsi 1 - Modifikasi perangkat lunak Anda dengan menambahkan postfix "L" ke konstanta titik ambang presisi ganda untuk memastikan konstanta tidak dikonversi ke presisi tunggal.
Tabel berikut menunjukkan contoh kode dan penggunaan perangkat keras instruksi kustom titik ambang, presisi, dan apakah implementasinya ada di perangkat keras atau perangkat lunak.
Contoh Kode | Penggunaan CI FP | Presisi | Implementasi |
b= a * 4,67 | Ya | Satu | Hardware |
b = * 4,67 | Tidak | Double | Perangkat lunak |
b = * 4,67f | Ya | Satu | Hardware |
b = * 4,67f | Tidak | Satu | Perangkat lunak |
b = * 4,67L | tidak perduli* | Double | Perangkat lunak |
Opsi 2 - Dalam public.mk , lepaskan flag -mcustom-fpu-config secara manual dan ganti dengan masing-masing bendera compiler, tetapi lepaskan flag -fsingle-precision-constant.
"-mcustom-fpu-config=60-1" ke "-mcustom-fmuls=252 –mcustom-fadds=253 –mcustom-fsubs=254" atau
"-mcustom-fpu-config=60-2" ke "-mcustom-fmuls=252 –mcustom-fadds=253 –mcustom-fsubs=254 –mcustom-divs=255"
Harap diperhatikan bahwa perbedaan antara 60-1 dan 60-2 adalah bahwa 60-1 tidak memiliki bendera –mcustom-divs.
Untuk detail lebih lanjut, lihat Lampiran D di http://www.altera.com/literature/ug/ug_nios2_custom_instruction.pdf