Skip to content
  • Hal Finkel's avatar
    Add -freroll-loops to enable loop rerolling · ce0697f4
    Hal Finkel authored
    This adds -freroll-loops (and -fno-reroll-loops in the usual way) to enable
    loop rerolling as part of the optimization pass manager. This transformation
    can enable vectorization, reduce code size (or both).
    
    Briefly, loop rerolling can transform a loop like this:
    
    for (int i = 0; i < 3200; i += 5) {
      a[i]     += alpha * b[i];
      a[i + 1] += alpha * b[i + 1];
      a[i + 2] += alpha * b[i + 2];
      a[i + 3] += alpha * b[i + 3];
      a[i + 4] += alpha * b[i + 4];
    }
    
    into this:
    
    for (int i = 0; i < 3200; ++i) {
      a[i] += alpha * b[i];
    }
    
    Loop rerolling is currently disabled by default at all optimization levels.
    
    llvm-svn: 194967
    ce0697f4
Loading