\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.6\textwidth]{pospopcount.png}
+ \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),
\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}