diff --git a/math/vc/include/Vc/sse/vectorhelper.tcc b/math/vc/include/Vc/sse/vectorhelper.tcc
index 4346c2d40156986fdded52aee50a186fb27986e9..26052eddb76e8151e72b544a0e3ba40e92538824 100644
--- a/math/vc/include/Vc/sse/vectorhelper.tcc
+++ b/math/vc/include/Vc/sse/vectorhelper.tcc
@@ -266,13 +266,13 @@ template<typename T> Vc_ALWAYS_INLINE void VectorHelper<_M128I>::store(T *mem, c
     {
         _M128I lo, hi, y;
         // sort pairs
-        y = _mm_shufflelo_epi16(_mm_shufflehi_epi16(x, _MM_SHUFFLE(2, 3, 0, 1)), _MM_SHUFFLE(2, 3, 0, 1));
+        y = Mem::permute<X1, X0, X3, X2, X5, X4, X7, X6>(x);  
         lo = _mm_min_epi16(x, y);
         hi = _mm_max_epi16(x, y);
         x = _mm_blend_epi16(lo, hi, 0xaa);
 
         // merge left and right quads
-        y = _mm_shufflelo_epi16(_mm_shufflehi_epi16(x, _MM_SHUFFLE(0, 1, 2, 3)), _MM_SHUFFLE(0, 1, 2, 3));
+        y = Mem::permute<X3, X2, X1, X0, X7, X6, X5, X4>(x);
         lo = _mm_min_epi16(x, y);
         hi = _mm_max_epi16(x, y);
         x = _mm_blend_epi16(lo, hi, 0xcc);