\doxysection{src/core/conv\+\_\+acc\+\_\+neon\+\_\+impl.h File Reference}
\label{conv__acc__neon__impl_8h}\index{src/core/conv\_acc\_neon\_impl.h@{src/core/conv\_acc\_neon\_impl.h}}


Accelerated Viterbi decoder implementation\+: straight port of SSE to NEON based on Tom Tsous work.  


\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \textbf{ \+\_\+\+\_\+always\+\_\+inline}~\textbf{ inline} \textbf{ \+\_\+\+\_\+attribute\+\_\+\+\_\+}((always\+\_\+inline))
\item 
\#define \textbf{ NEON\+\_\+\+BUTTERFLY}(M0,  M1,  M2,  M3,  M4)
\item 
\#define \textbf{ NEON\+\_\+\+DEINTERLEAVE\+\_\+\+K5}(M0,  M1,  M2,  M3)
\item 
\#define \textbf{ NEON\+\_\+\+DEINTERLEAVE\+\_\+\+K7}(M0,  M1,  M2,  M3,  M4,  M5,  M6,  M7,  M8,  M9,  M10,  M11,  M12,  M13,  M14,  M15)
\item 
\#define \textbf{ NEON\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N2}(M0,  M1,  M2,  M3,  M4,  M6,  M7)
\item 
\#define \textbf{ NEON\+\_\+\+BRANCH\+\_\+\+METRIC\+\_\+\+N4}(M0,  M1,  M2,  M3,  M4,  M5)
\item 
\#define \textbf{ NEON\+\_\+\+NORMALIZE\+\_\+\+K5}(M0,  M1,  M2,  M3)
\item 
\#define \textbf{ NEON\+\_\+\+NORMALIZE\+\_\+\+K7}(M0,  M1,  M2,  M3,  M4,  M5,  M6,  M7,  M8,  M9,  M10,  M11)
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
\textbf{ \+\_\+\+\_\+always\+\_\+inline} void \textbf{ \+\_\+neon\+\_\+metrics\+\_\+k5\+\_\+n2} (const int16\+\_\+t $\ast$val, const int16\+\_\+t $\ast$outa, int16\+\_\+t $\ast$sumsa, int16\+\_\+t $\ast$paths, int norm)
\item 
\textbf{ \+\_\+\+\_\+always\+\_\+inline} void \textbf{ \+\_\+neon\+\_\+metrics\+\_\+k5\+\_\+n4} (const int16\+\_\+t $\ast$val, const int16\+\_\+t $\ast$outa, int16\+\_\+t $\ast$sumsa, int16\+\_\+t $\ast$paths, int norm)
\item 
static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \textbf{ \+\_\+neon\+\_\+metrics\+\_\+k7\+\_\+n2} (const int16\+\_\+t $\ast$val, const int16\+\_\+t $\ast$outa, int16\+\_\+t $\ast$sumsa, int16\+\_\+t $\ast$paths, int norm)
\item 
static \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \textbf{ \+\_\+neon\+\_\+metrics\+\_\+k7\+\_\+n4} (const int16\+\_\+t $\ast$val, const int16\+\_\+t $\ast$outa, int16\+\_\+t $\ast$sumsa, int16\+\_\+t $\ast$paths, int norm)
\end{DoxyCompactItemize}


\doxysubsection{Detailed Description}
Accelerated Viterbi decoder implementation\+: straight port of SSE to NEON based on Tom Tsous work. 



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

