diff mbox series

i386: Robustify vec perm blend functions for TARGET_MMX_WITH_SSE

Message ID CAFULd4ahd+tv3FHJaDWmMvVrqhaSCQnctiQUZdt0vdat+owMtw@mail.gmail.com
State New
Headers show
Series i386: Robustify vec perm blend functions for TARGET_MMX_WITH_SSE | expand

Commit Message

Uros Bizjak March 16, 2023, 7:44 p.m. UTC
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 mbox series

Patch

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;