24531904_j
24531904_j 24531904_j
tbit ─ ビット・テスト (Test Bit) 書式 : (qp) tbit.trel.ctype p 1 , p 2 = r 3 , pos 6 I16 説明 : 即値 pos6 で指定される ビ ッ ト が GR r3 か ら 選択 さ れる。 選択 さ れたビ ッ ト は、 trel コン プリータに応じて補数を取られるかそのままで、 単一ビッ トの結果を形成する。 この結 果は、 2 つのプレディケート ・レジスタ・デスティネーションp1 と p2 に書き込まれる。 結果がデスティネーションにどのように書き込まれるかは、 ctype で指定される比較タ イ プによ って決まる。 Compare 命令 と 3:34 ページの表 2-15 を参照のこ と。 trel コンプリータの値.nz および .z は、 それぞれ、 非ゼ ロ判定かゼ ロ判定かを示す。 通常 タイプと unc タイプの比較では、 .z の値だけがハー ド ウ ェアに よ って直接サポ ー ト され ている。 つま り、 .nz 値は、 実際には擬似オペコ ー ド である。 .nz 値では、 アセンブラは 単にプ レ デ ィ ケ ー ト ・ タ ー ゲ ッ ト 指定子を切 り 換え、 サポ ー ト さ れてい る関係を利用す る。 並列タイプは、 両方の関係がハー ド ウ ェアでサポー ト されている。 表 2-52. 通常および unc タイプのビット判定での関係 trel 判定関係 擬似オペコード nz 選択されたビット == 1 z p1 ↔ p2 z 選択されたビット == 0 表 2-53. 並列タイプのビット判定での関係 trel 判定関係 nz 選択されたビット == 1 z 選択されたビット == 0 2 つのプレデ ィ ケー ト レジスタ ・ デステ ィ ネーシ ョ ンが同じ (p 1 と p 2 が同一のプレデ ィ ケー ト ・ レジスタを指定) 場合は、 修飾プ レ デ ィ ケ ー ト がセ ッ ト さ れてい る か、 比較タ イプが unc であれば、 こ の命令は無効操作 (Illegal Operation) フォルトを発生する。 操作 : if (PR[qp]) { if (p1 == p2) illegal_operation_fault(); if (trel == ‘nz’) // ‘nz’ - test for 1 tmp_rel = GR[r 3 ]{pos 6 }; else // ‘z’ - test for 0 tmp_rel = !GR[r 3 ]{pos 6 }; switch (ctype) { case ‘and’: // and-type compare if (GR[r 3 ].nat || !tmp_rel) { PR[p 1 ] = 0; PR[p 2 ] = 0; } break; case ‘or’: // or-type compare if (!GR[r 3 ].nat && tmp_rel) { PR[p 1 ] = 1; PR[p 2 ] = 1; } break; case ‘or.andcm’: // or.andcm-type compare if (!GR[r 3 ].nat && tmp_rel) { PR[p 1] = 1; 3:234 第 3 巻 : 命令リファレンス tbit
tbit PR[p2 ] = 0; } break; case ‘unc’: // unc-type compare default: // normal compare if (GR[r3 ].nat) { PR[p1 ] = 0; PR[p2 ] = 0; } else { PR[p1 ] = tmp_rel; PR[p2 ] = !tmp_rel; } break; } } else { if (ctype == ‘unc’) { if (p1 == p2) illegal_operation_fault(); PR[p1 ] = 0; PR[p2 ] = 0; } } 割り込み : 無効操作フ ォ ル ト 第 3 巻 : 命令リファレンス 3:235
- 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 ─ グ
- Seite 219 und 220: ptc.l ptc.l ─ ローカル・ト
- Seite 221 und 222: ptr 割り込み : 特権操作フ
- Seite 223 und 224: fi この命令を発行する前
- Seite 225 und 226: sm rsm ─ システム・マスク
- Seite 227 und 228: um rum ─ ユーザ・マスクの
- Seite 229 und 230: setf 操作 : if (PR[qp]) { fp_chec
- Seite 231 und 232: shladd shladd ─ 左シフトお
- Seite 233 und 234: shr shr ─ 右シフト (Shift Rig
- Seite 235 und 236: srlz srlz ─ シリアル化 (Seri
- Seite 237 und 238: st st ─ ストア (Store) 書式
- Seite 239 und 240: stf stf ─ 浮動小数点スト
- Seite 241 und 242: sub sub ─ 減算 (Subtract) 書
- Seite 243 und 244: sxt sxt ─ 符号拡張 (Sign Exte
- Seite 245: tak tak ─ トランスレーシ
- Seite 249 und 250: tnat tnat ─ Test Nat テスト (T
- Seite 251 und 252: tpa tpa ─ 物理アドレスへ
- Seite 253 und 254: unpack unpack ─ アンパック (
- Seite 255 und 256: xchg xchg ─ 交換 (Exchange) 書
- Seite 257 und 258: xma xma ─ 固定小数点積和 (
- Seite 259 und 260: xmpy xmpy ─ 固定小数点乗算
- Seite 261 und 262: zxt zxt ─ ゼロ拡張 (Zero Exte
- Seite 263 und 264: 擬似コード関数 3 この章
- Seite 265 und 266: 表 3-1. 擬似コード関数 (
- Seite 267 und 268: 表 3-1. 擬似コード関数 (
- Seite 269 und 270: 表 3-1. 擬似コード関数 (
- Seite 271 und 272: 表 3-1. 擬似コード関数 (
- Seite 273 und 274: 表 3-1. 擬似コード関数 (
- Seite 275 und 276: 命令形式 4 個々の Itanium ®
- Seite 277 und 278: 使用 さ れていないメ ジ
- Seite 279 und 280: 表 4-4. 命令形式の要約 (
- Seite 281 und 282: 表 4-6. 命令フィールド名 (
- Seite 283 und 284: 4.2 A ユニット命令エンコ
- Seite 285 und 286: 4.2.1.4 Add Immediate 14 A4 4.2.1.5
- Seite 287 und 288: 4.2.2.2 Integer Compare to Zero ─
- Seite 289 und 290: 表 4-13. マルチメディア ALU
- Seite 291 und 292: 4.2.3.1 Multimedia ALU A9 4.2.3.2 M
- Seite 293 und 294: 表 4-18. マルチメディア・
- Seite 295 und 296: 4.3.1.2 Multimedia Multiply/Mix/Pac
tbit<br />
PR[p2 ] = 0;<br />
}<br />
break;<br />
case ‘unc’: // unc-type compare<br />
default: // normal compare<br />
if (GR[r3 ].nat) {<br />
PR[p1 ] = 0;<br />
PR[p2 ] = 0;<br />
} else {<br />
PR[p1 ] = tmp_rel;<br />
PR[p2 ] = !tmp_rel;<br />
}<br />
break;<br />
}<br />
} else {<br />
if (ctype == ‘unc’) {<br />
if (p1 == p2)<br />
illegal_operation_fault();<br />
PR[p1 ] = 0;<br />
PR[p2 ] = 0;<br />
}<br />
}<br />
割り込み : 無効操作フ ォ ル ト<br />
第 3 巻 : 命令リファレンス 3:235