diff --git a/modules/core/include/opencv2/core/hal/intrin_sse.hpp b/modules/core/include/opencv2/core/hal/intrin_sse.hpp
index 637d49282ef48d6a09e125eb9d90b3695b4d5a0f..0e740f641854cf54052d4971026406814bcc6d62 100644
--- a/modules/core/include/opencv2/core/hal/intrin_sse.hpp
+++ b/modules/core/include/opencv2/core/hal/intrin_sse.hpp
@@ -1024,24 +1024,28 @@ OPENCV_HAL_IMPL_SSE_SHIFT_OP(v_uint64x2, v_int64x2, epi64, v_srai_epi64)
 template<int imm, typename _Tpvec>
 inline _Tpvec v_rotate_right(const _Tpvec &a)
 {
-    return _Tpvec(_mm_srli_si128(a.val, imm*(sizeof(typename _Tpvec::lane_type))));
+    enum { CV_SHIFT = imm*(sizeof(typename _Tpvec::lane_type)) };
+    return _Tpvec(_mm_srli_si128(a.val, CV_SHIFT));
 }
 template<int imm, typename _Tpvec>
 inline _Tpvec v_rotate_left(const _Tpvec &a)
 {
-    return _Tpvec(_mm_slli_si128(a.val, imm*(sizeof(typename _Tpvec::lane_type))));
+    enum { CV_SHIFT = imm*(sizeof(typename _Tpvec::lane_type)) };
+    return _Tpvec(_mm_slli_si128(a.val, CV_SHIFT));
 }
 template<int imm, typename _Tpvec>
 inline _Tpvec v_rotate_right(const _Tpvec &a, const _Tpvec &b)
 {
-    const int cWidth = sizeof(typename _Tpvec::lane_type);
-    return _Tpvec(_mm_or_si128(_mm_srli_si128(a.val, imm*cWidth), _mm_slli_si128(b.val, (16 - imm*cWidth))));
+    enum { CV_SHIFT1 = imm*(sizeof(typename _Tpvec::lane_type)) };
+    enum { CV_SHIFT2 = 16 - imm*(sizeof(typename _Tpvec::lane_type)) };
+    return _Tpvec(_mm_or_si128(_mm_srli_si128(a.val, CV_SHIFT1), _mm_slli_si128(b.val, CV_SHIFT2)));
 }
 template<int imm, typename _Tpvec>
 inline _Tpvec v_rotate_left(const _Tpvec &a, const _Tpvec &b)
 {
-    const int cWidth = sizeof(typename _Tpvec::lane_type);
-    return _Tpvec(_mm_or_si128(_mm_slli_si128(a.val, imm*cWidth), _mm_srli_si128(b.val, (16 - imm*cWidth))));
+    enum { CV_SHIFT1 = imm*(sizeof(typename _Tpvec::lane_type)) };
+    enum { CV_SHIFT2 = 16 - imm*(sizeof(typename _Tpvec::lane_type)) };
+    return _Tpvec(_mm_or_si128(_mm_slli_si128(a.val, CV_SHIFT1), _mm_srli_si128(b.val, CV_SHIFT2)));
 }
 
 #define OPENCV_HAL_IMPL_SSE_LOADSTORE_INT_OP(_Tpvec, _Tp) \
diff --git a/modules/core/include/opencv2/core/hal/intrin_vsx.hpp b/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
index c8fa8ed5ced4f2593386afb38590f05555dc5030..446a1ca245018e7e8398663186d1dcf2d2e80e8e 100644
--- a/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
+++ b/modules/core/include/opencv2/core/hal/intrin_vsx.hpp
@@ -634,19 +634,19 @@ OPENCV_IMPL_VSX_ROTATE_LR(v_int64x2,  vec_dword2)
 template<int imm, typename _Tpvec>
 inline _Tpvec v_rotate_right(const _Tpvec& a, const _Tpvec& b)
 {
-    const int wd = imm * sizeof(typename _Tpvec::lane_type);
-    if (wd == 0)
+    enum { CV_SHIFT = 16 - imm * (sizeof(typename _Tpvec::lane_type)) };
+    if (CV_SHIFT == 16)
         return a;
-    return _Tpvec(vec_sld(b.val, a.val, 16 - wd));
+    return _Tpvec(vec_sld(b.val, a.val, CV_SHIFT));
 }
 
 template<int imm, typename _Tpvec>
 inline _Tpvec v_rotate_left(const _Tpvec& a, const _Tpvec& b)
 {
-    const int wd = imm * sizeof(typename _Tpvec::lane_type);
-    if (wd == 16)
+    enum { CV_SHIFT = imm * (sizeof(typename _Tpvec::lane_type)) };
+    if (CV_SHIFT == 16)
         return b;
-    return _Tpvec(vec_sld(a.val, b.val, wd));
+    return _Tpvec(vec_sld(a.val, b.val, CV_SHIFT));
 }
 
 #define OPENCV_IMPL_VSX_ROTATE_64(_Tpvec, suffix, rg1, rg2)       \