Hi,

This patch changes the default vector size for auto-vectorization on
ARM NEON to 128 bits. This new version is a result of a discussion
with Richard and Ramana.

wwwdocs changes will follow shortly.

Bootstrapped and tested on arm-linux-gnueabi. The testsuite changes
were also checked on powerpc64-suse-linux and x86_64-suse-linux.

There is one new failure:
gcc.c-torture/execute/mode-dependent-address.c fails with -O3
-funroll-loops with this patch or with -mvectorize-with-neon-quad.
Ramana has a patch to fix this
http://gcc.gnu.org/ml/gcc/2011-08/msg00284.html. I will wait with
committing my patch until this issue is resolved.

OK for mainline?

Thanks,
Ira

ChangeLog:

   * config/arm/arm.c (arm_preferred_simd_mode): Check
   TARGET_NEON_VECTORIZE_DOUBLE instead of
   TARGET_NEON_VECTORIZE_QUAD.
   (arm_expand_sync): Likewise.
   * config/arm/arm.opt (mvectorize-with-neon-quad): Make inverse
   mask of mvectorize-with-neon-double.  Add RejectNegative.
   (mvectorize-with-neon-double): New.

testsuite/ChangeLog:

   * lib/target-supports.exp (check_effective_target_vect_multiple_sizes):
   New procedure.
   (add_options_for_quad_vectors): Replace with ...
   (add_options_for_double_vectors): ... this.
   * gfortran.dg/vect/pr19049.f90: Expect more printings on targets that
    support multiple vector sizes since the vectorizer attempts to
    vectorize with both vector sizes.
   * gcc.dg/vect/no-vfa-vect-79.c,
    gcc.dg/vect/no-vfa-vect-102a.c, gcc.dg/vect/vect-outer-1a.c,
    gcc.dg/vect/vect-outer-1b.c, gcc.dg/vect/vect-outer-2b.c,
    gcc.dg/vect/vect-outer-3a.c, gcc.dg/vect/no-vfa-vect-37.c,
    gcc.dg/vect/vect-outer-3b.c, gcc.dg/vect/no-vfa-vect-101.c,
    gcc.dg/vect/no-vfa-vect-102.c, gcc.dg/vect/vect-reduc-dot-s8b.c,
    gcc.dg/vect/vect-outer-1.c, gcc.dg/vect/vect-104.c: Likewise.
   * gcc.dg/vect/vect-42.c: Run with 64 bit vectors if applicable.
   * gcc.dg/vect/vect-multitypes-6.c, gcc.dg/vect/vect-52.c,
   gcc.dg/vect/vect-54.c, gcc.dg/vect/vect-46.c, gcc.dg/vect/vect-48.c,
   gcc.dg/vect/vect-96.c, gcc.dg/vect/vect-multitypes-3.c,
   gcc.dg/vect/vect-40.c: Likewise.
  * gcc.dg/vect/vect-outer-5.c: Remove quad-vectors option as
   redundant.
  * gcc.dg/vect/vect-109.c, gcc.dg/vect/vect-peel-1.c,
   gcc.dg/vect/vect-peel-2.c, gcc.dg/vect/slp-25.c,
   gcc.dg/vect/vect-multitypes-1.c, gcc.dg/vect/slp-3.c,
   gcc.dg/vect/no-vfa-pr29145.c, gcc.dg/vect/vect-multitypes-4.c:
   Likewise.
 * gcc.dg/vect/vect-peel-4.c: Make ia global.

