Supporting load/store lanes for variable-length vectors means that
we use them instead of SLP (for which we can't yet handle external
and constant definitions -- fixed by a later patch).  Previously
we'd fail to use load/store lanes too and fall back to 128-bit
vectorisation.


2017-11-08  Richard Sandiford  <richard.sandif...@linaro.org>
            Alan Hayward  <alan.hayw...@arm.com>
            David Sherwood  <david.sherw...@arm.com>

gcc/testsuite/
        * lib/target-supports.exp (check_effective_target_vect_load_lanes):
        Return true for SVE too.
        * g++.dg/vect/pr36648.cc: XFAIL for variable-length vectors
        if load/store lanes are supported.
        * gcc.dg/vect/no-scevccp-slp-30.c: Likewise.
        * gcc.dg/vect/pr37027.c: Likewise.
        * gcc.dg/vect/pr67790.c: Likewise.
        * gcc.dg/vect/slp-1.c: Likewise.
        * gcc.dg/vect/slp-10.c: Likewise.
        * gcc.dg/vect/slp-12b.c: Likewise.
        * gcc.dg/vect/slp-12c.c: Likewise.
        * gcc.dg/vect/slp-17.c: Likewise.
        * gcc.dg/vect/slp-19b.c: Likewise.
        * gcc.dg/vect/slp-2.c: Likewise.
        * gcc.dg/vect/slp-20.c: Likewise.
        * gcc.dg/vect/slp-21.c: Likewise.
        * gcc.dg/vect/slp-22.c: Likewise.
        * gcc.dg/vect/slp-24-big-array.c: Likewise.
        * gcc.dg/vect/slp-24.c: Likewise.
        * gcc.dg/vect/slp-28.c: Likewise.
        * gcc.dg/vect/slp-33.c: Likewise.
        * gcc.dg/vect/slp-39.c: Likewise.
        * gcc.dg/vect/slp-6.c: Likewise.
        * gcc.dg/vect/slp-7.c: Likewise.
        * gcc.dg/vect/slp-cond-1.c: Likewise.
        * gcc.dg/vect/slp-cond-2-big-array.c: Likewise.
        * gcc.dg/vect/slp-cond-2.c: Likewise.
        * gcc.dg/vect/slp-multitypes-1.c: Likewise.
        * gcc.dg/vect/slp-multitypes-10.c: Likewise.
        * gcc.dg/vect/slp-multitypes-11-big-array.c: Likewise.
        * gcc.dg/vect/slp-multitypes-11.c: Likewise.
        * gcc.dg/vect/slp-multitypes-12.c: Likewise.
        * gcc.dg/vect/slp-multitypes-8.c: Likewise.
        * gcc.dg/vect/slp-multitypes-9.c: Likewise.
        * gcc.dg/vect/slp-reduc-1.c: Likewise.
        * gcc.dg/vect/slp-reduc-2.c: Likewise.
        * gcc.dg/vect/slp-reduc-5.c: Likewise.
        * gcc.dg/vect/slp-widen-mult-half.c: Likewise.
        * gcc.dg/vect/vect-cselim-1.c: Likewise.
        * gcc.dg/vect/slp-25.c: Remove XFAIL for variable-length SVE.
        * gcc.dg/vect/slp-perm-5.c: Likewise.
        * gcc.dg/vect/slp-perm-6.c: Likewise.
        * gcc.dg/vect/slp-perm-9.c: Likewise.
        * gcc.dg/vect/vect-119.c: Likewise.
        * gcc.dg/vect/vect-live-slp-1.c: Likewise.
        * gcc.dg/vect/vect-live-slp-2.c: Likewise.
        * gcc.dg/vect/vect-live-slp-3.c: Likewise.
        * gcc.dg/vect/vect-over-widen-1-big-array.c: Likewise.
        * gcc.dg/vect/vect-over-widen-1.c: Likewise.
        * gcc.dg/vect/vect-over-widen-3-big-array.c: Likewise.
        * gcc.dg/vect/vect-over-widen-4-big-array.c: Likewise.
        * gcc.dg/vect/vect-over-widen-4.c: Likewise.
        * gcc.dg/vect/slp-reduc-6.c: Remove XFAIL for variable-length vectors.
        * gcc.dg/vect/vect-load-lanes-peeling-1.c: Expect an epilogue loop
        for variable-length vectors.

