On Thu, Apr 28, 2016 at 11:20 AM, Ilia Mirkin <imir...@alum.mit.edu> wrote: > What if the existing operations were already exact?
They aren't -- the builder makes them non-exact by default, and we initialize the builder ourselves in this pass. > > 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