This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: patch: cleanup gcc.dg/vect/ (take 2)





> Are these long-term limitations, or temporary?  If temporary then the
> tests can be set up as expected failures

they are temporary limitations - xfail is the appropriate solution here.

>   vect_int      target supports hardware vectors of int
>   vect_fp       target supports hardware vectors of float
>   vect_align    target models alignment-handling for hardware vectors
>   vect_bitwise  target supports bitwise operations for hardware vectors
>   vect_max      target supports a max operation for hardware vectors
>
> Any of these can be negated to xfail for targets that don't support it.
> Am I missing anything?

We may want to distinguish between targets that support double precision fp
and targets that support only single precision fp (see testcase vect-38.c).

Also, could be useful to distinguish cases that generate 64bit code - i.e,
a compiler configured for powerpc64-linux or compiling with -m64 (see
PR18403).

thanks,

dorit




                                                                                                                                
                      Janis Johnson                                                                                             
                      <janis187@us.ibm.        To:       Dorit Naishlos/Haifa/IBM@IBMIL                                         
                      com>                     cc:       Janis Johnson <janis187@us.ibm.com>, aldyh@redhat.com,                 
                                                gcc-patches@gcc.gnu.org, ja2morri@csclub.uwaterloo.ca                           
                      12/11/2004 04:39         Subject:  Re: patch: cleanup gcc.dg/vect/ (take 2)                               
                                                                                                                                




On Sun, Nov 07, 2004 at 05:52:55PM +0200, Dorit Naishlos wrote:
>
> > We want the DejaGnu stuff in the test headers to be clear, and we want
> > it to be easy to update the tests to be used for a new target.
>
> Just a thought -
> might make sense to also automate the dg-final stuff, together with the
> dg-do. My concern is that when the targets and compilation flags are no
> longer explicitly listed in the testcase header, it may become less
obvious
> to know if and which targets should xfail on:
> /* { dg-final { scan-tree-dump-times "vectorized X loops" Y "vect" } }
*/)
>
> For example, tests with unaligned accesses will only get vectorized on
> targets that supply implementation of the alignment handling mechanisms
> (i.e, define the vec_realign_load pattern (like alpha, altivec), or
define
> the target hook targetm.vectorize.misaligned_mem_ok (like mmx)):
>
> - vect-[27,29,72,77].c are int testcases that don't get vectorized on
> targets that do not model alignment handling mechanisms (i386 with
-msse2)
>
> - vect-[44,48,50,52,54,56,58,60,80].c are fp testcases that don't get
> vectorized on targets that do not model alignment handling mechanisms
(i386
> with -msse2, mips)
>
> I think we currently have only two additional classes of targets xfailing
> on dg-final:
>
> - vect-[17,18,19,20].c don't get vectorized on targets that don't have
(or
> don't model) vector bitwise operations.
>
> - vect-13.c doesn't get vectorized on targets that don't have (or don't
> model) a vector max operation.

Dorit,

Are these long-term limitations, or temporary?  If temporary then the
tests can be set up as expected failures, but if they are permanent then
a test can be skipped, showing up in the summary and log files as
UNSUPPORTED.  For example, if the limitations are permanent then
vect-27.c can use

/* { dg-do [dg-vect-do-what] [dg-target-list target [expr
[is-effective-target vect_int] && [is-effective-target vect_align]]] } */

Otherwise it can use

/* { dg-require-effective-target vect_int } */
/* { dg-final { scan-tree-dump-times "vectorized 1 loops" 1 "vect"
[dg-target-list xfail [expr ![is-effective-target vect_align]]]} } */

Now that dg-require-effective-target and is-effective-target are in, I'm
planning for them to recognize the following.  I'll need help with the
check_* procedures but will provide a starting point for each of them.

  vect_int      target supports hardware vectors of int
  vect_fp       target supports hardware vectors of float
  vect_align    target models alignment-handling for hardware vectors
  vect_bitwise  target supports bitwise operations for hardware vectors
  vect_max      target supports a max operation for hardware vectors

Any of these can be negated to xfail for targets that don't support it.
Am I missing anything?

Janis



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]