On Tue, Nov 17, 2020 at 2:02 PM Richard Sandiford
<[email protected]> wrote:
>
> Richard Biener via Gcc-patches <[email protected]> writes:
> > On Tue, Nov 17, 2020 at 12:24 PM Richard Sandiford via Gcc-patches
> > <[email protected]> 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];