Index: gcc/testsuite/lib/target-supports.exp
===================================================================
--- gcc/testsuite/lib/target-supports.exp       2017-11-08 15:05:50.258852888 
+0000
+++ gcc/testsuite/lib/target-supports.exp       2017-11-08 15:06:23.208849548 
+0000
@@ -6506,8 +6506,7 @@ proc check_effective_target_vect_load_la
     } else {
        set et_vect_load_lanes 0
        if { ([istarget arm*-*-*] && [check_effective_target_arm_neon_ok])
-            || ([istarget aarch64*-*-*]
-                && ![check_effective_target_aarch64_sve]) } {
+            || [istarget aarch64*-*-*] } {
            set et_vect_load_lanes 1
        }
     }
Index: gcc/testsuite/g++.dg/vect/pr36648.cc
===================================================================
--- gcc/testsuite/g++.dg/vect/pr36648.cc        2017-02-23 19:54:10.000000000 
+0000
+++ gcc/testsuite/g++.dg/vect/pr36648.cc        2017-11-08 15:06:23.202849548 
+0000
@@ -25,6 +25,6 @@ int main() { }
    targets, ! vect_no_align is a sufficient test.  */
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { 
{ { !  vect_no_align } && { ! powerpc*-*-* } } || { powerpc*-*-* && 
vect_hw_misalign } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
target { { { ! vect_no_align } && { ! powerpc*-*-* } } || { powerpc*-*-* && 
vect_hw_misalign } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
target { { { ! vect_no_align } && { ! powerpc*-*-* } } || { powerpc*-*-* && 
vect_hw_misalign } } xfail { vect_variable_length && vect_load_lanes } } } } */
 
 
Index: gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c       2015-06-02 
23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/no-scevccp-slp-30.c       2017-11-08 
15:06:23.202849548 +0000
@@ -52,5 +52,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/pr37027.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/pr37027.c 2015-11-11 15:40:09.000000000 +0000
+++ gcc/testsuite/gcc.dg/vect/pr37027.c 2017-11-08 15:06:23.202849548 +0000
@@ -32,5 +32,5 @@ foo (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail 
vect_no_int_add } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail vect_no_int_add } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail { vect_no_int_add || { vect_variable_length && vect_load_lanes } } } } } 
*/
 
