xma 操作 字型慣例
if (PR[qp]) {
fp_ check_target_register;
if (tmp_isrcode = fp_reg_disabled(f1, f2, f3, f4))
disabled_fp_register_fault(tmp_isrcode, 0);
if (fp_is_natval(FR[f2]) || fp_is_natval(FR[f3]) || fp_is_natval(FR[f4])) {
FR[f1] = NATVAL;
} else {
if (low_form || high_form)
tmp_res_128 =
fp_I64_x_I64_to_I128(FR[f3].significand, FR[f4].significand);
else // high_unsigned_form
tmp_res_128 =
fp_U64_x_U64_to_U128(FR[f3].significand, FR[f4].significand);
tmp_res_128 =
fp_U128_add(tmp_res_128, fp_U64_to_U128(FR[f2].significand));
if (high_form || high_unsigned_form)
FR[f1].significand = tmp_res_128.hi;
else // low_form
FR[f1].significand = tmp_res_128.lo;
FR[f1].exponent = FP_INTEGER_EXP;
FR[f1].sign = FP_SIGN_POSITIVE;
}
fp_update_psr(f1);
}