24531904_j
24531904_j 24531904_j
mux ─ 置換 (Mux) 書式 : (qp) mux1r 1 = r 2 , mbtype 4 one_byte_form I3 (qp) mux2r 1 = r 2 , mhtype 8 two_byte_form I4 説明 : 1 つのソース ・ レジスタ GR r 2 内のパ ッ ク形式の要素に対して置換が行われ、 その結果が GR r 1 に格納される。 8 ビ ッ ト 要素に対しては、 可能なすべての置換タ イ プのなかの一部 しか指定できない。 5 つの可能な置換と それらの図解を、 それぞれ表 2-41 と 図 2-26 に示 す。 表 2-41. 8 ビット要素に対する Mux による置換 mbtype4 機能 @rev バイトの順序を逆にする。 @mix GR r2 の両半分に対してミックス操作を実行する。 @shuf GR r2 の両半分に対してシャッフル操作を実行する。 @alt GR r2 の両半分に対して交互操作を実行する。 @brcst GR r2 の最下位バイトに対してブロードキャスト操作を実行する。 図 2-26. Mux1 の操作 (8 ビット要素 ) GR r 2 : GR r 1 : GR r 2 : GR r 1 : mux1 r 1 = r 2 , @rev mux1 r 1 = r 2 , @shuf GR r 2 : GR r 1 : 16 ビ ッ ト 要素に対しては、 反復の有無にかかわ ら ず、 可能なすべての置換タ イ プを指定 できる。 これらの置換は、 4 つの 16 ビッ ト ・データ要素のインデックスをエンコーディ ングしたものである 8 ビッ トのmhtype 8 フ ィ ールドで表現される。 インデッ クスされた GR r 2 の 16 ビッ ト要素が、 ターゲッ ト ・レジスタGR r 1 の対応する 16 ビット位置にコ ピーされる。 インデックスはリ トル・エンディアン型の順序でエンコードされる。 (mhtype 8 の 8 ビッ ト [7:0] がビ ッ ト 対のグル ー プに分け ら れ、 操作の項では、 mhtype 8 [3]、 mhtype 8 [2]、 mhtype 8 [1]、 mhtype 8 [0] と命名されている。 ) 3:170 第 3 巻 : 命令リファレンス GR r 2 : GR r 1 : GR r 2 : GR r 1 : mux1 r 1 = r 2 , @brcst mux1 r 1 = r 2 , @mix mux1 r 1 = r 2 , @alt mux
mux 図 2-27. Mux2 の例 (16 ビット要素 ) GR r 2 : GR r 1 : GR r 2 : GR r 1 : mux2 r1 = r2, 0x8d( シャトル 10 00 11 01) mux2 r 1 = r 2 , 0xd8( オルタネート 11 01 10 00) 操作 : if (PR[qp]) { check_target_register(r 1 ); if (one_byte_form) { x[0] = GR[r 2 ]{7:0}; x[1] = GR[r 2]{15:8}; x[2] = GR[r 2 ]{23:16}; x[3] = GR[r 2 ]{31:24}; x[4] = GR[r 2]{39:32}; x[5] = GR[r 2 ]{47:40}; x[6] = GR[r 2 ]{55:48}; x[7] = GR[r 2]{63:56}; switch (mbtype) { case ‘@rev’: GR[r 1 ] = concatenate8(x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]); break; case ‘@mix’: GR[r 1] = concatenate8(x[7], x[3], x[5], x[1], x[6], x[2], x[4], x[0]); break; case ‘@shuf’: GR[r 1 ] = concatenate8(x[7], x[3], x[6], x[2], x[5], x[1], x[4], x[0]); break; case ‘@alt’: GR[r 1 ] = concatenate8(x[7], x[5], x[3], x[1], x[6], x[4], x[2], x[0]); break; case ‘@brcst’: GR[r1] = concatenate8(x[0], x[0], x[0], x[0], x[0], x[0], x[0], x[0]); break; } } else { // two_byte_form 第 3 巻 : 命令リファレンス 3:171 GR r 2 : GR r 1 : GR r 2 GR r 1 : mux2 r 1 = r 2 , 0x1b ( リバース 00 01 10 11) mux2 r 1 = r 2 , 0xaa ( ブロードキャスト 10 10 10 10)
- 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 und 168: mov ar 操作 : if (PR[qp]) { tmp_t
- Seite 169 und 170: mov cr mov ─ コントロール
- 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: movl movl ─ ロング型即値の
- 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 ─ グ
- 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 ─ 左シフトお
mux ─ 置換 (Mux)<br />
書式 : (qp) mux1r 1 = r 2 , mbtype 4 one_byte_form I3<br />
(qp) mux2r 1 = r 2 , mhtype 8 two_byte_form I4<br />
説明 : 1 つのソース ・ レジスタ GR r 2 内のパ ッ ク形式の要素に対して置換が行われ、 その結果が<br />
GR r 1 に格納される。 8 ビ ッ ト 要素に対しては、 可能なすべての置換タ イ プのなかの一部<br />
しか指定できない。 5 つの可能な置換と それらの図解を、 それぞれ表 2-41 と 図 2-26 に示<br />
す。<br />
表 2-41. 8 ビット要素に対する Mux による置換<br />
mbtype4 機能<br />
@rev バイトの順序を逆にする。<br />
@mix GR r2 の両半分に対してミックス操作を実行する。<br />
@shuf GR r2 の両半分に対してシャッフル操作を実行する。<br />
@alt GR r2 の両半分に対して交互操作を実行する。<br />
@brcst GR r2 の最下位バイトに対してブロードキャスト操作を実行する。<br />
図 2-26. Mux1 の操作 (8 ビット要素 )<br />
GR r 2 :<br />
GR r 1 :<br />
GR r 2 :<br />
GR r 1 :<br />
mux1 r 1 = r 2 , @rev<br />
mux1 r 1 = r 2 , @shuf<br />
GR r 2 :<br />
GR r 1 :<br />
16 ビ ッ ト 要素に対しては、 反復の有無にかかわ ら ず、 可能なすべての置換タ イ プを指定<br />
できる。 これらの置換は、 4 つの 16 ビッ ト ・データ要素のインデックスをエンコーディ<br />
ングしたものである 8 ビッ トのmhtype 8 フ ィ ールドで表現される。 インデッ クスされた<br />
GR r 2 の 16 ビッ ト要素が、 ターゲッ ト ・レジスタGR r 1 の対応する 16 ビット位置にコ<br />
ピーされる。 インデックスはリ トル・エンディアン型の順序でエンコードされる。<br />
(mhtype 8 の 8 ビッ ト [7:0] がビ ッ ト 対のグル ー プに分け ら れ、 操作の項では、 mhtype 8 [3]、<br />
mhtype 8 [2]、 mhtype 8 [1]、 mhtype 8 [0] と命名されている。 )<br />
3:170 第 3 巻 : 命令リファレンス<br />
GR r 2 :<br />
GR r 1 :<br />
GR r 2 :<br />
GR r 1 :<br />
mux1 r 1 = r 2 , @brcst<br />
mux1 r 1 = r 2 , @mix<br />
mux1 r 1 = r 2 , @alt<br />
mux