Index: gcc/testsuite/gcc.dg/vect/pr67790.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/pr67790.c 2015-12-01 19:44:24.000000000 +0000
+++ gcc/testsuite/gcc.dg/vect/pr67790.c 2017-11-08 15:06:23.202849548 +0000
@@ -37,4 +37,4 @@ int main()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" } } */
+/* { dg-final { scan-tree-dump "vectorizing stmts using SLP" "vect" { xfail { 
vect_variable_length && vect_load_lanes } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-1.c   2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-1.c   2017-11-08 15:06:23.202849548 +0000
@@ -118,5 +118,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-10.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-10.c  2017-10-04 16:25:39.696051107 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-10.c  2017-11-08 15:06:23.202849548 +0000
@@ -107,7 +107,7 @@ int main (void)
 /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target 
{vect_uintfloat_cvt && vect_int_mult} } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  {target 
{{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  {target 
{{! { vect_uintfloat_cvt}} && { ! {vect_int_mult}}} } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" 
{target {vect_uintfloat_cvt && vect_int_mult} } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" 
{target { vect_uintfloat_cvt && vect_int_mult } xfail { vect_variable_length && 
vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  
{target {{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  
{target {{! { vect_uintfloat_cvt}} && { ! {vect_int_mult}}} } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-12b.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-12b.c 2017-10-04 16:25:39.697051107 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-12b.c 2017-11-08 15:06:23.202849548 +0000
@@ -46,6 +46,6 @@ int main (void)
 
 /* { 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" 1 "vect"  { 
target { vect_strided2 && vect_int_mult } xfail { vect_variable_length && 
vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { 
target { ! { vect_strided2 && vect_int_mult } } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-12c.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-12c.c 2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-12c.c 2017-11-08 15:06:23.202849548 +0000
@@ -48,5 +48,5 @@ int main (void)
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target { 
vect_int_mult } } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  { target { 
! vect_int_mult } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
target vect_int_mult } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
target vect_int_mult xfail { vect_variable_length && vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { 
target { ! vect_int_mult } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-17.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-17.c  2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-17.c  2017-11-08 15:06:23.203849548 +0000
@@ -51,5 +51,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-19b.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-19b.c 2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-19b.c 2017-11-08 15:06:23.203849548 +0000
@@ -53,5 +53,5 @@ int main (void)
 
 /* { 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" 1 "vect" { 
target vect_strided4 xfail { vect_variable_length && vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { 
target { ! vect_strided4 } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-2.c   2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-2.c   2017-11-08 15:06:23.203849548 +0000
@@ -140,5 +140,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 4 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-20.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-20.c  2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-20.c  2017-11-08 15:06:23.203849548 +0000
@@ -110,5 +110,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-21.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-21.c  2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-21.c  2017-11-08 15:06:23.203849548 +0000
@@ -201,6 +201,6 @@ int main (void)
 
 /* { 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" 2 "vect" { 
target vect_strided4 xfail { vect_variable_length && vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  { 
target { ! { vect_strided4 } } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-22.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-22.c  2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-22.c  2017-11-08 15:06:23.203849548 +0000
@@ -129,5 +129,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 6 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 6 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-24-big-array.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-24-big-array.c        2017-11-08 
15:05:40.718203564 +0000
+++ gcc/testsuite/gcc.dg/vect/slp-24-big-array.c        2017-11-08 
15:06:23.203849548 +0000
@@ -91,4 +91,4 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { 
vect_no_align && ilp32 } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
xfail { vect_no_align && ilp32 } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
xfail { { vect_no_align && ilp32 } || { vect_variable_length && vect_load_lanes 
} } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-24.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-24.c  2017-11-08 15:05:40.718203564 +0000
+++ gcc/testsuite/gcc.dg/vect/slp-24.c  2017-11-08 15:06:23.204849548 +0000
@@ -77,4 +77,4 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail { 
vect_no_align && ilp32 } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
xfail { vect_no_align && ilp32 } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
xfail { { vect_no_align && ilp32 } || { vect_variable_length && vect_load_lanes 
} } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-28.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-28.c  2017-11-08 15:05:42.968853628 +0000
+++ gcc/testsuite/gcc.dg/vect/slp-28.c  2017-11-08 15:06:23.204849548 +0000
@@ -89,5 +89,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-33.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-33.c  2017-10-04 16:25:39.697051107 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-33.c  2017-11-08 15:06:23.204849548 +0000
@@ -105,7 +105,7 @@ int main (void)
 /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target 
{vect_uintfloat_cvt && vect_int_mult} } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  {target 
{{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 0 loops" 1 "vect"  {target 
{{! { vect_uintfloat_cvt}} && {! {vect_int_mult}}} } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" 
{target {vect_uintfloat_cvt && vect_int_mult} } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" 
{target {vect_uintfloat_cvt && vect_int_mult} xfail { vect_variable_length && 
vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  
{target {{! { vect_uintfloat_cvt}} && vect_int_mult} } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect"  
{target {{! { vect_uintfloat_cvt}} && {! {vect_int_mult}}} } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-39.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-39.c  2015-06-02 23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-39.c  2017-11-08 15:06:23.204849548 +0000
@@ -21,4 +21,4 @@ void bar (double w)
     }
 }
 
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-6.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-6.c   2015-06-02 23:53:35.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-6.c   2017-11-08 15:06:23.204849548 +0000
@@ -116,6 +116,6 @@ int main (void)
 
 /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  {target 
vect_int_mult} } } */
 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  {target  { 
! { vect_int_mult } } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" 
{target vect_int_mult  } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" 
{target vect_int_mult xfail { vect_variable_length && vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" 
{target  { ! { vect_int_mult } } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-7.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-7.c   2015-06-02 23:53:35.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-7.c   2017-11-08 15:06:23.204849548 +0000
@@ -122,6 +122,6 @@ int main (void)
 
 /* { dg-final { scan-tree-dump-times "vectorized 3 loops" 1 "vect"  { target 
vect_short_mult } } }*/
 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  { target { 
! { vect_short_mult } } } } }*/
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  { 
target vect_short_mult } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  { 
target vect_short_mult xfail { vect_variable_length && vect_load_lanes } } } } 
*/
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  { 
target { ! { vect_short_mult } } } } } */
  
