24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

} 割り込み : 無効操作フ ォ ル ト res[i] = shift_right_unsigned(temp[i], 1); } } else { // normal form for (i = 0; i < 4; i++) { temp[i] = zero_ext(x[i], 16) + zero_ext(y[i], 16); res[i] = shift_right_unsigned(temp[i], 1) | (temp[i]{0}); } } GR[r1 ] = concatenate4(res[3], res[2], res[1], res[0]); } GR[r1 ].nat = GR[r2 ].nat || GR[r3 ].nat; 3:182 第 3 巻 : 命令リファレンス pavg

pavgsub pavgsub ─ 並列平均減算 (Parallel Average Subtract) 書式 : (qp) pavgsub1r 1 = r 2 , r 3 one_byte_form A9 (qp) pavgsub2r 1 = r 2 , r 3 two_byte_form A9 説明 : GR r 3 の符号なしの各デー タ要素が GR r 2 の対応する符号なしデー タ要素か ら 減算 さ れ、 次に こ の減算結果がそれぞれ独立に右に 1 ビ ッ ト 位置だけシ フ ト される。 各要素の最上 位ビットには減算のボロー・ビット (ALU のキャ リ ーの補数 ) が埋め られる。 丸め誤差 を累積 さ せないために、 平均操作が行われる。 対応す る減算結果の最下位 2 ビッ トの少 なく ともいずれかが1 の場合、 それぞれの減算結果の最下位ビ ッ ト が 1 に設定される。 符号付き の結果が GR r 1 に格納される。 図 2-32. 並列平均減算の例 GR r 3 : GR r 2 : 16 ビットの差 + キャリー 1 ビット 右シフト GR r 1 : 操作 : if (PR[qp]) { check_target_register(r 1 ); - - if (one_byte_form) { x[0] = GR[r 2 ]{7:0}; y[0] = GR[r 3 ]{7:0}; x[1] = GR[r 2 ]{15:8}; y[1] = GR[r 3 ]{15:8}; x[2] = GR[r 2]{23:16}; y[2] = GR[r 3]{23:16}; x[3] = GR[r 2 ]{31:24}; y[3] = GR[r 3 ]{31:24}; x[4] = GR[r 2 ]{39:32}; y[4] = GR[r 3 ]{39:32}; x[5] = GR[r 2]{47:40}; y[5] = GR[r 3]{47:40}; x[6] = GR[r 2 ]{55:48}; y[6] = GR[r 3 ]{55:48}; x[7] = GR[r 2 ]{63:56}; y[7] = GR[r 3 ]{63:56}; - pavgsub2 for (i = 0; i < 8; i++) { temp[i] = zero_ext(x[i], 8) - zero_ext(y[i], 8); res[i] = (temp[i]{8:0} u>> 1) | (temp[i]{0}); } GR[r 1 ] = concatenate8(res[7], res[6], res[5], res[4], res[3], res[2], res[1], res[0]); } else { // two_byte_form x[0] = GR[r 2]{15:0}; y[0] = GR[r 3]{15:0}; x[1] = GR[r 2 ]{31:16}; y[1] = GR[r 3 ]{31:16}; 第 3 巻 : 命令リファレンス 3:183 - ボロー・ ビット 最下位ビットを 平均して 1 ビット右シフト 和ビット or

}<br />

割り込み : 無効操作フ ォ ル ト<br />

res[i] = shift_right_unsigned(temp[i], 1);<br />

}<br />

} else { // normal form<br />

for (i = 0; i < 4; i++) {<br />

temp[i] = zero_ext(x[i], 16) + zero_ext(y[i], 16);<br />

res[i] = shift_right_unsigned(temp[i], 1) | (temp[i]{0});<br />

}<br />

}<br />

GR[r1 ] = concatenate4(res[3], res[2], res[1], res[0]);<br />

}<br />

GR[r1 ].nat = GR[r2 ].nat || GR[r3 ].nat;<br />

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

pavg

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!