https://bugs.freedesktop.org/show_bug.cgi?id=111308

--- Comment #4 from Ian Romanick <i...@freedesktop.org> ---
I think I have an idea what could be happening.  There are a lot of occurrences
of a pattern like

    y = exp2(-(x*x)) * small_constant + y;

At the end, y is compared 0 < y, and that comparison is eliminated.  If x*x is
sufficiently large, exp2(-(x*x)) will flush to zero.

Does changing

   case nir_op_fexp2:
      r = (struct ssa_result_range){gt_zero, analyze_expression(alu, 0,
ht).is_integral};
      break;

to

   case nir_op_fexp2:
      r = (struct ssa_result_range){ge_zero, analyze_expression(alu, 0,
ht).is_integral};
      break;

help?  I don't have the renderdoc set up on this system.  I can try that later
today of you don't beat me to it.

If that fixes the problem, then fmul and ffma (and possibly others) will need
fixes to account for flush-to-zero behavior.

-- 
You are receiving this mail because:
You are the assignee for the bug.
You are the QA Contact for the bug.
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to