24531904_j
24531904_j 24531904_j
mov ─ 分岐レジスタの移動 (Move Branch Register) mov br 書式 : (qp) movr1 = b2 from_form I22 (qp) movb1 = r2 擬似オペ コ ー ド (qp) mov.mwh.ih b1 = r2 , tag13 to_form I21 (qp) mov.ret.mwh.ih b1 = r2 , tag13 return_form, to_form I21 説明 : ソース・オペランドがデスティネーション・レジスタにコピーされる。 from_form では、 b2 によって指定される分岐レジスタがGR r1 にコピーされる。 GR r1 に 対応す る NaT ビッ トがクリアされる。 to_form では、 GR r2 の値が BR b1 にコピーされる。 GR r2 に対応する NaT ビッ トが1 で ある場合は、 レジスタ NaT 参照 (Register NaT Consumption) フォルトが発生する。 分岐レ ジ ス タ に移動す る と き、 一連の ヒ ン ト も 指定で き る。 こ れ ら の ヒ ン ト は、 brp 命 令で指定される ヒ ン ト に非常に よ く 似てお り、 BR b1 に移動 さ れる値を使用する可能性 がある将来の分岐に関する予測情報を提供する。 return_form を使用して、 この値が リ タ ー ン型分岐で使用 さ れる ヒ ン ト を指定で き る。 表 2-39 に、 mwh 分岐有無予測 ヒ ン ト の コ ン プ リ ー タ の値を示す。 ih ヒントのコンプリー タ は、 分岐予測命令の説明 と 、 3:28 ページの表 2-13 を参照のこ と。 表 2-39. BR への移動の分岐有無予測ヒント mwh コンプリータ BR への移動の分岐有無予測ヒント none すべてのヒントを無視する sptk 静的に処理される dptk 動的 ヒ ン ト 情報が指定 さ れない場合に汎用レ ジ ス タ を分岐レ ジ ス タ に コ ピ ー す る ための疑似 オペコ ー ド が用意されている。 この疑似オペコ ー ド をエンコ ー ド するには、 tag 13 には 0、 ヒント ・ コンプリータには none に対応する値を使用する。 操作 : if (PR[qp]) { if (from_form) { check_target_register(r 1 ); GR[r 1 ] = BR[b 2 ]; GR[r 1].nat = 0; } else { // to_form tmp_tag = IP + sign_ext((timm 9
mov cr mov ─ コントロール・レジスタの移動 (Move Control Register) 書式 : (qp) movr 1 = cr 3 from_form M33 (qp) movcr 3 = r 2 to_form M32 説明 : ソース・オペランドがデスティネーション・レジスタにコピーされる。 from_form では、 cr3 で指定されるコン ト ロール ・ レジスタが読み込まれ、 その値が GR r1 にコピーされる。 to_form では、 GR r2 が読み込まれ、 その値が CR cr3 にコピーされる。 コ ン ト ロ ー ル ・ レ ジ ス タ には、 最高の特権レベル以外ではア ク セスで き ない。 PSR.ic ビッ トが1 の場合、 割 り 込み コ ン ト ロ ー ル ・ レ ジ ス タ (CR16 ~ CR25) の読み込み ま たは 書き込みを行 う と 、 無効操作フ ォ ル ト が発生す る。 操作 : if (PR[qp]) { if (is_reserved_reg(CR_TYPE, cr 3 ) || to_form && is_read_only_reg(CR_TYPE, cr 3 ) || PSR.ic && is_interruption_cr(cr 3 )) { illegal_operation_fault(); } } if (from_form) check_target_register(r 1 ); if (PSR.cpl != 0) privileged_operation_fault(0); if (from_form) { if (cr 3 == IVR) check_interrupt_request(); if (cr 3 == ITIR) GR[r 1 ] = impl_itir_cwi_mask(CR[ITIR]); else GR[r 1 ] = CR[cr 3 ]; GR[r 1 ].nat = 0; } else { // to_form if (GR[r 2 ].nat) register_nat_consumption_fault(0); } if (is_reserved_field(CR_TYPE, cr 3 , GR[r 2 ])) reserved_register_field_fault(); if (cr 3 == EOI) end_of_interrupt(); tmp_val = ignored_field_mask(CR_TYPE, cr 3 , GR[r 2 ]); CR[cr 3 ] = tmp_val; if (cr 3 == IIPA) last_IP = tmp_val; 割り込み : 無効操作フ ォ ル ト レ ジ ス タ NaT 参照フ ォ ル ト 特権操作フ ォル ト 予約レジスタ / フィールド ・フォルト 第 3 巻 : 命令リファレンス 3:157
- Seite 117 und 118: fpneg fpneg ─ 浮動小数点並
- Seite 119 und 120: fpnma fpnma ─ 浮動小数点並
- Seite 121 und 122: fpnmpy fpnmpy ─ 浮動小数点
- Seite 123 und 124: fprcpa } else if (fp_is_zero(num) &
- Seite 125 und 126: fprsqrta } tmp_pred_hi = 0; else tm
- Seite 127 und 128: frcpa } fp_update_fpsr(sf, tmp_fp_e
- Seite 129 und 130: frsqrta } PR[p 2 ] = 0; // fp_ieee_
- Seite 131 und 132: fsetc fsetc ─ 浮動小数点コ
- Seite 133 und 134: fswap fswap ─ 浮動小数点ス
- Seite 135 und 136: fsxt fsxt ─ 浮動小数点符号
- Seite 137 und 138: fxor fxor ─ 浮動小数点排他
- Seite 139 und 140: getf } GR[r 1 ] = FR[f 2 ].signific
- Seite 141 und 142: invala invala ─ ALAT の無効化
- Seite 143 und 144: itc 割り込み : マシン ・
- Seite 145 und 146: itr シリアル化 : instruction_f
- Seite 147 und 148: ld 表 2-33. ロード・タイプ(
- Seite 149 und 150: ld if (check && alat_cmp(GENERAL, r
- Seite 151 und 152: ldf ldf ─ 浮動小数点ロー
- Seite 153 und 154: ldf ldfe でのみ発生する。
- Seite 155 und 156: ldfp ldfp ─ 浮動小数点ペア
- Seite 157 und 158: ldfp } } if (base_update_form) { //
- Seite 159 und 160: lfetch 表 2-38. lfhint のニー
- Seite 161 und 162: loadrs loadrs ─ レジスタ・
- Seite 163 und 164: mix mix ─ ミックス (Mix) 書
- Seite 165 und 166: mix 操作 : if (PR[qp]) { check_ta
- Seite 167: mov ar 操作 : if (PR[qp]) { tmp_t
- Seite 171 und 172: mov fr mov ─ 浮動小数点レ
- Seite 173 und 174: mov imm mov ─ 即値の移動 (Mo
- Seite 175 und 176: mov indirect 操作 : if (PR[qp]) {
- Seite 177 und 178: mov ip mov ─ 命令ポインタ
- Seite 179 und 180: mov psr mov ─ プロセッサ・
- Seite 181 und 182: movl movl ─ ロング型即値の
- Seite 183 und 184: mux 図 2-27. Mux2 の例 (16 ビ
- Seite 185 und 186: nop nop ─ ノー・オペレー
- Seite 187 und 188: pack pack ─ パック (Pack) 書
- Seite 189 und 190: padd padd ─ 並列加算 (Paralle
- Seite 191 und 192: padd } 割り込み : 無効操作
- Seite 193 und 194: pavg 図 2-31. 並列平均での
- Seite 195 und 196: pavgsub pavgsub ─ 並列平均減
- Seite 197 und 198: pcmp pcmp ─ 並列比較 (Paralle
- Seite 199 und 200: pmax pmax ─ 並列最大値 (Para
- Seite 201 und 202: pmpy pmpy ─ 並列乗算 (Paralle
- Seite 203 und 204: pmpyshr 操作 : if (PR[qp]) { chec
- Seite 205 und 206: probe probe ─ アクセスのプ
- Seite 207 und 208: psad psad ─ 並列絶対差累計
- Seite 209 und 210: pshladd pshladd ─ 並列左シフ
- Seite 211 und 212: pshr } 割り込み : 無効操作
- Seite 213 und 214: psub psub ─ 並列減算 (Paralle
- Seite 215 und 216: psub } 割り込み : 無効操作
- Seite 217 und 218: ptc.g, ptc.ga ptc.g, ptc.ga ─ グ
mov ─ 分岐レジスタの移動 (Move Branch Register)<br />
mov br<br />
書式 : (qp) movr1 = b2 from_form I22<br />
(qp) movb1 = r2 擬似オペ コ ー ド<br />
(qp) mov.mwh.ih b1 = r2 , tag13 to_form I21<br />
(qp) mov.ret.mwh.ih b1 = r2 , tag13 return_form, to_form I21<br />
説明 : ソース・オペランドがデスティネーション・レジスタにコピーされる。<br />
from_form では、 b2 によって指定される分岐レジスタがGR r1 にコピーされる。 GR r1 に<br />
対応す る NaT ビッ トがクリアされる。<br />
to_form では、 GR r2 の値が BR b1 にコピーされる。 GR r2 に対応する NaT ビッ トが1 で<br />
ある場合は、 レジスタ NaT 参照 (Register NaT Consumption) フォルトが発生する。<br />
分岐レ ジ ス タ に移動す る と き、 一連の ヒ ン ト も 指定で き る。 こ れ ら の ヒ ン ト は、 brp 命<br />
令で指定される ヒ ン ト に非常に よ く 似てお り、 BR b1 に移動 さ れる値を使用する可能性<br />
がある将来の分岐に関する予測情報を提供する。 return_form を使用して、 この値が リ<br />
タ ー ン型分岐で使用 さ れる ヒ ン ト を指定で き る。<br />
表 2-39 に、 mwh 分岐有無予測 ヒ ン ト の コ ン プ リ ー タ の値を示す。 ih ヒントのコンプリー<br />
タ は、 分岐予測命令の説明 と 、 3:28 ページの表 2-13 を参照のこ と。<br />
表 2-39. BR への移動の分岐有無予測ヒント<br />
mwh コンプリータ BR への移動の分岐有無予測ヒント<br />
none すべてのヒントを無視する<br />
sptk 静的に処理される<br />
dptk 動的<br />
ヒ ン ト 情報が指定 さ れない場合に汎用レ ジ ス タ を分岐レ ジ ス タ に コ ピ ー す る ための疑似<br />
オペコ ー ド が用意されている。 この疑似オペコ ー ド をエンコ ー ド するには、 tag 13 には 0、<br />
ヒント ・ コンプリータには none に対応する値を使用する。<br />
操作 : if (PR[qp]) {<br />
if (from_form) {<br />
check_target_register(r 1 );<br />
GR[r 1 ] = BR[b 2 ];<br />
GR[r 1].nat = 0;<br />
} else { // to_form<br />
tmp_tag = IP + sign_ext((timm 9