HomePhabricator

Add basic loop fusion pass.

Authored by kbarton on Apr 16 2019, 6:37 PM.

Description

Add basic loop fusion pass.

This patch adds a basic loop fusion pass. It will fuse loops that conform to the
following 4 conditions:

  1. Adjacent (no code between them)
  2. Control flow equivalent (if one loop executes, the other loop executes)
  3. Identical bounds (both loops iterate the same number of iterations)
  4. No negative distance dependencies between the loop bodies.

The pass does not make any changes to the IR to create opportunities for fusion.
Instead, it checks if the necessary conditions are met and if so it fuses two
loops together.

The pass has not been added to the pass pipeline yet, and thus is not enabled by
default. It can be run stand alone using the -loop-fusion option.

Phabricator: https://reviews.llvm.org/D55851
llvm-svn: 358543

Details

Committed
kbartonApr 16 2019, 6:37 PM
Parents
rG64c32362f053: [builtins] Add __cmpsf2 for ARM version of comparesf2
Branches
Unknown
Tags
Unknown