[Mesa-dev] [PATCH] nir: mark dsqrt/drsqrt/drcp implementation as exact

Ilia Mirkin imirkin at alum.mit.edu
Thu Apr 28 15:20:14 UTC 2016


What if the existing operations were already exact?

On Thu, Apr 28, 2016 at 11:17 AM, Connor Abbott <cwabbott0 at gmail.com> wrote:
> The floating-point operations used to implement these have been
> carefully chosen to minimize rounding error while still getting decent
> performance. We don't want any optimizations to mess with them. While
> this shouldn't affect anything now, it seems like a good idea.
>
> Signed-off-by: Connor Abbott <cwabbott0 at gmail.com>
> ---
>  src/compiler/nir/nir_lower_double_ops.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/src/compiler/nir/nir_lower_double_ops.c b/src/compiler/nir/nir_lower_double_ops.c
> index 7505fa3..42b94bb 100644
> --- a/src/compiler/nir/nir_lower_double_ops.c
> +++ b/src/compiler/nir/nir_lower_double_ops.c
> @@ -142,8 +142,10 @@ lower_rcp(nir_builder *b, nir_ssa_def *src)
>      * See https://en.wikipedia.org/wiki/Division_algorithm for more details.
>      */
>
> +   b->exact = true;
>     ra = nir_ffma(b, ra, nir_ffma(b, ra, src, nir_imm_double(b, -1)), ra);
>     ra = nir_ffma(b, ra, nir_ffma(b, ra, src, nir_imm_double(b, -1)), ra);
> +   b->exact = false;
>
>     return fix_inv_result(b, ra, src, new_exp);
>  }
> @@ -267,6 +269,7 @@ lower_sqrt_rsq(nir_builder *b, nir_ssa_def *src, bool sqrt)
>      * (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots).
>      */
>
> +    b->exact = true;
>      nir_ssa_def *one_half = nir_imm_double(b, 0.5);
>      nir_ssa_def *h_0 = nir_fmul(b, one_half, ra);
>      nir_ssa_def *g_0 = nir_fmul(b, src, ra);
> @@ -283,6 +286,7 @@ lower_sqrt_rsq(nir_builder *b, nir_ssa_def *src, bool sqrt)
>                                     one_half);
>         res = nir_ffma(b, y_1, r_1, y_1);
>      }
> +    b->exact = false;
>
>      if (sqrt) {
>         /* Here, the special cases we need to handle are
> --
> 2.5.0
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list