This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH][RFC] Gate loop passes group on number-of-loops > 1, add no-loops group


On Wed, 18 Jun 2014, Jeff Law wrote:

> On 06/18/14 04:42, Richard Biener wrote:
> > 
> > The following aims at reducing the number of pointless passes we run
> > on functions containing no loops.  Those are at least two copyprop
> > and one dce pass (two dce passes when vectorization is enabled,
> > three dce passes and an additional copyprop pass when any graphite
> > optimization is enabled).
> > 
> > Simply gating pass_tree_loop on number_of_loops () > 1 would disable
> > basic-block vectorization on loopless functions.  Moving
> > basic-block vectorization out of pass_tree_loop works to the extent
> > that you'd need to move IVOPTs as well as data-ref analysis cannot
> > cope with TARGET_MEM_REFs.
> > 
> > So the following introduces a pass_tree_no_loop pass group which
> > is enabled whenever the pass_tree_loop group is disabled.
> > As followup this would allow to skip cleanup work we do after the loop
> > pipeline just to cleanup after it.
> > 
> > Any comments?  Does such followup sound realistic or would it be
> > better to take the opportunity to move IVOPTs a bit closer to
> > RTL expansion and avoid that "pass_tree_no_loop hack"?
> Sounds good.  I've always believed that each pass should be bubbling back up
> some kind of status about what it did/found as well.
> 
> It was more of an RTL issue, but we had a certain commercial testsuite which
> created large loopless tests (*) that consumed vast quantities of wall clock
> time.  I always wanted the RTL loop passes to signal back to toplev.c that no
> loops were found, which would in turn be used to say "we really don't need
> cse-after-loop and friends".
> It's certainly more complex these days, but I'd still like to be able to do
> such things.
> 
> Regardless, that's well outside the scope of what you're trying to accomplish.

Not really - it's just the start of a series of (possible) patches.  I
want to cut down the post-loop pass pipeline for functions without loops.

But indeed we may want to apply the same trick to RTL.

The following is what I ended up applying (ugh, we need a more 
elegant solution for those dump naming / cleanup issues).

Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

Richard.

2014-06-23  Richard Biener  <rguenther@suse.de>

	* tree-ssa-loop.c (gate_loop): New function.
	(pass_tree_loop::gate): Call it.
	(pass_data_tree_no_loop, pass_tree_no_loop,
	make_pass_tree_no_loop): New.
	* tree-vectorizer.c: Include tree-scalar-evolution.c
	(pass_slp_vectorize::execute): Initialize loops and SCEV if
	required.
	(pass_slp_vectorize::clone): New method.
	* timevar.def (TV_TREE_NOLOOP): New.
	* tree-pass.h (make_pass_tree_no_loop): Declare.
	* passes.def (pass_tree_no_loop): New pass group with
	SLP vectorizer.

	* g++.dg/vect/slp-pr50413.cc: Scan and cleanup appropriate SLP dumps.
	* g++.dg/vect/slp-pr50819.cc: Likewise.
	* g++.dg/vect/slp-pr56812.cc: Likewise.
	* gcc.dg/vect/bb-slp-1.c: Likewise.
	* gcc.dg/vect/bb-slp-10.c: Likewise.
	* gcc.dg/vect/bb-slp-11.c: Likewise.
	* gcc.dg/vect/bb-slp-13.c: Likewise.
	* gcc.dg/vect/bb-slp-14.c: Likewise.
	* gcc.dg/vect/bb-slp-15.c: Likewise.
	* gcc.dg/vect/bb-slp-16.c: Likewise.
	* gcc.dg/vect/bb-slp-17.c: Likewise.
	* gcc.dg/vect/bb-slp-18.c: Likewise.
	* gcc.dg/vect/bb-slp-19.c: Likewise.
	* gcc.dg/vect/bb-slp-2.c: Likewise.
	* gcc.dg/vect/bb-slp-20.c: Likewise.
	* gcc.dg/vect/bb-slp-21.c: Likewise.
	* gcc.dg/vect/bb-slp-22.c: Likewise.
	* gcc.dg/vect/bb-slp-23.c: Likewise.
	* gcc.dg/vect/bb-slp-24.c: Likewise.
	* gcc.dg/vect/bb-slp-25.c: Likewise.
	* gcc.dg/vect/bb-slp-26.c: Likewise.
	* gcc.dg/vect/bb-slp-27.c: Likewise.
	* gcc.dg/vect/bb-slp-28.c: Likewise.
	* gcc.dg/vect/bb-slp-29.c: Likewise.
	* gcc.dg/vect/bb-slp-3.c: Likewise.
	* gcc.dg/vect/bb-slp-30.c: Likewise.
	* gcc.dg/vect/bb-slp-31.c: Likewise.
	* gcc.dg/vect/bb-slp-32.c: Likewise.
	* gcc.dg/vect/bb-slp-4.c: Likewise.
	* gcc.dg/vect/bb-slp-5.c: Likewise.
	* gcc.dg/vect/bb-slp-6.c: Likewise.
	* gcc.dg/vect/bb-slp-7.c: Likewise.
	* gcc.dg/vect/bb-slp-8.c: Likewise.
	* gcc.dg/vect/bb-slp-8a.c: Likewise.
	* gcc.dg/vect/bb-slp-8b.c: Likewise.
	* gcc.dg/vect/bb-slp-9.c: Likewise.
	* gcc.dg/vect/bb-slp-cond-1.c: Likewise.
	* gcc.dg/vect/bb-slp-pattern-1.c: Likewise.
	* gcc.dg/vect/bb-slp-pattern-2.c: Likewise.
	* gcc.dg/vect/fast-math-bb-slp-call-1.c: Likewise.
	* gcc.dg/vect/fast-math-bb-slp-call-2.c: Likewise.
	* gcc.dg/vect/fast-math-bb-slp-call-3.c: Likewise.
	* gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Likewise.
	* gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c: Likewise.
	* gcc.dg/vect/pr26359.c: Likewise.
	* gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c: Likewise.

