\doxysection{src/core/conv\+\_\+acc\+\_\+sse\+\_\+impl.h File Reference}
\label{conv__acc__sse__impl_8h}\index{src/core/conv\_acc\_sse\_impl.h@{src/core/conv\_acc\_sse\_impl.h}}


Accelerated Viterbi decoder implementation\+: Actual definitions which are being included from both conv\+\_\+acc\+\_\+sse.\+c and conv\+\_\+acc\+\_\+sse\+\_\+avx.\+c.  


\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ \+\_\+\+\_\+always\+\_\+inline}~\textbf{ inline} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+}((always\+\_\+inline))
\item 
\#define \textbf{ SSE\+\_\+\+BUTTERFLY}(M0,  M1,  M2,  M3,  M4)
\item 
\#define \textbf{ \+\_\+\+I8\+\_\+\+SHUFFLE\+\_\+\+MASK}~15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0
\item 
\#define \textbf{ SSE\+\_\+\+DEINTERLEAVE\+\_\+\+K5}(M0,  M1,  M2,  M3)
\item 
\#define \textbf{ SSE\+\_\+\+DEINTERLEAVE\+\_\+\+K7}(M0,  M1,  M2,  M3,  M4,  M5,  M6,  M7,  M8,  M9,  M10,  M11,  M12,  M13,  M14,  M15)
\item 
\#define \textbf{ SSE\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N2}(M0,  M1,  M2,  M3,  M4,  M6,  M7)
\item 
\#define \textbf{ SSE\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N4}(M0,  M1,  M2,  M3,  M4,  M5)
\item 
\#define \textbf{ SSE\+\_\+\+MINPOS}(M0,  M1)
\item 
\#define \textbf{ SSE\+\_\+\+NORMALIZE\+\_\+\+K5}(M0,  M1,  M2,  M3)
\item 
\#define \textbf{ SSE\+\_\+\+NORMALIZE\+\_\+\+K7}(M0,  M1,  M2,  M3,  M4,  M5,  M6,  M7,  M8,  M9,  M10,  M11)
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \textbf{ \+\_\+sse\+\_\+metrics\+\_\+k5\+\_\+n2} (const int16\+\_\+t $\ast$val, const int16\+\_\+t $\ast$out, int16\+\_\+t $\ast$sums, int16\+\_\+t $\ast$paths, int norm)
\item 
static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \textbf{ \+\_\+sse\+\_\+metrics\+\_\+k5\+\_\+n4} (const int16\+\_\+t $\ast$val, const int16\+\_\+t $\ast$out, int16\+\_\+t $\ast$sums, int16\+\_\+t $\ast$paths, int norm)
\item 
static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \textbf{ \+\_\+sse\+\_\+metrics\+\_\+k7\+\_\+n2} (const int16\+\_\+t $\ast$val, const int16\+\_\+t $\ast$out, int16\+\_\+t $\ast$sums, int16\+\_\+t $\ast$paths, int norm)
\item 
static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \textbf{ \+\_\+sse\+\_\+metrics\+\_\+k7\+\_\+n4} (const int16\+\_\+t $\ast$val, const int16\+\_\+t $\ast$out, int16\+\_\+t $\ast$sums, int16\+\_\+t $\ast$paths, int norm)
\end{DoxyCompactItemize}
\doxysubsection*{Variables}
\begin{DoxyCompactItemize}
\item 
int \textbf{ sse41\+\_\+supported}
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Accelerated Viterbi decoder implementation\+: Actual definitions which are being included from both conv\+\_\+acc\+\_\+sse.\+c and conv\+\_\+acc\+\_\+sse\+\_\+avx.\+c. 



