[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-26 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

Rainer Orth  changed:

   What|Removed |Added

 Status|ASSIGNED|RESOLVED
 Resolution|--- |FIXED

--- Comment #18 from Rainer Orth  ---
Done now.


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-26 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #17 from Richard Biener  ---
Ok, same issues as 32-bit.  So it should be fine to change sparc to vect64 now.


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #16 from Rainer Orth  ---
Created attachment 34550
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34550&action=edit
64-bit sparc bb-slp-26.c.129t.slp1


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #15 from Rainer Orth  ---
Created attachment 34549
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34549&action=edit
64-bit sparc bb-slp-11.c.135t.slp2


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread ro at CeBiTec dot Uni-Bielefeld.DE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #14 from ro at CeBiTec dot Uni-Bielefeld.DE  ---
> --- Comment #12 from Richard Biener  ---
[...]
>> I'm attaching the 32-bit slp? dumps for reference.
>
> So 64-bit works fine?

Unfortunately not.  I'll attach the dumps, too.

Rainer


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #13 from Richard Biener  ---
Author: rguenth
Date: Fri Jan 23 13:08:32 2015
New Revision: 220039

URL: https://gcc.gnu.org/viewcvs?rev=220039&root=gcc&view=rev
Log:
2015-01-23  Richard Biener  

PR testsuite/63439
* gcc.dg/vect/bb-slp-11.c: Require vect_pack_trunc.
* gcc.dg/vect/bb-slp-26.c: Require vect_hw_misalign.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/vect/bb-slp-11.c
trunk/gcc/testsuite/gcc.dg/vect/bb-slp-26.c


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #12 from Richard Biener  ---
(In reply to r...@cebitec.uni-bielefeld.de from comment #8)
> > --- Comment #5 from Richard Biener  ---
> [...]
> > For SPARC we use v8qi and peel for alignment.  That should be handled
> > but it looks like SPARC is not vect64 for whatever reason :/
> >
> > Rainer, can you please make SPARC vect64?
> 
> When I do this, the vect-33.c test now passes, both 32 and 64-bit, but
> the other gcc.dg/vect tests refering to vect64 start FAILing instead:
> 
> FAIL: gcc.dg/vect/bb-slp-11.c scan-tree-dump-times slp2 "basic block
> vectorized"

Using V2SI, but it doesn't support 2 * V2SI -> V4HI VEC_PACK_TRUNC_EXPR.
This means the testcase misses to require vect_pack_trunc.

> FAIL: gcc.dg/vect/bb-slp-26.c scan-tree-dump-times slp1 "basic block
> vectorized" 1

Here it fails to vectorize because the accesses are unaligned.  The testcase
fails to check for vect_hw_misalign.

> I'm attaching the 32-bit slp? dumps for reference.

So 64-bit works fine?

>   Rainer

[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread ro at CeBiTec dot Uni-Bielefeld.DE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #11 from ro at CeBiTec dot Uni-Bielefeld.DE  ---
> --- Comment #7 from Richard Biener  ---
[...]
> which means it is unconditionally vect64 (I assume word_mode is DImode).

Unless I'm completely mistaken, word_mode is SImode for 32-bit, DImode
for 64-bit.

Rainer


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #10 from Rainer Orth  ---
Created attachment 34547
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34547&action=edit
32-bit sparc bb-slp-26.c.129t.slp1


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread ro at CeBiTec dot Uni-Bielefeld.DE
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #8 from ro at CeBiTec dot Uni-Bielefeld.DE  ---
> --- Comment #5 from Richard Biener  ---
[...]
> For SPARC we use v8qi and peel for alignment.  That should be handled
> but it looks like SPARC is not vect64 for whatever reason :/
>
> Rainer, can you please make SPARC vect64?

When I do this, the vect-33.c test now passes, both 32 and 64-bit, but
the other gcc.dg/vect tests refering to vect64 start FAILing instead:

FAIL: gcc.dg/vect/bb-slp-11.c scan-tree-dump-times slp2 "basic block
vectorized"
FAIL: gcc.dg/vect/bb-slp-26.c scan-tree-dump-times slp1 "basic block
vectorized" 1

I'm attaching the 32-bit slp? dumps for reference.

Rainer


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #9 from Rainer Orth  ---
Created attachment 34546
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34546&action=edit
32-bit sparc bb-slp-11.c.135t.slp2


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #7 from Richard Biener  ---
So SPARC has

static machine_mode
sparc_preferred_simd_mode (machine_mode mode)
{
  if (TARGET_VIS)
switch (mode)
  {
  case SImode:
return V2SImode;
  case HImode:
return V4HImode;
  case QImode:
return V8QImode;

  default:;
  }

  return word_mode;
}

which means it is unconditionally vect64 (I assume word_mode is DImode).


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #6 from Richard Biener  ---
Author: rguenth
Date: Fri Jan 23 11:00:10 2015
New Revision: 220033

URL: https://gcc.gnu.org/viewcvs?rev=220033&root=gcc&view=rev
Log:
2015-01-23  Richard Biener  

PR testsuite/63439
* gcc.dg/vect/vect-33.c: Adjust target selectors for v16qi
vectorization on vect64 targets.

Modified:
trunk/gcc/testsuite/ChangeLog
trunk/gcc/testsuite/gcc.dg/vect/vect-33.c


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-23 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #5 from Richard Biener  ---
So arm uses v16qi, but:

/* { dg-final { scan-tree-dump "Alignment of access forced using peeling"
"vect" { target { vector_alignment_reachable && vect64 } } } } */

so arm also is vect64 (v16qi is 128 bits).  arm vectorizes with v16qi and
unaligned accesses.  But

/* { dg-final { scan-tree-dump "Vectorizing an unaligned access" "vect" {
target { vect_hw_misalign && { ! vect64 } } } } } */

so the issue is that we don't have a vect128 target capability as if
vect_hw_misaling && vect128 we'd expect to vectorize an unaligned access.
Only if vect64 && !vect128 we'd expect to peel for alignment.

Luckily we have vect_multiple_sizes so I can adjust it for arm using that.


For SPARC we use v8qi and peel for alignment.  That should be handled
but it looks like SPARC is not vect64 for whatever reason :/

Rainer, can you please make SPARC vect64?


So I expect

Index: testsuite/gcc.dg/vect/vect-33.c
===
--- testsuite/gcc.dg/vect/vect-33.c (revision 220030)
+++ testsuite/gcc.dg/vect/vect-33.c (working copy)
@@ -38,7 +38,7 @@ int main (void)


 /* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"  } } */
-/* { dg-final { scan-tree-dump "Vectorizing an unaligned access" "vect" {
target { vect_hw_misalign && { ! vect64 } } } } } */
-/* { dg-final { scan-tree-dump "Alignment of access forced using peeling"
"vect" { target { vector_alignment_reachable && vect64 } } } } */
+/* { dg-final { scan-tree-dump "Vectorizing an unaligned access" "vect" {
target { vect_hw_misalign && { {! vect64} || vect_multiple_sizes } } } } } */
+/* { dg-final { scan-tree-dump "Alignment of access forced using peeling"
"vect" { target { vector_alignment_reachable && { vect64 && {!
vect_multiple_sizes} } } } } } */
 /* { dg-final { scan-tree-dump-times "Alignment of access forced using
versioning" 1 "vect" { target { { {! vector_alignment_reachable} || {! vect64}
} && {! vect_hw_misalign} } } } } */
 /* { dg-final { cleanup-tree-dump "vect" } } */

to fix it for arm and also work for fixed SPARC.


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-22 Thread ro at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

--- Comment #4 from Rainer Orth  ---
Created attachment 34530
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=34530&action=edit
sparc vectorizer dump


[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"

2015-01-22 Thread rguenth at gcc dot gnu.org
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63439

Richard Biener  changed:

   What|Removed |Added

   Target Milestone|--- |5.0
Summary|FAIL: gcc.dg/vect/vect-33.c |[5 Regression] FAIL:
   |scan-tree-dump vect |gcc.dg/vect/vect-33.c
   |"Alignment of access forced |scan-tree-dump vect
   |using peeling"  |"Alignment of access forced
   ||using peeling"