Index: gcc/tree-ssa-loop.c
===================================================================
*** gcc/tree-ssa-loop.c.orig	2014-06-18 14:57:20.173498927 +0200
--- gcc/tree-ssa-loop.c	2014-06-23 13:45:58.744051019 +0200
*************** along with GCC; see the file COPYING3.
*** 42,47 ****
--- 42,68 ----
  #include "diagnostic-core.h"
  #include "tree-vectorizer.h"
  
+ 
+ /* Gate for loop pass group.  The group is controlled by -ftree-loop-optimize
+    but we also avoid running it when the IL doesn't contain any loop.  */
+ 
+ static bool
+ gate_loop (function *fn)
+ {
+   if (!flag_tree_loop_optimize)
+     return false;
+ 
+   /* For -fdump-passes which runs before loop discovery print the
+      state of -ftree-loop-optimize.  */
+   if (!loops_for_fn (fn))
+     return true;
+ 
+   /* Make sure to drop / re-discover loops when necessary.  */
+   if (loops_state_satisfies_p (LOOPS_NEED_FIXUP))
+     fix_loop_structure (NULL);
+   return number_of_loops (fn) > 1;
+ }
+ 
  /* The loop superpass.  */
  
  namespace {
*************** public:
*** 68,74 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *) { return flag_tree_loop_optimize != 0; }
  
  }; // class pass_tree_loop
  
--- 89,95 ----
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *fn) { return gate_loop (fn); }
  
  }; // class pass_tree_loop
  
*************** make_pass_tree_loop (gcc::context *ctxt)
*** 80,85 ****
--- 101,145 ----
    return new pass_tree_loop (ctxt);
  }
  