Index: gcc/testsuite/gcc.dg/vect/slp-cond-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-cond-1.c      2015-06-02 23:53:38.000000000 
+0100
+++ gcc/testsuite/gcc.dg/vect/slp-cond-1.c      2017-11-08 15:06:23.204849548 
+0000
@@ -122,4 +122,4 @@ main ()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c    2017-10-04 
16:25:39.698051107 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-cond-2-big-array.c    2017-11-08 
15:06:23.205849548 +0000
@@ -125,4 +125,4 @@ main ()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-cond-2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-cond-2.c      2017-10-04 16:25:39.698051107 
+0100
+++ gcc/testsuite/gcc.dg/vect/slp-cond-2.c      2017-11-08 15:06:23.205849548 
+0000
@@ -125,4 +125,4 @@ main ()
   return 0;
 }
 
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c        2015-06-02 
23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c        2017-11-08 
15:06:23.205849548 +0000
@@ -52,5 +52,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c       2015-06-02 
23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c       2017-11-08 
15:06:23.205849548 +0000
@@ -46,5 +46,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target 
vect_pack_trunc } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_pack_trunc } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_pack_trunc xfail { vect_variable_length && vect_load_lanes } } } } 
*/
   
Index: gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c     2017-11-08 
15:05:40.720950312 +0000
+++ gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c     2017-11-08 
15:06:23.205849548 +0000
@@ -55,5 +55,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target 
vect_unpack } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_unpack } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_unpack xfail { vect_variable_length && vect_load_lanes } } } } */
 
Index: gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c       2015-06-02 
23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c       2017-11-08 
15:06:23.205849548 +0000
@@ -49,5 +49,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target 
vect_unpack } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_unpack } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_unpack xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c       2015-06-02 
23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c       2017-11-08 
15:06:23.205849548 +0000
@@ -62,5 +62,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect"  } 
} */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 3 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c        2015-06-02 
23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-multitypes-8.c        2017-11-08 
15:06:23.205849548 +0000
@@ -40,5 +40,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target 
vect_unpack } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_unpack } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_unpack xfail { vect_variable_length && vect_load_lanes } } } } */
   
Index: gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c        2015-06-02 
23:53:38.000000000 +0100
+++ gcc/testsuite/gcc.dg/vect/slp-multitypes-9.c        2017-11-08 
15:06:23.205849548 +0000
@@ -40,5 +40,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target 
vect_pack_trunc } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_pack_trunc } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect"  { 
target vect_pack_trunc xfail { vect_variable_length && vect_load_lanes } } } } 
*/
   
