On 11/11/2016 03:20 PM, Bastian Koppelmann wrote:
+        if (muladd_negate_c) {
+            cSign ^= 1;
+        }
+        if (((aExp == 0xff) || (bExp == 0xff)) && (cExp == 0xff)) {
+            if (aSign ^ bSign ^ cSign) {

If you're going to make muladd_negate_c a bool, you might as well just fold that in here:

  if (aSign ^ bSign ^ cSign ^ muladd_negate_c)

And, come to think of it,

+            arg1 = float32_squash_input_denormal(arg1, &env->fp_status);
+            arg2 = float32_squash_input_denormal(arg2, &env->fp_status);
+            arg3 = float32_squash_input_denormal(arg3, &env->fp_status);

can be folded into f_maddsub_nan_result as

    } else if (float32_is_infinity(arg1)
               && float32_is_zero(float32_squash_input_denormal
                  (arg2, &env->fp_status))) {
        return MUL_NAN;
    } else if (float32_is_infinity(arg2)
               && float32_is_zero(float32_squash_input_denormal
                  (arg1, &env->fp_status))) {
        return MUL_NAN;

which makes it less likely that the squash will actually be call

Otherwise,

Reviewed-by: Richard Henderson <[email protected]>


r~

Reply via email to