Bug 39248 - FAIL: gcc.dg/vect/vect-complex-1.c
Summary: FAIL: gcc.dg/vect/vect-complex-1.c
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: tree-optimization (show other bugs)
Version: 4.4.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks: 39357
  Show dependency treegraph
 
Reported: 2009-02-19 16:58 UTC by John David Anglin
Modified: 2009-03-08 07:25 UTC (History)
1 user (show)

See Also:
Host: arm-none-linux-gnueabi
Target: arm-none-linux-gnueabi
Build: arm-none-linux-gnueabi
Known to work:
Known to fail:
Last reconfirmed:


Attachments
vect-complex-1.c.101t.vect (2.95 KB, text/plain)
2009-02-19 17:19 UTC, dave
Details
slp-7.c.101t.vect.gz (35.37 KB, application/x-gunzip)
2009-02-25 22:35 UTC, dave
Details

Note You need to log in before you can comment on or make changes to this bug.
Description John David Anglin 2009-02-19 16:58:54 UTC
Executing on host: /home/dave/gnu/gcc/objdir/gcc/xgcc -B/home/dave/gnu/gcc/objdi
r/gcc/ /home/dave/gnu/gcc/gcc/gcc/testsuite/gcc.dg/vect/vect-complex-1.c   -ftre
e-vectorize -fno-vect-cost-model -mfpu=neon -mfloat-abi=softfp -O2 -fdump-tree-v
ect-details -S  -o vect-complex-1.s    (timeout = 300)
PASS: gcc.dg/vect/vect-complex-1.c (test for excess errors)
FAIL: gcc.dg/vect/vect-complex-1.c scan-tree-dump-times vect "vectorized 1 loops" 1
FAIL: gcc.dg/vect/vect-complex-1.c scan-tree-dump-times vect "vectorizing stmts using SLP" 1
Comment 1 dave 2009-02-19 17:19:30 UTC
Subject: Re:   New: FAIL:
	gcc.dg/vect/vect-complex-1.c

Attached vect-complex-1.c.101t.vect.

Dave
Comment 2 dave 2009-02-19 17:19:30 UTC
Created attachment 17330 [details]
vect-complex-1.c.101t.vect
Comment 3 John David Anglin 2009-02-19 17:37:45 UTC
gcc.dg/vect/slp-7.c has a similar failure:

Executing on host: /home/dave/gnu/gcc/objdir/gcc/xgcc -B/home/dave/gnu/gcc/objdi
r/gcc/ /home/dave/gnu/gcc/gcc/gcc/testsuite/gcc.dg/vect/slp-7.c   -ftree-vectori
ze -fno-vect-cost-model -mfpu=neon -mfloat-abi=softfp -O2 -fdump-tree-vect-detai
ls -S  -o slp-7.s    (timeout = 300)
PASS: gcc.dg/vect/slp-7.c (test for excess errors)
FAIL: gcc.dg/vect/slp-7.c scan-tree-dump-times vect "vectorized 2 loops" 1
FAIL: gcc.dg/vect/slp-7.c scan-tree-dump-times vect "vectorizing stmts using SLP" 2
Comment 4 Ira Rosen 2009-02-25 07:06:58 UTC
Does adding attribute aligned, as below, help?

Index: vect-complex-1.c
===================================================================
--- vect-complex-1.c    (revision 144030)
+++ vect-complex-1.c    (working copy)
@@ -6,19 +6,19 @@

 #define N 16

-_Complex float a[N] =
+_Complex float a[N]  __attribute__ ((__aligned__(16))) =
     { 10.0F + 20.0iF, 11.0F + 21.0iF, 12.0F + 22.0iF, 13.0F + 23.0iF,
       14.0F + 24.0iF, 15.0F + 25.0iF, 16.0F + 26.0iF, 17.0F + 27.0iF,
       18.0F + 28.0iF, 19.0F + 29.0iF, 20.0F + 30.0iF, 21.0F + 31.0iF,
       22.0F + 32.0iF, 23.0F + 33.0iF, 24.0F + 34.0iF, 25.0F + 35.0iF };
