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];