Reviewed-by: Jason Ekstrand <jason.ekstr...@intel.com> On Thu, Jan 22, 2015 at 3:41 AM, Kenneth Graunke <kenn...@whitecape.org> wrote:
> Most of these exist in the GLSL IR algebraic pass already. However, > SSA allows us to find more instances of the patterns. > > total NIR instructions in shared programs: 2015593 -> 2011430 (-0.21%) > NIR instructions in affected programs: 124189 -> 120026 (-3.35%) > helped: 604 > > total i965 instructions in shared programs: 6025508 -> 6018718 (-0.11%) > i965 instructions in affected programs: 261070 -> 254280 (-2.60%) > helped: 1295 > HURT: 2 (by 1 instruction each) > GAINED: 6 > > Signed-off-by: Kenneth Graunke <kenn...@whitecape.org> > --- > src/glsl/nir/nir_opt_algebraic.py | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/src/glsl/nir/nir_opt_algebraic.py > b/src/glsl/nir/nir_opt_algebraic.py > index dec250b..a5b5715 100644 > --- a/src/glsl/nir/nir_opt_algebraic.py > +++ b/src/glsl/nir/nir_opt_algebraic.py > @@ -99,6 +99,16 @@ optimizations = [ > (('ishr', a, 0), 0), > (('ushr', 0, a), 0), > (('ushr', a, 0), 0), > + # Exponential/logarithmic identities > + (('fexp2', ('flog2', a)), a), # 2^lg2(a) = a > + (('fexp', ('flog', a)), a), # e^ln(a) = a > + (('flog2', ('fexp2', a)), a), # lg2(2^a) = a > + (('flog', ('fexp', a)), a), # ln(e^a) = a > + (('fexp2', ('fmul', ('flog2', a), b)), ('fpow', a, b)), # 2^(lg2(a)*b) > = a^b > + (('fexp', ('fmul', ('flog', a), b)), ('fpow', a, b)), # e^(ln(a)*b) > = a^b > + (('fpow', a, 1.0), a), > + (('fpow', a, 2.0), ('fmul', a, a)), > + (('fpow', 2.0, a), ('fexp2', a)), > > # This one may not be exact > (('feq', ('fadd', a, b), 0.0), ('feq', a, ('fneg', b))), > -- > 2.2.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev