\documentclass[hyperref={pdfpagelabels=false}]{beamer}

\setbeameroption{show notes}

\mode<presentation>
{
  %\useinnertheme{echt}
  %\useinnertheme{proef}
  \usetheme{recore}
  \setbeamercovered{transparent}
%\setbeamertemplate{footline}[frame number]
}

\usepackage[english]{babel}
\usepackage[latin1]{inputenc}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage{acronym}
\usepackage{tikz}
\usepackage{multimedia}
\usepackage{subfigure}
\usepackage{booktabs}
%For handouts, use the following two lines:
%\usepackage{pgfpages}
%\pgfpagesuselayout{2 on 1}[a4paper,border shrink=5mm]


\title
{MontiumC Transforming}

\author {Matthijs Kooijman}

\institute[Recore Systems and University of Twente]
{
  \inst{}%
  Recore Systems
  \and
  \inst{}%
  Faculty of Electrical Engineering, Mathematics and Computer Science\\
  University of Twente
  }
  
\begin{document}

\begin{frame}
	\titlepage
\end{frame}

\begin{frame}{Contents}
  \tableofcontents
\end{frame}

\section{Introduction}
  \subsection{Montium Tile Processor}
  \subsection{MontiumC}
  \subsection{LLVM}
  \subsection{Compile process}

\section{Tasks}

  \subsection{Original tasks}
    \begin{frame}{Original tasks}
      \begin{itemize}
        \item Select LLVM transformations
        \item Improve and add transformations
        \item Provide debugging information
      \end{itemize}
    \end{frame}

  \subsection{Extra tasks}
    \begin{frame}{Extra tasks}
      \begin{itemize}
        \item What is MontiumC?
        \item What is Montium IR?
      \end{itemize}
    \end{frame}

    \begin{frame}{What is MontiumC?}
      \begin{itemize}
      \item Status: Specification is ongoing
      \item Challenges:
        \begin{itemize}
          \item Clang is nontransparent
          \note[item]{Clang --- A lot of special cases}
          \item C is complex
          \note[item]{Complex C --- A lot of corner cases}
          \item C is limited
          \note[item]{Limited C --- Need to use annotations, limited amount of types}
          \item Assembly vs. High level
          \note[item]{Tradeoffs -- Code size vs compiler complexity, clarity
          vs control, clarity vs determinism}
        \end{itemize}
      \end{itemize}
    \end{frame}
    
    \begin{frame}{What is Montium IR?}
      \begin{itemize}
        \item Status: Initial version
        \item Challenges:
        \begin{itemize}
          \item Fast moving target
          \item Corner cases
          \note[item]{Corner case --- global constants}
          \item Hardware dependencies
          \note[item]{Hardware --- Limited number of conditionals possible}
        \end{itemize}
      \end{itemize}
    \end{frame}

    \begin{frame}{Selecting LLVM transformations}
      \begin{itemize}
        \item Status: Done
        \item Challenges:
        \begin{itemize}
          \item LLVM Passes assume a lot
          \note[item]{Assumptions --- Immediates are not free}
          \item Montium has specific constraints
          \note[item]{Constraint --- Implicit cycle boundaries and ordering}
        \end{itemize}
      \end{itemize}
    \end{frame}

    \begin{frame}{Improving / adding transformations}
      \begin{itemize}
        \item Status: Ongoing
        \item Challenges:
        \begin{itemize}
          \item Staying generic
          \note[item]{Generic --- LLVM maintained passes are a lot easier}
          \item New LLVM features
          \note[item]{Features --- Multiple return values, inlining and
          annotation attributes}
        \end{itemize}
      \end{itemize}
    \end{frame}

    \begin{frame}{Debugging information}
      \begin{itemize}
        \item Status: Not started
        \item Challenges:
        \begin{itemize}
          \item Not much LLVM support yet
          \note[item]{LLVM support --- New in clang/backend, no support in
          transformations yet.}
          \item Transformations
          \note[item]{Transformations --- Global arguments, argument addition,
          removal, etc.}
        \end{itemize}
      \end{itemize}
    \end{frame}

    \begin{frame}{Reconfigurable binaries}
      \begin{itemize}
        \item Status: Recently started
        \item Challenges:
        \begin{itemize}
          \item Tracking variables
          \note[item]{Tracking --- Through all steps of the process}
          \item Loss of optimizations
          \note[item]{Optimizations --- Hard to encode constraints}
          \item Mostly a backend problem
        \end{itemize}
      \end{itemize}
    \end{frame}

\section{Work process}
  \begin{frame}{Recore}
    \begin{itemize}
      \item Fast communication
      \note[item]{Communication --- Mixed teams, easy to "listen in".}
      \item Constructive brainstorming
      \note[item]{Brainstorming --- Evaluating different ideas and approaches.}
    \end{itemize}
  \end{frame}

  \begin{frame}{LLVM}
    \begin{itemize}
      \item Large community
      \note[item]{Community --- Companies involved, a lot of full time
      developers.}
      \item Great support
      \note[item]{Support --- mailing list, bug reports solved within 1/2 days.}
      \item Slightly conflicting goals
      \note[item]{Goals --- LLVM aims mainly at "regular" architectures.}
    \end{itemize}
  \end{frame}

\section{Conclusions}

\end{document}
