Bug 1244: Added description for pospopcount
[libreriscv.git] / conferences / fosdem2024 / fosdem2024_ddffirst / fosdem2024_ddffirst.tex
index 4548aa842deadcb330c690243a90fe522f4111c7..0f42add4bccd30b910b6cb491797bae58181fa55 100644 (file)
@@ -161,7 +161,16 @@ for (i = 0; i < VL; i++)
        \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}
@@ -174,25 +183,35 @@ for (i = 0; i < VL; i++)
   \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
+
    \end{itemize}
        
        \lstinputlisting[language={}]{pospopcount.c}
        
 }
 
-\frame{\frametitle{Simple SBC-style SoC}
+\frame{\frametitle{Pospopcount}
        
        \begin{center}
-               \includegraphics[width=0.6\textwidth]{pospopcount.png}
+               \includegraphics[width=0.5\textwidth]{pospopcount.png}
        \end{center}
        
 }
 
-\frame{\frametitle{Simple SBC-style SoC}
+\frame{\frametitle{Pospopcount}
        
        \begin{center}
-               \includegraphics[width=0.6\textwidth]{array_popcnt.png}
+               \includegraphics[width=0.5\textwidth]{array_popcnt.png}
        \end{center}
+
+  \begin{itemize}
+               \item   Part of the challenge is therefore to perform an appropriate transpose of the data,
+                               in blocks that suit the processor and the ISA capacity.
+               \item   The gbbd instruction is used for implementing the transpose function, 
+                               preparing the data for using the standard popcount instruction.
+
+       
+       \end{itemize}
        
 }
 
@@ -206,11 +225,14 @@ for (i = 0; i < VL; i++)
 
 \frame{\frametitle{strncpy}
 
+       \lstinputlisting[language={}]{strncpy.c}
   \begin{itemize}
        \item "TODO
  \end{itemize} 
 }
 
+
+
 \frame{\frametitle{strncpy assembler}
 
 \lstinputlisting[language={}]{strncpy.s}