+ /* The no-loop superpass.  */
+ 
+ namespace {
+ 
+ const pass_data pass_data_tree_no_loop =
+ {
+   GIMPLE_PASS, /* type */
+   "no_loop", /* name */
+   OPTGROUP_NONE, /* optinfo_flags */
+   false, /* has_execute */
+   TV_TREE_NOLOOP, /* tv_id */
+   PROP_cfg, /* properties_required */
+   0, /* properties_provided */
+   0, /* properties_destroyed */
+   0, /* todo_flags_start */
+   0, /* todo_flags_finish */
+ };
+ 
+ class pass_tree_no_loop : public gimple_opt_pass
+ {
+ public:
+   pass_tree_no_loop (gcc::context *ctxt)
+     : gimple_opt_pass (pass_data_tree_no_loop, ctxt)
+   {}
+ 
+   /* opt_pass methods: */
+   virtual bool gate (function *fn) { return !gate_loop (fn); }
+ 
+ }; // class pass_tree_no_loop
+ 
+ } // anon namespace
+ 
+ gimple_opt_pass *
+ make_pass_tree_no_loop (gcc::context *ctxt)
+ {
+   return new pass_tree_no_loop (ctxt);
+ }
+ 
+ 
  /* Loop optimizer initialization.  */
  
  namespace {
Index: gcc/tree-vectorizer.c
===================================================================
*** gcc/tree-vectorizer.c.orig	2014-06-18 14:57:20.173498927 +0200
--- gcc/tree-vectorizer.c	2014-06-23 13:33:39.456101918 +0200
*************** along with GCC; see the file COPYING3.
*** 82,87 ****
--- 82,89 ----
  #include "tree-ssa-propagate.h"
  #include "dbgcnt.h"
  #include "gimple-fold.h"
+ #include "tree-scalar-evolution.h"
+ 
  
  /* Loop or bb location.  */
  source_location vect_location;
*************** public:
*** 610,615 ****
--- 612,618 ----
    {}
  
    /* opt_pass methods: */
+   opt_pass * clone () { return new pass_slp_vectorize (m_ctxt); }
    virtual bool gate (function *) { return flag_tree_slp_vectorize != 0; }
    virtual unsigned int execute (function *);
  
*************** pass_slp_vectorize::execute (function *f
*** 620,625 ****
--- 623,635 ----
  {
    basic_block bb;
  
+   bool in_loop_pipeline = scev_initialized_p ();
+   if (!in_loop_pipeline)
+     {
+       loop_optimizer_init (LOOPS_NORMAL);
+       scev_initialize ();
+     }
+ 
    init_stmt_vec_info_vec ();
  
    FOR_EACH_BB_FN (bb, fun)
*************** pass_slp_vectorize::execute (function *f
*** 639,644 ****
--- 649,661 ----
      }
  
    free_stmt_vec_info_vec ();
+ 
+   if (!in_loop_pipeline)
+     {
+       scev_finalize ();
+       loop_optimizer_finalize ();
+     }
+ 
    return 0;
  }
  
Index: gcc/timevar.def
===================================================================
*** gcc/timevar.def.orig	2014-06-18 14:57:20.173498927 +0200
--- gcc/timevar.def	2014-06-23 13:33:39.457101918 +0200
*************** DEFTIMEVAR (TV_TREE_CALL_CDCE	     , "tr
*** 162,167 ****
--- 162,168 ----
  DEFTIMEVAR (TV_TREE_DSE		     , "tree DSE")
  DEFTIMEVAR (TV_TREE_MERGE_PHI	     , "PHI merge")
  DEFTIMEVAR (TV_TREE_LOOP	     , "tree loop optimization")
+ DEFTIMEVAR (TV_TREE_NOLOOP           , "loopless fn")
  DEFTIMEVAR (TV_TREE_LOOP_BOUNDS	     , "tree loop bounds")
  DEFTIMEVAR (TV_LIM                   , "tree loop invariant motion")
  DEFTIMEVAR (TV_TREE_LOOP_IVCANON     , "tree canonical iv")
Index: gcc/tree-pass.h
===================================================================
*** gcc/tree-pass.h.orig	2014-06-18 14:57:20.173498927 +0200
--- gcc/tree-pass.h	2014-06-23 13:33:39.457101918 +0200
*************** extern gimple_opt_pass *make_pass_early_
*** 354,359 ****
--- 354,360 ----
  extern gimple_opt_pass *make_pass_tail_recursion (gcc::context *ctxt);
  extern gimple_opt_pass *make_pass_tail_calls (gcc::context *ctxt);
  extern gimple_opt_pass *make_pass_tree_loop (gcc::context *ctxt);
+ extern gimple_opt_pass *make_pass_tree_no_loop (gcc::context *ctxt);
  extern gimple_opt_pass *make_pass_tree_loop_init (gcc::context *ctxt);
  extern gimple_opt_pass *make_pass_lim (gcc::context *ctxt);
  extern gimple_opt_pass *make_pass_tree_unswitch (gcc::context *ctxt);
Index: gcc/passes.def
===================================================================
*** gcc/passes.def.orig	2014-06-18 14:57:20.173498927 +0200
--- gcc/passes.def	2014-06-23 13:33:39.468101917 +0200
*************** along with GCC; see the file COPYING3.
*** 198,203 ****
--- 198,205 ----
        NEXT_PASS (pass_sink_code);
        NEXT_PASS (pass_asan);
        NEXT_PASS (pass_tsan);
+       /* Pass group that runs when 1) enabled, 2) there are loops
+ 	 in the function.  */
        NEXT_PASS (pass_tree_loop);
        PUSH_INSERT_PASSES_WITHIN (pass_tree_loop)
  	  NEXT_PASS (pass_tree_loop_init);
*************** along with GCC; see the file COPYING3.
*** 230,239 ****
--- 232,249 ----
  	  NEXT_PASS (pass_complete_unroll);
  	  NEXT_PASS (pass_slp_vectorize);
  	  NEXT_PASS (pass_loop_prefetch);
+ 	  /* Run IVOPTs after the last pass that uses data-reference analysis
+ 	     as that doesn't handle TARGET_MEM_REFs.  */
  	  NEXT_PASS (pass_iv_optimize);
  	  NEXT_PASS (pass_lim);
  	  NEXT_PASS (pass_tree_loop_done);
        POP_INSERT_PASSES ()
+       /* Pass group that runs when pass_tree_loop is disabled or there
+          are no loops in the function.  */
+       NEXT_PASS (pass_tree_no_loop);
+       PUSH_INSERT_PASSES_WITHIN (pass_tree_no_loop)
+ 	  NEXT_PASS (pass_slp_vectorize);
+       POP_INSERT_PASSES ()
        NEXT_PASS (pass_lower_vector_ssa);
        NEXT_PASS (pass_cse_reciprocals);
        NEXT_PASS (pass_reassoc);
Index: gcc/testsuite/g++.dg/vect/slp-pr50413.cc
===================================================================
*** gcc/testsuite/g++.dg/vect/slp-pr50413.cc.orig	2013-08-30 09:55:27.233781584 +0200
--- gcc/testsuite/g++.dg/vect/slp-pr50413.cc	2014-06-23 13:39:38.229077217 +0200
*************** void shift(unsigned char t)
*** 160,165 ****
    V.bitmap.b96 = t;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
  
--- 160,165 ----
    V.bitmap.b96 = t;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
  
Index: gcc/testsuite/g++.dg/vect/slp-pr50819.cc
===================================================================
*** gcc/testsuite/g++.dg/vect/slp-pr50819.cc.orig	2013-08-30 09:55:27.234781596 +0200
--- gcc/testsuite/g++.dg/vect/slp-pr50819.cc	2014-06-23 13:40:04.382075416 +0200
*************** const & v2) {
*** 49,53 ****
    res = res + s*(v1+v2);
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 49,53 ----
    res = res + s*(v1+v2);
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/g++.dg/vect/slp-pr56812.cc
===================================================================
*** gcc/testsuite/g++.dg/vect/slp-pr56812.cc.orig	2013-10-29 15:15:40.585678487 +0100
--- gcc/testsuite/g++.dg/vect/slp-pr56812.cc	2014-06-23 13:40:28.401073763 +0200
*************** void mydata::Set (float x)
*** 17,21 ****
      data[i] = x;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 17,21 ----
      data[i] = x;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
Index: gcc/testsuite/gcc.dg/vect/bb-slp-1.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-1.c.orig	2013-08-30 09:55:27.136780433 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-1.c	2014-06-23 14:05:12.432971589 +0200
*************** int main (void)
*** 56,61 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 56,62 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-10.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-10.c.orig	2013-08-30 09:55:27.136780433 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-10.c	2014-06-23 14:05:23.580970821 +0200
*************** int main (void)
*** 49,55 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "unsupported alignment in basic block." 1 "slp" { xfail vect_element_align } } } */
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 49,55 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "unsupported alignment in basic block." 1 "slp2" { xfail vect_element_align } } } */
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_element_align } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-11.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-11.c.orig	2013-08-30 09:55:27.137780445 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-11.c	2014-06-23 13:48:32.108040460 +0200
*************** int main (void)
*** 48,53 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect64 } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 48,53 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect64 } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-13.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-13.c.orig	2013-08-30 09:55:27.126780313 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-13.c	2014-06-23 13:48:50.026039226 +0200
*************** int main (void)
*** 46,51 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 46,51 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-14.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-14.c.orig	2013-08-30 09:55:27.127780325 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-14.c	2014-06-23 13:49:08.409037961 +0200
*************** int main (void)
*** 47,52 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp"  } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 47,52 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2"  } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-15.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-15.c.orig	2013-08-30 09:55:27.131780373 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-15.c	2014-06-23 13:49:21.367037069 +0200
*************** int main (void)
*** 51,56 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 51,56 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-16.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-16.c.orig	2013-08-30 09:55:27.132780385 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-16.c	2014-06-23 14:05:33.215970158 +0200
*************** int main (void)
*** 65,70 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 65,71 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-17.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-17.c.orig	2013-08-30 09:55:27.133780397 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-17.c	2014-06-23 13:49:54.129034813 +0200
*************** int main (void)
*** 57,62 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 57,62 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-18.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-18.c.orig	2013-08-30 09:55:27.134780409 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-18.c	2014-06-23 13:50:06.610033954 +0200
*************** int main (void)
*** 46,51 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 46,51 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-19.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-19.c.orig	2013-08-30 09:55:27.135780421 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-19.c	2014-06-23 13:50:20.741032981 +0200
*************** int main (void)
*** 53,58 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp"  { xfail *-*-* }  } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 53,58 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { xfail *-*-* }  } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-2.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-2.c.orig	2013-08-30 09:55:27.137780445 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-2.c	2014-06-23 14:05:44.829969358 +0200
*************** int main (void)
*** 53,58 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 53,59 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-20.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-20.c.orig	2013-08-30 09:55:27.137780445 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-20.c	2014-06-23 13:50:47.792031118 +0200
*************** int main (void)
*** 63,69 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 63,69 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-21.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-21.c.orig	2013-08-30 09:55:27.126780313 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-21.c	2014-06-23 13:51:02.554030102 +0200
*************** int main (void)
*** 63,70 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp"  } } */
! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp" { target { ! {vect_int_mult } } } } } */
! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 63,70 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  } } */
! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp2" { target { ! {vect_int_mult } } } } } */
! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 2 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-22.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-22.c.orig	2013-08-30 09:55:27.127780325 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-22.c	2014-06-23 13:51:18.159029028 +0200
*************** int main (void)
*** 63,69 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp"  { target { ! {vect_int_mult } } } } } */
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp"  { target vect_int_mult  } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 63,69 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { target { ! {vect_int_mult } } } } } */
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2"  { target vect_int_mult  } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-23.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-23.c.orig	2013-08-30 09:55:27.131780373 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-23.c	2014-06-23 13:51:32.879028014 +0200
*************** int main (void)
*** 51,56 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 51,56 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-24.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-24.c.orig	2013-08-30 09:55:27.131780373 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-24.c	2014-06-23 14:30:13.534868240 +0200
*************** int main (void)
*** 54,59 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
  
