Patent Document ID: 9405516
Application ID: 14603862
Patent Flag: 1

Claim One:
1. A method for recursive expression simplification, the method comprising: identifying, by one or more processors, a candidate loop, where the candidate loop includes one or more reduction variables and reduction operations; altering, by one or more processors, grouping of loop invariants and loop variants within the candidate loop; performing, by one or more processors, recursive expression simplification for an inner loop located within the candidate loop, wherein recursive expression simplification includes removing a mathematical operation from the inner loop and combining the removed mathematical operation with a result of an iterative calculation of the inner loop; creating, by one or more processors, a new reduction variable, wherein the new reduction variable is equal to the result of the iterative calculation of the inner loop; creating, by one or more processors, a prologue statement, wherein the prologue statement initializes the new reduction variable based on at least the removed mathematical operation; replacing, by one or more processors, an original loop reduction variable in the candidate loop with the new reduction variable; creating, by one or more processors, an epilogue statement, wherein the epilogue statement represents the replacement of the original loop reduction variable, such that the removed mathematical operation is performed subsequent to the iterative calculation of the inner loop; determining, by one or more processors, if the inner loop is invariant with respect to an outer loop, wherein the outer loop is located within the candidate loop; and responsive to determining the inner loop is invariant with respect to the outer loop, performing, by one or more processors, invariant loop motion.