Messages in this thread | | | From | Arvind Sankar <> | Date | Tue, 10 Nov 2020 17:15:11 -0500 | Subject | Re: [PATCH 2/2] arm: lib: xor-neon: disable clang vectorization |
| |
On Tue, Nov 10, 2020 at 01:41:17PM -0800, Nick Desaulniers wrote: > On Mon, Nov 9, 2020 at 11:51 AM Adrian Ratiu <adrian.ratiu@collabora.com> wrote: > > > > On Fri, 06 Nov 2020, Nick Desaulniers <ndesaulniers@google.com> > > wrote: > > > +#pragma clang loop vectorize(enable) > > > do { > > > p1[0] ^= p2[0] ^ p3[0] ^ p4[0] ^ p5[0]; p1[1] ^= > > > p2[1] ^ p3[1] ^ p4[1] ^ p5[1]; > > > ``` seems to generate the vectorized code. > > > > > > Why don't we find a way to make those pragma's more toolchain > > > portable, rather than open coding them like I have above rather > > > than this series? > > > > Hi again Nick, > > > > How did you verify the above pragmas generate correct vectorized > > code? Have you tested this specific use case? > > I read the disassembly before and after my suggested use of pragmas; > look for vld/vstr. You can also add -Rpass-missed=loop-vectorize to > CFLAGS_xor-neon.o in arch/arm/lib/Makefile and rebuild > arch/arm/lib/xor-neon.o with CONFIG_BTRFS enabled. >
https://godbolt.org/z/1oo9M6
With the __restrict__ keywords added, clang seems to vectorize the loop, but still reports that vectorization wasn't beneficial -- any idea what's going on?
| |