これらの関数は、完全に設定可能な fpmul
および fpmac
関数です。複素浮動小数点数の各部分は異なる方法で処理されるので、出力は常に 8 つの値を持つと考えることができます。vector<cfloat,4>
は、real0 - complex0 - real1 - complex1 … を反復するループができます。この機能により、柔軟性ができ、共役の演算をインプリメントできるようになります。
vector<float,8> fpmac_conf(vector<float,8> acc, vector<float,32> xbuf, int xstart, unsigned int xoffs, vector<float,8> zbuf, int zstart, unsigned int zoffs, bool ones, bool abs, unsigned int addmode, unsigned int addmask, unsigned int cmpmode, unsigned int & cmp)
乗算結果を戻します。
パラメーター | 説明 |
---|---|
acc | 現在のアキュムレータ レジスタの値。このパラメーターは fpmul_conf には存在しません。 |
xbuf | 最初の乗算入力バッファー。 |
xstart | X の全レーンの開始オフセット。 |
xoffs | レーンあたり 4 ビット: X の追加のレーン依存オフセット。 |
zbuf | オプション 2 つ目の乗算入力バッファー。zbuf が指定されない場合、xbuf が 2 つ目のバッファーとして使用されます。 |
zstart | Z の全レーンの開始オフセット。コンパイル時の定数である必要があります。 |
zoffs | レーンあたり 4 ビット: Z の追加のレーン依存オフセット。 |
ones | true の場合、Z からのレーンはすべて 1.0 に置き換えられます。 |
abs | true の場合、絶対値は累積の前のものが使用されます。 |
addmode | fpadd_add (すべて add)、fpadd_sub (すべて sub)、fpadd_mixadd または fpadd_mixsub (add-sub または sub-add ペア) のいずれかを選択します。これは、コンパイル時間定数にする必要があります。 |
addmask | 8 x 1 LSB ビット: ビットが設定される場合 (addmode によって異なる)、対応するレーンがネゲートされます。 |
cmpmode | 1 レーンあたりのアキュムレータと乗算結果の間の最小値を選択するには fpcmp_lt を、最大値を選択するには fpcmp_ge を、通常の合計を選択するには fpcmp_nrm を使用します。 |
cmp | オプション 8 x 1 LSB ビット: fpcmp_ge または fpcmp_lt を "cmpmode " で使用する場合、アキュムレータが選択されると、ビットが設定されます (レーンごと)。 |