nir: lower fexp2(fmul(flog2(a), 2)) to fmul(a, a)
authorSamuel Pitoiset <samuel.pitoiset@gmail.com>
Mon, 5 Feb 2018 14:08:03 +0000 (15:08 +0100)
committerSamuel Pitoiset <samuel.pitoiset@gmail.com>
Thu, 22 Feb 2018 19:40:45 +0000 (20:40 +0100)
Similar for the 4 case.

Suggested by Bas.

Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
src/compiler/nir/nir_opt_algebraic.py

index 622ce824b975b65cd6b9c2495c8624994a30c937..d40d59b5cdbf82876f52c1f6e04f2a5486aa8129 100644 (file)
@@ -321,6 +321,8 @@ optimizations = [
    (('~fexp2', ('fmul', ('flog2', a), b)), ('fpow', a, b), '!options->lower_fpow'), # 2^(lg2(a)*b) = a^b
    (('~fexp2', ('fadd', ('fmul', ('flog2', a), b), ('fmul', ('flog2', c), d))),
     ('~fmul', ('fpow', a, b), ('fpow', c, d)), '!options->lower_fpow'), # 2^(lg2(a) * b + lg2(c) + d) = a^b * c^d
+   (('~fexp2', ('fmul', ('flog2', a), 2.0)), ('fmul', a, a)),
+   (('~fexp2', ('fmul', ('flog2', a), 4.0)), ('fmul', ('fmul', a, a), ('fmul', a, a))),
    (('~fpow', a, 1.0), a),
    (('~fpow', a, 2.0), ('fmul', a, a)),
    (('~fpow', a, 4.0), ('fmul', ('fmul', a, a), ('fmul', a, a))),