FP32乗算モード |
このモードは、単精度乗算演算を実行します。
このモードでは、次の式が適用されます。
- fp32_result = fp32_result = fp32_mult_a*fp32_mult_b
|
- fp32_mult_overflow
- fp32_mult_underflow
- fp32_mult_inexact
- fp32_mult_invalid
|
FP32加算または減算モード |
このモードは、単精度の加算または減算演算を実行します。
このモードでは、次の式が適用されます。
- fp32_result = fp32_adder_b+fp32_adder_a
- fp32_result = fp32_adder_b-fp32_adder_a
|
- fp32_adder_overflow
- fp32_adder_underflow
- fp32_adder_inexact
- fp32_adder_invalid
|
加算または減算でのFP32乗算モード |
このモードでは、単精度の乗算と、それに続く加算または減算演算が実行されます。
このモードでは、次の式が適用されます。
- チェーンイン機能がイネーブルになっている場合、
- fp32_result = (fp32_mult_a*fp32_mult_b) + fp32_chainin
- fp32_result = (fp32_mult_a*fp32_mult_b) - fp32_chainin
- チェーンイン機能がディスエーブルになっている場合、
- fp32_result = (fp32_mult_a*fp32_mult_b) + fp32_adder_a
- fp32_result = (fp32_mult_a*fp32_mult_b) - fp32_adder_a
|
- fp32_mult_overflow
- fp32_mult_underflow
- fp32_mult_inexact
- fp32_mult_invalid
- fp32_adder_overflow
- fp32_adder_underflow
- fp32_adder_inexact
- fp32_adder_invalid
|
累積でのFP32乗算モード |
このモードは、浮動小数点乗算を実行した後、前の乗算結果で浮動小数点の加算または減算を実行します。
このモードでは、次の式が適用されます。
- accumulate 信号がHighに駆動される場合、
- fp32_result(t) = [fp32_mult_a(t)*fp32_mult_b(t)] + fp32_result(t-1)
- fp32_result(t) = [fp32_mult_a(t)*fp32_mult_b(t) - fp32_result(t-1)
- accumulate 信号がLowに駆動される場合、
- fp32_result = fp32_mult_a*fp32_mult_b.
|
FP32ベクトル1モード |
このモードは、浮動小数点乗算を実行した後、前の可変DSP Blockからのチェーンイン入力で浮動小数点加算または減算を実行します。
このモードでは、次の式が適用されます。
- チェーンイン機能がイネーブルになっている場合、
- fp32_result = (fp32_mult_a * fp32_mult_b) + fp32_chainin, fp32_chainout = fp32_adder_a
- fp32_result = (fp32_mult_a * fp32_mult_b) - fp32_chainin, fp32_chainout = fp32_adder_a
- チェーンイン機能がディスエーブルになっている場合、
- fp32_result = fp32_mult_a * fp32_mult_b, fp32_chainout = fp32_adder_a
|
FP32ベクトル2モード |
このモードは、乗算結果が直接 chainout に供給される浮動小数点乗算を実行します。次に、前の変数DSP Blockからの chainin 入力が、出力結果として入力 Ax に加算または減算されます。 このモードでは、次の式が適用されます。
- チェーンイン機能がイネーブルになっている場合、
- fp32_result = fp32_adder_a + fp32_chainin, fp32_chainout = fp32_mult_a * fp32_mult_b
- fp32_result = fp32_adder_a - fp32_chainin, fp32_chainout = fp32_mult_a * fp32_mult_b
- チェーンイン機能がディスエーブルになっている場合、
- fp32_result = fp32_adder_a, fp32_chainout = fp32_mult_a * fp32_mult_b
|
2つのFP16乗算の合計モード |
このモードは、2つの半精度乗算の合計を実行し、単精度の結果を提供します。
このモードでは、次の式が適用されます。
- fp32_result =(fp16_mult_top_a * fp16_mult_top_b)+(fp16_mult_bot_a * fp16_mult_bot_b)
- fp32_result =(fp16_mult_top_a * fp16_mult_top_b)-(fp16_mult_bot_a * fp16_mult_bot_b)
|
以下は、フラッシュおよびbfloat16形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_overflow
- fp16_mult_top_underflow
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_overflow
- fp16_mult_bot_underflow
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_overflow
- fp16_adder_underflow
以下は、拡張形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_infinite
- fp16_mult_top_zero
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_infinite
- fp16_mult_bot_zero
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_infinite
- fp16_adder_zero
|
FP32加算での2つのFP16乗算の合計モード |
このモードは、2つの半精度乗算の合計を実行し、単精度の結果を提供します。
このモードでは、次の式が適用されます。
- fp32_result = (fp16_mult_top_a*fp16_mult_top_b) + (fp16_mult_bot_a*fp16_mult_bot_b) - fp32_adder_a
- fp32_result = (fp16_mult_top_a*fp16_mult_top_b) - (fp16_mult_bot_a*fp16_mult_bot_b) - fp32_adder_a
- fp32_result = (fp16_mult_top_a*fp16_mult_top_b) + (fp16_mult_bot_a*fp16_mult_bot_b) + fp32_adder_a
- fp32_result = (fp16_mult_top_a*fp16_mult_top_b) - (fp16_mult_bot_a*fp16_mult_bot_b) + fp32_adder_a
|
以下は、フラッシュおよびbfloat16形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_overflow
- fp16_mult_top_underflow
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_overflow
- fp16_mult_bot_underflow
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_overflow
- fp16_adder_underflow
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
以下は、拡張形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_infinite
- fp16_mult_top_zero
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_infinite
- fp16_mult_bot_zero
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_infinite
- fp16_adder_zero
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
|
累積での2つのFP16乗算の合計モード |
このモードは、2つの半精度乗算の合計を実行し、値を単精度形式に累積します。
このモードでは、次の式が適用されます。
- accumulate 信号がHighに駆動される場合、
- fp32_result (t) = [fp16_mult_top_a(t) * fp16_mult_top_b(t)] + [fp16_mult_bot_a(t) * fp16_mult_bot_b(t)] + fp32_result(t-1)
- fp32_result (t) = [fp16_mult_top_a(t) * fp16_mult_top_b(t)] - [fp16_mult_bot_a(t) * fp16_mult_bot_b(t)] + fp32_result(t-1)
- fp32_result (t) = [fp16_mult_top_a(t) * fp16_mult_top_b(t)] + [fp16_mult_bot_a(t) * fp16_mult_bot_b(t)] - fp32_result(t-1)
- fp32_result (t) = [fp16_mult_top_a(t) * fp16_mult_top_b(t)] - [fp16_mult_bot_a(t) * fp16_mult_bot_b(t)] - fp32_result(t-1)
- accumulate 信号がLowに駆動される場合、
- fp32_result = [fp16_mult_top_a * fp16_mult_top_b] + [fp16_mult_bot_a * fp16_mult_bot_b]
- fp32_result = [fp16_mult_top_a * fp16_mult_top_b] - [fp16_mult_bot_a * fp16_mult_bot_b]
|
以下は、フラッシュおよびbfloat16形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_overflow
- fp16_mult_top_underflow
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_overflow
- fp16_mult_bot_underflow
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_overflow
- fp16_adder_underflow
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
以下は、拡張形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_infinite
- fp16_mult_top_zero
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_infinite
- fp16_mult_bot_zero
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_infinite
- fp16_adder_zero
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
|
FP16ベクトル1モード |
このモードは、前の変数DSP Blockからのチェーンイン入力を使用して2つの半精度乗算の合計を実行します。出力は、チェーンアウトに供給される単精度浮動小数点値となります。
このモードでは、次の式が適用されます。
- チェーンイン機能がイネーブルになっている場合、
- fp32_result = (fp16_mult_top_a * fp16_mult_top_b) + (fp16_mult_bot_a * fp16_mult_bot_b) + fp32_chainin, fp32_chainout = fp32_adder_a
- fp32_result = (fp16_mult_top_a * fp16_mult_top_b) - (fp16_mult_bot_a * fp16_mult_bot_b) + fp32_chainin, fp32_chainout = fp32_adder_a
- fp32_result = (fp16_mult_top_a * fp16_mult_top_b) + (fp16_mult_bot_a * fp16_mult_bot_b) - fp32_chainin, fp32_chainout = fp32_adder_a
- fp32_result = (fp16_mult_top_a * fp16_mult_top_b) - (fp16_mult_bot_a * fp16_mult_bot_b) - fp32_chainin, fp32_chainout = fp32_adder_a
- チェーンイン機能がディスエーブルになっている場合、
- fp32_result = (fp16_mult_top_a * fp16_mult_top_b) + (fp16_mult_bot_a * fp16_mult_bot_b), fp32_chainout = fp32_adder_a
- fp32_result = (fp16_mult_top_a * fp16_mult_top_b) - (fp16_mult_bot_a * fp16_mult_bot_b), fp32_chainout = fp32_adder_a
|
以下は、フラッシュおよびbfloat16形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_overflow
- fp16_mult_top_underflow
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_overflow
- fp16_mult_bot_underflow
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_overflow
- fp16_adder_underflow
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
以下は、拡張形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_infinite
- fp16_mult_top_zero
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_infinite
- fp16_mult_bot_zero
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_infinite
- fp16_adder_zero
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
|
FP16ベクトル2モード |
このモードは、2つの半精度乗算の合計を実行し、チェーンアウトに供給されます。前の変数DSP Blockからのチェーンイン入力は、出力結果として入力 fp32_adder_a に加算または減算されます。
このモードでは、次の式が適用されます。
- チェーンイン機能がイネーブルになっている場合、
- fp32_result = fp32_adder_a + fp32_chainin, fp32_chainout = (fp16_mult_top_a * fp16_mult_top_b) + (fp16_mult_bot_a * fp16_mult_bot_b)
- fp32_result = fp32_adder_a - fp32_chainin, fp32_chainout = (fp16_mult_top_a * fp16_mult_top_b) + (fp16_mult_bot_a * fp16_mult_bot_b)
- fp32_result = fp32_adder_a + fp32_chainin, fp32_chainout = (fp16_mult_top_a * fp16_mult_top_b) - (fp16_mult_bot_a * fp16_mult_bot_b)
- fp32_result = fp32_adder_a - fp32_chainin, fp32_chainout = (fp16_mult_top_a * fp16_mult_top_b) - (fp16_mult_bot_a * fp16_mult_bot_b)
- チェーンイン機能がディスエーブルになっている場合、
- fp32_result = fp32_adder_a, fp32_chainout = (fp16_mult_top_a * fp16_mult_top_b) + (fp16_mult_bot_a * fp16_mult_bot_b)
- fp32_result = fp32_adder_a, fp32_chainout = (fp16_mult_top_a * fp16_mult_top_b) - (fp16_mult_bot_a * fp16_mult_bot_b)
|
以下は、フラッシュおよびbfloat16形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_overflow
- fp16_mult_top_underflow
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_overflow
- fp16_mult_bot_underflow
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_overflow
- fp16_adder_underflow
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
以下は、拡張形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_infinite
- fp16_mult_top_zero
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_infinite
- fp16_mult_bot_zero
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_infinite
- fp16_adder_zero
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
|
FP16ベクトル3 |
このモードは、単精度の累積と2つの半精度の乗算の合計を実行します。
このモードでは、次の式が適用されます。
- accumulate がHighに駆動される場合、
-
fp32_result(t) = fp32_adder_a(t) + fp32_result(t-1), fp32_chainout = {fp16_mult_top_a * fp16_mult_top_b} + {fp16_mult_bot_a * fp16_mult_bot_b}
- fp32_result(t) = fp32_adder_a(t) - fp32_result(t-1), fp32_chainout = {fp16_mult_top_a * fp16_mult_top_b} + {fp16_mult_bot_a * fp16_mult_bot_b}
-
fp32_result(t) = fp32_adder_a(t) + fp32_result(t-1), fp32_chainout = {fp16_mult_top_a * fp16_mult_top_b} - {fp16_mult_bot_a * fp16_mult_bot_b}
- fp32_result(t) = fp32_adder_a(t) - fp32_result(t-1), fp32_chainout = {fp16_mult_top_a * fp16_mult_top_b} - {fp16_mult_bot_a * fp16_mult_bot_b}
- accumulate がLowに駆動される場合、
- fp32_result = fp32_adder_a, fp32_chainout = {fp16_mult_top_a * fp16_mult_top_b} + {fp16_mult_bot_a * fp16_mult_bot_b}
- fp32_result = fp32_adder_a, fp32_chainout = {fp16_mult_top_a * fp16_mult_top_b} - {fp16_mult_bot_a * fp16_mult_bot_b}
|
以下は、フラッシュおよびbfloat16形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_overflow
- fp16_mult_top_underflow
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_overflow
- fp16_mult_bot_underflow
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_overflow
- fp16_adder_underflow
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
以下は、拡張形式でサポートされている例外フラグです。
- fp16_mult_top_invalid
- fp16_mult_top_inexact
- fp16_mult_top_infinite
- fp16_mult_top_zero
- fp16_mult_bot_invalid
- fp16_mult_bot_inexact
- fp16_mult_bot_infinite
- fp16_mult_bot_zero
- fp16_adder_invalid
- fp16_adder_inexact
- fp16_adder_infinite
- fp16_adder_zero
- fp32_adder_invalid
- fp32_adder_inexact
- fp32_adder_overflow
- fp32_adder_underflow
|