What if the existing operations were already exact?
On Thu, Apr 28, 2016 at 11:17 AM, Connor Abbott <cwabbo...@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 <cwabbo...@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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev