デフォルトでは、カスタム命令を使用すると、浮動小数点定数は単精度としてコンパイルされ、単精度浮動小数点演算はハードウェアに実装されます。次の回避策では、倍精度および倍精度浮動小数点演算がソフトウェアに実装されるため、浮動小数点定数を強制的にコンパイルします。
次のいずれかの回避策を使用することができます。
オプション 1 - 倍精度浮動小数点定数に後置 「L」を追加してソフトウェアを変更し、定数が単精度に変換されないようにします。
次の表は、コード例と浮動小数点カスタム命令ハードウェアの使用方法、精度、および実装がハードウェアまたはソフトウェア内にあるかどうかを示しています。
コード例 | FP CI の使用方法 | 精度 | 実装 |
b= a * 4.67 | はい | 単一 | ハードウェア |
b = a * 4.67 | いいえ | ダブル | ソフトウェア |
b = a * 4.67f | はい | 単一 | ハードウェア |
b = a * 4.67f | いいえ | 単一 | ソフトウェア |
b = a * 4.67L | 気にしないでください* | ダブル | ソフトウェア |
オプション 2 -public.mk では、-mcusほかに -mcusほか fpu-config フラグを手動で削除し、個々のコンパイラー・フラグに置き換えますが、-fsingle-precision-constant フラグは省略します。
"-mcussub-fpu-config=60-1" ~ "-mcusでしょうか-fmuls=252 -mcusnuma-numa-numads=253 -mcusでしょうか-fsubs=254" または
"-mcussub-fpu-config=60-2" ~ "-mcusでしょうか-fmuls=252 -mcusnuma-numa-numads=253 -mcusconfig-fsubs=254 -mcusconfig-divs=255"
なお、60-1 と 60-2 の違いは、60-1 に -mcus分け-divs フラグが付かない点です。
詳細については、付録 D を参照してください。 http://www.altera.com/literature/ug/ug_nios2_custom_instruction.pdf