Merge pull request #23131 from y-guyon:align_ptr_intrin_sse
Fix misaligned-pointer-use in intrin_sse.hpp * Fix misaligned-pointer-use in intrin_sse.hpp * Use _mm_loadu_si32() instead of memcpy() * Use CV_DECL_ALIGNED instead of _mm_loadu_si32()
This commit is contained in:
parent
c280cd7290
commit
56102737d7
@ -1921,11 +1921,12 @@ OPENCV_HAL_IMPL_SSE_EXPAND(v_int16x8, v_int32x4, short, _v128_cvtepi16_epi
|
|||||||
OPENCV_HAL_IMPL_SSE_EXPAND(v_uint32x4, v_uint64x2, unsigned, _v128_cvtepu32_epi64)
|
OPENCV_HAL_IMPL_SSE_EXPAND(v_uint32x4, v_uint64x2, unsigned, _v128_cvtepu32_epi64)
|
||||||
OPENCV_HAL_IMPL_SSE_EXPAND(v_int32x4, v_int64x2, int, _v128_cvtepi32_epi64)
|
OPENCV_HAL_IMPL_SSE_EXPAND(v_int32x4, v_int64x2, int, _v128_cvtepi32_epi64)
|
||||||
|
|
||||||
#define OPENCV_HAL_IMPL_SSE_EXPAND_Q(_Tpvec, _Tp, intrin) \
|
#define OPENCV_HAL_IMPL_SSE_EXPAND_Q(_Tpvec, _Tp, intrin) \
|
||||||
inline _Tpvec v_load_expand_q(const _Tp* ptr) \
|
inline _Tpvec v_load_expand_q(const _Tp* ptr) \
|
||||||
{ \
|
{ \
|
||||||
__m128i a = _mm_cvtsi32_si128(*(const int*)ptr); \
|
typedef int CV_DECL_ALIGNED(1) unaligned_int; \
|
||||||
return _Tpvec(intrin(a)); \
|
__m128i a = _mm_cvtsi32_si128(*(const unaligned_int*)ptr); \
|
||||||
|
return _Tpvec(intrin(a)); \
|
||||||
}
|
}
|
||||||
|
|
||||||
OPENCV_HAL_IMPL_SSE_EXPAND_Q(v_uint32x4, uchar, _v128_cvtepu8_epi32)
|
OPENCV_HAL_IMPL_SSE_EXPAND_Q(v_uint32x4, uchar, _v128_cvtepu8_epi32)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user