X-Git-Url: https://scm.cri.ensmp.fr/git/pipstransfo.git/blobdiff_plain/eb409209849979d0e3c6850d60de9106277acf46..2baa95348d39d3ac59ed69768e53ffdf9070ee55:/pipstransfo.tex diff --git a/pipstransfo.tex b/pipstransfo.tex index 7409fd1..b9a9f6d 100644 --- a/pipstransfo.tex +++ b/pipstransfo.tex @@ -3,19 +3,120 @@ \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 +\item variable copying +% loop transformations +\item index set splitting +\item loop peeling +\item loop unrolling +\item loop rerolling +\item full loop unrolling +\item idiom recognition +\item unswitching +\item loop fusion +\item loop fission/loop distribution +\item loop normalization +\item unimodular loop transformation/hyperplane method +\item loop interchange +\item loop reversal +\item loop skewing +\item non-unimodular loop transformation +\item strip-mining (loop sectionning) +\item loop coalescing/loop collapsing +\item loop tiling +\item loop parallelization +\item loop vectorization +\item loop invariant code motion +\item software pipelining +\item locality increazing +% inter procedural transformations +\item loop embedding/loop jamming +\item procedure inlining +\item procedure cloning +% basic bloc transformations +\item node splitting +\item forward expression substitution +\item induction variable substitution +\item if-conversion +\item statement reordering +\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} @@ -35,9 +136,9 @@ \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]{ @@ -58,8 +159,8 @@ 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.} + the loop initial increment value or the loop range to enforce certain values, + generally~1.} \end{description} @@ -115,6 +216,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.} @@ -140,9 +242,6 @@ conversion from array to pointer.} - - - \item[iteration clamping]{is a loop transformation that extends the loop range but guards the loop body with the former range.} @@ -156,7 +255,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 @@ -176,7 +275,9 @@ \end{description} -\section{References} +\nocite{*} +\bibliographystyle{alpha} +\bibliography{refs} -\end{document} \ No newline at end of file +\end{document}