Index: gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-reduc-1.c     2015-06-02 23:53:38.000000000 
+0100
+++ gcc/testsuite/gcc.dg/vect/slp-reduc-1.c     2017-11-08 15:06:23.206849548 
+0000
@@ -43,5 +43,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail 
vect_no_int_add } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail vect_no_int_add } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail { vect_no_int_add || { vect_variable_length && vect_load_lanes } } } } } 
*/
 
Index: gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-reduc-2.c     2015-06-02 23:53:38.000000000 
+0100
+++ gcc/testsuite/gcc.dg/vect/slp-reduc-2.c     2017-11-08 15:06:23.206849548 
+0000
@@ -38,5 +38,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { xfail 
vect_no_int_add } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail vect_no_int_add } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail { vect_no_int_add || { vect_variable_length && vect_load_lanes } } } } } 
*/
 
Index: gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-reduc-5.c     2015-09-07 18:51:04.000000000 
+0100
+++ gcc/testsuite/gcc.dg/vect/slp-reduc-5.c     2017-11-08 15:06:23.206849548 
+0000
@@ -43,5 +43,5 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" { xfail 
vect_no_int_min_max } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail vect_no_int_min_max } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
xfail { vect_no_int_min_max || { vect_variable_length && vect_load_lanes } } } 
} } */
 
Index: gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c     2016-11-22 
21:16:10.000000000 +0000
+++ gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c     2017-11-08 
15:06:23.206849548 +0000
@@ -46,7 +46,7 @@ int main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target 
vect_widen_mult_hi_to_si } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
target vect_widen_mult_hi_to_si } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
target vect_widen_mult_hi_to_si xfail { vect_variable_length && vect_load_lanes 
} } } } */
 /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 
