X-Git-Url: https://scm.cri.ensmp.fr/git/pipstransfo.git/blobdiff_plain/625670968322617fed9df3a0ec370faa3185f167..8fa18c3e750daf84d0fa86291e62aa8a4fc63ba8:/pipstransfo.tex diff --git a/pipstransfo.tex b/pipstransfo.tex index 4706900..b3186bc 100644 --- a/pipstransfo.tex +++ b/pipstransfo.tex @@ -7,22 +7,166 @@ \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} @@ -32,10 +176,7 @@ \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 @@ -49,15 +190,9 @@ 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 @@ -83,6 +218,7 @@ \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.} @@ -91,12 +227,7 @@ 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 @@ -112,11 +243,6 @@ 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.} @@ -131,7 +257,7 @@ 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 @@ -150,4 +276,10 @@ them by their non-unrolled version.} \end{description} + +\nocite{*} +\bibliographystyle{alpha} +\bibliography{refs} + + \end{document}