8-byte modes should be processed only for TARGET_MMX_WITH_SSE.

gcc/ChangeLog:

    * config/i386/i386-expand.cc (expand_vec_perm_pblendv):
    Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
    (expand_vec_perm_2perm_pblendv): Ditto.

Bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Pushed to master.

Uros.
diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc
index 1545d4365b7..c1300dc4e26 100644
--- a/gcc/config/i386/i386-expand.cc
+++ b/gcc/config/i386/i386-expand.cc
@@ -20288,9 +20288,10 @@ expand_vec_perm_pblendv (struct expand_vec_perm_d *d)
     ;
   else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
     ;
-  else if (TARGET_SSE4_1 && (GET_MODE_SIZE (vmode) == 4
-                            || GET_MODE_SIZE (vmode) == 8
-                            || GET_MODE_SIZE (vmode) == 16))
+  else if (TARGET_SSE4_1
+          && (GET_MODE_SIZE (vmode) == 16
+              || (TARGET_MMX_WITH_SSE && GET_MODE_SIZE (vmode) == 8)
+              || GET_MODE_SIZE (vmode) == 4))
     ;
   else
     return false;
@@ -21154,9 +21155,10 @@ expand_vec_perm_2perm_pblendv (struct 
expand_vec_perm_d *d, bool two_insn)
     ;
   else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
     ;
-  else if (TARGET_SSE4_1 && (GET_MODE_SIZE (vmode) == 16
-                            || GET_MODE_SIZE (vmode) == 8
-                            || GET_MODE_SIZE (vmode) == 4))
+  else if (TARGET_SSE4_1
+          && (GET_MODE_SIZE (vmode) == 16
+              || (TARGET_MMX_WITH_SSE && GET_MODE_SIZE (vmode) == 8)
+              || GET_MODE_SIZE (vmode) == 4))
     ;
   else
     return false;

Reply via email to