--- 54,60 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect_element_align } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
  
Index: gcc/testsuite/gcc.dg/vect/bb-slp-25.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-25.c.orig	2013-08-30 09:55:27.132780385 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-25.c	2014-06-23 14:30:28.828867187 +0200
*************** int main (void)
*** 54,59 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
  
--- 54,60 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect_element_align } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
  
Index: gcc/testsuite/gcc.dg/vect/bb-slp-26.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-26.c.orig	2013-08-30 09:55:27.133780397 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-26.c	2014-06-23 14:30:34.141866821 +0200
*************** int main (void)
*** 55,60 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect64 } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
  
--- 55,61 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect64 } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
  
Index: gcc/testsuite/gcc.dg/vect/bb-slp-27.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-27.c.orig	2013-08-30 09:55:27.134780409 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-27.c	2014-06-23 14:30:39.003866486 +0200
*************** int main (void)
*** 44,49 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
  
--- 44,50 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
  
Index: gcc/testsuite/gcc.dg/vect/bb-slp-28.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-28.c.orig	2013-08-30 09:55:27.135780421 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-28.c	2014-06-23 14:30:46.722865955 +0200
*************** int main (void)
*** 66,71 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_int_mult &&  { vect_pack_trunc && vect_unpack } } } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
  
