Intel Agilex® 7可変精度DSPブロック・ユーザーガイド

ID 683037
日付 10/02/2023
Public
ドキュメント目次

2.2.6. 浮動小数点演算における例外処理

Intel Agilex® 7の浮動小数点演算では、乗算器ブロックと加算器ブロックの例外処理をサポートします。

表 9.  サポートされる例外フラグ
浮動小数点形式 例外フラグ 詳細
単精度 乗算
fp32_mult_overflow 1

この信号は、乗算結果が表現可能な最大値よりも大きな値かを示します。

1: 乗算結果が表現可能な最大値よりも大きい値で、結果が無限大にキャストされる場合

0: 乗算結果が表現可能な最大値より大きくない場合

この信号は、加算または減算モードでは使用できません。

fp32_mult_underflow 1

この信号は、乗算結果が表現可能な最小値よりも小さな値かを示します。

1: 乗算結果が0以外の絶対値で表現可能な最小値よりも小さな値で、結果が0にフラッシュされる場合

0: 乗算結果が表現可能な最小値よりも大きい場合

この信号は、加算または減算モードでは使用できません。

fp32_mult_inexact 1

この信号は、乗算結果が正確に表現されているかを示します。

1: 乗算結果が次に当てはまる場合
  • 丸められた値
  • 表現可能な最小値より小さい値
  • 表現可能な最大値より大きい値

0: 乗算結果が上記の基準のいずれにも該当しない場合

この信号は、加算または減算モードでは使用できません。

fp32_mult_invalid 1

この信号は、乗算器の演算が正しく定義されておらず、無効な結果が生成されていることを示します。

1: 乗算結果が無効で、qNaNにキャストされる場合

0: 乗算結果が無効な数値でない場合

この信号は、加算または減算モードでは使用できません。

加算
fp32_adder_overflow 1

この信号は、加算結果が表現可能な最大値よりも大きな値かを示します。

1: 加算結果が表現可能な最大値よりも大きい値で、結果が無限大にキャストされる場合

0: 加算結果が表現可能な最大値より大きくない場合

この信号は、乗算モードでは使用できません。

fp32_adder_underflow 1

この信号は、加算結果が表現可能な最小値よりも小さな値かを示します。

1: 加算結果が0以外の絶対値で表現可能な最小値よりも小さな値で、結果が0にフラッシュされる場合

0: 加算結果が表現可能な最小値よりも大きい場合

この信号は、乗算モードでは使用できません。

fp32_adder_inexact 1

この信号は、加算結果が正確に表現されているかを示します。

1: 加算結果が次に当てはまる場合
  • 丸められた値
  • 表現可能な最小値より小さい値
  • 表現可能な最大値より大きい値

0: 加算結果が上記の基準のいずれにも該当しない場合

この信号は、乗算モードでは使用できません。

fp32_adder_invalid 1

この信号は、加算器の演算が正しく定義されておらず、無効な結果が生成されていることを示します。

1: 加算結果が無効で、qNaNにキャストされる場合

0: 加算結果が無効な数値でない場合

この信号は、乗算モードでは使用できません。

半精度 乗算

fp16_mult_top_overflow

fp16_mult_bot_overflow

1

この信号は、上または下の乗算結果が表現可能な最大値よりも大きな値かを示します。

1: 乗算結果が表現可能な最大値よりも大きい値で、結果が無限大にキャストされる場合

0: 乗算結果が表現可能な最大値よりも小さい場合

この信号は、加算または減算モードおよび拡張形式では使用できません。

fp16_mult_top_underflow

fp16_mult_bot_underflow

1

この信号は、上または下の乗算結果が表現可能な最小値よりも小さな値かを示します。

1: 乗算結果が表現可能な最小値よりも小さな値で、結果が0にフラッシュされる場合

0: 乗算結果が表現可能な最小値よりも大きい場合

この信号は、加算または減算モードおよび拡張形式では使用できません。

fp16_mult_top_inexact

fp16_mult_bot_inexact

1

この信号は、上または下の乗算結果が正確に表現されているかを示します。

1: 乗算結果が次に当てはまる場合
  • 丸められた値
  • 表現可能な最小値より小さい値
  • 表現可能な最大値より大きい値

0: 乗算結果が上記の基準のいずれにも該当しない場合

この信号は、加算または減算モードでは使用できません。

fp16_mult_top_invalid

fp16_mult_bot_invalid

