[rs6000] Fix PR92760 by checking VECTOR_MEM_NONE_P instead
authorKewen Lin <linkw@gcc.gnu.org>
Wed, 4 Dec 2019 05:10:46 +0000 (05:10 +0000)
committerKewen Lin <linkw@gcc.gnu.org>
Wed, 4 Dec 2019 05:10:46 +0000 (05:10 +0000)
PR92760 exposed one issue that VECTOR_UNIT_NONE_P (V2DImode) is true on Power7
then we won't return it as preferred_simd_mode but ISA 2.06 (Power7) does
introduce partial support on vector doubleword (very limitted) and more basic
support origins from ISA 2.07 (Power8) though.  To make vectorizer still
leverage those few but available V2DImode related instructions, we need to
claim it's available on VSX (Power7 and up).

gcc/ChangeLog

    PR target/92760
    * gcc/config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Use
    VECTOR_MEM_NONE_P instead of VECTOR_UNIT_NONE_P.

From-SVN: r278955

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index cffe0fb58a917a20d7187ae5c7e46c4e615c91f0..e04a48a38808c7343590bcba54b83f3dd794e2f0 100644 (file)
@@ -1,3 +1,9 @@
+2019-12-04  Kewen Lin  <linkw@gcc.gnu.org>
+
+       PR target/92760
+       * gcc/config/rs6000/rs6000.c (rs6000_preferred_simd_mode): Use
+       VECTOR_MEM_NONE_P instead of VECTOR_UNIT_NONE_P.
+
 2019-12-03  Jan Hubicka  <hubicka@ucw.cz>
 
        * ipa-fnsummary.c: Include tree-into-ssa.h.
index 3c22f64c139d00f841d9e8de9ae5bb323d19398d..23b6d99609b4fbda5276d25e776f222e22d32405 100644 (file)
@@ -4917,7 +4917,7 @@ rs6000_preferred_simd_mode (scalar_mode mode)
 {
   opt_machine_mode vmode = mode_for_vector (mode, 16 / GET_MODE_SIZE (mode));
 
-  if (vmode.exists () && !VECTOR_UNIT_NONE_P (vmode.require ()))
+  if (vmode.exists () && !VECTOR_MEM_NONE_P (vmode.require ()))
     return vmode.require ();
 
   return word_mode;