-_Complex float b[N] =
+_Complex float b[N]  __attribute__ ((__aligned__(16))) =
     { 30.0F + 40.0iF, 31.0F + 41.0iF, 32.0F + 42.0iF, 33.0F + 43.0iF,
       34.0F + 44.0iF, 35.0F + 45.0iF, 36.0F + 46.0iF, 37.0F + 47.0iF,
       38.0F + 48.0iF, 39.0F + 49.0iF, 40.0F + 50.0iF, 41.0F + 51.0iF,
       42.0F + 52.0iF, 43.0F + 53.0iF, 44.0F + 54.0iF, 45.0F + 55.0iF };

-_Complex float c[N];
-_Complex float res[N] =
+_Complex float c[N] __attribute__ ((__aligned__(16)));
+_Complex float res[N] __attribute__ ((__aligned__(16))) =
     { 40.0F + 60.0iF, 42.0F + 62.0iF, 44.0F + 64.0iF, 46.0F + 66.0iF,
       48.0F + 68.0iF, 50.0F + 70.0iF, 52.0F + 72.0iF, 54.0F + 74.0iF,
       56.0F + 76.0iF, 58.0F + 78.0iF, 60.0F + 80.0iF, 62.0F + 82.0iF,



Could you please attach slp-7.c's dump as well? I think it is a different problem there.

Thanks,
Ira
Comment 5 dave 2009-02-25 22:35:07 UTC
Subject: Re:  FAIL:
	gcc.dg/vect/vect-complex-1.c

On Wed, 25 Feb 2009, irar at il dot ibm dot com wrote:

> Does adding attribute aligned, as below, help?

Yes, it fixes the failure.

> Could you please attach slp-7.c's dump as well? I think it is a different
> problem there.

Attached.

Dave
Comment 6 dave 2009-02-25 22:35:08 UTC
Created attachment 17363 [details]
slp-7.c.101t.vect.gz
Comment 7 Ira Rosen 2009-02-26 09:57:36 UTC
In slp-7.c all the three loops get vectorized, including the loop that requires vector multiplication for shorts. This patch http://gcc.gnu.org/ml/gcc-patches/2008-07/msg00044.html added ARM to vect_int_mult, but not to vect_short_mult, so I guess the fix should be:

Index: target-supports.exp
===================================================================
--- target-supports.exp (revision 144030)
+++ target-supports.exp (working copy)
@@ -2275,7 +2275,8 @@ proc check_effective_target_vect_short_m
             || [istarget spu-*-*]
             || [istarget i?86-*-*]
             || [istarget x86_64-*-*]
-             || [istarget powerpc*-*-*] } {
+             || [istarget powerpc*-*-*]
+             || [check_effective_target_arm32] } {
           set et_vect_short_mult_saved 1
        }
     }

Does it make sense?

Thanks,
Ira
Comment 8 dave 2009-02-26 20:32:38 UTC
Subject: Re:  FAIL: gcc.dg/vect/vect-complex-1.c

> ------- Comment #7 from irar at il dot ibm dot com  2009-02-26 09:57 -------
> In slp-7.c all the three loops get vectorized, including the loop that requires
> vector multiplication for shorts. This patch
> http://gcc.gnu.org/ml/gcc-patches/2008-07/msg00044.html added ARM to
> vect_int_mult, but not to vect_short_mult, so I guess the fix should be:

Patch fixes the failure of slp-7.c.  I should note there is one XPASS
in the gcc.dg/vect testsuite:

XPASS: gcc.dg/vect/vect-iv-6.c scan-tree-dump-times vect "vectorized 1 loops" 1

Dave
Comment 9 irar 2009-03-03 07:42:43 UTC
Subject: Bug 39248

Author: irar
Date: Tue Mar  3 07:42:26 2009
New Revision: 144569

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=144569
Log:
	PR tree-optimization/39248
	* gcc.dg/vect/vect-complex-1.c: Add attribute aligned
	to the arrays.
	* gcc.dg/vect/vect-iv-6.c: Don't expect to fail to vectorize
	on targets without vector misalignment support.
	* lib/target-supports.exp 
	(check_effective_target_vect_short_mult): Add 
	check_effective_target_arm32.


Modified:
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/gcc.dg/vect/vect-complex-1.c
    trunk/gcc/testsuite/gcc.dg/vect/vect-iv-6.c
    trunk/gcc/testsuite/lib/target-supports.exp

Comment 10 Ira Rosen 2009-03-08 07:25:28 UTC
Fixed.