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ブロックからのチェーンイン入力との浮動小数点加算または減算を行います。
このモードでは、次の式が適用されます。
- チェーンイン機能が有効になっている場合
- 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 に供給されます。また、入力 Ax に対して前の可変DSPブロックからの chainin 入力を加算または減算し、その結果を出力します。 このモードでは、次の式が適用されます。
- チェーンイン機能が有効になっている場合
- 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
|
2つのFP16乗算の合計とFP32加算モード |
このモードでは、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モード |
このモードでは、2つの半精度乗算の和と、前の可変DSPブロックからのチェーンイン入力の合計を計算します。出力は単精度浮動小数点値で、チェーンアウトに供給されます。
このモードでは、次の式が適用されます。
- チェーンイン機能が有効になっている場合
- 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つの半精度乗算の和を計算し、チェーンアウトに供給します。また、入力 fp32_adder_a に対して前の可変DSPブロックからのチェーンイン入力を加算または減算し、その結果を出力します。
このモードでは、次の式が適用されます。
- チェーンイン機能が有効になっている場合
- 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
|