fcmp Operation Font Conventions
if (PR[qp]) {
if (p1 == p2)
illegal_operation_fault();

if (tmp_isrcode = fp_reg_disabled(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 (fp_raise_fault(tmp_fp_env))
fp_exception_fault(fp_decode_fault(tmp_fp_env));

tmp_fr2 = fp_reg_read(FR[f2]);
tmp_fr3 = fp_reg_read(FR[f3]);

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'

PR[p1] = tmp_rel;
PR[p2] = !tmp_rel;

fp_update_fpsr
(sf, tmp_fp_env);
}
} else {
if (fctype == ‘unc') {
if (p1 == p2)
illegal_operation_fault();
PR[p1] = 0;
PR[p2] = 0;
}
}