Patchwork [9/9] Testsuite: Replace vect_strided with vect_stridedN

login
register
mail settings
Submitter Richard Sandiford
Date April 12, 2011, 2:28 p.m.
Message ID <g4mxjvee7b.fsf@linaro.org>
Download mbox | patch
Permalink /patch/90816/
State New
Headers show

Comments

Richard Sandiford - April 12, 2011, 2:28 p.m.
This patch replaces the general vect_strided target selector with
a group of vect_stridedN selectors, one for each tested stride factor N.

Also, some tests used vect_interleave && vect_extract_even_odd for
strided accesses.  The two conditions used to be equivalent, but aren't
after this series for ARM, so I've replaced them with vect_stridedN instead.

Some tests used vect_interleave for loops that could be vectorised
even without extract-even/odd support.  vect_interleave used to be
a looser condition than vect_stridedN, but again isn't after this
series, so I've used vect_interleave || vect_stridedN where necessary.

Tested on x86_64-linux-gnu and arm-linux-gnueabi.  OK to install?

Richard


gcc/testsuite/
	* lib/target-supports.exp (check_effective_target_vect_strided):
	Replace with...
	(check_effective_target_vect_strided2)
	(check_effective_target_vect_strided3)
	(check_effective_target_vect_strided4)
	(check_effective_target_vect_strided8): ...these new functions.

	* gcc.dg/vect/O3-pr39675-2.c: Update accordingly.
	* gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c: Likewise.
	* gcc.dg/vect/fast-math-slp-27.c: Likewise.
	* gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c: Likewise.
	* gcc.dg/vect/pr37539.c: Likewise.
	* gcc.dg/vect/slp-11a.c: Likewise.
	* gcc.dg/vect/slp-11b.c: Likewise.
	* gcc.dg/vect/slp-11c.c: Likewise.
	* gcc.dg/vect/slp-12a.c: Likewise.
	* gcc.dg/vect/slp-12b.c: Likewise.
	* gcc.dg/vect/slp-18.c: Likewise.
	* gcc.dg/vect/slp-19a.c: Likewise.
	* gcc.dg/vect/slp-19b.c: Likewise.
	* gcc.dg/vect/slp-21.c: Likewise.
	* gcc.dg/vect/slp-23.c: Likewise.
	* gcc.dg/vect/vect-cselim-1.c: Likewise.

	* gcc.dg/vect/fast-math-vect-complex-3.c: Use vect_stridedN
	instead of vect_interleave && vect_extract_even_odd.
	* gcc.dg/vect/no-scevccp-outer-10a.c: Likewise.
	* gcc.dg/vect/no-scevccp-outer-10b.c: Likewise.
	* gcc.dg/vect/no-scevccp-outer-20.c: Likewise.
	* gcc.dg/vect/vect-1.c: Likewise.
	* gcc.dg/vect/vect-10.c: Likewise.
	* gcc.dg/vect/vect-98.c: Likewise.
	* gcc.dg/vect/vect-107.c: Likewise.
	* gcc.dg/vect/vect-strided-a-mult.c: Likewise.
	* gcc.dg/vect/vect-strided-a-u16-i2.c: Likewise.
	* gcc.dg/vect/vect-strided-a-u16-i4.c: Likewise.
	* gcc.dg/vect/vect-strided-a-u16-mult.c: Likewise.
	* gcc.dg/vect/vect-strided-a-u32-mult.c: Likewise.
	* gcc.dg/vect/vect-strided-a-u8-i2-gap.c: Likewise.
	* gcc.dg/vect/vect-strided-a-u8-i8-gap2.c: Likewise.
	* gcc.dg/vect/vect-strided-a-u8-i8-gap7.c: Likewise.
	* gcc.dg/vect/vect-strided-float.c: Likewise.
	* gcc.dg/vect/vect-strided-mult-char-ls.c: Likewise.
	* gcc.dg/vect/vect-strided-mult.c: Likewise.
	* gcc.dg/vect/vect-strided-same-dr.c: Likewise.
	* gcc.dg/vect/vect-strided-u16-i2.c: Likewise.
	* gcc.dg/vect/vect-strided-u16-i4.c: Likewise.
	* gcc.dg/vect/vect-strided-u32-i4.c: Likewise.
	* gcc.dg/vect/vect-strided-u32-i8.c: Likewise.
	* gcc.dg/vect/vect-strided-u32-mult.c: Likewise.
	* gcc.dg/vect/vect-strided-u8-i2-gap.c: Likewise.
	* gcc.dg/vect/vect-strided-u8-i2.c: Likewise.
	* gcc.dg/vect/vect-strided-u8-i8-gap2.c: Likewise.
	* gcc.dg/vect/vect-strided-u8-i8-gap4.c: Likewise.
	* gcc.dg/vect/vect-strided-u8-i8-gap7.c: Likewise.
	* gcc.dg/vect/vect-strided-u8-i8.c: Likewise.
	* gcc.dg/vect/vect-vfa-03.c: Likewise.

	* gcc.dg/vect/no-scevccp-outer-18.c: Add vect_stridedN to the
	target condition.
	* gcc.dg/vect/pr30843.c: Likewise.
	* gcc.dg/vect/pr33866.c: Likewise.
	* gcc.dg/vect/slp-reduc-6.c: Likewise.
	* gcc.dg/vect/vect-strided-store-a-u8-i2.c: Likewise.
	* gcc.dg/vect/vect-strided-store-u16-i4.c: Likewise.
	* gcc.dg/vect/vect-strided-store-u32-i2.c: Likewise.
