|
|
@ -1789,10 +1789,20 @@ inline typename _Tp::lane_type v_extract_n(const _Tp& a) |
|
|
|
return v_rotate_right<i>(a).get0(); |
|
|
|
return v_rotate_right<i>(a).get0(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
template<int i, typename _Tp> |
|
|
|
template<int i> |
|
|
|
inline _Tp v_broadcast_element(const _Tp& a) |
|
|
|
inline v_uint32x4 v_broadcast_element(const v_uint32x4& a) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return v_setall_u32(v_extract_n<i>(a)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
template<int i> |
|
|
|
|
|
|
|
inline v_int32x4 v_broadcast_element(const v_int32x4& a) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
return v_setall_s32(v_extract_n<i>(a)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
template<int i> |
|
|
|
|
|
|
|
inline v_float32x4 v_broadcast_element(const v_float32x4& a) |
|
|
|
{ |
|
|
|
{ |
|
|
|
return _Tp::all(v_extract_n<i>(a)); |
|
|
|
return v_setall_f32(v_extract_n<i>(a)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
////// FP16 suport ///////
|
|
|
|
////// FP16 suport ///////
|
|
|
|