diff --git a/src/compiler/nir/nir_builtin_builder.c b/src/compiler/nir/nir_builtin_builder.c index 06a07058370..af3725ac847 100644 --- a/src/compiler/nir/nir_builtin_builder.c +++ b/src/compiler/nir/nir_builtin_builder.c @@ -208,28 +208,7 @@ nir_atan(nir_builder *b, nir_def *y_over_x) nir_def *tmp = nir_ffma(b, nir_fabs(b, u), res, bias); /* sign fixup */ - nir_def *result = nir_copysign(b, tmp, y_over_x); - - /* The fmin and fmax above will filter out NaN values. This leads to - * non-NaN results for NaN inputs. Work around this by doing - * - * !isnan(y_over_x) ? ... : y_over_x; - */ - if (b->exact || - nir_is_float_control_signed_zero_inf_nan_preserve(b->fp_fast_math, bit_size)) { - const bool exact = b->exact; - - b->exact = true; - nir_def *is_not_nan = nir_feq(b, y_over_x, y_over_x); - b->exact = exact; - - /* The extra 1.0*y_over_x ensures that subnormal results are flushed to - * zero. - */ - result = nir_bcsel(b, is_not_nan, result, nir_fmul_imm(b, y_over_x, 1.0)); - } - - return result; + return nir_copysign(b, tmp, y_over_x); } nir_def *