some transformations in FI's pdf are advertised as not supported by PIPS
[pipstransfo.git] / pipstransfo.tex
index ebd608a..b3186bc 100644 (file)
@@ -7,9 +7,12 @@
 
 \usepackage{listings}
 \usepackage{hyperref}
 
 \usepackage{listings}
 \usepackage{hyperref}
+\usepackage{xspace}
 
 
+\newcommand\PIPS{PIPS\xspace}
 
 
-\title{PIPS~--- List of code transformations}
+
+\title{\PIPS~--- List of code transformations}
 
 
 
 
 
 
 \chapter{Summary}
 
 \section{SGuelton}
 \chapter{Summary}
 
 \section{SGuelton}
+
 \begin{itemize}
 \begin{itemize}
+% memory allocation alteration
+\item scalar renaming
+% loop transformations
 \item loop unrolling
 \item loop unrolling
-\item inlining
-\item forward substitution
 \item loop fusion
 \item loop tiling
 \item loop fusion
 \item loop tiling
-\item reduction detection
-\item parallelism detection
-\item parallelism extraction
-\item directive generation
-\item constant propagation
-\item instruction selection
-\item goto elimination
-\item outlining
-\item common subexpression elimination
+\item loop rerolling
 \item loop interchange
 \item loop interchange
-\item loop unszitching
-\item statement isolation
+\item loop normalization
+% inter procedural transformations
+\item inlining
+% basic bloc transformations
+\item forward substitution
+% dead code removal
+\item constant propagation
 \item dead code elimination
 \item dead code elimination
+
+% ??
 \item array linearization
 \item array linearization
-\item privatization
-\item loop normalization
-\item iteration clamping
+\item common subexpression elimination
+\item directive generation
 \item flatten code
 \item flatten code
-\item strengh reduction
-\item split update operator
-\item n adress code generation
+\item goto elimination
+\item instruction selection
+\item invariant code motion
+\item iteration clamping
+\item loop unswitching
 \item memory footprint reduction
 \item memory footprint reduction
+\item n adress code generation
+\item outlining
+\item parallelism detection
+\item parallelism extraction
+\item privatization
+\item reduction detection
 \item redundant load-store elimination
 \item redundant load-store elimination
-\item invariant code motion
-\item scalar renaming
-\item loop rerolling
+\item split update operator
+\item statement isolation
+\item strengh reduction
 \end{itemize}
 
 
 \section{Teraops}
 \end{itemize}
 
 
 \section{Teraops}
+
 \begin{itemize}
 \begin{itemize}
+% memory allocation alteration
 \item scalar renaming
 \item scalar/array expansion
 \item scalar/array privatization
 \item scalar renaming
 \item scalar/array expansion
 \item scalar/array privatization
-\item scalarization
-\item variable copying
-\item index set splitting
-\item loop peeling
+\item scalarization % according to .pdf, not supported by Pips
+\item variable copying % not supported by Pips
+% loop transformations
+\item index set splitting % not supported by Pips
+\item loop peeling % not supported by Pips
 \item loop unrolling
 \item loop unrolling
-\item loop rerolling
+\item loop rerolling % not supported by Pips
 \item full loop unrolling
 \item idiom recognition
 \item full loop unrolling
 \item idiom recognition
-\item unswitching
-\item loop fusion
+\item unswitching % not supported by Pips
+\item loop fusion % not supported by Pips
 \item loop fission/loop distribution
 \item loop normalization
 \item unimodular loop transformation/hyperplane method
 \item loop interchange
 \item loop fission/loop distribution
 \item loop normalization
 \item unimodular loop transformation/hyperplane method
 \item loop interchange
-\item loop reversal
+\item loop reversal % not supported by Pips
 \item loop skewing
 \item non-unimodular loop transformation
 \item strip-mining (loop sectionning)
 \item loop skewing
 \item non-unimodular loop transformation
 \item strip-mining (loop sectionning)