Richard Guenther - April 15, 2011, 12:43 p.m.
On Tue, Apr 12, 2011 at 4:28 PM, Richard Sandiford
<richard.sandiford@linaro.org> wrote:
> This patch replaces the general vect_strided target selector with
> a group of vect_stridedN selectors, one for each tested stride factor N.
>
> Also, some tests used vect_interleave && vect_extract_even_odd for
> strided accesses.  The two conditions used to be equivalent, but aren't
> after this series for ARM, so I've replaced them with vect_stridedN instead.
>
> Some tests used vect_interleave for loops that could be vectorised
> even without extract-even/odd support.  vect_interleave used to be
> a looser condition than vect_stridedN, but again isn't after this
> series, so I've used vect_interleave || vect_stridedN where necessary.
>
> Tested on x86_64-linux-gnu and arm-linux-gnueabi.  OK to install?

Ok.

Thanks,
Richard.

> Richard
>
>
> gcc/testsuite/
>        * lib/target-supports.exp (check_effective_target_vect_strided):
>        Replace with...
>        (check_effective_target_vect_strided2)
>        (check_effective_target_vect_strided3)
>        (check_effective_target_vect_strided4)
>        (check_effective_target_vect_strided8): ...these new functions.
>
>        * gcc.dg/vect/O3-pr39675-2.c: Update accordingly.
>        * gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c: Likewise.
>        * gcc.dg/vect/fast-math-slp-27.c: Likewise.
>        * gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c: Likewise.
>        * gcc.dg/vect/pr37539.c: Likewise.
>        * gcc.dg/vect/slp-11a.c: Likewise.
>        * gcc.dg/vect/slp-11b.c: Likewise.
>        * gcc.dg/vect/slp-11c.c: Likewise.
>        * gcc.dg/vect/slp-12a.c: Likewise.
>        * gcc.dg/vect/slp-12b.c: Likewise.
>        * gcc.dg/vect/slp-18.c: Likewise.
>        * gcc.dg/vect/slp-19a.c: Likewise.
>        * gcc.dg/vect/slp-19b.c: Likewise.
>        * gcc.dg/vect/slp-21.c: Likewise.
>        * gcc.dg/vect/slp-23.c: Likewise.
>        * gcc.dg/vect/vect-cselim-1.c: Likewise.
>
>        * gcc.dg/vect/fast-math-vect-complex-3.c: Use vect_stridedN
>        instead of vect_interleave && vect_extract_even_odd.
>        * gcc.dg/vect/no-scevccp-outer-10a.c: Likewise.
>        * gcc.dg/vect/no-scevccp-outer-10b.c: Likewise.
>        * gcc.dg/vect/no-scevccp-outer-20.c: Likewise.
>        * gcc.dg/vect/vect-1.c: Likewise.
>        * gcc.dg/vect/vect-10.c: Likewise.
>        * gcc.dg/vect/vect-98.c: Likewise.
>        * gcc.dg/vect/vect-107.c: Likewise.
>        * gcc.dg/vect/vect-strided-a-mult.c: Likewise.
>        * gcc.dg/vect/vect-strided-a-u16-i2.c: Likewise.
>        * gcc.dg/vect/vect-strided-a-u16-i4.c: Likewise.
>        * gcc.dg/vect/vect-strided-a-u16-mult.c: Likewise.
>        * gcc.dg/vect/vect-strided-a-u32-mult.c: Likewise.
>        * gcc.dg/vect/vect-strided-a-u8-i2-gap.c: Likewise.
>        * gcc.dg/vect/vect-strided-a-u8-i8-gap2.c: Likewise.
>        * gcc.dg/vect/vect-strided-a-u8-i8-gap7.c: Likewise.
>        * gcc.dg/vect/vect-strided-float.c: Likewise.
>        * gcc.dg/vect/vect-strided-mult-char-ls.c: Likewise.
>        * gcc.dg/vect/vect-strided-mult.c: Likewise.
>        * gcc.dg/vect/vect-strided-same-dr.c: Likewise.
>        * gcc.dg/vect/vect-strided-u16-i2.c: Likewise.
>        * gcc.dg/vect/vect-strided-u16-i4.c: Likewise.
>        * gcc.dg/vect/vect-strided-u32-i4.c: Likewise.
>        * gcc.dg/vect/vect-strided-u32-i8.c: Likewise.
>        * gcc.dg/vect/vect-strided-u32-mult.c: Likewise.
>        * gcc.dg/vect/vect-strided-u8-i2-gap.c: Likewise.
>        * gcc.dg/vect/vect-strided-u8-i2.c: Likewise.
>        * gcc.dg/vect/vect-strided-u8-i8-gap2.c: Likewise.
>        * gcc.dg/vect/vect-strided-u8-i8-gap4.c: Likewise.
>        * gcc.dg/vect/vect-strided-u8-i8-gap7.c: Likewise.
>        * gcc.dg/vect/vect-strided-u8-i8.c: Likewise.
>        * gcc.dg/vect/vect-vfa-03.c: Likewise.
>
>        * gcc.dg/vect/no-scevccp-outer-18.c: Add vect_stridedN to the
>        target condition.
>        * gcc.dg/vect/pr30843.c: Likewise.
>        * gcc.dg/vect/pr33866.c: Likewise.
>        * gcc.dg/vect/slp-reduc-6.c: Likewise.
>        * gcc.dg/vect/vect-strided-store-a-u8-i2.c: Likewise.
>        * gcc.dg/vect/vect-strided-store-u16-i4.c: Likewise.
>        * gcc.dg/vect/vect-strided-store-u32-i2.c: Likewise.
>
> Index: gcc/testsuite/lib/target-supports.exp
> ===================================================================
> --- gcc/testsuite/lib/target-supports.exp       2011-04-12 15:18:24.000000000 +0100
> +++ gcc/testsuite/lib/target-supports.exp       2011-04-12 15:22:06.000000000 +0100
> @@ -3143,22 +3143,30 @@ proc check_effective_target_vect_interle
>     return $et_vect_interleave_saved
>  }
>
> -# Return 1 if the target supports vector interleaving and extract even/odd, 0 otherwise.
> -proc check_effective_target_vect_strided { } {
> -    global et_vect_strided_saved
> +foreach N {2 3 4 8} {
> +    eval [string map [list N $N] {
> +       # Return 1 if the target supports 2-vector interleaving
> +       proc check_effective_target_vect_stridedN { } {
> +           global et_vect_stridedN_saved
> +
> +           if [info exists et_vect_stridedN_saved] {
> +               verbose "check_effective_target_vect_stridedN: using cached result" 2
> +           } else {
> +               set et_vect_stridedN_saved 0
> +               if { (N & -N) == N
> +                    && [check_effective_target_vect_interleave]
> +                    && [check_effective_target_vect_extract_even_odd] } {
> +                   set et_vect_stridedN_saved 1
> +               }
> +               if { [istarget arm*-*-*] && N >= 2 && N <= 4 } {
> +                   set et_vect_stridedN_saved 1
> +               }
> +           }
>
> -    if [info exists et_vect_strided_saved] {
> -        verbose "check_effective_target_vect_strided: using cached result" 2
> -    } else {
> -        set et_vect_strided_saved 0
> -        if { [check_effective_target_vect_interleave]
> -             && [check_effective_target_vect_extract_even_odd] } {
> -           set et_vect_strided_saved 1
> -        }
> -    }
> -
> -    verbose "check_effective_target_vect_strided: returning $et_vect_strided_saved" 2
> -    return $et_vect_strided_saved
> +           verbose "check_effective_target_vect_stridedN: returning $et_vect_stridedN_saved" 2
> +           return $et_vect_stridedN_saved
> +       }
> +    }]
>  }
>
>  # Return 1 if the target supports section-anchors
> Index: gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c    2011-04-12 15:18:24.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c    2011-04-12 15:22:06.000000000 +0100
> @@ -26,7 +26,7 @@ foo ()
>     }
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c  2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c  2011-04-12 15:22:06.000000000 +0100
> @@ -113,7 +113,7 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target { vect_strided && vect_int_mult } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target { vect_strided8 && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided8 && vect_int_mult } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c        2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c        2011-04-12 15:22:06.000000000 +0100
> @@ -13,5 +13,5 @@ void foo(void)
>    }
>  }
>
> -/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided } } } */
> +/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c     2011-04-12 15:22:06.000000000 +0100
> @@ -65,5 +65,5 @@ main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || {! vect_strided } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || { ! vect_strided2 } } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/pr37539.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/pr37539.c 2011-04-12 15:18:24.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/pr37539.c 2011-04-12 15:22:06.000000000 +0100
> @@ -40,7 +40,7 @@ int main ()
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_strided } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_strided4 && vect_strided2 } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
>
> Index: gcc/testsuite/gcc.dg/vect/slp-11a.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-11a.c 2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-11a.c 2011-04-12 15:22:06.000000000 +0100
> @@ -69,7 +69,7 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided && vect_int_mult } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided && vect_int_mult } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
>  /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/slp-11b.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-11b.c 2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-11b.c 2011-04-12 15:22:06.000000000 +0100
> @@ -43,7 +43,7 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided && vect_int_mult } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided && vect_int_mult } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided4 && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided4 && vect_int_mult } } } } } */
>  /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/slp-11c.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-11c.c 2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-11c.c 2011-04-12 15:22:06.000000000 +0100
> @@ -40,7 +40,7 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided } && vect_int_mult } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { { vect_uintfloat_cvt && vect_strided } && vect_int_mult } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } } */
>  /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0  "vect"  } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/slp-12a.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-12a.c 2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-12a.c 2011-04-12 15:22:06.000000000 +0100
> @@ -73,8 +73,8 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided && vect_int_mult } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided && vect_int_mult } } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_strided && vect_int_mult } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided && vect_int_mult } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/slp-12b.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-12b.c 2011-04-12 15:18:24.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-12b.c 2011-04-12 15:22:06.000000000 +0100
> @@ -43,9 +43,9 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  {target { vect_strided && vect_int_mult } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  {target { { ! { vect_int_mult }} || { ! {vect_strided}}} } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  {target { vect_strided && vect_int_mult } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  {target { { ! { vect_int_mult }} || { ! {vect_strided}}} } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_strided2 && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  { target { { ! { vect_strided2 && vect_int_mult } } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target { vect_strided2 && vect_int_mult } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { { ! { vect_strided2 && vect_int_mult } } } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/slp-18.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-18.c  2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-18.c  2011-04-12 15:22:06.000000000 +0100
> @@ -91,7 +91,7 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target { vect_strided } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided8 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/slp-19a.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-19a.c 2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-19a.c 2011-04-12 15:22:06.000000000 +0100
> @@ -54,8 +54,8 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided8 } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided8 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided8} } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/slp-19b.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-19b.c 2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-19b.c 2011-04-12 15:22:06.000000000 +0100
> @@ -51,8 +51,8 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided4 } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided4 } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/slp-21.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-21.c  2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-21.c  2011-04-12 15:22:06.000000000 +0100
> @@ -199,9 +199,9 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  { target { vect_strided || vect_extract_even_odd } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target  { ! { vect_strided || vect_extract_even_odd } } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided }  } } */
> -/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  { target { vect_strided4 || vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target  { ! { vect_strided4 || vect_extract_even_odd } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided4 }  } } */
> +/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided4 } } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/slp-23.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-23.c  2011-04-12 15:18:24.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-23.c  2011-04-12 15:22:06.000000000 +0100
> @@ -106,8 +106,8 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided } && {! { vect_no_align} } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided || vect_no_align} } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided8 && { ! { vect_no_align} } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided8 || vect_no_align } } } } } */
>  /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-cselim-1.c   2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-cselim-1.c   2011-04-12 15:22:06.000000000 +0100
> @@ -82,5 +82,5 @@ main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || {! vect_strided } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || { ! vect_strided2 } } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c        2011-04-12 15:18:24.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c        2011-04-12 15:22:06.000000000 +0100
> @@ -56,5 +56,5 @@ main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave  && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c    2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c    2011-04-12 15:22:06.000000000 +0100
> @@ -54,5 +54,5 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c    2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c    2011-04-12 15:22:06.000000000 +0100
> @@ -53,5 +53,5 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c     2011-04-12 15:22:06.000000000 +0100
> @@ -50,5 +50,5 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/vect-1.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-1.c  2011-04-12 15:18:24.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-1.c  2011-04-12 15:22:06.000000000 +0100
> @@ -85,6 +85,6 @@ foo (int n)
>   fbar (a);
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_extract_even_odd } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_extract_even_odd } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_strided2 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/vect-10.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-10.c 2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-10.c 2011-04-12 15:22:06.000000000 +0100
> @@ -22,5 +22,5 @@ int foo ()
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_strided2 } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/vect-98.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-98.c 2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-98.c 2011-04-12 15:22:06.000000000 +0100
> @@ -38,6 +38,6 @@ int main (void)
>  }
>
>  /* Needs interleaving support.  */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided4 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/vect-107.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-107.c        2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-107.c        2011-04-12 15:22:06.000000000 +0100
> @@ -40,6 +40,6 @@ int main (void)
>   return main1 ();
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_extract_even_odd } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_extract_even_odd } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c     2011-04-12 15:22:06.000000000 +0100
> @@ -71,6 +71,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c   2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c   2011-04-12 15:22:06.000000000 +0100
> @@ -55,6 +55,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c   2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c   2011-04-12 15:22:06.000000000 +0100
> @@ -68,6 +68,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c 2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c 2011-04-12 15:22:06.000000000 +0100
> @@ -62,6 +62,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c 2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c 2011-04-12 15:22:06.000000000 +0100
> @@ -61,6 +61,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c        2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c        2011-04-12 15:22:06.000000000 +0100
> @@ -69,6 +69,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c       2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c       2011-04-12 15:22:06.000000000 +0100
> @@ -76,6 +76,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c       2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c       2011-04-12 15:22:06.000000000 +0100
> @@ -81,6 +81,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-float.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-float.c      2011-04-12 15:18:25.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-float.c      2011-04-12 15:22:06.000000000 +0100
> @@ -39,7 +39,7 @@ int main (void)
>  }
>
>  /* Needs interleaving support.  */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c       2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c       2011-04-12 15:22:06.000000000 +0100
> @@ -71,6 +71,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-mult.c       2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-mult.c       2011-04-12 15:22:06.000000000 +0100
> @@ -71,6 +71,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c    2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c    2011-04-12 15:22:06.000000000 +0100
> @@ -72,5 +72,5 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c     2011-04-12 15:22:06.000000000 +0100
> @@ -55,6 +55,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c     2011-04-12 15:22:06.000000000 +0100
> @@ -68,6 +68,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c     2011-04-12 15:22:06.000000000 +0100
> @@ -63,6 +63,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c     2011-04-12 15:22:06.000000000 +0100
> @@ -77,6 +77,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c   2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c   2011-04-12 15:22:06.000000000 +0100
> @@ -60,6 +60,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c  2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c  2011-04-12 15:22:06.000000000 +0100
> @@ -71,6 +71,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c      2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c      2011-04-12 15:22:06.000000000 +0100
> @@ -54,6 +54,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c 2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c 2011-04-12 15:22:06.000000000 +0100
> @@ -78,6 +78,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c 2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c 2011-04-12 15:22:06.000000000 +0100
> @@ -98,6 +98,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c 2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c 2011-04-12 15:22:06.000000000 +0100
> @@ -83,6 +83,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c      2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c      2011-04-12 15:22:06.000000000 +0100
> @@ -85,6 +85,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-vfa-03.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-vfa-03.c     2011-04-12 15:22:06.000000000 +0100
> @@ -53,6 +53,6 @@ main (void)
>  }
>
>  /* Needs interleaving support.  */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  { vect_interleave && vect_extract_even_odd } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided2 } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c     2011-04-12 15:22:06.000000000 +0100
> @@ -47,5 +47,5 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_interleave } } } */
> +/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/pr30843.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/pr30843.c 2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/pr30843.c 2011-04-12 15:22:06.000000000 +0100
> @@ -20,6 +20,6 @@ void dacP98FillRGBMap (unsigned char *pB
>     }
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided4 } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/pr33866.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/pr33866.c 2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/pr33866.c 2011-04-12 15:22:06.000000000 +0100
> @@ -27,6 +27,6 @@ void test_select_fill_hyper_simple (long
>  }
>
>  /* Needs interleaving support.  */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/slp-reduc-6.c     2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/slp-reduc-6.c     2011-04-12 15:22:06.000000000 +0100
> @@ -42,7 +42,7 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! vect_unpack } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! { vect_unpack || vect_strided2 } } } } } } */
>  /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
>  /* { dg-final { scan-tree-dump-times "different interleaving chains in one node" 1 "vect" { target { ! vect_no_int_add } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c      2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c      2011-04-12 15:22:06.000000000 +0100
> @@ -55,6 +55,6 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave || vect_strided2 } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c       2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c       2011-04-12 15:22:06.000000000 +0100
> @@ -65,8 +65,8 @@ int main (void)
>   return 0;
>  }
>
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target { vect_interleave && vect_pack_trunc  } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { { ! { vect_interleave } } && { vect_pack_trunc } } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target { { vect_interleave || vect_strided4 } && vect_pack_trunc } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { { ! { vect_interleave || vect_strided4 } } && { vect_pack_trunc } } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
>
> Index: gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
> ===================================================================
> --- gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c       2011-04-12 12:16:46.000000000 +0100
> +++ gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c       2011-04-12 15:22:06.000000000 +0100
> @@ -39,7 +39,7 @@ int main (void)
>  }
>
>  /* Needs interleaving support.  */
> -/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
> -/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
> +/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave || vect_strided2 } } } } */
>  /* { dg-final { cleanup-tree-dump "vect" } } */
>
>

