24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

操作 : if (PR[qp]) { check_target_register(r 1); } if (GR[r 3 ].nat || GR[r 2 ].nat) register_nat_consumption_fault(SEMAPHORE); paddr = tlb_translate(GR[r 3 ], sz, SEMAPHORE, PSR.cpl, &mattr, &tmp_unused); if (!ma_supports_semaphores(mattr)) unsupported_data_reference_fault(SEMAPHORE, GR[r 3 ]); val = mem_xchg(GR[r 2 ], paddr, sz, UM.be, mattr, ACQUIRE, ldhint); alat_inval_multiple_entries(paddr, sz); GR[r 1 ] = zero_ext(val, sz * 8); GR[r 1 ].nat = 0; 割り込み : 無効操作フ ォ ル ト デー タ ・ キ ー ・ ミ ス ・ フ ォ ル ト レジスタ NaT 参照フ ォ ル ト デー タ ・ キ ー許可フ ォ ル ト 実装 さ れていないデ ー タ ・ ア ド レ ス ・ フ ォ ル ト デー タ ・ ア ク セス権フ ォ ル ト データがネス ト された TLB フォルト データ・ダーティ・ビット ・フォルト 別のデー タ TLB フォルト データ・アクセス・ビット ・フォルト VHPT データ ・ フォル ト データ ・ デバッグ ・ フォル ト データ TLB フォルト アライメントの合っていない データ ・ ページ不在フォルト データ参照フォルト データ NaT ページ参照フォル ト サポー ト されないデータ参照フォル ト 3:244 第 3 巻 : 命令リファレンス xchg

