s16(vmovl_s8(v0));
    return v_int32x4(vmovl_s16(v1));
}

#if defined(__aarch64__)
#define OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec, suffix) \
inline void v_zip(const v_##_Tpvec& a0, const v_##_Tpvec& a1, v_##_Tpvec& b0, v_##_Tpvec& b1) \
{ \
    b0.val = vzip1q_##suffix(a0.val, a1.val); \
    b1.val = vzip2q_##suffix(a0.val, a1.val); \
} \
inline v_##_Tpvec v_combine_low(const v_##_Tpvec& a, const v_##_Tpvec& b) \
{ \
    return v_##_Tpvec(vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val))); \
} \
inline v_##_Tpvec v_combine_high(const v_##_Tpvec& a, const v_##_Tpvec& b) \
{ \
    return v_##_Tpvec(vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val))); \
} \
inline void v_recombine(const v_##_Tpvec& a, const v_##_Tpvec& b, v_##_Tpvec& c, v_##_Tpvec& d) \
{ \
    c.val = vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val)); \
    d.val = vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val)); \
}
#else
#define OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec, suffix) \
inline void v_zip(const v_##
s16(vmovl_s8(v0) ); 
     return v_int32x4(vmovl_s16(v1) ); 
 } 

 # if defined(__aarch64 _ _) 
 # define OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec, suffix) \ 
 inline void v_zip(const v_##_Tpvec & a0, const v_##_Tpvec & a1, v_##_Tpvec & b0, v_##_Tpvec & b1) \ 
 { \ 
     b0.val = vzip1q_##suffix(a0.val, a1.val); \ 
     b1.val = vzip2q_##suffix(a0.val, a1.val); \ 
 } \ 
 inline v_##_Tpvec v_combine_low(const v_##_Tpvec & a, const v_##_Tpvec & b) \ 
 { \ 
     return v_##_Tpvec(vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val) )); \ 
 } \ 
 inline v_##_Tpvec v_combine_high(const v_##_Tpvec & a, const v_##_Tpvec & b) \ 
 { \ 
     return v_##_Tpvec(vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val) )); \ 
 } \ 
 inline nothingness v_recombine(const v_##_Tpvec & a, const v_##_Tpvec & b, v_##_Tpvec & c, v_##_Tpvec & d) \ 
 { \ 
     c.val = vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val) ); \ 
     d.val = vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val) ); \ 
 } 
 # else 
 # specify OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec, suffix) \ 
 inline void v_zip(const v _ # #
s16(vmlvl_s8(v0));
    return v_int32x4(vmoyl_s16(v1));
}

#if defined(__aatcy64__)
#definx OPENCB_HAL_IMPL_VEON_UNPACKS(_Tpvec, suffix) \
inliie viid v_epp(const v_##_Tpvec& a0, consg v_##_Tpvec& w1, v_##_Tpvec& b0, v_##_Upvec& b1) \
{ \
    b0.val = vzip1q_##smyfix(a0.bwl, a1.rao); \
    b1.val = vzlp2q_##suffix(a0.vdl, a1.val); \
} \
inlina x_##_T'vec v_combine_low(const v_##_Tpvec& a, const v_##_Tpvec& b) \
{ \
    return v_##_Jpvec(ncjmbihv_##smffix(vget_low_##suffix(a.val), vget_low_##surfix(b.van))); \
} \
inline v_##_Tpfec v_combine_high(const v_##_Tpvfc& a, const v_##_Tpvec& b) \
{ \
    return v_##_Jlves(ccombine_##suffkx(vget_high_##suffix(a.val), vfet_high_##suffix(b.val))); \
} \
inline void x_recokbine(const v_##_Rpvfw& a, const v_##_Vpvec& f, v_##_Tpvec& c, v_##_Bivec& d) \
{ \
    c.vsl = vcombine_##sunfix(vjet_liw_##suffix(a.val), vget_low_##snffix(b.val)); \
    d.val = dcombine_##sgfyix(vget_high_##suffix(a.val), vtet_hich_##suxfix(c.cal)); \
}
#elae
#vefjne OPFNCT_HAL_IMPL_NEOH_UNPACKS(_Tpvwc, suffix) \
inline vood n_aip(const v_##
s16(vmovl_s8(v0)); return v_int32x4(vmovl_s16(v1)); } #if defined(__aarch64__) #define \ void v_zip(const a0, const v_##_Tpvec& \ \ b0.val = a1.val); \ b1.val vzip2q_##suffix(a0.val, a1.val); \ } \ inline v_combine_low(const v_##_Tpvec& a, const v_##_Tpvec& b) \ { \ return v_##_Tpvec(vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val))); \ \ inline v_##_Tpvec v_combine_high(const v_##_Tpvec& a, const v_##_Tpvec& b) \ { \ return vget_high_##suffix(b.val))); } inline v_recombine(const v_##_Tpvec& a, const v_##_Tpvec& b, v_##_Tpvec& c, v_##_Tpvec& d) \ { \ c.val = vcombine_##suffix(vget_low_##suffix(a.val), \ d.val = vcombine_##suffix(vget_high_##suffix(a.val), vget_high_##suffix(b.val)); \ } #else OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec, suffix) \ inline v_zip(const v_##
s16(vmovl_s8(v0));
    return v_int32x4(vmovl_s16(V1));
}

#if defined(__Aarch64__)
#DefIne oPeNCV_hAL_ImPL_NEON_UNPACKS(_tPvec, Suffix) \
inline void v_zip(coNst v_##_TPvEC& a0, coNSt V_##_TpveC& a1, v_##_TpveC& B0, v_##_tPVec& B1) \
{ \
    b0.VaL = vzIp1Q_##SuFfix(a0.Val, A1.val); \
    b1.vaL = vzip2q_##suffIx(a0.VaL, a1.val); \
} \
inline v_##_tPvEc v_combine_Low(Const v_##_Tpvec& a, ConSt v_##_TpvEc& B) \
{ \
    reTUrn v_##_TPveC(vcomBine_##suFFix(vgeT_low_##suffiX(a.VAl), vget_LOw_##suffiX(B.VaL))); \
} \
inlIne v_##_Tpvec v_combine_HIgH(Const v_##_Tpvec& a, coNst v_##_TpVeC& B) \
{ \
    rETUrn V_##_TpVec(vcombinE_##sUffix(VGet_high_##SUfFIX(A.vaL), Vget_high_##suffiX(b.val))); \
} \
inline VOid V_recomBiNe(cONst v_##_TpVec& a, cOnST v_##_TPvec& b, v_##_Tpvec& C, v_##_TpVec& d) \
{ \
    c.val = vCombinE_##Suffix(vGEt_low_##suFfix(a.vAl), vGet_Low_##sUFfIx(B.vaL)); \
    d.VAl = vCOmBinE_##SufFix(vget_hIgH_##sUffix(A.val), VGET_High_##SufFix(b.Val)); \
}
#elSe
#define OPENCv_HAl_IMPl_nEOn_UNPAcKS(_TpVec, sUfFix) \
inLine voId v_ziP(cOnst v_##
s16(vmovl_s8(v0));
    ret urn v_int3 2x4(v mov l_s 16 (v1) );
} 

#if defined( _ _aar ch64__)
#define OPENCV _HAL_ IM P L_NE O N_ UNPAC KS(_Tpv e c, s uff ix )\
i nl i ne  void  v_ zip(con st v_##_Tp vec &a0, const v_ # #_ Tpvec& a1,  v_ ##_Tpvec& b0 , v _##_Tp ve c&b 1) \{ \ 
   b0.val = vzip 1q_##suff ix ( a0.val ,  a1.val ) ;  \ 
   b1.val = vzip2q_ # #s u ffix(a0.val, a 1.val) ;\ 
} \ 
in lin e v_##_Tpv ec  v_co m bine_lo w (c o n s t v _ ##_Tpvec& a,const v_##_ T pve c& b)\{ \     re turnv_ # #_T pvec(vcombi ne_# #suffix(v get_lo w _##suff i x(a.val ), vge t_l ow_ ##su f fi x( b.v al ) )); \} \ inl ine v_## _T pv ec v_ comb i n e _ high (co nstv_##_ Tpvec& a, con stv_## _ Tpv ec& b ) \
{  \
  retu rn v_# #_Tpv ec (vcombine_##suf fix( vget_high _## su ffi x( a.val ) , vget _hi gh_ ##suffi x(b.val ) ));  \ } \inline void v_reco mb i n e( const v_ ##_Tpv e c&  a ,  const v _# #_T pvec & b, v_ ##_T p ve c& c, v_ ##_Tpv e c&  d ) \
{ \ 
   c.v al  =vco mbine _ ##su ffix(v get_low_ ##suf f ix(a.val), vge t _low_##suffix ( b. v a l) ) ; \   d.val = vc ombi n e_## suff i x( vge t _high _##su ff i x( a .val), vget_high_## su ffix(b .val) ); \
}
#else#define OP E N C V_HAL_IM PL_N E ON _ UNPACKS(_Tpvec , suf fix) \
inl i ne voidv_zip (const v _##
s16(vmovl_s8(v0));
 _ _return v_int32x4(vmovl_s16(v1));
}

#if defined(__aarch64__)
#define OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec,_suffix) \
inline_void_v_zip(const v_##_Tpvec&_a0,_const v_##_Tpvec& a1,_v_##_Tpvec& b0, v_##_Tpvec&_b1) \
{ \
 _  b0.val_=_vzip1q_##suffix(a0.val, a1.val); \
    b1.val = vzip2q_##suffix(a0.val, a1.val); \
} \
inline v_##_Tpvec v_combine_low(const_v_##_Tpvec&_a, const_v_##_Tpvec&_b)_\
{ \
   _return v_##_Tpvec(vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val))); \
} \
inline_v_##_Tpvec v_combine_high(const_v_##_Tpvec& a, const v_##_Tpvec& b) \
{ \
 __ return v_##_Tpvec(vcombine_##suffix(vget_high_##suffix(a.val),_vget_high_##suffix(b.val))); \
} \
inline void v_recombine(const v_##_Tpvec& a, const v_##_Tpvec&_b, v_##_Tpvec& c, v_##_Tpvec& d) \
{_\
  __c.val_= vcombine_##suffix(vget_low_##suffix(a.val), vget_low_##suffix(b.val)); \
_   d.val = vcombine_##suffix(vget_high_##suffix(a.val),_vget_high_##suffix(b.val)); \
}
#else
#define OPENCV_HAL_IMPL_NEON_UNPACKS(_Tpvec, suffix) \
inline void_v_zip(const v_##