Patch

Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp	2011-04-12 15:18:24.000000000 +0100
+++ gcc/testsuite/lib/target-supports.exp	2011-04-12 15:22:06.000000000 +0100
@@ -3143,22 +3143,30 @@  proc check_effective_target_vect_interle
     return $et_vect_interleave_saved
 }
 
-# Return 1 if the target supports vector interleaving and extract even/odd, 0 otherwise.
-proc check_effective_target_vect_strided { } {
-    global et_vect_strided_saved
+foreach N {2 3 4 8} {
+    eval [string map [list N $N] {
+	# Return 1 if the target supports 2-vector interleaving
+	proc check_effective_target_vect_stridedN { } {
+	    global et_vect_stridedN_saved
+
+	    if [info exists et_vect_stridedN_saved] {
+		verbose "check_effective_target_vect_stridedN: using cached result" 2
+	    } else {
+		set et_vect_stridedN_saved 0
+		if { (N & -N) == N
+		     && [check_effective_target_vect_interleave]
+		     && [check_effective_target_vect_extract_even_odd] } {
+		    set et_vect_stridedN_saved 1
+		}
+		if { [istarget arm*-*-*] && N >= 2 && N <= 4 } {
+		    set et_vect_stridedN_saved 1
+		}
+	    }
 
-    if [info exists et_vect_strided_saved] {
-        verbose "check_effective_target_vect_strided: using cached result" 2
-    } else {
-        set et_vect_strided_saved 0
-        if { [check_effective_target_vect_interleave]
-             && [check_effective_target_vect_extract_even_odd] } {
-           set et_vect_strided_saved 1
-        }
-    }
-
-    verbose "check_effective_target_vect_strided: returning $et_vect_strided_saved" 2
-    return $et_vect_strided_saved
+	    verbose "check_effective_target_vect_stridedN: returning $et_vect_stridedN_saved" 2
+	    return $et_vect_stridedN_saved
+	}
+    }]
 }
 
 # Return 1 if the target supports section-anchors
Index: gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c	2011-04-12 15:18:24.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/O3-pr39675-2.c	2011-04-12 15:22:06.000000000 +0100
@@ -26,7 +26,7 @@  foo ()
     }
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-slp-12.c	2011-04-12 15:22:06.000000000 +0100
@@ -113,7 +113,7 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target { vect_strided && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target { vect_strided8 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" {target { vect_strided8 && vect_int_mult } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/fast-math-slp-27.c	2011-04-12 15:22:06.000000000 +0100
@@ -13,5 +13,5 @@  void foo(void)
    }
 }
 
