Signed-off-by: Samuel Iglesias Gonsálvez <sigles...@igalia.com> --- src/compiler/nir/nir_lower_double_ops.c | 12 ++++++++++++ 1 file changed, 12 insertions(+)
diff --git a/src/compiler/nir/nir_lower_double_ops.c b/src/compiler/nir/nir_lower_double_ops.c index b3543bc6963..97b825d2fdb 100644 --- a/src/compiler/nir/nir_lower_double_ops.c +++ b/src/compiler/nir/nir_lower_double_ops.c @@ -558,6 +558,18 @@ lower_doubles_instr(nir_alu_instr *instr, nir_lower_doubles_options options) unreachable("unhandled opcode"); } + bool denorm_flush_to_zero = + bld.shader->info.shader_float_controls_execution_mode & SHADER_DENORM_FLUSH_TO_ZERO_FP64; + if (denorm_flush_to_zero) { + /* TODO: add support for flushing negative denorms to -0.0 */ + /* Flush to zero if the result value is a denorm */ + result = nir_bcsel(&bld, + nir_flt(&bld, nir_fabs(&bld, result), + nir_imm_double(&bld, 2.22507385850720138309023271733e-308)), + nir_imm_double(&bld, 0.0), + result); + } + nir_ssa_def_rewrite_uses(&instr->dest.dest.ssa, nir_src_for_ssa(result)); nir_instr_remove(&instr->instr); return true; -- 2.19.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev