re PR tree-optimization/66002 (paq8p benchmark 50% slower than clang on sandybridge)

2015-05-07  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/66002
	* passes.def: Schedule another pass_merge_phi after ifcombine, right
	before phiopt.

	* gcc.dg/vect/vect-125.c: New testcase.

From-SVN: r222873
This commit is contained in:
Richard Biener 2015-05-07 09:52:38 +00:00 committed by Richard Biener
parent e0f0d3b9d2
commit 465770e439
4 changed files with 32 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2015-05-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/66002
* passes.def: Schedule another pass_merge_phi after ifcombine, right
before phiopt.
2015-05-07 Marek Polacek <polacek@redhat.com>
Martin Uecker <uecker@eecs.berkeley.edu>

View file

@ -177,6 +177,7 @@ along with GCC; see the file COPYING3. If not see
NEXT_PASS (pass_cselim);
NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_tree_ifcombine);
NEXT_PASS (pass_merge_phi);
NEXT_PASS (pass_phiopt);
NEXT_PASS (pass_tail_recursion);
NEXT_PASS (pass_ch);

View file

@ -1,3 +1,8 @@
2015-05-07 Richard Biener <rguenther@suse.de>
PR tree-optimization/66002
* gcc.dg/vect/vect-125.c: New testcase.
2015-05-07 Marek Polacek <polacek@redhat.com>
Martin Uecker <uecker@eecs.berkeley.edu>

View file

@ -0,0 +1,20 @@
/* { dg-do compile } */
/* { dg-require-effective-target vect_int } */
/* { dg-require-effective-target vect_int_mult } */
/* { dg-require-effective-target vect_pack_trunc } */
/* { dg-require-effective-target vect_unpack } */
void train(short *t, short *w, int n, int err)
{
n=(n+7)&-8;
for (int i=0; i<n; ++i)
{
int wt=w[i]+((t[i]*err*2>>16)+1>>1);
if (wt<-32768) wt=-32768;
if (wt>32767) wt=32767;
w[i]=wt;
}
}
/* { dg-final { scan-tree-dump "vectorized 1 loops" "vect" { xfail vect_no_int_max } } } */
/* { dg-final { cleanup-tree-dump "vect" } } */