2 "vect" { target vect_widen_mult_hi_to_si_pattern } } } */
 /* { dg-final { scan-tree-dump-times "pattern recognized" 2 "vect" { target 
vect_widen_mult_hi_to_si_pattern } } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-cselim-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-cselim-1.c   2017-11-08 15:05:50.253852889 
+0000
+++ gcc/testsuite/gcc.dg/vect/vect-cselim-1.c   2017-11-08 15:06:23.206849548 
+0000
@@ -83,6 +83,4 @@ main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { 
! vect_masked_store } xfail { { vect_no_align && { ! vect_hw_misalign } } || { 
! vect_strided2 } } } } } */
-/* Fails for variable-length SVE because we can't yet handle the
-   interleaved load.  This is fixed by a later patch.  */
-/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target 
vect_masked_store xfail { aarch64_sve && vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect" { target 
vect_masked_store } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-25.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-25.c  2017-11-08 15:05:50.252852889 +0000
+++ gcc/testsuite/gcc.dg/vect/slp-25.c  2017-11-08 15:06:23.204849548 +0000
@@ -57,6 +57,4 @@ int main (void)
 
 /* { dg-final { scan-tree-dump-times "vectorized 2 loops" 1 "vect"  } } */
 /* { dg-final { scan-tree-dump-times "Vectorizing an unaligned access" 0 
"vect" } } */
-/* Needs store_lanes for SVE, otherwise falls back to Advanced SIMD.
-   Will be fixed when SVE LOAD_LANES support is added.  */
-/* { dg-final { scan-tree-dump-times "Alignment of access forced using 
peeling" 2 "vect" { xfail { { { ! vect_unaligned_possible } || { ! 
vect_natural_alignment } } && { ! { aarch64_sve && vect_variable_length } } } } 
} } */
+/* { dg-final { scan-tree-dump-times "Alignment of access forced using 
peeling" 2 "vect" { xfail { { ! vect_unaligned_possible } || { ! 
vect_natural_alignment } } } } } */
Index: gcc/testsuite/gcc.dg/vect/slp-perm-5.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-perm-5.c      2017-11-08 15:05:50.252852889 
+0000
+++ gcc/testsuite/gcc.dg/vect/slp-perm-5.c      2017-11-08 15:06:23.205849548 
+0000
@@ -104,9 +104,7 @@ int main (int argc, const char* argv[])
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target 
vect_perm } } } */
-/* Fails for variable-length SVE because we fall back to Advanced SIMD
-   and use LD3/ST3.  Will be fixed when SVE LOAD_LANES support is added.  */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
target { vect_perm3_int && {! vect_load_lanes } } xfail { aarch64_sve && 
vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
target { vect_perm3_int && { ! vect_load_lanes } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 0 "vect" { 
target vect_load_lanes } } } */
 /* { dg-final { scan-tree-dump "note: Built SLP cancelled: can use 
load/store-lanes" "vect" { target { vect_perm3_int && vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump "LOAD_LANES" "vect" { target vect_load_lanes } 
} } */
Index: gcc/testsuite/gcc.dg/vect/slp-perm-6.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-perm-6.c      2017-11-08 15:05:50.252852889 
+0000
+++ gcc/testsuite/gcc.dg/vect/slp-perm-6.c      2017-11-08 15:06:23.206849548 
+0000
@@ -103,10 +103,8 @@ int main (int argc, const char* argv[])
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  { target 
vect_perm } } } */
-/* Fails for variable-length SVE because we fall back to Advanced SIMD
-   and use LD3/ST3.  Will be fixed when SVE LOAD_LANES support is added.  */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
target { vect_perm3_int && {! vect_load_lanes } } xfail { aarch64_sve && 
vect_variable_length } } } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
target vect_load_lanes } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
target { vect_perm3_int && { ! vect_load_lanes } } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "vect" { 
target vect_load_lanes xfail { vect_variable_length && vect_load_lanes } } } } 
*/
 /* { dg-final { scan-tree-dump "note: Built SLP cancelled: can use 
load/store-lanes" "vect" { target { vect_perm3_int && vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump "LOAD_LANES" "vect" { target vect_load_lanes } 
} } */
 /* { dg-final { scan-tree-dump "STORE_LANES" "vect" { target vect_load_lanes } 
} } */
Index: gcc/testsuite/gcc.dg/vect/slp-perm-9.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-perm-9.c      2017-11-08 15:05:50.252852889 
+0000
+++ gcc/testsuite/gcc.dg/vect/slp-perm-9.c      2017-11-08 15:06:23.206849548 
+0000
@@ -57,9 +57,7 @@ int main (int argc, const char* argv[])
   return 0;
 }
 
