diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e7453131f69..3890fad861e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2017-10-08 Jan Hubicka + + * i386.c (ix86_expand_set_or_movmem): Disable 512bit loops for targets + that preffer 128bit. + 2017-10-08 Jan Hubicka * i386.c (has_dispatch): Disable for Ryzen. diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 8613aa8fa66..1ee8351c21f 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -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))