Advanced Compilers Topics Easy Detection of Loop Induction

Advanced Compilers Topics Easy Detection of Loop Induction

Topics Advanced Compilers Last time CMPSCI 710 Optimizations using SSA form Spring 2003 Constant propagation & dead code elimination Basic Loop Optimizations Loop invariant code motion This time Emery Berger Loop optimizations University of Massachusetts, Amherst Induction variable Linear test replacement Loop unrolling Scalar replacement UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 2 Easy Detection of Loop Induction Variables Taxonomy of Induction Variables Pattern match & check: basic induction variable: Search for “i = i + b” in loop only definition in loop is assignment j = j ± c, where c is loop invariant i is induction variable if no other assignment to i in loop mutual induction variable: ‘ definition is linear function of other induction variable i : ‘ Pros & Cons: i = c1 * i ± c2 ‘ + Easy! i = i / c1 ± c2 - Does not catch all loop induction variables family of basic induction variable j: e.g., “i = a * c + 2” set of induction variables i such that i is always assigned linear function of j UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 3 UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 4 Strength Reduction Strength Reduction Algorithm Replace “expensive” op by “cheaper” one Let i be induction variable in the family of E.g., replace multiply by addition basic induction variable j: Apply to induction variable families i = c1 * j + c2 Especially: array indexing Create new variable i’ Initialize in pre-header: i’ = c1*j + c2 Track value of j: after j = j + c3, add i’ = i’ + (c1 * c3) UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 5 UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 6 1 Strength Reduction Example Candidates for Strength Reduction Induction variable IV multiplied by invariant Recursively: IV * IV, IV mod constant, IV + IV UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 7 UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 8 Strength Reduction Algorithm Strength Reduction Examples basic induction variable: only definition in loop is assignment j = j ± c, where c is loop invariant mutual induction variable: definition is linear function of other induction variable i‘: ‘ i = c1 * i ± c2 ‘ i = i / c1 ± c2 family of basic induction variable j: set of induction variables i such that i is always assigned linear function of j UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 9 UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 10 Linear Test Replacement Linear Test Replacement Example Eliminates induction variable! After strength reduction, loop test is often last use of induction variable Algorithm: If only use of IV is loop test and its own increment, and test is always computed i.e., only one exit from loop Replace test with equivalent one: E.g., “i comp k” ⇒ “i_50 comp k*50” UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 11 UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 12 2 Loop Unrolling Scalar Replacement Problem: register allocators never keep a[i] in register To reduce loop overhead, we can unroll loops Idea: trick allocator Locate patterns of consistent reuse Replace load with copy into temporary Replace store with copy from temporary May need copies at end of loop E.g., when reuse spans > 1 iteration Advantages: Advantages: Disadvantages: Decreases number of loads and stores + Execute fewer total instructions - Code bloat Keeps reused values in registers + More fodder for common subexpression - Still updating Big performance impact (2x, 3x!) elimination, strength reduction, etc. through memory + Move consecutive access closer together UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 13 UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 14 Scalar Replacement Example Next Time Common Subexpression Elimination Read ACDI: Ch. 12, pp. 343-355 Ch. 13, pp. 378-396 Scalar replacement exposes the reuse of a[i] Traditional scalar analysis – inadequate Use dependence analysis to understand array references (later) UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 15 UNIVERSITY OF MASSACHUSETTS, AMHERST • DEPARTMENT OF COMPUTER SCIENCE 16 3.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    3 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us