-/* Fails for variable-length SVE because we fall back to Advanced SIMD
-   and use LD3/ST3.  Will be fixed when SVE LOAD_LANES support is added.  */
-/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" { target { 
! { vect_perm_short || vect_load_lanes } } xfail { aarch64_sve && 
vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vectorized 0 loops" 2 "vect" { target { 
! { vect_perm_short || vect_load_lanes } } } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" { target { 
vect_perm_short || vect_load_lanes } } } } */
 /* { dg-final { scan-tree-dump-times "permutation requires at least three 
vectors" 1 "vect" { target { vect_perm_short && { ! vect_perm3_short } } } } } 
*/
 /* { dg-final { scan-tree-dump-not "permutation requires at least three 
vectors" "vect" { target vect_perm3_short } } } */
Index: gcc/testsuite/gcc.dg/vect/vect-119.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-119.c        2017-11-08 15:05:50.253852889 
+0000
+++ gcc/testsuite/gcc.dg/vect/vect-119.c        2017-11-08 15:06:23.206849548 
+0000
@@ -25,7 +25,4 @@ unsigned int foo (const unsigned int x[O
   return sum;
 }
 
-/* Requires load-lanes for SVE, which is implemented by a later patch.
-   Until then we report it twice, once for SVE and once for 128-bit
-   Advanced SIMD.  */
-/* { dg-final { scan-tree-dump-times "Detected interleaving load of size 2" 1 
"vect" { xfail { aarch64_sve && vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "Detected interleaving load of size 2" 1 
"vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-live-slp-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-live-slp-1.c 2017-11-08 15:05:50.254852889 
+0000
+++ gcc/testsuite/gcc.dg/vect/vect-live-slp-1.c 2017-11-08 15:06:23.206849548 
+0000
@@ -68,8 +68,5 @@ main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" } 
} */
-/* We can't yet create the necessary SLP constant vector for variable-length
-   SVE and so fall back to Advanced SIMD.  This means that we repeat each
-   analysis note.  */
-/* { dg-final { scan-tree-dump-times "vec_stmt_relevant_p: stmt live but not 
relevant" 4 "vect" { xfail { aarch64_sve && vect_variable_length } } } }*/
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
+/* { dg-final { scan-tree-dump-times "vec_stmt_relevant_p: stmt live but not 
relevant" 4 "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-live-slp-2.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-live-slp-2.c 2017-11-08 15:05:50.254852889 
+0000
+++ gcc/testsuite/gcc.dg/vect/vect-live-slp-2.c 2017-11-08 15:06:23.207849548 
+0000
@@ -62,8 +62,5 @@ main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 2 "vect" } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" } 
} */
-/* We can't yet create the necessary SLP constant vector for variable-length
-   SVE and so fall back to Advanced SIMD.  This means that we repeat each
-   analysis note.  */
-/* { dg-final { scan-tree-dump-times "vec_stmt_relevant_p: stmt live but not 
relevant" 2 "vect" { xfail { aarch64_sve && vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
+/* { dg-final { scan-tree-dump-times "vec_stmt_relevant_p: stmt live but not 
relevant" 2 "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-live-slp-3.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-live-slp-3.c 2017-11-08 15:05:50.254852889 
+0000
+++ gcc/testsuite/gcc.dg/vect/vect-live-slp-3.c 2017-11-08 15:06:23.207849548 
+0000
@@ -69,8 +69,5 @@ main (void)
 }
 
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 4 "vect" } } */
-/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" } 
} */
-/* We can't yet create the necessary SLP constant vector for variable-length
-   SVE and so fall back to Advanced SIMD.  This means that we repeat each
-   analysis note.  */
-/* { dg-final { scan-tree-dump-times "vec_stmt_relevant_p: stmt live but not 
relevant" 4 "vect" { xfail { aarch64_sve && vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 4 "vect" { 
xfail { vect_variable_length && vect_load_lanes } } } } */
+/* { dg-final { scan-tree-dump-times "vec_stmt_relevant_p: stmt live but not 
relevant" 4 "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c     2017-11-08 
15:05:50.255852889 +0000
+++ gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c     2017-11-08 
15:06:23.207849548 +0000
@@ -59,8 +59,6 @@ int main (void)
 
 /* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: 
detected" 2 "vect" { target vect_widen_shift } } } */
 /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 2 "vect" { target vect_widen_shift } } } */
-/* Requires LD4 for variable-length SVE.  Until that's supported we fall
-   back to Advanced SIMD, which does have widening shifts.  */
-/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 4 "vect" { target { ! vect_widen_shift } xfail { aarch64_sve && 
vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 4 "vect" { target { ! vect_widen_shift } } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c       2017-11-08 
15:05:50.255852889 +0000
+++ gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c       2017-11-08 
15:06:23.207849548 +0000
@@ -63,9 +63,7 @@ int main (void)
 
 /* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: 
detected" 2 "vect" { target vect_widen_shift } } } */
 /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 2 "vect" { target vect_widen_shift } } } */