1

この信号は、乗算器の演算が正しく定義されておらず、無効な結果が生成されていることを示します。

1: 乗算結果が無効で、qNaNにキャストされる場合

0: 乗算結果が無効な数値でない場合

この信号は、加算または減算モードでは使用できません。

fp16_mult_top_infinite

fp16_mult_bot_infinite

1

この信号は、上または下の乗算結果が正または負の無限大であることを示します。

1: 結果が無限大の場合

0: 結果が正規化された浮動小数点または適切な無限大の範囲にある場合

この信号は、拡張形式でのみ利用可能です。

fp16_mult_top_zero

fp16_mult_bot_zero

1

この信号は、上または下の乗算結果が正または負の0であることを示します。

1: 結果が0の場合

0: 結果が0でない場合

この信号は、拡張形式でのみ利用可能です。

加算
fp16_adder_overflow 1

この信号は、加算結果が表現可能な最大値よりも大きな値かを示します。

1: 加算結果が表現可能な最大値よりも大きい値で、結果が無限大にキャストされる場合

0: 加算結果が表現可能な最大値より大きくない場合

この信号は、乗算モード 拡張形式では使用できません。

fp16_adder_underflow 1

この信号は、加算結果が表現可能な最小値よりも小さな値かを示します。

1: 加算結果が表現可能な最小値よりも小さな値で、結果が0にフラッシュされる場合

0: 加算結果が表現可能な最小値よりも大きい場合

この信号は、乗算モード 拡張形式では使用できません。

fp16_adder_inexact 1

この信号は、加算結果が正確に表現されているかを示します。

1: 加算結果が次に当てはまる場合
  • 丸められた値
  • 表現可能な最小値より小さい値
  • 表現可能な最大値より大きい値

0: 加算結果が上記の基準のいずれにも該当しない場合

この信号は、乗算モードでは使用できません。

fp16_adder_invalid 1

この信号は、加算器の演算が正しく定義されておらず、無効な結果が生成されていることを示します。

1: 加算結果が無効で、qNaNにキャストされる場合

0: 加算結果が無効な数値でない場合

この信号は、乗算モードでは使用できません。

fp16_adder_infinite 1

この信号は、加算結果が正または負の無限大であることを示します。

1: 結果が無限大の場合

0: 結果が正規化された浮動小数点または適切な無限大の範囲にある場合

この信号は、拡張形式でのみ利用可能です。

fp16_adder_zero 1

この信号は、加算結果が正または負の0であることを示します。

1: 結果が0の場合

0: 結果が0でない場合

この信号は、拡張形式でのみ利用可能です。

表 10.  FP32乗算、FP16フラッシュ、およびFP16 Bfloat16モードにおける乗算器例外処理で起こりうる結果
入力A 入力B 結果 4

フラグ

Overflow/Underflow/Inexact/Invalid

正規化されている 正規化されている 正規化された値 0/0/0/0
正規化された (丸められた) 値 0/0/1/0
正/負の無限大値 1/0/1/0
サブノーマル (デノーマル) 値 0/1/1/0
0またはサブノーマル (デノーマル) 正規化されている 0値 0/0/0/0
正/負の無限大 正規化されている 正/負の無限大値 0/0/0/0
Quiet Not A Number (qNaN) 正規化されている qNaN値 0/0/0/0
0またはサブノーマル (デノーマル) 0またはサブノーマル (デノーマル) 0値 0/0/0/0
正/負の無限大 0またはサブノーマル (デノーマル) qNaN値 0/0/0/1
Quiet Not A Number (qNaN) 0またはサブノーマル (デノーマル) qNaN値 0/0/0/0
正/負の無限大 正/負の無限大 正/負の無限大値 0/0/0/0
Quiet Not A Number (qNaN) 正/負の無限大 qNaN値 0/0/0/0
Quiet Not A Number (qNaN) Quiet Not A Number (qNaN) qNaN値 0/0/0/0
表 11.  FP32加算/減算、FP16フラッシュ、およびFP16 Bfloat16モードにおける加算器例外処理で起こりうる結果
入力A 入力B 結果 4

フラグ

Overflow/Underflow/Inexact/Invalid

正規化されている 正規化されている 正規化された値 0/0/0/0
正規化された (丸められた) 値 0/0/1/0
正/負の無限大値 1/0/1/0
0値

符号ビット = 0

0/0/0/0
サブノーマル (デノーマル) 値

符号は保持される

0/1/1/0
0またはサブノーマル (デノーマル) 正規化されている 入力b 0/0/0/0
正/負の無限大 正規化されている 正/負の無限大値 0/0/0/0
Quiet Not A Number (qNaN) 正規化されている qNaN値 0/0/0/0
0またはサブノーマル (デノーマル) 0またはサブノーマル (デノーマル) 0値

(-0 + (-0)) の計算式では、符号ビット = 1。これ以外の計算式では、符号ビット = 0。

0/0/0/0
正/負の無限大 0またはサブノーマル (デノーマル) 正/負の無限大値 0/0/0/0
Quiet Not A Number (qNaN) 0またはサブノーマル (デノーマル) qNaN値 0/0/0/0
正/負の無限大 正/負の無限大

無効なケースの場合はqNaN値

有効なケースの場合は正/負の無限大値

無効なケースの場合は0/0/0/1

有効なケースの場合は0/0/0/0

有効なケースは次のとおり
  • 正の無限大値 + 正の無限大値
  • 負の無限大値 + 負の無限大値
  • 負の無限大値 - 正の無限大値
  • 正の無限大値 - 負の無限大値
Quiet Not A Number (qNaN) 正/負の無限大 qNaN値 0/0/0/0
Quiet Not A Number (qNaN) Quiet Not A Number (qNaN) qNaN値 0/0/0/0
表 12.  FP16拡張モードにおける乗算例外処理で起こりうる結果
入力A 入力B 結果 4

フラグ

Infinite/Zero/Inexact/Invalid

正規化されている/サブノーマル 正規化されている/サブノーマル 正規化されている/サブノーマル 0/0/x/0
0値 正規化されている/サブノーマル 0値 0/1/0/0
正/負の無限大 正規化されている/サブノーマル 正/負の無限大値 1/0/0/0
Quiet Not A Number (qNaN) 正規化されている/サブノーマル qNaN値 0/0/0/1

仮数 = {100...00}

0値 0値 0値 0/1/0/0
正/負の無限大 0値 qNaN値 0/0/0/1

仮数 = {100...00}

Quiet Not A Number (qNaN) 0値 qNaN値 0/0/0/1

仮数 = {100...00}

正/負の無限大 正/負の無限大 正/負の無限大値 1/0/0/0
Quiet Not A Number (qNaN) 正/負の無限大 qNaN値 0/0/0/1

仮数 = {100...00}

Quiet Not A Number (qNaN) Quiet Not A Number (qNaN) qNaN値 0/0/0/1

仮数 = {100...00}

表 13.  FP16拡張モードにおける加算例外処理で起こりうる結果
入力A 入力B 結果 4

フラグ

Infinite/Zero/Inexact/Invalid

正規化されている/サブノーマル 正規化されている/サブノーマル 正規化されている/サブノーマル 0/0/x/0
0値

符号ビット = 0

0/0/0/0
0値 正規化されている/サブノーマル 入力b 0/0/0/0
正/負の無限大 正規化されている/サブノーマル 正/負の無限大値 1/0/0/0
Quiet Not A Number (qNaN) 正規化されている/サブノーマル qNaN値 0/0/0/1

仮数 = {100...00}

0値 0値 0値

(-0 + (-0)) の計算式では、符号ビット = 1。これ以外の計算式では、符号ビット = 0。

0/0/0/0
正/負の無限大 0値 正/負の無限大値 1/0/0/0
Quiet Not A Number (qNaN) 0値 qNaN値 0/0/0/1

仮数 = {100...00}

正/負の無限大 正/負の無限大

無効なケースの場合はqNaN値

有効なケースの場合は正/負の無限大値

無効なケースの場合は0/0/0/1

仮数 = {100...00}

有効なケースの場合は1/0/0/0

有効なケースは次のとおり
  • 正の無限大値 + 正の無限大値
  • 負の無限大値 + 負の無限大値
  • 負の無限大値 - 正の無限大値
  • 正の無限大値 - 負の無限大値
Quiet Not A Number (qNaN) 正/負の無限大 qNaN値 0/0/0/1

仮数 = {100...00}

Quiet Not A Number (qNaN) Quiet Not A Number (qNaN) qNaN値 0/0/0/1

仮数 = {100...00}

4 出力の例外フラグ。このフラグは、例外が入力値にある場合は変化しません。