プロセッサ機能選択オプション - 2022.1 日本語

Vitis 統合ソフトウェア プラットフォームの資料: エンベデッド ソフトウェア開発 (UG1400)

Document ID
UG1400
Release Date
2022-04-26
Version
2022.1 日本語
-mcpu=vX.YY.Z
MicroBlaze ハードウェアのバージョン v.X.YY.Z に適したコードを生成します。プロセッサ用に最適化された正しいコードを生成するには、このオプションでプロセッサのハードウェア バージョンを指定します。

指定するバージョンによって、-mcpu の動作は異なります。

Pr-v3.00.a
3 段プロセッサ パイプライン モードを使用します。命令を遅延スロットに移動する例外は禁止されません。
v3.00.a および v4.00.a
3 段プロセッサ パイプライン モードを使用します。命令を遅延スロットに移動する例外は禁止されます。
v5.00.a およびそれ以降
5 段プロセッサ パイプライン モードを使用します。命令を遅延スロットに移動する例外は禁止されません。
-mlittle-endian/-mbig-endian
コンパイルされているコードのターゲット マシンのエンディアンを選択するため、これらのオプションを使用します。生成されるバイナリ オブジェクト ファイルのエンディアンもこのオプションに基づいて設定されます。下位ツール (as、cc1、cc1plus、ld など) で該当するエンディアンを設定するため、GCC ドライバーはオプションを下位ツールに渡します。

デフォルトは -mbig-endian です。

複数のエンディアンをとりまぜたオブジェクト ファイルをリンクさせることはできません。

-mno-xl-soft-mul
32 ビット乗算に対し、ハードウェア乗算命令を使用できるようにします。MicroBlaze プロセッサには、ハードウェア乗算リソースの使用をオン/オフにするオプションがあります。MicroBlaze でハードウェア乗算オプションがオンになっている場合は、このオプションを使用する必要があります。ハードウェア乗算を使用すると、アプリケーションのパフォーマンスが向上します。このオプションを使用すると、C プリプロセッサ定義 HAVE_HW_MUL が自動的に定義されます。これにより、この機能が使用可能かどうかに基づいて、ハードウェアに適した C またはアセンブリ コードが記述されます。
-mxl-multiply-high
MicroBlaze には、32X32 ビット乗算の上位 32 ビットを計算する命令をイネーブルにするオプションがあります。このオプションは、コンパイラでこれらの上位ビット乗算命令を使用するよう指示します。このオプションを使用すると、C プリプロセッサ定義 HAVE_HW_MUL_HIGH が自動的に定義されます。これにより、この機能が使用可能かどうかに基づいて、ハードウェアに適した C またはアセンブリ コードが記述されます。
-mno-xl-multiply-high
上位ビット乗算命令を使用しないよう指定します。このオプションがデフォルトです。
-mxl-soft-mul
MicroBlaze プロセッサにハードウェア乗算器がないことを示します。デバイスにハードウェア乗算器がない場合、32 ビット乗算演算はソフトウェア エミュレーション routine__mulsi3 への呼び出しに置換されます。このオプションがデフォルトです。
-mno-xl-soft-div
MicroBlaze にハードウェア除算器をインスタンシエートできます。除算器がある場合、このオプションを指定すると、コンパイルされているプログラムでハードウェア除算命令が使用できるようになります。

プログラムに除算処理が多数含まれている場合、このオプションを使用するとパフォーマンスが向上します。このオプションを使用すると、C プリプロセッサ定義 HAVE_HW_DIV が自動的に定義されます。これにより、この機能が使用可能かどうかに基づいて、ハードウェアに適した C またはアセンブリ コードが記述されます。

-mxl-soft-div
ターゲットの MicroBlaze ハードウェア除算器がないことを示します。

このオプションがデフォルトです。このオプションを設定すると、すべての 32 ビット除算が対応するソフトウェア エミュレーション ルーチン (__divsi3__udivsi3) に置換されます。

-mxl-barrel-shift
MicroBlaze プロセッサは、バレル シフターを組み込むようコンフィギュレーションできます。プロセッサのバレル シフト機能を使用するには、-mxl-barrel-shift オプションを使用します。

デフォルトではバレル シフターはないと判断され、オペランドのシフトには加算と乗算が使用されます。バレル シフターをイネーブルにすると、特に浮動小数点ライブラリを使用している場合に、アプリケーションの速度が大幅に向上します。このオプションを使用すると、C プリプロセッサ定義 HAVE_HW_BSHIFT が自動的に定義されます。これにより、この機能が使用可能かどうかに基づいて、ハードウェアに適した C またはアセンブリ コードが記述されます。

-mno-xl-barrel-shift
ハードウェア バレル シフト命令を使用しないよう指定します。このオプションがデフォルトです。
-mxl-pattern-compare
コンパイラでのパターン比較命令の使用をオンにします。

パターン比較命令を使用すると、プログラムのブール演算の速度が向上します。また、パターン比較操作では、strcpystrlenstrcmp などの文字列処理ルーチンにおいて、バイト長ではなくワード長での操作が可能になります。文字列処理ルーチンを多用するプログラムでは、これにより処理速度が大幅に向上します。このオプションを使用すると、C プリプロセッサ定義 HAVE_HW_PCMP が自動的に定義されます。これにより、この機能が使用可能かどうかに基づいて、ハードウェアに適した C またはアセンブリ コードが記述されます。

-mno-xl-pattern-compare
パターン比較命令を使用しないよう指定します。これがデフォルトです。
-mhard-float
コンパイラでの単精度浮動小数点命令 (faddfrsubfmulfdiv) の使用をオンにします。

また、fcmp.p 命令も使用します。p は、legeltgteqne などの述語条件です。これらの命令は、ハードウェアで FPU がイネーブルの場合に、MicroBlaze でデコードおよび実行されます。このオプションを使用すると、C プリプロセッサ定義 HAVE_HW_FPU が自動的に定義されます。これにより、この機能が使用可能かどうかに基づいて、ハードウェアに適した C またはアセンブリ コードが記述されます。

-msoft-float
浮動小数点演算のソフトウェア エミュレーションを使用するよう指定します。このオプションがデフォルトです。
-mxl-float-convert
コンパイラでの単精度浮動小数点変換命令 (fint および flt) の使用をオンにします。ハードウェアで FPU がイネーブルになっており、このオプションの命令がイネーブルになっていると、この命令が MicroBlaze によりネイティブにデコードされ、実行されます。
-mxl-float-sqrt
コンパイラでの単精度浮動小数点平方根命令 (fsqrt) の使用をオンにします。ハードウェアで FPU がイネーブルになっており、このオプションの命令がイネーブルになっていると、この命令が MicroBlaze によりネイティブにデコードされ、実行されます。