# Polly: The available LLVM passes

Polly consists of a set of LLVM passes.

## Front End

- polly-prepare Prepare code for Polly
- polly-region-simplify Transform refined regions into simple regions
- polly-detect Detect SCoPs in functions
- polly-analyze-ir Analyse the LLVM-IR in the detected SCoPs
- polly-independent Create independent blocks
- polly-scops Create polyhedral description of SCoPs

## Middle End

- polly-dependences Calculate the dependences in a SCoPs
- polly-opt-pocc Optimize the SCoP using PoCC
- polly-opt-isl Optimize the SCoP using isl
- Import/Export
  - polly-export-cloog Export the CLooG input file (Writes a .cloog file for each SCoP)
  - polly-export Export SCoPs with OpenScop library (Writes a .scop file for each SCoP)
  - polly-import Import SCoPs with OpenScop library (Reads a .scop file for each SCoP)
  - polly-export-scoplib Export SCoPs with ScopLib library (Writes a .scoplib file for each SCoP)
  - polly-import-scoplib Import SCoPs with ScopLib library (Reads a .scoplib file for each SCoP)
  - polly-export-jscop Export SCoPs as JSON (Writes a .jscop file for each SCoP)
  - polly-import-jscop Import SCoPs from JSON (Reads a .jscop file for each SCoP)
- Graphviz
  - dot-scops Print SCoPs of function
  - dot-scops-only Print SCoPs of function (without function bodies)
  - view-scops View SCoPs of function
  - view-scops-only View SCoPs of function (without function bodies)

## Back End

- polly-cloog Execute CLooG code generation
- polly-codegen Create LLVM-IR from the polyhedral information