Index: arm.c
===================================================================
--- arm.c       (revision 177426)
+++ arm.c       (working copy)
@@ -22767,15 +22767,15 @@ arm_preferred_simd_mode (enum machine_mode mode)
     switch (mode)
       {
       case SFmode:
-       return TARGET_NEON_VECTORIZE_QUAD ? V4SFmode : V2SFmode;
+        return TARGET_NEON_VECTORIZE_DOUBLE ? V2SFmode : V4SFmode;
       case SImode:
-       return TARGET_NEON_VECTORIZE_QUAD ? V4SImode : V2SImode;
+        return TARGET_NEON_VECTORIZE_DOUBLE ? V2SImode : V4SImode;
       case HImode:
-       return TARGET_NEON_VECTORIZE_QUAD ? V8HImode : V4HImode;
+        return TARGET_NEON_VECTORIZE_DOUBLE ? V4HImode : V8HImode;
       case QImode:
-       return TARGET_NEON_VECTORIZE_QUAD ? V16QImode : V8QImode;
+        return TARGET_NEON_VECTORIZE_DOUBLE ? V8QImode : V16QImode;
       case DImode:
-       if (TARGET_NEON_VECTORIZE_QUAD)
+        if (!TARGET_NEON_VECTORIZE_DOUBLE)
          return V2DImode;
        break;

@@ -23998,7 +23998,7 @@ arm_expand_sync (enum machine_mode mode,
 static unsigned int
 arm_autovectorize_vector_sizes (void)
 {
-  return TARGET_NEON_VECTORIZE_QUAD ? 16 | 8 : 0;
+  return TARGET_NEON_VECTORIZE_DOUBLE ? 0 : 16 | 8;
 }

 static bool
Index: arm.opt
===================================================================
--- arm.opt     (revision 177426)
+++ arm.opt     (working copy)
@@ -238,9 +238,13 @@ Target Report RejectNegative Mask(LITTLE_WORDS)
 Assume big endian bytes, little endian words.  This option is deprecated.

 mvectorize-with-neon-quad
-Target Report Mask(NEON_VECTORIZE_QUAD)
+Target Report RejectNegative InverseMask(NEON_VECTORIZE_DOUBLE)
 Use Neon quad-word (rather than double-word) registers for vectorization

+mvectorize-with-neon-double
+Target Report RejectNegative Mask(NEON_VECTORIZE_DOUBLE)
+Use Neon double-word (rather than quad-word) registers for vectorization
+
 mword-relocations
 Target Report Var(target_word_relocations)
Init(TARGET_DEFAULT_WORD_RELOCATIONS)
 Only generate absolute relocations on word sized values.
Index: testsuite/lib/target-supports.exp
===================================================================
--- testsuite/lib/target-supports.exp   (revision 177426)
+++ testsuite/lib/target-supports.exp   (working copy)
@@ -3362,6 +3362,24 @@ foreach N {2 3 4 8} {
     }]
 }
 
