<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Apr 12, 2016 at 1:05 AM, Samuel Iglesias Gonsálvez <span dir="ltr"><<a href="mailto:siglesias@igalia.com" target="_blank">siglesias@igalia.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Some hardware (i965 on Broadwell generation, for example) does not support<br>
natively the execution of lrp instruction with double arguments.<br>
<br>
Add 'lower_lrp_double' flag to lower this instruction in that case.<br>
<br>
Signed-off-by: Samuel Iglesias Gonsálvez <<a href="mailto:siglesias@igalia.com">siglesias@igalia.com</a>><br>
---<br>
 src/compiler/nir/nir.h                | 2 ++<br>
 src/compiler/nir/nir_opt_algebraic.py | 7 +++++--<br>
 2 files changed, 7 insertions(+), 2 deletions(-)<br>
<br>
diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h<br>
index 0d17ce0..0bfc849 100644<br>
--- a/src/compiler/nir/nir.h<br>
+++ b/src/compiler/nir/nir.h<br>
@@ -1582,6 +1582,8 @@ typedef struct nir_shader_compiler_options {<br>
    bool lower_fdiv;<br>
    bool lower_ffma;<br>
    bool lower_flrp;<br>
+   /** Lowers flrp when it does not supports doubles */<br></blockquote><div><br></div><div>"does not support"<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
+   bool lower_flrp_double;<br></blockquote><div><br></div><div>Maybe rename the first one to lower_flrp32 and call this lower_flrp64?<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    bool lower_fpow;<br>
    bool lower_fsat;<br>
    bool lower_fsqrt;<br>
diff --git a/src/compiler/nir/nir_opt_algebraic.py b/src/compiler/nir/nir_opt_algebraic.py<br>
index ec8929a..f971585 100644<br>
--- a/src/compiler/nir/nir_opt_algebraic.py<br>
+++ b/src/compiler/nir/nir_opt_algebraic.py<br>
@@ -92,11 +92,14 @@ optimizations = [<br>
    (('~flrp', 0.0, a, b), ('fmul', a, b)),<br>
    (('~flrp', a, b, ('b2f', c)), ('bcsel', c, b, a), 'options->lower_flrp'),<br>
    (('flrp', a, b, c), ('fadd', ('fmul', c, ('fsub', b, a)), a), 'options->lower_flrp'),<br>
+   (('flrp', a, b, c), ('fadd', ('fmul', c, ('fsub', b, a)), a), '!options->lower_flrp && options->lower_flrp_double', 64),<br></blockquote><div><br></div><div>With the new mechanism, the first one because 'flrp@32' and this becomes 'flrp@64'<br><br></div><div>Also, I think we can just treat lower_flrp and lower_flrp64 as orthogonal and require drivers to specify both if they want it.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
    (('ffract', a), ('fsub', a, ('ffloor', a)), 'options->lower_ffract'),<br>
    (('~fadd', ('fmul', a, ('fadd', 1.0, ('fneg', ('b2f', c)))), ('fmul', b, ('b2f', c))), ('bcsel', c, b, a), 'options->lower_flrp'),<br>
-   (('~fadd', ('fmul', a, ('fadd', 1.0, ('fneg',         c ))), ('fmul', b,         c )), ('flrp', a, b, c), '!options->lower_flrp'),<br>
+   (('~fadd', ('fmul', a, ('fadd', 1.0, ('fneg',         c ))), ('fmul', b,         c )), ('flrp', a, b, c), '!options->lower_flrp', 32),<br>
+   (('~fadd', ('fmul', a, ('fadd', 1.0, ('fneg',         c ))), ('fmul', b,         c )), ('flrp', a, b, c), '!options->lower_flrp && !options->lower_flrp_double', 64),<br>
    (('~fadd', a, ('fmul', ('b2f', c), ('fadd', b, ('fneg', a)))), ('bcsel', c, b, a), 'options->lower_flrp'),<br>
-   (('~fadd', a, ('fmul',         c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp'),<br>
+   (('~fadd', a, ('fmul',         c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp', 32),<br>
+   (('~fadd', a, ('fmul',         c , ('fadd', b, ('fneg', a)))), ('flrp', a, b, c), '!options->lower_flrp && !options->lower_flrp_double', 64),<br>
    (('ffma', a, b, c), ('fadd', ('fmul', a, b), c), 'options->lower_ffma'),<br>
    (('~fadd', ('fmul', a, b), c), ('ffma', a, b, c), '!options->lower_ffma'),<br>
    # Comparison simplifications<br>
<span class="HOEnZb"><font color="#888888">--<br>
2.5.0<br>
<br>
_______________________________________________<br>
mesa-dev mailing list<br>
<a href="mailto:mesa-dev@lists.freedesktop.org">mesa-dev@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/mesa-dev" rel="noreferrer" target="_blank">https://lists.freedesktop.org/mailman/listinfo/mesa-dev</a><br>
</font></span></blockquote></div><br></div></div>