--- 66,72 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_int_mult &&  { vect_pack_trunc && vect_unpack } } } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
  
Index: gcc/testsuite/gcc.dg/vect/bb-slp-29.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-29.c.orig	2013-08-30 09:55:27.135780421 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-29.c	2014-06-23 14:30:53.316865501 +0200
*************** int main (void)
*** 54,59 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp"  { target { vect_int_mult &&  vect_element_align } } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
  
--- 54,60 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1"  { target { vect_int_mult &&  vect_element_align } } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
  
Index: gcc/testsuite/gcc.dg/vect/bb-slp-3.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-3.c.orig	2013-08-30 09:55:27.137780445 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-3.c	2014-06-23 13:53:36.125019529 +0200
*************** int main (void)
*** 42,47 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 42,47 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-30.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-30.c.orig	2013-08-30 09:55:27.126780313 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-30.c	2014-06-23 13:53:46.675018802 +0200
*************** test1(void)
*** 43,47 ****
  
  int main() { test1(); return a[21]; }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 43,47 ----
  
  int main() { test1(); return a[21]; }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/bb-slp-31.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-31.c.orig	2013-10-10 14:15:51.280493835 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-31.c	2014-06-23 13:53:51.749018453 +0200
*************** void f(){
*** 9,13 ****
    a[1]=1+2*a[1]*a[1];
  }
  
! /* { dg-final { scan-tree-dump "basic block vectorized" "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 9,13 ----
    a[1]=1+2*a[1]*a[1];
  }
  
! /* { dg-final { scan-tree-dump "basic block vectorized" "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/bb-slp-32.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-32.c.orig	2013-10-29 15:15:40.532677912 +0100
--- gcc/testsuite/gcc.dg/vect/bb-slp-32.c	2014-06-23 13:53:56.878018100 +0200
*************** int foo (int *p)
*** 19,23 ****
    return tem0 + tem1 + tem2 + tem3;
  }
  
! /* { dg-final { scan-tree-dump "vectorization is not profitable" "slp" { xfail  vect_no_align } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 19,23 ----
    return tem0 + tem1 + tem2 + tem3;
  }
  
! /* { dg-final { scan-tree-dump "vectorization is not profitable" "slp2" { xfail  vect_no_align } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/bb-slp-4.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-4.c.orig	2013-08-30 09:55:27.126780313 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-4.c	2014-06-23 13:54:04.122017601 +0200
*************** int main (void)
*** 38,43 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 38,43 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-5.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-5.c.orig	2013-08-30 09:55:27.130780361 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-5.c	2014-06-23 13:54:10.426017167 +0200
*************** int main (void)
*** 47,52 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 47,52 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-6.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-6.c.orig	2013-08-30 09:55:27.131780373 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-6.c	2014-06-23 13:54:15.672016806 +0200
*************** int main (void)
*** 45,50 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 45,50 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-7.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-7.c.orig	2013-08-30 09:55:27.132780385 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-7.c	2014-06-23 13:54:21.958016373 +0200
*************** int main (void)
*** 46,51 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 46,51 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-8.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-8.c.orig	2013-08-30 09:55:27.133780397 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-8.c	2014-06-23 13:54:29.503015854 +0200
*************** int main (void)
*** 48,53 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp"  { target vect_hw_misalign } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 48,53 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { target vect_hw_misalign } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-8a.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-8a.c.orig	2013-08-30 09:55:27.135780421 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-8a.c	2014-06-23 13:54:35.707015427 +0200
*************** int main (void)
*** 47,52 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 47,52 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-8b.c.orig	2013-08-30 09:55:27.136780433 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-8b.c	2014-06-23 13:54:40.903015069 +0200
*************** int main (void)
*** 49,54 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp"  { target vect_hw_misalign } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 49,54 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { target vect_hw_misalign } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-9.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-9.c.orig	2013-08-30 09:55:27.134780409 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-9.c	2014-06-23 13:54:49.587014471 +0200
*************** int main (void)
*** 46,51 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp"  { xfail  vect_no_align } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 46,51 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2"  { xfail  vect_no_align } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c.orig	2013-08-30 09:55:27.136780433 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c	2014-06-23 14:31:03.958864768 +0200
*************** int main ()
*** 41,46 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
  
--- 41,47 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target vect_element_align } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
  
Index: gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c.orig	2012-03-16 10:54:03.000000000 +0100
--- gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c	2014-06-23 14:06:31.460966148 +0200
*************** int main (void)
*** 48,54 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
! /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 8 "slp" { target vect_widen_mult_hi_to_si_pattern } } } */
! /* { dg-final { scan-tree-dump-times "pattern recognized" 8 "slp" { target vect_widen_mult_hi_to_si_pattern } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 48,55 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "vectorizing stmts using SLP" 1 "slp2" { target { vect_widen_mult_hi_to_si || vect_unpack } } } } */
! /* { dg-final { scan-tree-dump-times "vect_recog_widen_mult_pattern: detected" 8 "slp2" { target vect_widen_mult_hi_to_si_pattern } } } */
! /* { dg-final { scan-tree-dump-times "pattern recognized" 8 "slp2" { target vect_widen_mult_hi_to_si_pattern } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c.orig	2013-08-30 09:55:27.134780409 +0200
--- gcc/testsuite/gcc.dg/vect/bb-slp-pattern-2.c	2014-06-23 14:31:12.229864199 +0200
*************** int main ()
*** 48,52 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_element_align && vect_pack_trunc } } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 48,53 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp1" { target { vect_element_align && vect_pack_trunc } } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c.orig	2013-08-30 09:55:27.132780385 +0200
--- gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c	2014-06-23 14:31:25.106863312 +0200
*************** main ()
*** 45,49 ****
    return main1 ();
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 45,50 ----
    return main1 ();
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c.orig	2013-08-30 09:55:27.133780397 +0200
--- gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c	2014-06-23 14:31:32.741862787 +0200
*************** main ()
*** 63,67 ****
    return main1 ();
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" { target vect_call_lrint } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 63,68 ----
    return main1 ();
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp2" { target vect_call_lrint } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c.orig	2013-03-13 11:39:27.969477882 +0100
--- gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c	2014-06-23 14:03:08.341980132 +0200
*************** int main()
*** 65,68 ****
    return 0;
  }
  
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 65,69 ----
    return 0;
  }
  
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c.orig	2013-08-30 09:55:27.134780409 +0200
--- gcc/testsuite/gcc.dg/vect/no-tree-reassoc-bb-slp-12.c	2014-06-23 14:03:35.684978250 +0200
*************** int main (void)
*** 47,52 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 47,53 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp2" { target vect_int_mult } } } */
! /* { dg-final { cleanup-tree-dump "slp1" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    
Index: gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c.orig	2013-04-04 15:31:59.774876073 +0200
--- gcc/testsuite/gcc.dg/vect/no-tree-sra-bb-slp-pr50730.c	2014-06-23 14:04:13.962975614 +0200
*************** A sum(A a,A b)
*** 13,17 ****
    return a;
  }
  
! /* { dg-final { scan-tree-dump-times "not vectorized: more than one data ref in stmt" 0 "slp" } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
--- 13,17 ----
    return a;
  }
  
! /* { dg-final { scan-tree-dump-times "not vectorized: more than one data ref in stmt" 0 "slp2" } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
Index: gcc/testsuite/gcc.dg/vect/pr26359.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/pr26359.c.orig	2014-06-18 13:43:34.726803613 +0200
--- gcc/testsuite/gcc.dg/vect/pr26359.c	2014-06-23 14:32:05.609860524 +0200
*************** foo () {
*** 13,17 ****
  }
  
  /* { dg-final { scan-tree-dump-times "Deleting : vect_" 0 "dce5" } } */
! /* { dg-final { cleanup-tree-dump "dce" } } */
  /* { dg-final { cleanup-tree-dump "vect" } } */
--- 13,17 ----
  }
  
  /* { dg-final { scan-tree-dump-times "Deleting : vect_" 0 "dce5" } } */
! /* { dg-final { cleanup-tree-dump "dce5" } } */
  /* { dg-final { cleanup-tree-dump "vect" } } */
Index: gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
===================================================================
*** gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c.orig	2010-11-23 10:52:09.000000000 +0100
--- gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c	2014-06-23 14:38:12.774835245 +0200
*************** int main (void)
*** 41,46 ****
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp"  { xfail  vect_no_align } } } */
! /* { dg-final { cleanup-tree-dump "slp" } } */
    
--- 41,46 ----
    return 0;
  }
  
! /* { dg-final { scan-tree-dump-times "basic block vectorized using SLP" 1 "slp2"  { xfail  vect_no_align } } } */
! /* { dg-final { cleanup-tree-dump "slp2" } } */
    


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]