+# Return 1 if the target supports multiple vector sizes
+
+proc check_effective_target_vect_multiple_sizes { } {
+    global et_vect_multiple_sizes
+
+    if [info exists et_vect_multiple_sizes_saved] {
+        verbose "check_effective_target_vect_multiple_sizes: using cached 
result" 2
+    } else {
+        set et_vect_multiple_sizes_saved 0
+        if { ([istarget arm*-*-*] && [check_effective_target_arm_neon]) } {
+           set et_vect_multiple_sizes_saved 1
+        }
+    }
+
+    verbose "check_effective_target_vect_multiple_sizes: returning 
$et_vect_multiple_sizes_saved" 2
+    return $et_vect_multiple_sizes_saved
+}
+
 # Return 1 if the target supports section-anchors
 
 proc check_effective_target_section_anchors { } {
@@ -3745,11 +3763,11 @@ proc add_options_for_bind_pic_locally { flags } {
     return $flags
 }
 
-# Add to FLAGS the flags needed to enable 128-bit vectors.
+# Add to FLAGS the flags needed to enable 64-bit vectors.
 
-proc add_options_for_quad_vectors { flags } {
+proc add_options_for_double_vectors { flags } {
     if [is-effective-target arm_neon_ok] {
-       return "$flags -mvectorize-with-neon-quad"
+       return "$flags -mvectorize-with-neon-double"
     }
 
     return $flags
Index: testsuite/gfortran.dg/vect/pr19049.f90
===================================================================
--- testsuite/gfortran.dg/vect/pr19049.f90      (revision 177426)
+++ testsuite/gfortran.dg/vect/pr19049.f90      (working copy)
@@ -19,6 +19,7 @@ subroutine s111 (ntimes,ld,n,ctime,dtime,a,b,c,d,e
       end
 
 ! { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } }
-! { dg-final { scan-tree-dump-times "complicated access pattern" 1 "vect" } }
+! { dg-final { scan-tree-dump-times "complicated access pattern" 1 "vect" { 
xfail vect_multiple_sizes } } }
+! { dg-final { scan-tree-dump-times "complicated access pattern" 2 "vect" { 
target vect_multiple_sizes } } }
 ! { dg-final { cleanup-tree-dump "vect" } }
 
Index: testsuite/gcc.dg/vect/vect-42.c
===================================================================
--- testsuite/gcc.dg/vect/vect-42.c     (revision 177426)
+++ testsuite/gcc.dg/vect/vect-42.c     (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_float } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/no-vfa-vect-79.c
===================================================================
--- testsuite/gcc.dg/vect/no-vfa-vect-79.c      (revision 177426)
+++ testsuite/gcc.dg/vect/no-vfa-vect-79.c      (working copy)
@@ -46,5 +46,6 @@ int main (void)
   If/when the aliasing problems are resolved, unalignment may
   prevent vectorization on some targets.  */
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail 
*-*-* } } } */
-/* { dg-final { scan-tree-dump-times "can't determine dependence between" 1 
"vect" } } */
+/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { 
xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { 
target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: testsuite/gcc.dg/vect/no-vfa-vect-102a.c
===================================================================
--- testsuite/gcc.dg/vect/no-vfa-vect-102a.c    (revision 177426)
+++ testsuite/gcc.dg/vect/no-vfa-vect-102a.c    (working copy)
@@ -53,6 +53,7 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
-/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 
"vect" } } */
+/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 
"vect" { xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 
"vect" { target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: testsuite/gcc.dg/vect/vect-outer-5.c
===================================================================
--- testsuite/gcc.dg/vect/vect-outer-5.c        (revision 177426)
+++ testsuite/gcc.dg/vect/vect-outer-5.c        (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_float } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include <signal.h>
Index: testsuite/gcc.dg/vect/vect-multitypes-6.c
===================================================================
--- testsuite/gcc.dg/vect/vect-multitypes-6.c   (revision 177426)
+++ testsuite/gcc.dg/vect/vect-multitypes-6.c   (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_int } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-52.c
===================================================================
--- testsuite/gcc.dg/vect/vect-52.c     (revision 177426)
+++ testsuite/gcc.dg/vect/vect-52.c     (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_float } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-109.c
===================================================================
--- testsuite/gcc.dg/vect/vect-109.c    (revision 177426)
+++ testsuite/gcc.dg/vect/vect-109.c    (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-54.c
===================================================================
--- testsuite/gcc.dg/vect/vect-54.c     (revision 177426)
+++ testsuite/gcc.dg/vect/vect-54.c     (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_float } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-46.c
===================================================================
--- testsuite/gcc.dg/vect/vect-46.c     (revision 177426)
+++ testsuite/gcc.dg/vect/vect-46.c     (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_float } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-peel-1.c
===================================================================
--- testsuite/gcc.dg/vect/vect-peel-1.c (revision 177426)
+++ testsuite/gcc.dg/vect/vect-peel-1.c (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-outer-1a.c
===================================================================
--- testsuite/gcc.dg/vect/vect-outer-1a.c       (revision 177426)
+++ testsuite/gcc.dg/vect/vect-outer-1a.c       (working copy)
@@ -20,5 +20,6 @@ foo (){
 }
 
 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail 
*-*-* } } } */
-/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" } 
} */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { 
xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { 
target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: testsuite/gcc.dg/vect/vect-peel-2.c
===================================================================
--- testsuite/gcc.dg/vect/vect-peel-2.c (revision 177426)
+++ testsuite/gcc.dg/vect/vect-peel-2.c (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-48.c
===================================================================
--- testsuite/gcc.dg/vect/vect-48.c     (revision 177426)
+++ testsuite/gcc.dg/vect/vect-48.c     (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_float } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-outer-1b.c
===================================================================
--- testsuite/gcc.dg/vect/vect-outer-1b.c       (revision 177426)
+++ testsuite/gcc.dg/vect/vect-outer-1b.c       (working copy)
@@ -22,5 +22,6 @@ foo (){
 }
 
 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail 
*-*-* } } } */
-/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" } 
} */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { 
xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { 
target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: testsuite/gcc.dg/vect/vect-peel-4.c
===================================================================
--- testsuite/gcc.dg/vect/vect-peel-4.c (revision 177426)
+++ testsuite/gcc.dg/vect/vect-peel-4.c (working copy)
@@ -6,12 +6,12 @@
 #define N 128
 
 int ib[N+7];
+int ia[N+1];
 
 __attribute__ ((noinline))
 int main1 ()
 {
   int i;
-  int ia[N+1];
 
   /* Don't peel keeping one load and the store aligned.  */
   for (i = 0; i <= N; i++)
Index: testsuite/gcc.dg/vect/vect-outer-2b.c
===================================================================
--- testsuite/gcc.dg/vect/vect-outer-2b.c       (revision 177426)
+++ testsuite/gcc.dg/vect/vect-outer-2b.c       (working copy)
@@ -37,5 +37,6 @@ int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "strided access in outer loop." 1 "vect" 
} } */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { 
xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { 
target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: testsuite/gcc.dg/vect/vect-outer-3a.c
===================================================================
--- testsuite/gcc.dg/vect/vect-outer-3a.c       (revision 177426)
+++ testsuite/gcc.dg/vect/vect-outer-3a.c       (working copy)
@@ -49,5 +49,6 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail 
vect_no_align } } } */
-/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 2 
"vect" } } */
+/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 2 
"vect" { xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "step doesn't divide the vector-size" 3 
"vect" { target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: testsuite/gcc.dg/vect/no-vfa-vect-37.c
===================================================================
--- testsuite/gcc.dg/vect/no-vfa-vect-37.c      (revision 177426)
+++ testsuite/gcc.dg/vect/no-vfa-vect-37.c      (working copy)
@@ -58,5 +58,6 @@ int main (void)
    If/when the aliasing problems are resolved, unalignment may
    prevent vectorization on some targets.  */
 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { xfail 
*-*-* } } } */
-/* { dg-final { scan-tree-dump-times "can't determine dependence between" 2 
"vect" } } */
+/* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { 
xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "can't determine dependence" 4 "vect" { 
target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: testsuite/gcc.dg/vect/slp-25.c
===================================================================
--- testsuite/gcc.dg/vect/slp-25.c      (revision 177426)
+++ testsuite/gcc.dg/vect/slp-25.c      (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-outer-3b.c
===================================================================
--- testsuite/gcc.dg/vect/vect-outer-3b.c       (revision 177426)
+++ testsuite/gcc.dg/vect/vect-outer-3b.c       (working copy)
@@ -49,5 +49,6 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail 
*-*-* } } } */
-/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" } 
} */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { 
xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 4 "vect" { 
target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: testsuite/gcc.dg/vect/no-vfa-vect-101.c
===================================================================
--- testsuite/gcc.dg/vect/no-vfa-vect-101.c     (revision 177426)
+++ testsuite/gcc.dg/vect/no-vfa-vect-101.c     (working copy)
@@ -45,6 +45,7 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
-/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" } } 
*/
+/* { dg-final { scan-tree-dump-times "can't determine dependence" 1 "vect" { 
xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "can't determine dependence" 2 "vect" { 
target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: testsuite/gcc.dg/vect/no-vfa-vect-102.c
===================================================================
--- testsuite/gcc.dg/vect/no-vfa-vect-102.c     (revision 177426)
+++ testsuite/gcc.dg/vect/no-vfa-vect-102.c     (working copy)
@@ -53,6 +53,7 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
-/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 
"vect" } } */
+/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 
"vect" { xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 
"vect" { target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: testsuite/gcc.dg/vect/vect-96.c
===================================================================
--- testsuite/gcc.dg/vect/vect-96.c     (revision 177426)
+++ testsuite/gcc.dg/vect/vect-96.c     (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_int } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-multitypes-1.c
===================================================================
--- testsuite/gcc.dg/vect/vect-multitypes-1.c   (revision 177426)
+++ testsuite/gcc.dg/vect/vect-multitypes-1.c   (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c
===================================================================
--- testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c  (revision 177426)
+++ testsuite/gcc.dg/vect/vect-reduc-dot-s8b.c  (working copy)
@@ -58,7 +58,8 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vect_recog_dot_prod_pattern: detected" 1 
"vect" { xfail *-*-* } } } */
-/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 
1 "vect" } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 
1 "vect" { xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 
2 "vect" { target vect_multiple_sizes } } } */
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail 
*-*-* } } } */
 
