1 \documentclass[hyperref={pdfpagelabels=false}]{beamer}
3 \setbeameroption{show notes}
10 \setbeamercovered{transparent}
11 %\setbeamertemplate{footline}[frame number]
14 \usepackage[english]{babel}
15 \usepackage[latin1]{inputenc}
17 \usepackage[T1]{fontenc}
20 \usepackage{multimedia}
21 \usepackage{subfigure}
23 %For handouts, use the following two lines:
24 %\usepackage{pgfpages}
25 %\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]
29 {MontiumC Transforming}
31 \author {Matthijs Kooijman}
33 \institute[Recore Systems and University of Twente]
39 Faculty of Electrical Engineering, Mathematics and Computer Science\\
49 \begin{frame}{Contents}
53 \section{Introduction}
54 \subsection{Montium Tile Processor}
57 \subsection{Compile process}
61 \subsection{Original tasks}
62 \begin{frame}{Original tasks}
64 \item Select LLVM transformations
65 \item Improve and add transformations
66 \item Provide debugging information
70 \subsection{Extra tasks}
71 \begin{frame}{Extra tasks}
73 \item What is MontiumC?
74 \item What is Montium IR?
78 \begin{frame}{What is MontiumC?}
80 \item Status: Specification is ongoing
83 \item Clang is nontransparent
84 \note[item]{Clang --- A lot of special cases}
86 \note[item]{Complex C --- A lot of corner cases}
88 \note[item]{Limited C --- Need to use annotations, limited amount of types}
89 \item Assembly vs. High level
90 \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity
91 vs control, clarity vs determinism}
96 \begin{frame}{What is Montium IR?}
98 \item Status: Initial version
101 \item Fast moving target
103 \note[item]{Corner case --- global constants}
104 \item Hardware dependencies
105 \note[item]{Hardware --- Limited number of conditionals possible}
110 \begin{frame}{Selecting LLVM transformations}
115 \item LLVM Passes assume a lot
116 \note[item]{Assumptions --- Immediates are not free}
117 \item Montium has specific constraints
118 \note[item]{Constraint --- Implicit cycle boundaries and ordering}
123 \begin{frame}{Improving / adding transformations}
125 \item Status: Ongoing
128 \item Staying generic
129 \note[item]{Generic --- LLVM maintained passes are a lot easier}
130 \item New LLVM features
131 \note[item]{Features --- Multiple return values, inlining and
132 annotation attributes}
137 \begin{frame}{Debugging information}
139 \item Status: Not started
142 \item Not much LLVM support yet
143 \note[item]{LLVM support --- New in clang/backend, no support in
144 transformations yet.}
145 \item Transformations
146 \note[item]{Transformations --- Global arguments, argument addition,
152 \begin{frame}{Reconfigurable binaries}
154 \item Status: Recently started
157 \item Tracking variables
158 \note[item]{Tracking --- Through all steps of the process}
159 \item Loss of optimizations
160 \note[item]{Optimizations --- Hard to encode constraints}
161 \item Mostly a backend problem
166 \section{Work process}
167 \begin{frame}{Recore}
169 \item Fast communication
170 \note[item]{Communication --- Mixed teams, easy to "listen in".}
171 \item Constructive brainstorming
172 \note[item]{Brainstorming --- Evaluating different ideas and approaches.}
178 \item Large community
179 \note[item]{Community --- Companies involved, a lot of full time
182 \note[item]{Support --- mailing list, bug reports solved within 1/2 days.}
183 \item Slightly conflicting goals
184 \note[item]{Goals --- LLVM aims mainly at "regular" architectures.}
188 \section{Conclusions}