Revision 43fe9bdb target-arm/helper.c
b/target-arm/helper.c | ||
---|---|---|
2720 | 2720 |
float_status *s = &env->vfp.standard_fp_status; |
2721 | 2721 |
if ((float32_is_infinity(a) && float32_is_zero_or_denormal(b)) || |
2722 | 2722 |
(float32_is_infinity(b) && float32_is_zero_or_denormal(a))) { |
2723 |
if (!(float32_is_zero(a) || float32_is_zero(b))) { |
|
2724 |
float_raise(float_flag_input_denormal, s); |
|
2725 |
} |
|
2723 | 2726 |
return float32_two; |
2724 | 2727 |
} |
2725 | 2728 |
return float32_sub(float32_two, float32_mul(a, b, s), s); |
... | ... | |
2731 | 2734 |
float32 product; |
2732 | 2735 |
if ((float32_is_infinity(a) && float32_is_zero_or_denormal(b)) || |
2733 | 2736 |
(float32_is_infinity(b) && float32_is_zero_or_denormal(a))) { |
2737 |
if (!(float32_is_zero(a) || float32_is_zero(b))) { |
|
2738 |
float_raise(float_flag_input_denormal, s); |
|
2739 |
} |
|
2734 | 2740 |
return float32_one_point_five; |
2735 | 2741 |
} |
2736 | 2742 |
product = float32_mul(a, b, s); |
... | ... | |
2791 | 2797 |
} else if (float32_is_infinity(a)) { |
2792 | 2798 |
return float32_set_sign(float32_zero, float32_is_neg(a)); |
2793 | 2799 |
} else if (float32_is_zero_or_denormal(a)) { |
2800 |
if (!float32_is_zero(a)) { |
|
2801 |
float_raise(float_flag_input_denormal, s); |
|
2802 |
} |
|
2794 | 2803 |
float_raise(float_flag_divbyzero, s); |
2795 | 2804 |
return float32_set_sign(float32_infinity, float32_is_neg(a)); |
2796 | 2805 |
} else if (a_exp >= 253) { |
... | ... | |
2882 | 2891 |
} |
2883 | 2892 |
return float32_default_nan; |
2884 | 2893 |
} else if (float32_is_zero_or_denormal(a)) { |
2894 |
if (!float32_is_zero(a)) { |
|
2895 |
float_raise(float_flag_input_denormal, s); |
|
2896 |
} |
|
2885 | 2897 |
float_raise(float_flag_divbyzero, s); |
2886 | 2898 |
return float32_set_sign(float32_infinity, float32_is_neg(a)); |
2887 | 2899 |
} else if (float32_is_neg(a)) { |
Also available in: Unified diff