diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md
index 1946d3513be1e2ca8d82ac1a6f30ee5762fa05e1..1ae61182d0ccc750f7e9a964b296b1d7da428904 100644
--- a/gcc/config/i386/sse.md
+++ b/gcc/config/i386/sse.md
@@ -17929,7 +17929,8 @@
   if (INTVAL (operands[5]) == 1)
     std::swap (operands[3], operands[4]);
 
-  operands[3] = force_reg (<MODE>mode, operands[3]);
+  if (operands[3] == CONST0_RTX (<MODE>mode))
+    operands[3] = force_reg (<MODE>mode, operands[3]);
   if (operands[4] == CONST0_RTX (<MODE>mode))
     operands[4] = force_reg (<MODE>mode, operands[4]);