xma xma ─ 固定小数点積和 (Fixed-Point Multiply Add) 書式 : (qp) xma.lf1 = f3 , f4, f2 low_form F2 (qp) xma.luf1 = f3 , f4, f2 (qp) xma.lf1 = f3 , f4 , f2 の擬似オペコ ー ド (qp) xma.hf1 = f3 , f4, f2 high_form F2 (qp) xma.huf1 = f3 , f4, f2 high_unsigned_form F2 説明 : 2 つのソース ・ オペラン ド (FR f3 および FR f4 ) が符号付き ま たは符号なしの整数 と して扱 われ、 両オペラン ド 間の乗算が行われる。 第 3 のソース ・ オペラン ド (FR f2 ) がゼロ拡張 され、 得られた積に加算される。 結果の上位ま たは下位の 64 ビ ッ ト が選択 さ れ、 FR f1 に格納される。 high_unsigned_form では、 FR f3 と FR f4 の両仮数フ ィ ー ル ド が符号なし整数 と して扱わ れ、 乗算 されて全 128 ビ ッ ト の符号なし結果が生成 さ れる。 FR f2 の仮数フ ィ ール ド がゼ ロ拡張 さ れ、 積に加算 さ れる。 結果の最上位 64 ビットがFR f1 の仮数フ ィ ール ド に格納 される。 high_form では、 FR f3 と FR f4 の両仮数フ ィ ー ル ド が符号付き整数 と して扱われ、 乗算さ れて全 128 ビ ッ ト の符号付き結果が生成 さ れる。 FR f2 の仮数フ ィ ール ド がゼロ拡張さ れ、 積に加算 さ れる。 結果の最上位 64 ビッ トがFR f1 の仮数フ ィ ール ド に格納される。 low_form では、 FR f3 と FR f4 の両仮数フ ィ ー ル ド が符号付き整数 と して扱われ、 乗算 さ れて全 128 ビ ッ ト の符号付き結果が生成 さ れる。 FR f2 の仮数フ ィ ール ド がゼロ拡張さ れ、 積に加算 さ れる。 結果の最下位 64 ビッ トがFR f1 の仮数フ ィ ール ド に格納される。 すべての形式で、 FR f1 の指数フ ィ ール ド は 2.063 (0x1003E) のバイアス付き指数に設定さ れ、 FR f1 の符号フ ィ ール ド は正に対応する 0 に設定される。 注 : オペラン ド と しての f1 は整数の 1 でな く 、 レジスタ ・ フ ァ イル形式の値 1.0 であ る。 すべての形式で、 FR f3 、 FR f4 、 FR f2 のどれか 1 つでも NaTVal である場合は、 FR f1 は計 算結果ではな く NatVal に設定される。 操作 : if (PR[qp]) { fp_check_target_register(f 1 ); if (tmp_isrcode = fp_reg_disabled(f 1, f 2, f 3, f 4)) disabled_fp_register_fault(tmp_isrcode, 0); if (fp_is_natval(FR[f 2]) || fp_is_natval(FR[f 3]) || fp_is_natval(FR[f 4 ])) { FR[f 1 ] = NATVAL; } else { if (low_form || high_form) tmp_res_128 = fp_I64_x_I64_to_I128(FR[f 3].significand, FR[f 4].significand); else // high_unsigned_form tmp_res_128 = fp_U64_x_U64_to_U128(FR[f 3].significand, FR[f 4].significand); tmp_res_128 = fp_U128_add(tmp_res_128, fp_U64_to_U128(FR[f 2].significand)); if (high_form || high_unsigned_form) FR[f 1].significand = tmp_res_128.hi; else // low_form FR[f 1 ].significand = tmp_res_128.lo; FR[f 1 ].exponent = FP_INTEGER_EXP; 第 3 巻 : 命令リファレンス 3:245

xma<br />

xma ─ 固定小数点積和 (Fixed-Point Multiply Add)<br />

書式 : (qp) xma.lf1 = f3 , f4, f2 low_form F2<br />

(qp) xma.luf1 = f3 , f4, f2 (qp) xma.lf1 = f3 , f4 , f2 の擬似オペコ ー ド<br />

(qp) xma.hf1 = f3 , f4, f2 high_form F2<br />

(qp) xma.huf1 = f3 , f4, f2 high_unsigned_form F2<br />

説明 : 2 つのソース ・ オペラン ド (FR f3 および FR f4 ) が符号付き ま たは符号なしの整数 と して扱<br />

われ、 両オペラン ド 間の乗算が行われる。 第 3 のソース ・ オペラン ド (FR f2 ) がゼロ拡張<br />

され、 得られた積に加算される。 結果の上位ま たは下位の 64 ビ ッ ト が選択 さ れ、 FR f1 に格納される。<br />

high_unsigned_form では、 FR f3 と FR f4 の両仮数フ ィ ー ル ド が符号なし整数 と して扱わ<br />

れ、 乗算 されて全 128 ビ ッ ト の符号なし結果が生成 さ れる。 FR f2 の仮数フ ィ ール ド がゼ<br />

ロ拡張 さ れ、 積に加算 さ れる。 結果の最上位 64 ビットがFR f1 の仮数フ ィ ール ド に格納<br />

される。<br />

high_form では、 FR f3 と FR f4 の両仮数フ ィ ー ル ド が符号付き整数 と して扱われ、 乗算さ<br />

れて全 128 ビ ッ ト の符号付き結果が生成 さ れる。 FR f2 の仮数フ ィ ール ド がゼロ拡張さ<br />

れ、 積に加算 さ れる。 結果の最上位 64 ビッ トがFR f1 の仮数フ ィ ール ド に格納される。<br />

low_form では、 FR f3 と FR f4 の両仮数フ ィ ー ル ド が符号付き整数 と して扱われ、 乗算 さ<br />

れて全 128 ビ ッ ト の符号付き結果が生成 さ れる。 FR f2 の仮数フ ィ ール ド がゼロ拡張さ<br />

れ、 積に加算 さ れる。 結果の最下位 64 ビッ トがFR f1 の仮数フ ィ ール ド に格納される。<br />

すべての形式で、 FR f1 の指数フ ィ ール ド は 2.063 (0x1003E) のバイアス付き指数に設定さ<br />

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

注 : オペラン ド と しての f1 は整数の 1 でな く 、 レジスタ ・ フ ァ イル形式の値 1.0 であ<br />

る。<br />

すべての形式で、 FR f3 、 FR f4 、 FR f2 のどれか 1 つでも NaTVal である場合は、 FR f1 は計<br />

算結果ではな く NatVal に設定される。<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 />

} else {<br />

if (low_form || high_form)<br />

tmp_res_128 =<br />

fp_I64_x_I64_to_I128(FR[f 3].significand, FR[f 4].significand);<br />

else // high_unsigned_form<br />

tmp_res_128 =<br />

fp_U64_x_U64_to_U128(FR[f 3].significand, FR[f 4].significand);<br />

tmp_res_128 =<br />

fp_U128_add(tmp_res_128, fp_U64_to_U128(FR[f 2].significand));<br />

if (high_form || high_unsigned_form)<br />

FR[f 1].significand = tmp_res_128.hi;<br />

else // low_form<br />

FR[f 1 ].significand = tmp_res_128.lo;<br />

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

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!