[Bug testsuite/63439] [5 Regression] FAIL: gcc.dg/vect/vect-33.c scan-tree-dump vect "Alignment of access forced using peeling"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"
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"