\end{frame}
-
-\begin{frame}[fragile]
-\frametitle{Data-Dependent-Fail-First in a nutshell}
-
-\begin{semiverbatim}
- while srcstep < VL - 1
- RT[SS], Rc = DO (MAXS, RA[SS], RB)
- if test (Rc) == FAIL: VL = srcstep + 1, break
-
-\end{semiverbatim}
-
-\begin{itemize}
- \item Above is oversimplified: predication etc. left out
- \item Scalar-scalar and scalar-vector and vector-vector now all in one
- \item OoO may choose to push CMPIs into instr. queue (v. busy!)
-\end{itemize}
-\end{frame}
-
\frame{\frametitle{Load/Store Fault-First}
\begin{itemize}
\end{itemize}
}
+\begin{frame}[fragile]
+ \frametitle{Data-Dependent-Fail-First in a nutshell}
+
+ \begin{semiverbatim}
+function op\_cmpi(BA, RA, SI) # cmpi not vector-cmpi!
+int i, id=0, ira=0;
+for (i = 0; i < VL; i++)
+ CR[BA+id] <= compare(ireg[RA+ira], SI);
+ if (reg\_is\_vectorised[BA] ) \{ id += 1; \}
+ if (reg\_is\_vectorised[RA]) \{ ira += 1; \}
+ if test (CR[BA+id]) == FAIL: \{ VL = id + 1; break \}
+ \end{semiverbatim}
+
+ \begin{itemize}
+ \item Parallelism still perfectly possible
+ ("hold" writing results until sequential post-analysis
+ carried out. Best done with OoO)
+ \item VL truncation can be inclusive or exclusive
+ (include or exclude a NULL pointer or a
+ string-end character, or overflow result)
+ \item
+ \end{itemize}
+\end{frame}
+
\frame{\frametitle{Additional Simple-V features}