単純な浮動小数点数乗算器には、float
および cfloat
ベクター データ型が混在したりしなかったりする、さまざまな種類があります。cfloat
が 2 つの場合、組み込み関数が、スケジュールする必要のある 2 つのマイクロコード命令になります。最初のバッファーは 512 ビットまたは 1024 ビット長 (vector<float,32>, vector<float,16>, vector<cfloat,16>, vector<cfloat,8>
) のずれかになり、2 つ目のバッファーは常に 256 ビット長 (vector<float,8>, vector<cfloat,4>
) になります。どの組み合わせでも使用できます。
vector<float,8> fpmul(vector<float,32> xbuf, int xstart, unsigned int xoffs, vector<float,8> zbuf, int zstart, unsigned int zoffs)
乗算結果を戻します。
パラメーター | 説明 |
---|---|
xbuf | 最初の乗算入力バッファー。 |
xstart | X の全レーンの開始オフセット。 |
xoffs | レーンあたり 4 ビット: X の追加のレーン依存オフセット。 |
zbuf | 2 つ目の乗算入力バッファー。 |
zstart | Z の全レーンの開始オフセット。コンパイル時の定数である必要があります。 |
zoffs | レーンあたり 4 ビット: Z の追加のレーン依存オフセット。 |
for (i = 0 ; i < 8 ; i++)
ret[i] = xbuf[xstart + xoffs[i]] * zbuf[zstart + zoffs[i]]