https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86710

            Bug ID: 86710
           Summary: 3 missing logarithm optimizations
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mcccs at gmx dot com
  Target Milestone: ---

I've looked at match.pd, and spotted missing
properties of logarithm. I could poorly write
the code for two, still needs to check that
the log base is the same:

 (for logs (LOG LOG2 LOG10)
  /* logN(a) + logN(b) -> logN(a * b). */
  (simplify
   (plus (logs (@0)) (logs (@1)))
   (logs (mult:c (@0) (@1))))

 (for logs (LOG LOG2 LOG10)
  /* logN(a) - logN(b) -> logN(a / b). */
  (simplify
   (sub (logs (@0)) (logs (@1)))
   (logs (rdiv (@0) (@1))))

I couldn't code the last one

/* logN(b)/logN(a) * logN(c)/logN(b) -> logN(c)/logN(a). */

Here are the test cases:

1: https://godbolt.org/g/boqxQb

2: https://godbolt.org/g/m7zHxK

3: https://godbolt.org/g/KXrbV4

Reply via email to