-\frame{\frametitle{Simple SBC-style SoC}
-
-\begin{center}
-\includegraphics[width=0.6\textwidth]{pospopcount.png}
-\end{center}
-
-}
-
-
-
-
\begin{frame}[fragile]
\frametitle{Simple-V CMPI in a nutshell}
\item ARM SVE: https://arxiv.org/pdf/1803.06185.pdf
\item more: wikipedia Vector processor page: Fault/Fail First
\vspace{10pt}
- \item Load/Store is Memory to/from Register, \\
- what about Register to Register?
+ \item Load/Store is Memory to/from Register, what about
+ Register to Register?
\item Register-to-register: "Data-Dependent Fail-First."
\item Z80 LDIR: Mem-Register, CPIR: Register-Register
\end{itemize}
\end{itemize}
\end{frame}
-
+\frame{\frametitle{Power ISA v3.1 vstribr}
+
+ \lstinputlisting[language={}]{vstribr.txt}
+
+ \begin{itemize}
+ \item ironically this hard-coded instruction is
+ identical to general-purpose Simple-V DD-FFirst...
+ \end{itemize}
+
+}Po
\frame{\frametitle{maxloc}
\begin{itemize}
\begin{itemize}
\item Positional popcount adds up the totals of each bit set to 1 in each bit-position, of an array of input values.
\item Notoriously difficult to do in SIMD assembler: typically 550 lines
+ \item https://github.com/clausecker/pospop
+
\end{itemize}
\lstinputlisting[language={}]{pospopcount.c}
+
}
+
+\frame{\frametitle{Pospopcount}
+
+ \begin{center}
+ \includegraphics[width=0.5\textwidth]{pospopcount.png}
+ \end{center}
+ \begin{itemize}
+ \item The challenge is to perform an appropriate transpose of the data (the CPU can only work on registers, horizontally),
+ in blocks that suit the processor and the ISA capacity.
+
+
+ \end{itemize}
+}
+
+\frame{\frametitle{Pospopcount}
+
+ \begin{center}
+ \includegraphics[width=0.6\textwidth]{array_popcnt.png}
+ \end{center}
+
+ \begin{itemize}
+
+ \item The draft gbbd instruction implements the transpose (shown above),
+ preparing the data to use the standard popcount instruction.
+ (gbbd is based on Power ISA vgbbd)
+
+ \end{itemize}
+
+}
+
\frame{\frametitle{Pospopcount.s}
\frame{\frametitle{strncpy}
+ \lstinputlisting[language={}]{strncpy.c}
\begin{itemize}
\item "TODO
\end{itemize}
}
+
+
\frame{\frametitle{strncpy assembler}
\lstinputlisting[language={}]{strncpy.s}