On Tue, Nov 17, 2020 at 2:02 PM Richard Sandiford
<richard.sandif...@arm.com> wrote:
>
> Richard Biener via Gcc-patches <gcc-patches@gcc.gnu.org> writes:
> > On Tue, Nov 17, 2020 at 12:24 PM Richard Sandiford via Gcc-patches
> > <gcc-patches@gcc.gnu.org> wrote:
> >>
> >> We're now able to vectorise the set-up loop:
> >>
> >>       int p = power2 (fns[i].po2);
> >>       for (int j = 0; j < N; j++)
> >>         a[j] = ((p << 4) * j) / (N - 1) - (p << 5);
> >>
> >> Rather than adjust the expected output for that, it seemed better
> >> to disable optimisation for the testing code.
> >>
> >> Tested on aarch64-linux-gnu (with and without SVE), arm-linux-gnueabihf
> >> and x86_64-linux-gnu.  OK to install?
> >
> > In other places we just add a asm ("" : : : "memory") to the loop body, can 
> > you
> > do it like htat?
>
> I wondered about that, but I don't think it's reliable long-term.
> We could (perhaps rightly) decide that it's a win to vectorise the
> rhs of a[j] even if the asm prevents us from doing a vector store.

But this is about dump-scanning and I'd rather avoid optimize attributes
since that removes coverage gained by people running the testsuite
with random set of options.

We do have #pragma no_vector support in the middle-end just not
yet in the C FE parser (see where it builds ANNOTATE_EXPRs,
add support for the annot_expr_no_vector_kind).  If you want a
future-proof reliable way to disable vectorizing a loop, that is.

Richard.

> Thanks,
> Richard
>
> >
> > Thanks,
> > RIchard.
> >
> >> Richard
> >>
> >>
> >> gcc/testsuite/
> >>         * gcc.dg/vect/vect-sdiv-pow2-1.c (main): Disable optimization.
> >> ---
> >>  gcc/testsuite/gcc.dg/vect/vect-sdiv-pow2-1.c | 2 +-
> >>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>
> >> diff --git a/gcc/testsuite/gcc.dg/vect/vect-sdiv-pow2-1.c 
> >> b/gcc/testsuite/gcc.dg/vect/vect-sdiv-pow2-1.c
> >> index be70bc6c47e..bf387133d01 100644
> >> --- a/gcc/testsuite/gcc.dg/vect/vect-sdiv-pow2-1.c
> >> +++ b/gcc/testsuite/gcc.dg/vect/vect-sdiv-pow2-1.c
> >> @@ -53,7 +53,7 @@ power2 (int x)
> >>
> >>  #define N 50
> >>
> >> -int
> >> +int __attribute__ ((optimize (0)))
> >>  main (void)
> >>  {
> >>    int a[N], b[N], c[N];

Reply via email to