-/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided } } } */
+/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/if-cvt-stores-vect-ifcvt-18.c	2011-04-12 15:22:06.000000000 +0100
@@ -65,5 +65,5 @@  main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || {! vect_strided } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || { ! vect_strided2 } } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/pr37539.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/pr37539.c	2011-04-12 15:18:24.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/pr37539.c	2011-04-12 15:22:06.000000000 +0100
@@ -40,7 +40,7 @@  int main ()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target vect_strided } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { target { vect_strided4 && vect_strided2 } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
 
Index: gcc/testsuite/gcc.dg/vect/slp-11a.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-11a.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-11a.c	2011-04-12 15:22:06.000000000 +0100
@@ -69,7 +69,7 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/slp-11b.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-11b.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-11b.c	2011-04-12 15:22:06.000000000 +0100
@@ -43,7 +43,7 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided4 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided4 && vect_int_mult } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/slp-11c.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-11c.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-11c.c	2011-04-12 15:22:06.000000000 +0100
@@ -40,7 +40,7 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided } && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { { vect_uintfloat_cvt && vect_strided } && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { { vect_uintfloat_cvt && vect_strided2 } && vect_int_mult } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0  "vect"  } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/slp-12a.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-12a.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-12a.c	2011-04-12 15:22:06.000000000 +0100
@@ -73,8 +73,8 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided && vect_int_mult } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_strided && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target { vect_strided8 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! { vect_strided8 && vect_int_mult } } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/slp-12b.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-12b.c	2011-04-12 15:18:24.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-12b.c	2011-04-12 15:22:06.000000000 +0100
@@ -43,9 +43,9 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  {target { vect_strided && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  {target { { ! { vect_int_mult }} || { ! {vect_strided}}} } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  {target { vect_strided && vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  {target { { ! { vect_int_mult }} || { ! {vect_strided}}} } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_strided2 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  { target { { ! { vect_strided2 && vect_int_mult } } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { target { vect_strided2 && vect_int_mult } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { { ! { vect_strided2 && vect_int_mult } } } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-18.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-18.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-18.c	2011-04-12 15:22:06.000000000 +0100
@@ -91,7 +91,7 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_strided } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target { vect_strided } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided8 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-19a.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-19a.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-19a.c	2011-04-12 15:22:06.000000000 +0100
@@ -54,8 +54,8 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided8 } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided8 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided8} } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/slp-19b.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-19b.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-19b.c	2011-04-12 15:22:06.000000000 +0100
@@ -51,8 +51,8 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { target { ! vect_strided4 } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { target { ! vect_strided4 } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/slp-21.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-21.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-21.c	2011-04-12 15:22:06.000000000 +0100
@@ -199,9 +199,9 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  { target { vect_strided || vect_extract_even_odd } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target  { ! { vect_strided || vect_extract_even_odd } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided }  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  { target { vect_strided4 || vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target  { ! { vect_strided4 || vect_extract_even_odd } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { target vect_strided4 }  } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { target { ! { vect_strided4 } } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-23.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-23.c	2011-04-12 15:18:24.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-23.c	2011-04-12 15:22:06.000000000 +0100
@@ -106,8 +106,8 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided } && {! { vect_no_align} } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided || vect_no_align} } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target { vect_strided8 && { ! { vect_no_align} } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { ! { vect_strided8 || vect_no_align } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-cselim-1.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-cselim-1.c	2011-04-12 15:22:06.000000000 +0100
@@ -82,5 +82,5 @@  main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || {! vect_strided } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { xfail { vect_no_align || { ! vect_strided2 } } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c	2011-04-12 15:18:24.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/fast-math-vect-complex-3.c	2011-04-12 15:22:06.000000000 +0100
@@ -56,5 +56,5 @@  main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave  && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10a.c	2011-04-12 15:22:06.000000000 +0100
@@ -54,5 +54,5 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/no-scevccp-outer-10b.c	2011-04-12 15:22:06.000000000 +0100
@@ -53,5 +53,5 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/no-scevccp-outer-20.c	2011-04-12 15:22:06.000000000 +0100
@@ -50,5 +50,5 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-1.c	2011-04-12 15:18:24.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-1.c	2011-04-12 15:22:06.000000000 +0100
@@ -85,6 +85,6 @@  foo (int n)
   fbar (a);
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_extract_even_odd } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_extract_even_odd } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 6 loops" 1 "vect" { target vect_strided2 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 5 loops" 1 "vect" { xfail vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-10.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-10.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-10.c	2011-04-12 15:22:06.000000000 +0100
@@ -22,5 +22,5 @@  int foo ()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { ! vect_strided2 } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-98.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-98.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-98.c	2011-04-12 15:22:06.000000000 +0100
@@ -38,6 +38,6 @@  int main (void)
 }
 
 /* Needs interleaving support.  */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided4 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided4 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-107.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-107.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-107.c	2011-04-12 15:22:06.000000000 +0100
@@ -40,6 +40,6 @@  int main (void)
   return main1 ();
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_extract_even_odd } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_extract_even_odd } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c	2011-04-12 15:22:06.000000000 +0100
@@ -71,6 +71,6 @@  int main (void)
   return 0;
 }   
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i2.c	2011-04-12 15:22:06.000000000 +0100
@@ -55,6 +55,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-i4.c	2011-04-12 15:22:06.000000000 +0100
@@ -68,6 +68,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u16-mult.c	2011-04-12 15:22:06.000000000 +0100
@@ -62,6 +62,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u32-mult.c	2011-04-12 15:22:06.000000000 +0100
@@ -61,6 +61,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i2-gap.c	2011-04-12 15:22:06.000000000 +0100
@@ -69,6 +69,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap2.c	2011-04-12 15:22:06.000000000 +0100
@@ -76,6 +76,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-a-u8-i8-gap7.c	2011-04-12 15:22:06.000000000 +0100
@@ -81,6 +81,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-float.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-float.c	2011-04-12 15:18:25.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-float.c	2011-04-12 15:22:06.000000000 +0100
@@ -39,7 +39,7 @@  int main (void)
 }
 
 /* Needs interleaving support.  */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-mult-char-ls.c	2011-04-12 15:22:06.000000000 +0100
@@ -71,6 +71,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-mult.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-mult.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-mult.c	2011-04-12 15:22:06.000000000 +0100
@@ -71,6 +71,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-same-dr.c	2011-04-12 15:22:06.000000000 +0100
@@ -72,5 +72,5 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u16-i2.c	2011-04-12 15:22:06.000000000 +0100
@@ -55,6 +55,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u16-i4.c	2011-04-12 15:22:06.000000000 +0100
@@ -68,6 +68,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u32-i4.c	2011-04-12 15:22:06.000000000 +0100
@@ -63,6 +63,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided4 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u32-i8.c	2011-04-12 15:22:06.000000000 +0100
@@ -77,6 +77,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u32-mult.c	2011-04-12 15:22:06.000000000 +0100
@@ -60,6 +60,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2-gap.c	2011-04-12 15:22:06.000000000 +0100
@@ -71,6 +71,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i2.c	2011-04-12 15:22:06.000000000 +0100
@@ -54,6 +54,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
    
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap2.c	2011-04-12 15:22:06.000000000 +0100
@@ -78,6 +78,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap4.c	2011-04-12 15:22:06.000000000 +0100
@@ -98,6 +98,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c	2011-04-12 15:22:06.000000000 +0100
@@ -83,6 +83,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c	2011-04-12 15:22:06.000000000 +0100
@@ -85,6 +85,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided8 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
   
Index: gcc/testsuite/gcc.dg/vect/vect-vfa-03.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-vfa-03.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-vfa-03.c	2011-04-12 15:22:06.000000000 +0100
@@ -53,6 +53,6 @@  main (void)
 } 
 
 /* Needs interleaving support.  */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave && vect_extract_even_odd } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  { vect_interleave && vect_extract_even_odd } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target vect_strided2 } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 0 "vect" { xfail  vect_strided2 } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/no-scevccp-outer-18.c	2011-04-12 15:22:06.000000000 +0100