-\item loop coalescing/loop collapsing
+\item loop coalescing/loop collapsing % not supported by Pips
 \item loop tiling
 \item loop parallelization
 \item loop tiling
 \item loop parallelization
-\item loop vectorization
+\item loop vectorization % not supported by Pips
 \item loop invariant code motion
 \item loop invariant code motion
-\item software pipelining
+\item software pipelining % not supported by Pips
 \item locality increazing
 \item locality increazing
-\item loop embedding/loop jamming
-\item procedure inlining
+% interprocedural transformations
+\item loop embedding/loop jamming % not supported by Pips
+\item procedure inlining % not supported by Pips
 \item procedure cloning
 \item procedure cloning
+% basic bloc transformations
 \item node splitting
 \item forward expression substitution
 \item node splitting
 \item forward expression substitution
-\item induction variable substitution
+\item induction variable substitution % not supported by Pips
 \item if-conversion
 \item if-conversion
-\item statement reordering
+\item statement reordering % not supported by Pips
 \item expression optimization
 \item partial redundancy elimination
 \item expression optimization
 \item partial redundancy elimination
+% dead code removal
 \item unreachable code
 \item semantically uneachable code
 \item if and loop elimination
 \item unreachable code
 \item semantically uneachable code
 \item if and loop elimination
 \item constant propagation
 \end{itemize}
 
 \item constant propagation
 \end{itemize}
 
-\chapter{List of Pips transformations}
+\chapter{List of \PIPS transformations}
 
 \section{Memory allocation alteration}
 
 
 \section{Memory allocation alteration}
 
 \begin{description}
 
 \item[loop unrolling]{
 \begin{description}
 
 \item[loop unrolling]{
-  is a loop transformation. 
-  Unrolling a loop by a factor of $n$ consists in the substitution of a loop
-  body by itself, replicated $n$ times. A prelude and/or postlude are
+  is a loop transformation.
+  Unrolling a loop by a factor of \(n\) consists in the substitution of a loop
+  body by itself, replicated \(n\) times. A prelude and/or postlude are
   added to preserve the number of iteration.}
 
 \item[loop fusion]{
   added to preserve the number of iteration.}
 
 \item[loop fusion]{
   containing the loop without the test in both true and false branch.}
 
 \item[loop normalization]{is a loop transformation that changes
   containing the loop without the test in both true and false branch.}
 
 \item[loop normalization]{is a loop transformation that changes
-  the loop initial increment value or the loop range to enforce certain values, 
+  the loop initial increment value or the loop range to enforce certain values,
   generally~1.}
 
 \end{description}
 
   generally~1.}
 
 \end{description}
 
-\section{Inter-procedural transformations}
+\section{Interprocedural transformations}
 
 \section{Base blocs transformations}
 
 
 \section{Base blocs transformations}
 
 \item[goto elimination]{
   is the process of replacing \texttt{goto} instructions by a hierarchical control flow
   graph.}
 \item[goto elimination]{
   is the process of replacing \texttt{goto} instructions by a hierarchical control flow
   graph.}
+
 \item[outlining]{
   is the process of extracting part of a function body into a new function
   and replacing it in the initial function by a function call.}
 \item[outlining]{
   is the process of extracting part of a function body into a new function
   and replacing it in the initial function by a function call.}
   operator by its expanded form.}
 
 \item[n address code generation]{is the process of splitting
   operator by its expanded form.}
 
 \item[n address code generation]{is the process of splitting
-  complex expression in simpler ones that take at most $n$ operands.}
+  complex expression in simpler ones that take at most \(n\) operands.}
 
 \item[memory footprint reduction]{is the process of tiling a loop
   to make sure the iteration over the tile has a memory footprint bounded by
 
 \item[memory footprint reduction]{is the process of tiling a loop
   to make sure the iteration over the tile has a memory footprint bounded by