New vectorizer messages; message format change.
From-SVN: r202088
This commit is contained in:
parent
753c498921
commit
9cc1fb4b07
|
@ -1,3 +1,14 @@
|
|||
2013-08-29 Xinliang David Li <davidxl@google.com>
|
||||
|
||||
* loop-unroll.c (report_unroll_peel): Minor message
|
||||
change.
|
||||
* tree-vect-loop-manip.c (vect_do_peeling_for_alignment):
|
||||
Emit alignment peeling message with default -fopt-info.
|
||||
(vect_loop_versioning): Emit loop version info message.
|
||||
* tree-vectorizer.c (vectorize_loops): Minor message
|
||||
change.
|
||||
(execute_vect_slp): Ditto.
|
||||
|
||||
2013-08-29 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* cgraphclones.c (cgraph_create_virtual_clone): Compute the DECL_NAME
|
||||
|
|
|
@ -225,7 +225,7 @@ report_unroll_peel (struct loop *loop, location_t locus)
|
|||
&& !loop->lpt_decision.times)
|
||||
{
|
||||
dump_printf_loc (report_flags, locus,
|
||||
"Turned loop into non-loop; it never loops.\n");
|
||||
"loop turned into non-loop; it never loops.\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -236,13 +236,16 @@ report_unroll_peel (struct loop *loop, location_t locus)
|
|||
else if (loop->header->count)
|
||||
niters = expected_loop_iterations (loop);
|
||||
|
||||
dump_printf_loc (report_flags, locus,
|
||||
"%s loop %d times",
|
||||
(loop->lpt_decision.decision == LPT_PEEL_COMPLETELY
|
||||
? "Completely unroll"
|
||||
: (loop->lpt_decision.decision == LPT_PEEL_SIMPLE
|
||||
? "Peel" : "Unroll")),
|
||||
loop->lpt_decision.times);
|
||||
if (loop->lpt_decision.decision == LPT_PEEL_COMPLETELY)
|
||||
dump_printf_loc (report_flags, locus,
|
||||
"loop with %d iterations completely unrolled",
|
||||
loop->lpt_decision.times + 1);
|
||||
else
|
||||
dump_printf_loc (report_flags, locus,
|
||||
"loop %s %d times",
|
||||
(loop->lpt_decision.decision == LPT_PEEL_SIMPLE
|
||||
? "peeled" : "unrolled"),
|
||||
loop->lpt_decision.times);
|
||||
if (profile_info)
|
||||
dump_printf (report_flags,
|
||||
" (header execution count %d",
|
||||
|
|
|
@ -1,3 +1,57 @@
|
|||
2013-08-29 Xinliang DavidLi <davidxl@google.com>
|
||||
|
||||
* gcc.dg/unroll_3.c: Message change.
|
||||
* gcc.dg/unroll_4.c: Likewise.
|
||||
* gcc.dg/tree-ssa/cunroll-1.c: Likewise.
|
||||
* gcc.dg/tree-ssa/cunroll-2.c: Likewise.
|
||||
* gcc.dg/tree-ssa/cunroll-3.c: Likewise.
|
||||
* gcc.dg/tree-ssa/cunroll-4.c: Likewise.
|
||||
* gcc.dg/tree-ssa/cunroll-5.c: Likewise.
|
||||
* gcc.dg/tree-ssa/loop-23.c: Likewise.
|
||||
* gcc.dg/tree-ssa/loop-1.c: Likewise.
|
||||
* gcc.dg/unroll_1.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-31.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-14.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-8.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-23.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-15.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-9.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-24.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-16.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-25.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-17.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-26.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-18.c: Likewise.
|
||||
* gcc.dg/vect/no-tree-reassoc-bb-slp-12.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-27.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-19.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-28.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-cond-1.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-29.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-8a.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-pattern-2.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-1.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-8b.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-2.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-3.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-10.c: Likewise.
|
||||
* gcc.dg/vect/fast-math-bb-slp-call-1.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-4.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-11.c: Likewise.
|
||||
* gcc.dg/vect/fast-math-bb-slp-call-2.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-5.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-20.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-6.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-21.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-30.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-13.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-7.c: Likewise.
|
||||
* gcc.dg/vect/bb-slp-22.c: Likewise.
|
||||
* gcc.dg/unroll_2.c: Likewise.
|
||||
* g++.dg/vect/slp-pr50413.cc: Likewise.
|
||||
* g++.dg/vect/slp-pr56812.cc: Likewise.
|
||||
* g++.dg/vect/slp-pr50819.cc: Likewise.
|
||||
|
||||
2013-08-29 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc.dg/tree-ssa/ipa-cp-1.c: Adjust regexp.
|
||||
|
|
|
@ -160,6 +160,6 @@ void shift(unsigned char t)
|
|||
V.bitmap.b96 = t;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 0 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -49,5 +49,5 @@ const & v2) {
|
|||
res = res + s*(v1+v2);
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 2 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
|
|
@ -17,5 +17,5 @@ void mydata::Set (float x)
|
|||
data[i] = x;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
|
|
@ -8,6 +8,6 @@ test(int c)
|
|||
a[i]=5;
|
||||
}
|
||||
/* Array bounds says the loop will not roll much. */
|
||||
/* { dg-final { scan-tree-dump "Completely unroll loop 2 times" "cunrolli"} } */
|
||||
/* { dg-final { scan-tree-dump "loop with 3 iterations completely unrolled" "cunrolli"} } */
|
||||
/* { dg-final { scan-tree-dump "Last iteration exit edge was proved true." "cunrolli"} } */
|
||||
/* { dg-final { cleanup-tree-dump "cunrolli" } } */
|
||||
|
|
|
@ -12,5 +12,5 @@ test(int c)
|
|||
}
|
||||
}
|
||||
/* We are not able to get rid of the final conditional because the loop has two exits. */
|
||||
/* { dg-final { scan-tree-dump "Completely unroll loop 1 times" "cunroll"} } */
|
||||
/* { dg-final { scan-tree-dump "loop with 2 iterations completely unrolled" "cunroll"} } */
|
||||
/* { dg-final { cleanup-tree-dump "cunroll" } } */
|
||||
|
|
|
@ -11,5 +11,5 @@ test(int c)
|
|||
}
|
||||
/* If we start duplicating headers prior curoll, this loop will have 0 iterations. */
|
||||
|
||||
/* { dg-final { scan-tree-dump "Completely unroll loop 1 times" "cunrolli"} } */
|
||||
/* { dg-final { scan-tree-dump "loop with 2 iterations completely unrolled" "cunrolli"} } */
|
||||
/* { dg-final { cleanup-tree-dump "cunrolli" } } */
|
||||
|
|
|
@ -16,6 +16,6 @@ test(int c)
|
|||
|
||||
/* We should do this as part of cunrolli, but our cost model do not take into account early exit
|
||||
from the last iteration. */
|
||||
/* { dg-final { scan-tree-dump "Turned loop into non-loop; it never loops." "ivcanon"} } */
|
||||
/* { dg-final { scan-tree-dump "loop turned into non-loop; it never loops." "ivcanon"} } */
|
||||
/* { dg-final { scan-tree-dump "Last iteration exit edge was proved true." "ivcanon"} } */
|
||||
/* { dg-final { cleanup-tree-dump "ivcanon" } } */
|
||||
|
|
|
@ -8,7 +8,7 @@ test(int c)
|
|||
a[i]=5;
|
||||
}
|
||||
/* Basic testcase for complette unrolling. */
|
||||
/* { dg-final { scan-tree-dump "Completely unroll loop 5 times" "cunroll"} } */
|
||||
/* { dg-final { scan-tree-dump "loop with 6 iterations completely unrolled" "cunroll"} } */
|
||||
/* { dg-final { scan-tree-dump "Exit condition of peeled iterations was eliminated." "cunroll"} } */
|
||||
/* { dg-final { scan-tree-dump "Last iteration exit edge was proved true." "cunroll"} } */
|
||||
/* { dg-final { cleanup-tree-dump "cunroll" } } */
|
||||
|
|
|
@ -35,7 +35,7 @@ int xxx(void)
|
|||
|
||||
/* { dg-final { scan-tree-dump-times "Added canonical iv to loop 1, 4 iterations" 1 "ivcanon"} } */
|
||||
/* { dg-final { cleanup-tree-dump "ivcanon" } } */
|
||||
/* { dg-final { scan-tree-dump-times "Completely unroll loop 4 times" 1 "cunroll"} } */
|
||||
/* { dg-final { scan-tree-dump-times "loop with 5 iterations completely unrolled" 1 "cunroll"} } */
|
||||
/* { dg-final { cleanup-tree-dump "cunroll" } } */
|
||||
/* { dg-final { scan-tree-dump-times "foo" 5 "optimized"} } */
|
||||
/* { dg-final { cleanup-tree-dump "optimized" } } */
|
||||
|
|
|
@ -24,6 +24,6 @@ int foo(void)
|
|||
return sum;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Completely unroll loop 3 times" 1 "cunroll" } } */
|
||||
/* { dg-final { scan-tree-dump-times "loop with 4 iterations completely unrolled" 1 "cunroll" } } */
|
||||
|
||||
/* { dg-final { cleanup-tree-dump "cunroll" } } */
|
||||
|
|
|
@ -28,5 +28,5 @@ int foo2(void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-rtl-dump-times "Turned loop into non-loop; it never loops" 2 "loop2_unroll" } } */
|
||||
/* { dg-final { scan-rtl-dump-times "loop turned into non-loop; it never loops" 2 "loop2_unroll" } } */
|
||||
/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
|
||||
|
|
|
@ -28,5 +28,5 @@ int foo2(void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-rtl-dump-times "Turned loop into non-loop; it never loops" 1 "loop2_unroll" } } */
|
||||
/* { dg-final { scan-rtl-dump-times "loop turned into non-loop; it never loops" 1 "loop2_unroll" } } */
|
||||
/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
|
||||
|
|
|
@ -28,5 +28,5 @@ int foo2(void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-rtl-dump-times "Turned loop into non-loop; it never loops" 1 "loop2_unroll" } } */
|
||||
/* { dg-final { scan-rtl-dump-times "loop turned into non-loop; it never loops" 1 "loop2_unroll" } } */
|
||||
/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
|
||||
|
|
|
@ -28,5 +28,5 @@ int foo2(void)
|
|||
return 1;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-rtl-dump-times "Turned loop into non-loop; it never loops" 1 "loop2_unroll" } } */
|
||||
/* { dg-final { scan-rtl-dump-times "loop turned into non-loop; it never loops" 1 "loop2_unroll" } } */
|
||||
/* { dg-final { cleanup-rtl-dump "loop2_unroll" } } */
|
||||
|
|
|
@ -56,6 +56,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -50,6 +50,6 @@ int main (void)
|
|||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "unsupported alignment in basic block." 1 "slp" { xfail vect_element_align } } } */
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_element_align } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -48,6 +48,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect64 } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect64 } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -46,6 +46,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -47,6 +47,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 0 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -51,6 +51,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -65,6 +65,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -57,6 +57,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -46,6 +46,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -53,6 +53,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { xfail *-*-* } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail *-*-* } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -53,6 +53,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -63,7 +63,7 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { 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,7 +63,7 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" } } */
|
||||
/* { 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,7 +63,7 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target { ! {vect_int_mult } } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 2 "slp" { target vect_int_mult } } } */
|
||||
/* { 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" } } */
|
||||
|
||||
|
|
|
@ -51,6 +51,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -54,6 +54,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_element_align } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -54,6 +54,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_element_align } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -55,6 +55,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect64 } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect64 } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -44,6 +44,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target { vect_int_mult && { vect_unpack && vect_pack_trunc } } } } } */
|
||||
/* { 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" } } */
|
||||
|
||||
|
|
|
@ -66,6 +66,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target { vect_int_mult && { vect_pack_trunc && vect_unpack } } } } } */
|
||||
/* { 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" } } */
|
||||
|
||||
|
|
|
@ -54,6 +54,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target { vect_int_mult && vect_element_align } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_int_mult && vect_element_align } } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -42,6 +42,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -43,5 +43,5 @@ test1(void)
|
|||
|
||||
int main() { test1(); return a[21]; }
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
|
|
@ -9,4 +9,4 @@ void f(){
|
|||
a[1]=1+2*a[1]*a[1];
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump "Vectorized basic-block" "slp" } } */
|
||||
/* { dg-final { scan-tree-dump "basic block vectorized" "slp" } } */
|
||||
|
|
|
@ -38,6 +38,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 0 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -47,6 +47,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -45,6 +45,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -46,6 +46,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 0 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -48,6 +48,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_hw_misalign } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_hw_misalign } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -47,6 +47,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 0 "slp" } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 0 "slp" } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -49,6 +49,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_hw_misalign } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_hw_misalign } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -46,6 +46,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { xfail vect_no_align } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { xfail vect_no_align } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -41,6 +41,6 @@ int main ()
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_element_align } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_element_align } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -48,5 +48,5 @@ int main ()
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target { vect_element_align && vect_pack_trunc } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_element_align && vect_pack_trunc } } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
|
|
@ -45,5 +45,5 @@ main ()
|
|||
return main1 ();
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target { vect_call_copysignf && vect_call_sqrtf } } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
|
|
@ -63,5 +63,5 @@ main ()
|
|||
return main1 ();
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 2 "slp" { target vect_call_lrint } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 2 "slp" { target vect_call_lrint } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
|
|
@ -47,6 +47,6 @@ int main (void)
|
|||
return 0;
|
||||
}
|
||||
|
||||
/* { dg-final { scan-tree-dump-times "Vectorized basic-block" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { scan-tree-dump-times "basic block vectorized" 1 "slp" { target vect_int_mult } } } */
|
||||
/* { dg-final { cleanup-tree-dump "slp" } } */
|
||||
|
||||
|
|
|
@ -870,11 +870,12 @@ try_unroll_loop_completely (struct loop *loop,
|
|||
{
|
||||
if (!n_unroll)
|
||||
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS | TDF_DETAILS, locus,
|
||||
"Turned loop into non-loop; it never loops.\n");
|
||||
"loop turned into non-loop; it never loops\n");
|
||||
else
|
||||
{
|
||||
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS | TDF_DETAILS, locus,
|
||||
"Completely unroll loop %d times", (int)n_unroll);
|
||||
"loop with %d iterations completely unrolled",
|
||||
(int) (n_unroll + 1));
|
||||
if (profile_info)
|
||||
dump_printf (MSG_OPTIMIZED_LOCATIONS | TDF_DETAILS,
|
||||
" (header execution count %d)",
|
||||
|
|
|
@ -37,7 +37,6 @@ along with GCC; see the file COPYING3. If not see
|
|||
#include "tree-scalar-evolution.h"
|
||||
#include "tree-vectorizer.h"
|
||||
#include "diagnostic-core.h"
|
||||
|
||||
/* Need to include rtl.h, expr.h, etc. for optabs. */
|
||||
#include "expr.h"
|
||||
#include "optabs.h"
|
||||
|
|
|
@ -2021,8 +2021,9 @@ vect_do_peeling_for_alignment (loop_vec_info loop_vinfo,
|
|||
int bound = 0;
|
||||
|
||||
if (dump_enabled_p ())
|
||||
dump_printf_loc (MSG_NOTE, vect_location,
|
||||
"=== vect_do_peeling_for_alignment ===");
|
||||
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
|
||||
"loop peeled for vectorization to enhance"
|
||||
" alignment\n");
|
||||
|
||||
initialize_original_copy_tables ();
|
||||
|
||||
|
@ -2404,6 +2405,8 @@ vect_loop_versioning (loop_vec_info loop_vinfo,
|
|||
unsigned prob = 4 * REG_BR_PROB_BASE / 5;
|
||||
gimple_seq gimplify_stmt_list = NULL;
|
||||
tree scalar_loop_iters = LOOP_VINFO_NITERS (loop_vinfo);
|
||||
bool version_align = LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo);
|
||||
bool version_alias = LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo);
|
||||
|
||||
if (check_profitability)
|
||||
{
|
||||
|
@ -2413,11 +2416,11 @@ vect_loop_versioning (loop_vec_info loop_vinfo,
|
|||
is_gimple_condexpr, NULL_TREE);
|
||||
}
|
||||
|
||||
if (LOOP_REQUIRES_VERSIONING_FOR_ALIGNMENT (loop_vinfo))
|
||||
if (version_align)
|
||||
vect_create_cond_for_align_checks (loop_vinfo, &cond_expr,
|
||||
&cond_expr_stmt_list);
|
||||
|
||||
if (LOOP_REQUIRES_VERSIONING_FOR_ALIAS (loop_vinfo))
|
||||
if (version_alias)
|
||||
vect_create_cond_for_alias_checks (loop_vinfo, &cond_expr);
|
||||
|
||||
cond_expr = force_gimple_operand_1 (cond_expr, &gimplify_stmt_list,
|
||||
|
@ -2427,6 +2430,20 @@ vect_loop_versioning (loop_vec_info loop_vinfo,
|
|||
initialize_original_copy_tables ();
|
||||
loop_version (loop, cond_expr, &condition_bb,
|
||||
prob, prob, REG_BR_PROB_BASE - prob, true);
|
||||
|
||||
if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOC
|
||||
&& dump_enabled_p ())
|
||||
{
|
||||
if (version_alias)
|
||||
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
|
||||
"loop versioned for vectorization because of "
|
||||
"possible aliasing\n");
|
||||
if (version_align)
|
||||
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
|
||||
"loop versioned for vectorization to enhance "
|
||||
"alignment\n");
|
||||
|
||||
}
|
||||
free_original_copy_tables();
|
||||
|
||||
/* Loop versioning violates an assumption we try to maintain during
|
||||
|
|
|
@ -334,7 +334,7 @@ vectorize_loops (void)
|
|||
if (LOCATION_LOCUS (vect_location) != UNKNOWN_LOC
|
||||
&& dump_enabled_p ())
|
||||
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
|
||||
"Vectorized loop\n");
|
||||
"loop vectorized\n");
|
||||
vect_transform_loop (loop_vinfo);
|
||||
num_vectorized_loops++;
|
||||
/* Now that the loop has been vectorized, allow it to be unrolled
|
||||
|
@ -443,7 +443,7 @@ execute_vect_slp (void)
|
|||
vect_slp_transform_bb (bb);
|
||||
if (dump_enabled_p ())
|
||||
dump_printf_loc (MSG_OPTIMIZED_LOCATIONS, vect_location,
|
||||
"Vectorized basic-block\n");
|
||||
"basic block vectorized\n");
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue