some transformations in FI's pdf are advertised as not supported by PIPS
[pipstransfo.git] / pipstransfo.tex
index 4cef713..b3186bc 100644 (file)
 \usepackage[utf8]{inputenc}
 \usepackage[T1]{fontenc}
 \usepackage[english]{babel}
+\usepackage{lmodern}
 
 \usepackage{listings}
 \usepackage{hyperref}
+\usepackage{xspace}
 
+\newcommand\PIPS{PIPS\xspace}
 
-\title{PIPS - List of code transformations}
+
+\title{\PIPS~--- List of code transformations}
 
 
 
 \begin{document}
 
 
-\chapter{List of Pips transformations}
+\chapter{Summary}
+
+\section{SGuelton}
+
+\begin{itemize}
+% memory allocation alteration
+\item scalar renaming
+% loop transformations
+\item loop unrolling
+\item loop fusion
+\item loop tiling
+\item loop rerolling
+\item loop interchange
+\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 array linearization
+\item common subexpression elimination
+\item directive generation
+\item flatten code
+\item goto elimination
+\item instruction selection
+\item invariant code motion
+\item iteration clamping
+\item loop unswitching
+\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 split update operator
+\item statement isolation
+\item strengh reduction
+\end{itemize}
+
+
+\section{Teraops}
+
+\begin{itemize}
+% memory allocation alteration
+\item scalar renaming
+\item scalar/array expansion
+\item scalar/array privatization
+\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 rerolling % not supported by Pips
+\item full loop unrolling
+\item idiom recognition
+\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 reversal % not supported by Pips
+\item loop skewing
+\item non-unimodular loop transformation
+\item strip-mining (loop sectionning)
+\item loop coalescing/loop collapsing % not supported by Pips
+\item loop tiling
+\item loop parallelization
+\item loop vectorization % not supported by Pips
+\item loop invariant code motion
+\item software pipelining % not supported by Pips
+\item locality increazing
+% interprocedural transformations
+\item loop embedding/loop jamming % not supported by Pips
+\item procedure inlining % not supported by Pips
+\item procedure cloning
+% basic bloc transformations
+\item node splitting
+\item forward expression substitution
+\item induction variable substitution % not supported by Pips
+\item if-conversion
+\item statement reordering % not supported by Pips
+\item expression optimization
+\item partial redundancy elimination
+% dead code removal
+\item unreachable code
+\item semantically uneachable code
+\item if and loop elimination
+\item use-def elimination
+\item constant propagation
+\end{itemize}
+
+\chapter{List of \PIPS transformations}
 
 \section{Memory allocation alteration}
 
+\begin{description}
+
+\item[scalar renaming]{is the process of renaming scalar variables to
+    suppress false data dependencies.}
+
+\item[privatization]{is the process of detecting variables that are
+    private to a loop body, i.e.\ written first, then read.}
+
+\end{description}
+
+
 \section{Loop transformations}
 
-\section{Inter-procedural transformations}
+\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
+  added to preserve the number of iteration.}
+
+\item[loop fusion]{
+  is a loop transformation that replaces two loops by a single loops whose
+  body is the concatenation of the bodies of the two initial loops.}
+
+\item[loop tiling]{
+  is a loop nest transformation that changes the loop execution order
+  through a partitions of the iteration space into
+  chunks, so that the iteration is performed over each chunk and in the
+  chunks.}
+
+\item[loop interchange]{is a loop transformation that permutes two
+  loops from a loop nest.}
+
+\item[loop unswitching]{is a loop transformation that replaces a
+  loop containing a test independent from the loop execution by a test
+  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,
+  generally~1.}
+
+\end{description}
+
+\section{Interprocedural transformations}
 
 \section{Base blocs transformations}
 
 
 
 \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
-  added to preserve the number of iteration.}
+
 
 \item[inlining]{
   is a function transformation. Inlining a function
   is the process of replacing a reference read in an
   expression by the latest expression affected to it.}
 
-\item[loop fusion]{
-  is a loop transformation that replaces two loops by a single loops whose
-  body is the concatenation of the bodies of the two initial loops.}
 
-\item[loop tiling]{
-  is a loop nest transformation that changes the loop execution order
-  through a partitions of the iteration space into
-  chunks, so that the iteration is performed over each chunk and in the
-  chunks.}
+
+
 
 \item[reduction detection]{
   is an analysis that identifies statements that perform a reduction over a
 \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.}
   is the process of replacing similar expressions by a variable that holds
   the result of their evaluation.}
 
-\item[loop interchange]{is a loop transformation that permutes two
-  loops from a loop nest.}
 
-\item[loop unswitching]{is a loop transformation that replaces a
-  loop containing a test independent from the loop execution by a test
-  containing the loop without the test in both true and false branch.}
 
 \item[statement isolation]{is the process of replacing all
   variables referenced in a statement by newly declared variables. A
   multidimensional array into unidimensional arrays, possibly with a
   conversion from array to pointer.}
 
-\item[privatization]{is the process of  detecting variables that
-  are private to a loop body, i.e.\ written first, then read.}
-
-\item[loop normalization]{is a loop transformation that changes
-  the loop initial increment value or the loop range to enforce certain values, generally
-  1.}
 
 \item[iteration clamping]{is a loop transformation that extends
   the loop range but guards the loop body with the former range.}
   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
   them by their non-unrolled version.}
 \end{description}
 
+
+\nocite{*}
+\bibliographystyle{alpha}
+\bibliography{refs}
+
+
 \end{document}