FMUL
|
浮動小数点乗算
|
FMUL
|
Floating-point MULtiply
|
【構文】
(2) | FMUL src, src2, dest 【V2.01.00以降】 |
【オペレーション】
(2) | dest = src2 * src; 【V2.01.00以降】 |
【機能】
(1) | destに格納された単精度浮動小数点数と、srcに格納された単精度浮動小数点数を乗算し、 その結果をdestに格納します。 |
(2) | src2に格納された単精度浮動小数点数と、srcに格納された単精度浮動小数点数を乗算し、 その結果をdestに格納します。アセンブルオプション-isaを用いてRXv2以降の命令セットを 指定した場合にアセンブルできます。 【V2.01.00以降】 |
- | 結果はFPSWのRM[1:0]ビットにしたがって丸められます。 |
- | 非正規化数の扱いは、FPSWのDNビットによって変化します。 |
注 | 単精度浮動小数点例外発生有無にかかわらず、命令実行後のACC0の値は不定です。 |
【命令フォーマット】
|
|
|
|
|
|
|
(1) FMUL src, dest
|
|
#IMM:32
|
−
|
Rd
|
|
|
Rs
|
−
|
Rd
|
|
|
[Rs].L
|
−
|
Rd
|
|
|
dsp:8[Rs].L(注)
|
−
|
Rd
|
|
|
dsp:16[Rs].L(注)
|
−
|
Rd
|
|
(2) FMUL src, src2, dest
【V2.01.00以降】
|
|
Rs
|
Rs2
|
Rd
|
|
注 | 弊社の「RXファミリ アセンブラ」では、ディスプレースメントの値(dsp:8、dsp:16)は、4の倍数を指定してください。dsp:8には、0〜1020(255×4)が指定できます。dsp:16には、0〜262140(65535×4)が指定できます。命令コードには、1/4した値が埋め込まれます。 |
【フラグ変化】
フラグ
|
C
|
Z
|
S
|
O
|
CV
|
CO
|
CZ
|
CU
|
CX
|
CE
|
FV
|
FO
|
FZ
|
FU
|
FX
|
変化
|
−
|
○
|
○
|
−
|
○
|
○
|
○
|
○
|
○
|
○
|
○
|
○
|
−
|
○
|
○
|
条件
Z:演算の結果が“+0”または“-0”のとき“1”、それ以外のとき“0”になります。
S:演算の結果、符号部(ビット31)が“1”のとき“1”、“0”のとき“0”になります。
CV:無効演算が発生したとき“1”、それ以外のとき“0”になります。
CO:オーバフローが発生したとき“1”、それ以外のとき“0”になります。
CZ:“0”になります。
CU:アンダフローが発生したとき“1”、それ以外のとき“0”になります。
CX:精度異常が発生したとき“1”、それ以外のとき“0”になります。
CE:非実装処理が発生したとき“1”、それ以外のとき“0”になります。
FV:無効演算が発生したとき“1”、それ以外のときは変化しません。
FO:オーバフローが発生したとき“1”、それ以外のときは変化しません。
FU:アンダフローが発生したとき“1”、それ以外のときは変化しません。
FX:精度異常が発生したとき“1”、それ以外のときは変化しません。
注 | FX、FU、FO、FVフラグは、例外処理許可ビットEX、EU、EO、EVが“1”の場合は変化しません。S、Zフラグは、例外処理が発生した場合は変化しません。 |
【記述例】
FMUL R1, R2
FMUL [R1], R2
FMUL R1, R2, R3
|