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.

fpma ─ 浮動小数点並列積和 (Floating-point Parallel Multiply Add)<br />

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

説明 : FR f3 およびFR f4 の両仮数フ ィ ー ル ド に格納 さ れてい る単精度値のペアのそれぞれの積<br />

が無限の精度で計算 さ れ、 次に、 FR f2 の仮数フ ィ ー ル ド の単精度値のペアが、 計算結果<br />

の 2 つの積にやは り 無限の精度で加算 さ れる。 その後、 得 ら れた 2 つの値が FPSR.sf.rc<br />

で指定される丸めモー ド を使用して単精度に丸められる。 丸められた結果のペアが FR f1 の仮数フ ィ ール ド に格納される。 FR f1 の指数フ ィ ール ド は 2.0 63 (0x1003E) のバイアス付<br />

き指数に設定 さ れ、 FR f1 の符号フ ィ ール ド は正に対応する 0 に設定される。<br />

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

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

注 : fmpa 命令の f2 が f0 の場合は、 単に IEEE の乗算が行われる (3:102 ページの<br />

「fpmpy — 浮動小数点並列乗算 (Floating-point Parallel Multiply)」 を参照のこ と )。 FR<br />

f1 は、 オペラン ド と しては、 パッ ク された値 1.0 のペアではない。 単に、 レジス<br />

タ・ファイル形式の値1.0 である。<br />

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

ステータス ・ フ ィ ールドの rc のエンコ ーデ ィ ング と意味は、 第 1 巻、 第 1 部の表 5-5 に<br />

示している。<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 />

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_pair = fpma_exception_fault_check(f 2 ,<br />

f 3 , f 4 , sf, &tmp_fp_env);<br />

if (fp_raise_fault(tmp_fp_env))<br />

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

if (fp_is_nan_or_inf(tmp_default_result_pair.hi)) {<br />

tmp_res_hi = fp_single(tmp_default_result_pair.hi);<br />

} else {<br />

tmp_res = fp_mul(fp_reg_read_hi(f 3 ), fp_reg_read_hi(f 4 ));<br />

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

tmp_res = fp_add(tmp_res, fp_reg_read_hi(f 2 ), tmp_fp_env);<br />

tmp_res_hi = fp_ieee_round_sp(tmp_res, HIGH, &tmp_fp_env);<br />

}<br />

if (fp_is_nan_or_inf(tmp_default_result_pair.lo)) {<br />

tmp_res_lo = fp_single(tmp_default_result_pair.lo);<br />

} else {<br />

tmp_res = fp_mul(fp_reg_read_lo(f 3 ), fp_reg_read_lo(f 4 ));<br />

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

tmp_res = fp_add(tmp_res, fp_reg_read_lo(f 2 ), tmp_fp_env);<br />

tmp_res_lo = fp_ieee_round_sp(tmp_res, LOW, &tmp_fp_env);<br />

}<br />

FR[f 1 ].significand = fp_concatenate(tmp_res_hi, tmp_res_lo);<br />

FR[f 1].exponent = FP_INTEGER_EXP;<br />

FR[f 1 ].sign = FP_SIGN_POSITIVE;<br />

3:96 第 3 巻 : 命令リファレンス<br />

fpma

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!