0
私のCプログラムでは、プロセッサがMULとADDではなくFMADD命令を使って* b + cを計算します。これを行うためにこれをコンパイラにどのように指定するのですか?また、コンパイル後のアセンブリコードでFMADD命令を見たいと思います。MCCのGCCでFused Multiply Addを有効にする方法
gccのバージョン4.9.2 ARM v7のプロセッサあなたが次のFPUのいずれかを持っている必要があり
私のCプログラムでは、プロセッサがMULとADDではなくFMADD命令を使って* b + cを計算します。これを行うためにこれをコンパイラにどのように指定するのですか?また、コンパイル後のアセンブリコードでFMADD命令を見たいと思います。MCCのGCCでFused Multiply Addを有効にする方法
gccのバージョン4.9.2 ARM v7のプロセッサあなたが次のFPUのいずれかを持っている必要があり
、
あなたはハードフロート ABIオプションを使用する必要があります。
An example with integers。
An example with floats。
特別な関数呼び出しを指定する必要はありません。コンパイラは、有益であると判断した場合に命令を使用します。
生成のため責任arm.cのコードはTARGET_FMAはバージョン '4' 以上FPUされた状態で、
case FMA:
if (TARGET_32BIT && TARGET_HARD_FLOAT && TARGET_FMA)
あります。
math.hから関数 'fma'を使用して、適切な-marchフラグをコンパイラに渡してください。 –
できます。 fmaの代わりにFP_CONTRACTと通常の*、+演算子を使用することは可能ですか? #pragma STDC FP_CONTRACT ONを試しました。動作しませんでした –
-marchおよび-ffp-contractフラグに応じて、プラグマが必要ない場合もあります。 GCCは、fmaをネイティブにサポートしているターゲットでは、デフォルトで縮小を行います。 –