\mbox{\label{conv__acc__neon__impl_8h_a61dbf015c8f61eb5d7775df881ec7daa}} 
\index{conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}!NEON\_BRANCH\_METRIC\_N2@{NEON\_BRANCH\_METRIC\_N2}}
\index{NEON\_BRANCH\_METRIC\_N2@{NEON\_BRANCH\_METRIC\_N2}!conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}}
\doxysubsubsection{NEON\_BRANCH\_METRIC\_N2}
{\footnotesize\ttfamily \#define NEON\+\_\+\+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 = vmulq\_s16(M4, M0); \(\backslash\)}
\DoxyCodeLine{        M1 = vmulq\_s16(M4, M1); \(\backslash\)}
\DoxyCodeLine{        M2 = vmulq\_s16(M4, M2); \(\backslash\)}
\DoxyCodeLine{        M3 = vmulq\_s16(M4, M3); \(\backslash\)}
\DoxyCodeLine{        M6 = vcombine\_s16(vpadd\_s16(vget\_low\_s16(M0), vget\_high\_s16(M0)), vpadd\_s16(vget\_low\_s16(M1), vget\_high\_s16(M1))); \(\backslash\)}
\DoxyCodeLine{        M7 = vcombine\_s16(vpadd\_s16(vget\_low\_s16(M2), vget\_high\_s16(M2)), vpadd\_s16(vget\_low\_s16(M3), vget\_high\_s16(M3))); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__neon__impl_8h_a64763794a6958e9f6353ca647c34035e}} 
\index{conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}!NEON\_BRANCH\_METRIC\_N4@{NEON\_BRANCH\_METRIC\_N4}}
\index{NEON\_BRANCH\_METRIC\_N4@{NEON\_BRANCH\_METRIC\_N4}!conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}}
\doxysubsubsection{NEON\_BRANCH\_METRIC\_N4}
{\footnotesize\ttfamily \#define NEON\+\_\+\+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 = vmulq\_s16(M4, M0); \(\backslash\)}
\DoxyCodeLine{        M1 = vmulq\_s16(M4, M1); \(\backslash\)}
\DoxyCodeLine{        M2 = vmulq\_s16(M4, M2); \(\backslash\)}
\DoxyCodeLine{        M3 = vmulq\_s16(M4, M3); \(\backslash\)}
\DoxyCodeLine{        int16x4\_t t1 = vpadd\_s16(vpadd\_s16(vget\_low\_s16(M0), vget\_high\_s16(M0)), vpadd\_s16(vget\_low\_s16(M1), vget\_high\_s16(M1))); \(\backslash\)}
\DoxyCodeLine{        int16x4\_t t2 = vpadd\_s16(vpadd\_s16(vget\_low\_s16(M2), vget\_high\_s16(M2)), vpadd\_s16(vget\_low\_s16(M3), vget\_high\_s16(M3))); \(\backslash\)}
\DoxyCodeLine{        M5 = vcombine\_s16(t1, t2); \(\backslash\)}
\DoxyCodeLine{\}}

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

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M3 = vqaddq\_s16(M0, M2); \(\backslash\)}
\DoxyCodeLine{        M4 = vqsubq\_s16(M1, M2); \(\backslash\)}
\DoxyCodeLine{        M0 = vqsubq\_s16(M0, M2); \(\backslash\)}
\DoxyCodeLine{        M1 = vqaddq\_s16(M1, M2); \(\backslash\)}
\DoxyCodeLine{        M2 = vmaxq\_s16(M3, M4); \(\backslash\)}
\DoxyCodeLine{        M3 = vreinterpretq\_s16\_u16(vcgtq\_s16(M3, M4)); \(\backslash\)}
\DoxyCodeLine{        M4 = vmaxq\_s16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M1 = vreinterpretq\_s16\_u16(vcgtq\_s16(M0, M1)); \(\backslash\)}
\DoxyCodeLine{\}}

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

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        int16x8x2\_t tmp; \(\backslash\)}
\DoxyCodeLine{        tmp = vuzpq\_s16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M2 = tmp.val[0]; \(\backslash\)}
\DoxyCodeLine{        M3 = tmp.val[1]; \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__neon__impl_8h_a2c3b91ddfe96dab0e7c38ab4a49cf96b}} 
\index{conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}!NEON\_DEINTERLEAVE\_K7@{NEON\_DEINTERLEAVE\_K7}}
\index{NEON\_DEINTERLEAVE\_K7@{NEON\_DEINTERLEAVE\_K7}!conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}}
\doxysubsubsection{NEON\_DEINTERLEAVE\_K7}
{\footnotesize\ttfamily \#define NEON\+\_\+\+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{        int16x8x2\_t tmp; \(\backslash\)}
\DoxyCodeLine{        tmp = vuzpq\_s16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M8 = tmp.val[0]; M9 = tmp.val[1]; \(\backslash\)}
\DoxyCodeLine{        tmp = vuzpq\_s16(M2, M3); \(\backslash\)}
\DoxyCodeLine{        M10 = tmp.val[0]; M11 = tmp.val[1]; \(\backslash\)}
\DoxyCodeLine{        tmp = vuzpq\_s16(M4, M5); \(\backslash\)}
\DoxyCodeLine{        M12 = tmp.val[0]; M13 = tmp.val[1]; \(\backslash\)}
\DoxyCodeLine{        tmp = vuzpq\_s16(M6, M7); \(\backslash\)}
\DoxyCodeLine{        M14 = tmp.val[0]; M15 = tmp.val[1]; \(\backslash\)}
\DoxyCodeLine{\}}

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

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\{ \(\backslash\)}
\DoxyCodeLine{        M2 = vminq\_s16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        int16x4\_t t = vpmin\_s16(vget\_low\_s16(M2), vget\_high\_s16(M2)); \(\backslash\)}
\DoxyCodeLine{        t = vpmin\_s16(t, t); \(\backslash\)}
\DoxyCodeLine{        t = vpmin\_s16(t, t); \(\backslash\)}
\DoxyCodeLine{        M2 = vdupq\_lane\_s16(t, 0); \(\backslash\)}
\DoxyCodeLine{        M0 = vqsubq\_s16(M0, M2); \(\backslash\)}
\DoxyCodeLine{        M1 = vqsubq\_s16(M1, M2); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}
\mbox{\label{conv__acc__neon__impl_8h_a4abb399cb2e95aa683d4f3fa4cd62162}} 
\index{conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}!NEON\_NORMALIZE\_K7@{NEON\_NORMALIZE\_K7}}
\index{NEON\_NORMALIZE\_K7@{NEON\_NORMALIZE\_K7}!conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}}
\doxysubsubsection{NEON\_NORMALIZE\_K7}
{\footnotesize\ttfamily \#define NEON\+\_\+\+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 = vminq\_s16(M0, M1); \(\backslash\)}
\DoxyCodeLine{        M9 = vminq\_s16(M2, M3); \(\backslash\)}
\DoxyCodeLine{        M10 = vminq\_s16(M4, M5); \(\backslash\)}
\DoxyCodeLine{        M11 = vminq\_s16(M6, M7); \(\backslash\)}
\DoxyCodeLine{        M8 = vminq\_s16(M8, M9); \(\backslash\)}
\DoxyCodeLine{        M10 = vminq\_s16(M10, M11); \(\backslash\)}
\DoxyCodeLine{        M8 = vminq\_s16(M8, M10); \(\backslash\)}
\DoxyCodeLine{        int16x4\_t t = vpmin\_s16(vget\_low\_s16(M8), vget\_high\_s16(M8)); \(\backslash\)}
\DoxyCodeLine{        t = vpmin\_s16(t, t); \(\backslash\)}
\DoxyCodeLine{        t = vpmin\_s16(t, t); \(\backslash\)}
\DoxyCodeLine{        M8 = vdupq\_lane\_s16(t, 0); \(\backslash\)}
\DoxyCodeLine{        M0 = vqsubq\_s16(M0, M8); \(\backslash\)}
\DoxyCodeLine{        M1 = vqsubq\_s16(M1, M8); \(\backslash\)}
\DoxyCodeLine{        M2 = vqsubq\_s16(M2, M8); \(\backslash\)}
\DoxyCodeLine{        M3 = vqsubq\_s16(M3, M8); \(\backslash\)}
\DoxyCodeLine{        M4 = vqsubq\_s16(M4, M8); \(\backslash\)}
\DoxyCodeLine{        M5 = vqsubq\_s16(M5, M8); \(\backslash\)}
\DoxyCodeLine{        M6 = vqsubq\_s16(M6, M8); \(\backslash\)}
\DoxyCodeLine{        M7 = vqsubq\_s16(M7, M8); \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}


\doxysubsection{Function Documentation}
\mbox{\label{conv__acc__neon__impl_8h_a29280174a1b24c944278ea50645d8fc0}} 
\index{conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}!\_neon\_metrics\_k5\_n2@{\_neon\_metrics\_k5\_n2}}
\index{\_neon\_metrics\_k5\_n2@{\_neon\_metrics\_k5\_n2}!conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}}
\doxysubsubsection{\_neon\_metrics\_k5\_n2()}
{\footnotesize\ttfamily \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \+\_\+neon\+\_\+metrics\+\_\+k5\+\_\+n2 (\begin{DoxyParamCaption}\item[{const int16\+\_\+t $\ast$}]{val,  }\item[{const int16\+\_\+t $\ast$}]{outa,  }\item[{int16\+\_\+t $\ast$}]{sumsa,  }\item[{int16\+\_\+t $\ast$}]{paths,  }\item[{int}]{norm }\end{DoxyParamCaption})}



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

\mbox{\label{conv__acc__neon__impl_8h_ad117402b21d34712927b710cf3bfaca7}} 
\index{conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}!\_neon\_metrics\_k5\_n4@{\_neon\_metrics\_k5\_n4}}
\index{\_neon\_metrics\_k5\_n4@{\_neon\_metrics\_k5\_n4}!conv\_acc\_neon\_impl.h@{conv\_acc\_neon\_impl.h}}
\doxysubsubsection{\_neon\_metrics\_k5\_n4()}
{\footnotesize\ttfamily \textbf{ \+\_\+\+\_\+always\+\_\+inline} void \+\_\+neon\+\_\+metrics\+\_\+k5\+\_\+n4 (\begin{DoxyParamCaption}\item[{const int16\+\_\+t $\ast$}]{val,  }\item[{const int16\+\_\+t $\ast$}]{outa,  }\item[{int16\+\_\+t $\ast$}]{sumsa,  }\item[{int16\+\_\+t $\ast$}]{paths,  }\item[{int}]{norm }\end{DoxyParamCaption})}



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

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



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

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



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

