On Thu, 4 Nov 2021, Jiufu Guo wrote: > Richard Biener <rguent...@suse.de> writes: > > > On Wed, 3 Nov 2021, Jiufu Guo wrote: > > > >> Richard Biener <rguent...@suse.de> writes: > >> > >> > On Mon, 1 Nov 2021, Jiufu Guo wrote: > >> > > >> >> PR101145 is supporting if the number of iterations can be calculated > >> >> for the 'until wrap' condition. Current test cases are checking if > >> >> the loop can be vectorized, if a loop can be vectorized then the number > >> >> of interations is known. While it would be better to check the loop's > >> >> number of iterations directly. This patch updates the test cases > >> >> accordingly. > >> >> > >> >> Bootstrap and regtest pass on ppc,ppc64le and x86_64. > >> >> Is this ok for trunk? > >> > > >> > Not sure - the motivation was to make the loop vectorizable so > >> > a vectorized check is strictly more powerful. What's the problem > >> > with the existing test? > >> > >> Thanks, Richard! > >> > >> The problem of current tests is that some targets do not support > >> vectorization on some types, like "vector(8) unsigned char" on > >> Solaris/SPARC, "vector long long" on Power7: > >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102946 > >> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102069 > >> > >> On those targets, the "number of iterations" was calculated for > >> the loops in the test cases, while the loops are not vectorized. > > > > I see, but can you add appropriate target selectors for the > > vectorization then and keep those scans? I'm not sure why you > > return the final IV value from the functions rather than > > testing correct data in a[], that will complicate selecting the > > targets that can vectorize things. There is vect_char_add and > > vect_long_long you could require in addition to vect_int. > > Thanks Richard, > > The final IV would be the index of last iteration, test test cases > are checking if it is just wrap around max/min of the index type. > > I updated the patch accordingly.
OK. Thanks, Richard. > BR, > Jiufu > > > -------------------- > [PATCH] Update dg-require-effective-target for pr101145 cases > > For test cases pr101145*.c, some types are not able to be > vectorized on some targets. This patch updates > dg-require-effective-target according to test cases. > > gcc/testsuite/ChangeLog: > > * gcc.dg/vect/pr101145_1.c: Update case. > * gcc.dg/vect/pr101145_2.c: Update case. > * gcc.dg/vect/pr101145_3.c: Update case. > > --- > gcc/testsuite/gcc.dg/vect/pr101145_1.c | 2 +- > gcc/testsuite/gcc.dg/vect/pr101145_2.c | 2 +- > gcc/testsuite/gcc.dg/vect/pr101145_3.c | 2 +- > 3 files changed, 3 insertions(+), 3 deletions(-) > > diff --git a/gcc/testsuite/gcc.dg/vect/pr101145_1.c > b/gcc/testsuite/gcc.dg/vect/pr101145_1.c > index 9332b2c4257..24a9da63e88 100644 > --- a/gcc/testsuite/gcc.dg/vect/pr101145_1.c > +++ b/gcc/testsuite/gcc.dg/vect/pr101145_1.c > @@ -1,4 +1,4 @@ > -/* { dg-require-effective-target vect_int } */ > +/* { dg-require-effective-target vect_char_add } */ > /* { dg-additional-options "-O3" } */ > #define TYPE signed char > #define MIN -128 > diff --git a/gcc/testsuite/gcc.dg/vect/pr101145_2.c > b/gcc/testsuite/gcc.dg/vect/pr101145_2.c > index fa2c6be689a..9091f606066 100644 > --- a/gcc/testsuite/gcc.dg/vect/pr101145_2.c > +++ b/gcc/testsuite/gcc.dg/vect/pr101145_2.c > @@ -1,4 +1,4 @@ > -/* { dg-require-effective-target vect_int } */ > +/* { dg-require-effective-target vect_char_add } */ > /* { dg-additional-options "-O3" } */ > #define TYPE unsigned char > #define MIN 0 > diff --git a/gcc/testsuite/gcc.dg/vect/pr101145_3.c > b/gcc/testsuite/gcc.dg/vect/pr101145_3.c > index 9f43c82593f..001e5f38a46 100644 > --- a/gcc/testsuite/gcc.dg/vect/pr101145_3.c > +++ b/gcc/testsuite/gcc.dg/vect/pr101145_3.c > @@ -1,4 +1,4 @@ > -/* { dg-require-effective-target vect_int } */ > +/* { dg-require-effective-target vect_long_long } */ > /* { dg-additional-options "-O3" } */ > #define TYPE int * > #define MIN ((TYPE)0) > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Maxfeldstrasse 5, 90409 Nuernberg, Germany; GF: Ivo Totev; HRB 36809 (AG Nuernberg)