@@ -1024,24 +1024,28 @@ OPENCV_HAL_IMPL_SSE_SHIFT_OP(v_uint64x2, v_int64x2, epi64, v_srai_epi64)
1024
1024
template <int imm, typename _Tpvec>
1025
1025
inline _Tpvec v_rotate_right (const _Tpvec &a)
1026
1026
{
1027
- return _Tpvec (_mm_srli_si128 (a.val , imm*(sizeof (typename _Tpvec::lane_type))));
1027
+ enum { CV_SHIFT = imm*(sizeof (typename _Tpvec::lane_type)) };
1028
+ return _Tpvec (_mm_srli_si128 (a.val , CV_SHIFT));
1028
1029
}
1029
1030
template <int imm, typename _Tpvec>
1030
1031
inline _Tpvec v_rotate_left (const _Tpvec &a)
1031
1032
{
1032
- return _Tpvec (_mm_slli_si128 (a.val , imm*(sizeof (typename _Tpvec::lane_type))));
1033
+ enum { CV_SHIFT = imm*(sizeof (typename _Tpvec::lane_type)) };
1034
+ return _Tpvec (_mm_slli_si128 (a.val , CV_SHIFT));
1033
1035
}
1034
1036
template <int imm, typename _Tpvec>
1035
1037
inline _Tpvec v_rotate_right (const _Tpvec &a, const _Tpvec &b)
1036
1038
{
1037
- const int cWidth = sizeof (typename _Tpvec::lane_type);
1038
- return _Tpvec (_mm_or_si128 (_mm_srli_si128 (a.val , imm*cWidth), _mm_slli_si128 (b.val , (16 - imm*cWidth))));
1039
+ enum { CV_SHIFT1 = imm*(sizeof (typename _Tpvec::lane_type)) };
1040
+ enum { CV_SHIFT2 = 16 - imm*(sizeof (typename _Tpvec::lane_type)) };
1041
+ return _Tpvec (_mm_or_si128 (_mm_srli_si128 (a.val , CV_SHIFT1), _mm_slli_si128 (b.val , CV_SHIFT2)));
1039
1042
}
1040
1043
template <int imm, typename _Tpvec>
1041
1044
inline _Tpvec v_rotate_left (const _Tpvec &a, const _Tpvec &b)
1042
1045
{
1043
- const int cWidth = sizeof (typename _Tpvec::lane_type);
1044
- return _Tpvec (_mm_or_si128 (_mm_slli_si128 (a.val , imm*cWidth), _mm_srli_si128 (b.val , (16 - imm*cWidth))));
1046
+ enum { CV_SHIFT1 = imm*(sizeof (typename _Tpvec::lane_type)) };
1047
+ enum { CV_SHIFT2 = 16 - imm*(sizeof (typename _Tpvec::lane_type)) };
1048
+ return _Tpvec (_mm_or_si128 (_mm_slli_si128 (a.val , CV_SHIFT1), _mm_srli_si128 (b.val , CV_SHIFT2)));
1045
1049
}
1046
1050
1047
1051
#define OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP (_Tpvec, _Tp ) \
0 commit comments