% space at the start of the frame.
\define[1]\example{
\framed[offset=1mm,align=right,strut=no,background=box,frame=off]{
- \setuptyping[option=LAM,style=sans,before=,after=]
+ \setuptyping[option=LAM,style=sans,before=,after=,strip=auto]
\typebuffer[#1]
- \setuptyping[option=none,style=\tttf]
+ \setuptyping[option=none,style=\tttf,strip=auto]
}
}
Since its exact role and need is not clear yet, this transformation is
not yet specified.
+ TODO: Cast propagation
+
\subsubsection{Top level binding inlining}
This transform takes simple top level bindings generated by the
\small{GHC} compiler. \small{GHC} sometimes generates very simple
architecture which would just add its inputs. This generates a lot of
overhead in the VHDL, which is particularly annoying when browsing the
generated RTL schematic (especially since + is not allowed in VHDL
- architecture names\footnote{Technically, it is allowed when using
- extended identifiers, but it seems that none of the tooling likes
- extended identifiers in filenames, so it effectively doesn't work}, so
- the entity would be called \quote{w7aA7f} or something similarly
- unreadable and autogenerated).
+ architecture names\footnote{Technically, it is allowed to use
+ non-alphanumerics when using extended identifiers, but it seems that
+ none of the tooling likes extended identifiers in filenames, so it
+ effectively doesn't work}, so the entity would be called
+ \quote{w7aA7f} or something similarly unreadable and autogenerated).
\subsection{Program structure}
These transformations are aimed at normalizing the overall structure
\starttrans
(letrec binds in E) M
- -----------------
+ ------------------------
letrec binds in E M
\stoptrans
Note that \lam{x0} and {x1} will still need normalization after this.
\subsubsection{Argument propagation}
+ TODO: Generalize this section into specialization, so other
+ transformations can refer to this (since specialization is really used
+ in multiple categories).
+
This transform deals with arguments to user-defined functions that are
not representable at runtime. This means these arguments cannot be
preserved in the final form and most be {\em propagated}.