\doxysubsection{Macro Definition Documentation}
\mbox{\label{conv__acc__sse__impl_8h_a6034e8cd4bcd5bacfd060abd01bbd8a8}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!\_\_always\_inline@{\_\_always\_inline}}
\index{\_\_always\_inline@{\_\_always\_inline}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{\_\_always\_inline}
{\footnotesize\ttfamily \#define \+\_\+\+\_\+always\+\_\+inline~\textbf{ inline} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+}((always\+\_\+inline))}

\mbox{\label{conv__acc__sse__impl_8h_a32bc7adf90d8074af148ff6e860290e8}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!\_I8\_SHUFFLE\_MASK@{\_I8\_SHUFFLE\_MASK}}
\index{\_I8\_SHUFFLE\_MASK@{\_I8\_SHUFFLE\_MASK}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{\_I8\_SHUFFLE\_MASK}
{\footnotesize\ttfamily \#define \+\_\+\+I8\+\_\+\+SHUFFLE\+\_\+\+MASK~15, 14, 11, 10, 7, 6, 3, 2, 13, 12, 9, 8, 5, 4, 1, 0}

\mbox{\label{conv__acc__sse__impl_8h_ac5e8b6e3204d8654e419417be1285db6}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!SSE\_BRANCH\_METRIC\_N2@{SSE\_BRANCH\_METRIC\_N2}}
\index{SSE\_BRANCH\_METRIC\_N2@{SSE\_BRANCH\_METRIC\_N2}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{SSE\_BRANCH\_METRIC\_N2}
{\footnotesize\ttfamily \#define SSE\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N2(\begin{DoxyParamCaption}\item[{}]{M0,  }\item[{}]{M1,  }\item[{}]{M2,  }\item[{}]{M3,  }\item[{}]{M4,  }\item[{}]{M6,  }\item[{}]{M7 }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_sign\_epi16(M4, M0); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_sign\_epi16(M4, M1); \(\backslash\)}
\DoxyCodeLine{        M2 = \_mm\_sign\_epi16(M4, M2); \(\backslash\)}
\DoxyCodeLine{        M3 = \_mm\_sign\_epi16(M4, M3); \(\backslash\)}
\DoxyCodeLine{        M6 = \_mm\_hadds\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M7 = \_mm\_hadds\_epi16(M2, M3); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__sse__impl_8h_a369ef2013e844532b4d1989f29d82aa3}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!SSE\_BRANCH\_METRIC\_N4@{SSE\_BRANCH\_METRIC\_N4}}
\index{SSE\_BRANCH\_METRIC\_N4@{SSE\_BRANCH\_METRIC\_N4}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{SSE\_BRANCH\_METRIC\_N4}
{\footnotesize\ttfamily \#define SSE\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N4(\begin{DoxyParamCaption}\item[{}]{M0,  }\item[{}]{M1,  }\item[{}]{M2,  }\item[{}]{M3,  }\item[{}]{M4,  }\item[{}]{M5 }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_sign\_epi16(M4, M0); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_sign\_epi16(M4, M1); \(\backslash\)}
\DoxyCodeLine{        M2 = \_mm\_sign\_epi16(M4, M2); \(\backslash\)}
\DoxyCodeLine{        M3 = \_mm\_sign\_epi16(M4, M3); \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_hadds\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_hadds\_epi16(M2, M3); \(\backslash\)}
\DoxyCodeLine{        M5 = \_mm\_hadds\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__sse__impl_8h_ab4e031931b03d7b9decbc71c2dbbc80b}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!SSE\_BUTTERFLY@{SSE\_BUTTERFLY}}
\index{SSE\_BUTTERFLY@{SSE\_BUTTERFLY}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{SSE\_BUTTERFLY}
{\footnotesize\ttfamily \#define SSE\+\_\+\+BUTTERFLY(\begin{DoxyParamCaption}\item[{}]{M0,  }\item[{}]{M1,  }\item[{}]{M2,  }\item[{}]{M3,  }\item[{}]{M4 }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M3 = \_mm\_adds\_epi16(M0, M2); \(\backslash\)}
\DoxyCodeLine{        M4 = \_mm\_subs\_epi16(M1, M2); \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_subs\_epi16(M0, M2); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_adds\_epi16(M1, M2); \(\backslash\)}
\DoxyCodeLine{        M2 = \_mm\_max\_epi16(M3, M4); \(\backslash\)}
\DoxyCodeLine{        M3 = \_mm\_or\_si128(\_mm\_cmpgt\_epi16(M3, M4), \_mm\_cmpeq\_epi16(M3, M4)); \(\backslash\)}
\DoxyCodeLine{        M4 = \_mm\_max\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_or\_si128(\_mm\_cmpgt\_epi16(M0, M1), \_mm\_cmpeq\_epi16(M0, M1)); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__sse__impl_8h_a58edda3346794850db562009f2984a1a}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!SSE\_DEINTERLEAVE\_K5@{SSE\_DEINTERLEAVE\_K5}}
\index{SSE\_DEINTERLEAVE\_K5@{SSE\_DEINTERLEAVE\_K5}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{SSE\_DEINTERLEAVE\_K5}
{\footnotesize\ttfamily \#define SSE\+\_\+\+DEINTERLEAVE\+\_\+\+K5(\begin{DoxyParamCaption}\item[{}]{M0,  }\item[{}]{M1,  }\item[{}]{M2,  }\item[{}]{M3 }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M2 = \_mm\_set\_epi8(\_I8\_SHUFFLE\_MASK); \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_shuffle\_epi8(M0, M2); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_shuffle\_epi8(M1, M2); \(\backslash\)}
\DoxyCodeLine{        M2 = \_mm\_unpacklo\_epi64(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M3 = \_mm\_unpackhi\_epi64(M0, M1); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__sse__impl_8h_aecdecf201864014e331627daf0d15c4c}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!SSE\_DEINTERLEAVE\_K7@{SSE\_DEINTERLEAVE\_K7}}
\index{SSE\_DEINTERLEAVE\_K7@{SSE\_DEINTERLEAVE\_K7}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{SSE\_DEINTERLEAVE\_K7}
{\footnotesize\ttfamily \#define SSE\+\_\+\+DEINTERLEAVE\+\_\+\+K7(\begin{DoxyParamCaption}\item[{}]{M0,  }\item[{}]{M1,  }\item[{}]{M2,  }\item[{}]{M3,  }\item[{}]{M4,  }\item[{}]{M5,  }\item[{}]{M6,  }\item[{}]{M7,  }\item[{}]{M8,  }\item[{}]{M9,  }\item[{}]{M10,  }\item[{}]{M11,  }\item[{}]{M12,  }\item[{}]{M13,  }\item[{}]{M14,  }\item[{}]{M15 }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M8  = \_mm\_set\_epi8(\_I8\_SHUFFLE\_MASK); \(\backslash\)}
\DoxyCodeLine{        M0  = \_mm\_shuffle\_epi8(M0, M8); \(\backslash\)}
\DoxyCodeLine{        M1  = \_mm\_shuffle\_epi8(M1, M8); \(\backslash\)}
\DoxyCodeLine{        M2  = \_mm\_shuffle\_epi8(M2, M8); \(\backslash\)}
\DoxyCodeLine{        M3  = \_mm\_shuffle\_epi8(M3, M8); \(\backslash\)}
\DoxyCodeLine{        M4  = \_mm\_shuffle\_epi8(M4, M8); \(\backslash\)}
\DoxyCodeLine{        M5  = \_mm\_shuffle\_epi8(M5, M8); \(\backslash\)}
\DoxyCodeLine{        M6  = \_mm\_shuffle\_epi8(M6, M8); \(\backslash\)}
\DoxyCodeLine{        M7  = \_mm\_shuffle\_epi8(M7, M8); \(\backslash\)}
\DoxyCodeLine{        M8  = \_mm\_unpacklo\_epi64(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M9  = \_mm\_unpackhi\_epi64(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M10 = \_mm\_unpacklo\_epi64(M2, M3); \(\backslash\)}
\DoxyCodeLine{        M11 = \_mm\_unpackhi\_epi64(M2, M3); \(\backslash\)}
\DoxyCodeLine{        M12 = \_mm\_unpacklo\_epi64(M4, M5); \(\backslash\)}
\DoxyCodeLine{        M13 = \_mm\_unpackhi\_epi64(M4, M5); \(\backslash\)}
\DoxyCodeLine{        M14 = \_mm\_unpacklo\_epi64(M6, M7); \(\backslash\)}
\DoxyCodeLine{        M15 = \_mm\_unpackhi\_epi64(M6, M7); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__sse__impl_8h_ad7c53e0ea13f56dafb49015aa6afde42}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!SSE\_MINPOS@{SSE\_MINPOS}}
\index{SSE\_MINPOS@{SSE\_MINPOS}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{SSE\_MINPOS}
{\footnotesize\ttfamily \#define SSE\+\_\+\+MINPOS(\begin{DoxyParamCaption}\item[{}]{M0,  }\item[{}]{M1 }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_shuffle\_epi32(M0, \_MM\_SHUFFLE(0, 0, 3, 2)); \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_min\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_shufflelo\_epi16(M0, \_MM\_SHUFFLE(0, 0, 3, 2)); \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_min\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_shufflelo\_epi16(M0, \_MM\_SHUFFLE(0, 0, 0, 1)); \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_min\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__sse__impl_8h_a6dc79ea42923356306d5ce8c4019d3b8}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!SSE\_NORMALIZE\_K5@{SSE\_NORMALIZE\_K5}}
\index{SSE\_NORMALIZE\_K5@{SSE\_NORMALIZE\_K5}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{SSE\_NORMALIZE\_K5}
{\footnotesize\ttfamily \#define SSE\+\_\+\+NORMALIZE\+\_\+\+K5(\begin{DoxyParamCaption}\item[{}]{M0,  }\item[{}]{M1,  }\item[{}]{M2,  }\item[{}]{M3 }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M2 = \_mm\_min\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        SSE\_MINPOS(M2, M3) \(\backslash\)}
\DoxyCodeLine{        SSE\_BROADCAST(M2) \(\backslash\)}
\DoxyCodeLine{        M0 = \_mm\_subs\_epi16(M0, M2); \(\backslash\)}
\DoxyCodeLine{        M1 = \_mm\_subs\_epi16(M1, M2); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__sse__impl_8h_a6e3fa7c5ff1e4d3e244cbdf0a3bffa4b}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!SSE\_NORMALIZE\_K7@{SSE\_NORMALIZE\_K7}}
\index{SSE\_NORMALIZE\_K7@{SSE\_NORMALIZE\_K7}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{SSE\_NORMALIZE\_K7}
{\footnotesize\ttfamily \#define SSE\+\_\+\+NORMALIZE\+\_\+\+K7(\begin{DoxyParamCaption}\item[{}]{M0,  }\item[{}]{M1,  }\item[{}]{M2,  }\item[{}]{M3,  }\item[{}]{M4,  }\item[{}]{M5,  }\item[{}]{M6,  }\item[{}]{M7,  }\item[{}]{M8,  }\item[{}]{M9,  }\item[{}]{M10,  }\item[{}]{M11 }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M8  = \_mm\_min\_epi16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M9  = \_mm\_min\_epi16(M2, M3); \(\backslash\)}
\DoxyCodeLine{        M10 = \_mm\_min\_epi16(M4, M5); \(\backslash\)}
\DoxyCodeLine{        M11 = \_mm\_min\_epi16(M6, M7); \(\backslash\)}
\DoxyCodeLine{        M8  = \_mm\_min\_epi16(M8, M9); \(\backslash\)}
\DoxyCodeLine{        M10 = \_mm\_min\_epi16(M10, M11); \(\backslash\)}
\DoxyCodeLine{        M8  = \_mm\_min\_epi16(M8, M10); \(\backslash\)}
\DoxyCodeLine{        SSE\_MINPOS(M8, M9) \(\backslash\)}
\DoxyCodeLine{        SSE\_BROADCAST(M8) \(\backslash\)}
\DoxyCodeLine{        M0  = \_mm\_subs\_epi16(M0, M8); \(\backslash\)}
\DoxyCodeLine{        M1  = \_mm\_subs\_epi16(M1, M8); \(\backslash\)}
\DoxyCodeLine{        M2  = \_mm\_subs\_epi16(M2, M8); \(\backslash\)}
\DoxyCodeLine{        M3  = \_mm\_subs\_epi16(M3, M8); \(\backslash\)}
\DoxyCodeLine{        M4  = \_mm\_subs\_epi16(M4, M8); \(\backslash\)}
\DoxyCodeLine{        M5  = \_mm\_subs\_epi16(M5, M8); \(\backslash\)}
\DoxyCodeLine{        M6  = \_mm\_subs\_epi16(M6, M8); \(\backslash\)}
\DoxyCodeLine{        M7  = \_mm\_subs\_epi16(M7, M8); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}


\doxysubsection{Function Documentation}
\mbox{\label{conv__acc__sse__impl_8h_ace021df37858dc9c7e2ffeeb5363dd16}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!\_sse\_metrics\_k5\_n2@{\_sse\_metrics\_k5\_n2}}
\index{\_sse\_metrics\_k5\_n2@{\_sse\_metrics\_k5\_n2}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{\_sse\_metrics\_k5\_n2()}
{\footnotesize\ttfamily static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \+\_\+sse\+\_\+metrics\+\_\+k5\+\_\+n2 (\begin{DoxyParamCaption}\item[{const int16\+\_\+t $\ast$}]{val,  }\item[{const int16\+\_\+t $\ast$}]{out,  }\item[{int16\+\_\+t $\ast$}]{sums,  }\item[{int16\+\_\+t $\ast$}]{paths,  }\item[{int}]{norm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ SSE\+\_\+\+BUTTERFLY}, \textbf{ SSE\+\_\+\+DEINTERLEAVE\+\_\+\+K5}, and \textbf{ SSE\+\_\+\+NORMALIZE\+\_\+\+K5}.

\mbox{\label{conv__acc__sse__impl_8h_aebbd89119405132383c7f54f818f1209}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!\_sse\_metrics\_k5\_n4@{\_sse\_metrics\_k5\_n4}}
\index{\_sse\_metrics\_k5\_n4@{\_sse\_metrics\_k5\_n4}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{\_sse\_metrics\_k5\_n4()}
{\footnotesize\ttfamily static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \+\_\+sse\+\_\+metrics\+\_\+k5\+\_\+n4 (\begin{DoxyParamCaption}\item[{const int16\+\_\+t $\ast$}]{val,  }\item[{const int16\+\_\+t $\ast$}]{out,  }\item[{int16\+\_\+t $\ast$}]{sums,  }\item[{int16\+\_\+t $\ast$}]{paths,  }\item[{int}]{norm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ SSE\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N4}, \textbf{ SSE\+\_\+\+BUTTERFLY}, \textbf{ SSE\+\_\+\+DEINTERLEAVE\+\_\+\+K5}, and \textbf{ SSE\+\_\+\+NORMALIZE\+\_\+\+K5}.

\mbox{\label{conv__acc__sse__impl_8h_ae9ec7cd678c977a8289320f3d4643415}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!\_sse\_metrics\_k7\_n2@{\_sse\_metrics\_k7\_n2}}
\index{\_sse\_metrics\_k7\_n2@{\_sse\_metrics\_k7\_n2}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{\_sse\_metrics\_k7\_n2()}
{\footnotesize\ttfamily static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \+\_\+sse\+\_\+metrics\+\_\+k7\+\_\+n2 (\begin{DoxyParamCaption}\item[{const int16\+\_\+t $\ast$}]{val,  }\item[{const int16\+\_\+t $\ast$}]{out,  }\item[{int16\+\_\+t $\ast$}]{sums,  }\item[{int16\+\_\+t $\ast$}]{paths,  }\item[{int}]{norm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ SSE\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N2}, \textbf{ SSE\+\_\+\+BUTTERFLY}, \textbf{ SSE\+\_\+\+DEINTERLEAVE\+\_\+\+K7}, and \textbf{ SSE\+\_\+\+NORMALIZE\+\_\+\+K7}.

\mbox{\label{conv__acc__sse__impl_8h_a82595fc4ef1bacd8b4a74d8f59277e0c}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!\_sse\_metrics\_k7\_n4@{\_sse\_metrics\_k7\_n4}}
\index{\_sse\_metrics\_k7\_n4@{\_sse\_metrics\_k7\_n4}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{\_sse\_metrics\_k7\_n4()}
{\footnotesize\ttfamily static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \+\_\+sse\+\_\+metrics\+\_\+k7\+\_\+n4 (\begin{DoxyParamCaption}\item[{const int16\+\_\+t $\ast$}]{val,  }\item[{const int16\+\_\+t $\ast$}]{out,  }\item[{int16\+\_\+t $\ast$}]{sums,  }\item[{int16\+\_\+t $\ast$}]{paths,  }\item[{int}]{norm }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}}



References \textbf{ SSE\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N4}, \textbf{ SSE\+\_\+\+BUTTERFLY}, \textbf{ SSE\+\_\+\+DEINTERLEAVE\+\_\+\+K7}, and \textbf{ SSE\+\_\+\+NORMALIZE\+\_\+\+K7}.



\doxysubsection{Variable Documentation}
\mbox{\label{conv__acc__sse__impl_8h_ab87cb89f0af5dcfad8c409b0367997e5}} 
\index{conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}!sse41\_supported@{sse41\_supported}}
\index{sse41\_supported@{sse41\_supported}!conv\_acc\_sse\_impl.h@{conv\_acc\_sse\_impl.h}}
\doxysubsubsection{sse41\_supported}
{\footnotesize\ttfamily int sse41\+\_\+supported\hspace{0.3cm}{\ttfamily [extern]}}



Referenced by \textbf{ osmo\+\_\+conv\+\_\+init()}.