Index: testsuite/gcc.dg/vect/vect-outer-1.c
===================================================================
--- testsuite/gcc.dg/vect/vect-outer-1.c        (revision 177426)
+++ testsuite/gcc.dg/vect/vect-outer-1.c        (working copy)
@@ -22,5 +22,6 @@ foo (){
 }
 
 /* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED" 1 "vect" { xfail 
*-*-* } } } */
-/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" } 
} */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 1 "vect" { 
xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "strided access in outer loop" 2 "vect" { 
target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: testsuite/gcc.dg/vect/slp-3.c
===================================================================
--- testsuite/gcc.dg/vect/slp-3.c       (revision 177426)
+++ testsuite/gcc.dg/vect/slp-3.c       (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/no-vfa-pr29145.c
===================================================================
--- testsuite/gcc.dg/vect/no-vfa-pr29145.c      (revision 177426)
+++ testsuite/gcc.dg/vect/no-vfa-pr29145.c      (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-multitypes-3.c
===================================================================
--- testsuite/gcc.dg/vect/vect-multitypes-3.c   (revision 177426)
+++ testsuite/gcc.dg/vect/vect-multitypes-3.c   (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_int } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-40.c
===================================================================
--- testsuite/gcc.dg/vect/vect-40.c     (revision 177426)
+++ testsuite/gcc.dg/vect/vect-40.c     (working copy)
@@ -1,4 +1,5 @@
 /* { dg-require-effective-target vect_float } */
+/* { dg-add-options double_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"
Index: testsuite/gcc.dg/vect/vect-104.c
===================================================================
--- testsuite/gcc.dg/vect/vect-104.c    (revision 177426)
+++ testsuite/gcc.dg/vect/vect-104.c    (working copy)
@@ -64,6 +64,7 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" } } */
-/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 
"vect" } } */
+/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 1 
"vect" { xfail vect_multiple_sizes } } } */
+/* { dg-final { scan-tree-dump-times "possible dependence between data-refs" 2 
"vect" { target vect_multiple_sizes } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: testsuite/gcc.dg/vect/vect-multitypes-4.c
===================================================================
--- testsuite/gcc.dg/vect/vect-multitypes-4.c   (revision 177426)
+++ testsuite/gcc.dg/vect/vect-multitypes-4.c   (working copy)
@@ -1,5 +1,4 @@
 /* { dg-require-effective-target vect_int } */
-/* { dg-add-options quad_vectors } */
 
 #include <stdarg.h>
 #include "tree-vect.h"

Reply via email to