24531904_j

24531904_j 24531904_j

16.02.2013 Aufrufe

} } else { fpcmp_exception_fault_check(f 2, f 3, frel, sf, &tmp_fp_env); if (fp_raise_fault(tmp_fp_env)) fp_exception_fault(fp_decode_fault(tmp_fp_env)); tmp_fr2 = fp_reg_read_hi(f 2 ); tmp_fr3 = fp_reg_read_hi(f 3 ); if (frel == ‘eq’) tmp_rel = fp_equal(tmp_fr2, tmp_fr3); else if (frel == ‘lt’) tmp_rel = fp_less_than(tmp_fr2, tmp_fr3); else if (frel == ‘le’) tmp_rel = fp_lesser_or_equal(tmp_fr2, tmp_fr3); else if (frel == ‘gt’) tmp_rel = fp_less_than(tmp_fr3, tmp_fr2); else if (frel == ‘ge’) tmp_rel = fp_lesser_or_equal(tmp_fr3, tmp_fr2); else if (frel == ‘unord’)tmp_rel = fp_unordered(tmp_fr2, tmp_fr3); else if (frel == ‘neq’) tmp_rel = !fp_equal(tmp_fr2, tmp_fr3); else if (frel == ‘nlt’) tmp_rel = !fp_less_than(tmp_fr2, tmp_fr3); else if (frel == ‘nle’) tmp_rel = !fp_lesser_or_equal(tmp_fr2, tmp_fr3); else if (frel == ‘ngt’) tmp_rel = !fp_less_than(tmp_fr3, tmp_fr2); else if (frel == ‘nge’) tmp_rel = !fp_lesser_or_equal(tmp_fr3, tmp_fr2); else tmp_rel = !fp_unordered(tmp_fr2, tmp_fr3); //‘ord’ tmp_res_hi = (tmp_rel ? 0xFFFFFFFF : 0x00000000); tmp_fr2 = fp_reg_read_lo(f 2 ); tmp_fr3 = fp_reg_read_lo(f 3 ); if (frel == ‘eq’) tmp_rel = fp_equal(tmp_fr2, tmp_fr3); else if (frel == ‘lt’) tmp_rel = fp_less_than(tmp_fr2, tmp_fr3); else if (frel == ‘le’) tmp_rel = fp_lesser_or_equal(tmp_fr2, tmp_fr3); else if (frel == ‘gt’) tmp_rel = fp_less_than(tmp_fr3, tmp_fr2); else if (frel == ‘ge’) tmp_rel = fp_lesser_or_equal(tmp_fr3, tmp_fr2); else if (frel == ‘unord’)tmp_rel = fp_unordered(tmp_fr2, tmp_fr3); else if (frel == ‘neq’) tmp_rel = !fp_equal(tmp_fr2, tmp_fr3); else if (frel == ‘nlt’) tmp_rel = !fp_less_than(tmp_fr2, tmp_fr3); else if (frel == ‘nle’) tmp_rel = !fp_lesser_or_equal(tmp_fr2, tmp_fr3); else if (frel == ‘ngt’) tmp_rel = !fp_less_than(tmp_fr3, tmp_fr2); else if (frel == ‘nge’) tmp_rel = !fp_lesser_or_equal(tmp_fr3, tmp_fr2); else tmp_rel = !fp_unordered(tmp_fr2, tmp_fr3); //‘ord’ tmp_res_lo = (tmp_rel ? 0xFFFFFFFF : 0x00000000); FR[f 1 ].significand = fp_concatenate(tmp_res_hi, tmp_res_lo); FR[f 1 ].exponent = FP_INTEGER_EXP; FR[f 1].sign = FP_SIGN_POSITIVE; fp_update_fpsr(sf, tmp_fp_env); } fp_update_psr(f1 ); fpcmp 3:92 第 3 巻 : 命令リファレンス

fpcmp FP 例外 : 無効操作 (Invalid Operation: V) デノーマル/ アンノ ーマル ・ オペラン ド (Denormal/Unnormal Operand: D) ソフ ト ウェア・アシスト (Software Assist: SWA) フォルト 割り込み : 無効操作フ ォ ル ト 浮動小数点例外フ ォ ル ト 浮動小数点レ ジ ス タ無効フ ォ ル ト 第 3 巻 : 命令リファレンス 3:93

}<br />

} else {<br />

fpcmp_exception_fault_check(f 2, f 3, frel, sf, &tmp_fp_env);<br />

if (fp_raise_fault(tmp_fp_env))<br />

fp_exception_fault(fp_decode_fault(tmp_fp_env));<br />

tmp_fr2 = fp_reg_read_hi(f 2 );<br />

tmp_fr3 = fp_reg_read_hi(f 3 );<br />

if (frel == ‘eq’) tmp_rel = fp_equal(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘lt’) tmp_rel = fp_less_than(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘le’) tmp_rel = fp_lesser_or_equal(tmp_fr2,<br />

tmp_fr3);<br />

else if (frel == ‘gt’) tmp_rel = fp_less_than(tmp_fr3, tmp_fr2);<br />

else if (frel == ‘ge’) tmp_rel = fp_lesser_or_equal(tmp_fr3,<br />

tmp_fr2);<br />

else if (frel == ‘unord’)tmp_rel = fp_unordered(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘neq’) tmp_rel = !fp_equal(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘nlt’) tmp_rel = !fp_less_than(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘nle’) tmp_rel = !fp_lesser_or_equal(tmp_fr2,<br />

tmp_fr3);<br />

else if (frel == ‘ngt’) tmp_rel = !fp_less_than(tmp_fr3, tmp_fr2);<br />

else if (frel == ‘nge’) tmp_rel = !fp_lesser_or_equal(tmp_fr3,<br />

tmp_fr2);<br />

else tmp_rel = !fp_unordered(tmp_fr2,<br />

tmp_fr3); //‘ord’<br />

tmp_res_hi = (tmp_rel ? 0xFFFFFFFF : 0x00000000);<br />

tmp_fr2 = fp_reg_read_lo(f 2 );<br />

tmp_fr3 = fp_reg_read_lo(f 3 );<br />

if (frel == ‘eq’) tmp_rel = fp_equal(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘lt’) tmp_rel = fp_less_than(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘le’) tmp_rel = fp_lesser_or_equal(tmp_fr2,<br />

tmp_fr3);<br />

else if (frel == ‘gt’) tmp_rel = fp_less_than(tmp_fr3, tmp_fr2);<br />

else if (frel == ‘ge’) tmp_rel = fp_lesser_or_equal(tmp_fr3,<br />

tmp_fr2);<br />

else if (frel == ‘unord’)tmp_rel = fp_unordered(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘neq’) tmp_rel = !fp_equal(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘nlt’) tmp_rel = !fp_less_than(tmp_fr2, tmp_fr3);<br />

else if (frel == ‘nle’) tmp_rel = !fp_lesser_or_equal(tmp_fr2,<br />

tmp_fr3);<br />

else if (frel == ‘ngt’) tmp_rel = !fp_less_than(tmp_fr3, tmp_fr2);<br />

else if (frel == ‘nge’) tmp_rel = !fp_lesser_or_equal(tmp_fr3,<br />

tmp_fr2);<br />

else tmp_rel = !fp_unordered(tmp_fr2,<br />

tmp_fr3); //‘ord’<br />

tmp_res_lo = (tmp_rel ? 0xFFFFFFFF : 0x00000000);<br />

FR[f 1 ].significand = fp_concatenate(tmp_res_hi, tmp_res_lo);<br />

FR[f 1 ].exponent = FP_INTEGER_EXP;<br />

FR[f 1].sign = FP_SIGN_POSITIVE;<br />

fp_update_fpsr(sf, tmp_fp_env);<br />

}<br />

fp_update_psr(f1 );<br />

fpcmp<br />

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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!