i386.c (ix86_expand_set_or_movmem): Disable 512bit loops for targets that preffer...
authorJan Hubicka <hubicka@ucw.cz>
Sun, 8 Oct 2017 10:42:54 +0000 (12:42 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Sun, 8 Oct 2017 10:42:54 +0000 (10:42 +0000)
* i386.c (ix86_expand_set_or_movmem): Disable 512bit loops for targets
that preffer 128bit.

From-SVN: r253524

gcc/ChangeLog
gcc/config/i386/i386.c

index e7453131f695a33d83e19e9bb8f9b22bcf50322f..3890fad861eb3ec5bbdb45930ce379111b000c1f 100644 (file)
@@ -1,3 +1,8 @@
+2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       * i386.c (ix86_expand_set_or_movmem): Disable 512bit loops for targets
+       that preffer 128bit.
+
 2017-10-08  Jan Hubicka  <hubicka@ucw.cz>
 
        * i386.c (has_dispatch): Disable for Ryzen.
index 8613aa8fa66a68d6806d0bb349413496ac225c02..1ee8351c21f39e9af991e171748fb65b9a7ac0ac 100644 (file)
@@ -28947,6 +28947,9 @@ ix86_expand_set_or_movmem (rtx dst, rtx src, rtx count_exp, rtx val_exp,
             && optab_handler (mov_optab, wider_mode) != CODE_FOR_nothing)
        move_mode = wider_mode;
 
+      if (TARGET_AVX128_OPTIMAL && GET_MODE_BITSIZE (move_mode) > 128)
+       move_mode = TImode;
+
       /* Find the corresponding vector mode with the same size as MOVE_MODE.
         MOVE_MODE is an integer mode at the moment (SI, DI, TI, etc.).  */
       if (GET_MODE_SIZE (move_mode) > GET_MODE_SIZE (word_mode))