@@ -47,5 +47,5 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target vect_interleave } } } */
+/* { dg-final { scan-tree-dump-times "OUTER LOOP VECTORIZED." 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/pr30843.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/pr30843.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/pr30843.c	2011-04-12 15:22:06.000000000 +0100
@@ -20,6 +20,6 @@  void dacP98FillRGBMap (unsigned char *pB
     }
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided4 } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/pr33866.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/pr33866.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/pr33866.c	2011-04-12 15:22:06.000000000 +0100
@@ -27,6 +27,6 @@  void test_select_fill_hyper_simple (long
 }
 
 /* Needs interleaving support.  */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-reduc-6.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-reduc-6.c	2011-04-12 15:22:06.000000000 +0100
@@ -42,7 +42,7 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! vect_unpack } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail { vect_no_int_add || { ! { vect_unpack || vect_strided2 } } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" } } */
 /* { dg-final { scan-tree-dump-times "different interleaving chains in one node" 1 "vect" { target { ! vect_no_int_add } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-store-a-u8-i2.c	2011-04-12 15:22:06.000000000 +0100
@@ -55,6 +55,6 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { vect_interleave || vect_strided2 } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-store-u16-i4.c	2011-04-12 15:22:06.000000000 +0100
@@ -65,8 +65,8 @@  int main (void)
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target { vect_interleave && vect_pack_trunc  } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { { ! { vect_interleave } } && { vect_pack_trunc } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect"  { target { { vect_interleave || vect_strided4 } && vect_pack_trunc } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { { ! { vect_interleave || vect_strided4 } } && { vect_pack_trunc } } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */
 
 
Index: gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c	2011-04-12 12:16:46.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/vect-strided-store-u32-i2.c	2011-04-12 15:22:06.000000000 +0100
@@ -39,7 +39,7 @@  int main (void)
 }
 
 /* Needs interleaving support.  */
-/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave } } } } */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { vect_interleave || vect_strided2 } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect" { xfail { vect_interleave || vect_strided2 } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */