fcmp Operation Font Conventions
if
(PR[qp]) {
if
(p1 == p2)
illegal_operation_fault();
if (tmp_isrcode = (f2, f3, 0,
0))
disabled_fp_register_fault(tmp_isrcode, 0);
if (fp_is_natval([f2]) || fp_is_natval(FR[f3])) {
PR[p1] = 0;
PR[p2] = 0;
} else {
fcmp_exception_fault_check(f2, f3, frel, sf,
&tmp_fp_env);
if ((tmp_fp_env))
fp_exception_fault((tmp_fp_env));
tmp_fr2 = (FR[f2]);
tmp_fr3 = fp_reg_read(FR[f3]);
if (frel == ‘eq') tmp_rel = (tmp_fr2, tmp_fr3);
else if (frel == ‘lt') tmp_rel = (tmp_fr2,
tmp_fr3);
else if (frel == ‘le') tmp_rel = (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 = (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'
PR[p1] = tmp_rel;
PR[p2] = !tmp_rel; (sf, tmp_fp_env);
}
} else {
if (fctype == ‘unc') {
if (p1 == p2)
illegal_operation_fault();
PR[p1] = 0;
PR[p2] = 0;
}
}