16.02.2013 Aufrufe

24531904_j

24531904_j

24531904_j

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

pshladd<br />

pshladd ─ 並列左シフトおよび加算 (Parallel Shift Left and Add)<br />

書式 : (qp) pshladd2 r 1 = r 2 , count 2 , r 3 A10<br />

説明 : GR r 2 の 4 つの符号付き 16 ビット ・データ要素が、 count 2 ビ ッ ト だけ、 それぞれ独立に<br />

左にシフ ト ( 下位ビ ッ ト にゼ ロ がシ フ ト ・ イ ン ) され、 GR r 3 の 4 つの符号付き 16 ビッ<br />

ト ・ デー タ要素に加算される。 左シフ ト と加算の両操作は と も に飽和する。 つま り、 シ<br />

フ ト ま たは加算の結果が符号付き 16 ビ ッ ト 値 と して表現で き ない場合に は、 最終結果が<br />

飽和す る。 4 つの符号付き 16 ビッ ト結果はGR r 1 に格納される。 第 1 オペラン ド に対し<br />

てシフ ト できるビ ッ ト数は、 1、 2、 あるいは 3 に限られる。<br />

操作 : if (PR[qp]) {<br />

check_target_register(r 1 );<br />

}<br />

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

x[0] = GR[r 2 ]{15:0}; y[0] = GR[r 3 ]{15:0};<br />

x[1] = GR[r 2 ]{31:16}; y[1] = GR[r 3 ]{31:16};<br />

x[2] = GR[r 2 ]{47:32}; y[2] = GR[r 3 ]{47:32};<br />

x[3] = GR[r 2 ]{63:48}; y[3] = GR[r 3 ]{63:48};<br />

max = sign_ext(0x7fff, 16);<br />

min = sign_ext(0x8000, 16);<br />

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

temp[i] = sign_ext(x[i], 16) max)<br />

res[i] = max;<br />

else if (temp[i] < min)<br />

res[i] = min;<br />

else {<br />

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

if (res[i] > max)<br />

res[i] = max;<br />

if (res[i] < min)<br />

res[i] = min;<br />

}<br />

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

GR[r 1 ].nat = GR[r 2 ].nat || GR[r 3 ].nat;<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!