16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

fnma<br />

fnma ─ 浮動小数点積和の否定 (Floating-point Negative Multiply Add)<br />

書式 : (qp) fnma.pc.sf f 1 = f 3 , f 4 , f 2 F1<br />

説明 : FR f3 と FR f4 と の積が無限の精度で計算され、 否定され、 次に FR f2 がこの積にやはり無限<br />

の精度で加算される。 その後、 結果の値が、 FPSR.sf.rc で指定される丸めモー ド と pc ( さら<br />

に FPSR.sf.pc および FPSR.sf.wre) で指定される精度にしたがって丸められ、 その結果が FR<br />

f1 に格納される。<br />

FR f3 、 FR f4 、 FR f2 のどれか 1 つでも NaTVal である場合は、 FR f1 は計算結果ではな く<br />

NaTVal に設定される。<br />

f2 が f0 の場合は、 IEEE の乗算が行われた後、 その乗算結果が否定される。 3:82 ページ<br />

の 「fnmpy — 浮動小数点乗算の否定 (Floating-point Negative Multiply)」 を参照のこ と。<br />

オペコ ー ド の pc のニーモニ ッ ク値は 3:50 ページの表 2-22 に示している。 sf のニーモ<br />

ニック値は3:50 ページの表 2-23 に示している。 ステータス ・ フ ィ ール ド の pc、 wre、 rc<br />

のエンコ ーデ ィ ング と意味については、 第 1 巻、 第 1 部の表 5-5 および第 1 巻、 第 1 部<br />

の表 5-6 を参照のこ と。<br />

操作 : if (PR[qp]) {<br />

fp_check_target_register(f 1 );<br />

if (tmp_isrcode = fp_reg_disabled(f 1, f 2, f 3, f 4))<br />

disabled_fp_register_fault(tmp_isrcode, 0);<br />

}<br />

if (fp_is_natval(FR[f 2 ]) || fp_is_natval(FR[f 3 ]) ||<br />

fp_is_natval(FR[f 4 ])) {<br />

FR[f 1 ] = NATVAL;<br />

fp_update_psr(f 1);<br />

} else {<br />

tmp_default_result = fms_fnma_exception_fault_check(f 2 , f 3 , f 4 ,<br />

pc, sf, &tmp_fp_env);<br />

if (fp_raise_fault(tmp_fp_env))<br />

fp_exception_fault(fp_decode_fault(tmp_fp_env));<br />

}<br />

if (fp_is_nan_or_inf(tmp_default_result)) {<br />

FR[f 1 ] = tmp_default_result;<br />

} else {<br />

tmp_res = fp_mul(fp_reg_read(FR[f 3 ]), fp_reg_read(FR[f 4 ]));<br />

tmp_res.sign = !tmp_res.sign;<br />

if (f 2 != 0)<br />

tmp_res = fp_add(tmp_res, fp_reg_read(FR[f 2 ]), tmp_fp_env);<br />

FR[f 1 ] = fp_ieee_round(tmp_res, &tmp_fp_env);<br />

}<br />

fp_update_fpsr(sf, tmp_fp_env);<br />

fp_update_psr(f 1);<br />

if (fp_raise_traps(tmp_fp_env))<br />

fp_exception_trap(fp_decode_trap(tmp_fp_env));<br />

FP 例外 : 無効操作 (Invalid Operation: V) アンダーフロー (Underflow: U)<br />

デノーマル/ アンノ ーマル ・ オペラン ド オーバーフロー (Overflow: O)<br />

(Denormal/Unnormal Operand: D) 正確結果 (Inexact: I)<br />

ソフ ト ウェア・アシスト ソフ ト ウェア・アシスト<br />

(Software Assist: SWA) フォルト (Software Assist: SWA) ト ラップ<br />

割り込み : 浮動小数点レ ジ ス タ無効フ ォ ル ト 浮動小数点例外 ト ラ ッ プ<br />

浮動小数点例外フ ォ ル ト<br />

第 3 巻 : 命令リファレンス 3:81

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!