-/* Requires LD4 for variable-length SVE.  Until that's supported we fall
-   back to Advanced SIMD, which does have widening shifts.  */
-/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 4 "vect" { target { { ! vect_sizes_32B_16B } && { ! vect_widen_shift 
} } xfail { aarch64_sve && vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 4 "vect" { target { { ! vect_sizes_32B_16B } && { ! vect_widen_shift 
} } } } } */
 /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 8 "vect" { target vect_sizes_32B_16B } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c     2017-11-08 
15:05:50.256852889 +0000
+++ gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c     2017-11-08 
15:06:23.207849548 +0000
@@ -59,9 +59,7 @@ int main (void)
   return 0;
 }
 
-/* Requires LD4 for variable-length SVE.  Until that's supported we fall
-   back to Advanced SIMD, which does have widening shifts.  */
-/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 2 "vect" { target { ! vect_widen_shift } xfail { aarch64_sve && 
vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 2 "vect" { target { ! vect_widen_shift } } } } */
 /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 1 "vect" { target vect_widen_shift } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c     2017-11-08 
15:05:50.256852889 +0000
+++ gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c     2017-11-08 
15:06:23.207849548 +0000
@@ -63,8 +63,6 @@ int main (void)
 
 /* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: 
detected" 2 "vect" { target vect_widen_shift } } } */
 /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 2 "vect" { target vect_widen_shift } } } */
-/* Requires LD4 for variable-length SVE.  Until that's supported we fall
-   back to Advanced SIMD, which does have widening shifts.  */
-/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 4 "vect" { target { ! vect_widen_shift } xfail { aarch64_sve && 
vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 4 "vect" { target { ! vect_widen_shift } } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c       2017-11-08 
15:05:50.256852889 +0000
+++ gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c       2017-11-08 
15:06:23.207849548 +0000
@@ -67,9 +67,7 @@ int main (void)
 
 /* { dg-final { scan-tree-dump-times "vect_recog_widen_shift_pattern: 
detected" 2 "vect" { target vect_widen_shift } } } */
 /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 2 "vect" { target vect_widen_shift } } } */
-/* Requires LD4 for variable-length SVE.  Until that's supported we fall
-   back to Advanced SIMD, which does have widening shifts.  */
-/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 4 "vect" { target { { ! vect_sizes_32B_16B } && { ! vect_widen_shift 
} } xfail { aarch64_sve && vect_variable_length } } } } */
+/* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 4 "vect" { target { { ! vect_sizes_32B_16B } && { ! vect_widen_shift 
} } } } } */
 /* { dg-final { scan-tree-dump-times "vect_recog_over_widening_pattern: 
detected" 8 "vect" { target vect_sizes_32B_16B } } } */
 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect" } } */
 
Index: gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/slp-reduc-6.c     2017-11-08 15:05:46.805853239 
+0000
+++ gcc/testsuite/gcc.dg/vect/slp-reduc-6.c     2017-11-08 15:06:23.206849548 
+0000
@@ -44,5 +44,5 @@ int main (void)
 
 /* { 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 } xfail vect_variable_length } } } 
*/
+/* { dg-final { scan-tree-dump-times "different interleaving chains in one 
node" 1 "vect" { target { ! vect_no_int_add } } } } */
 
Index: gcc/testsuite/gcc.dg/vect/vect-load-lanes-peeling-1.c
===================================================================
--- gcc/testsuite/gcc.dg/vect/vect-load-lanes-peeling-1.c       2016-11-22 
21:16:10.000000000 +0000
+++ gcc/testsuite/gcc.dg/vect/vect-load-lanes-peeling-1.c       2017-11-08 
15:06:23.207849548 +0000
@@ -10,4 +10,4 @@ f (int *__restrict a, int *__restrict b)
 }
 
 /* { dg-final { scan-tree-dump-not "Data access with gaps" "vect" } } */
-/* { dg-final { scan-tree-dump-not "epilog loop required" "vect" } } */
+/* { dg-final { scan-tree-dump-not "epilog loop required" "vect" { xfail 
vect_variable_length } } } */

Reply via email to