]> git.baikalelectronics.ru Git - kernel.git/commit
lib/xor: make xor prototypes more friendly to compiler vectorization
authorArd Biesheuvel <ardb@kernel.org>
Sat, 5 Feb 2022 15:23:45 +0000 (16:23 +0100)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 11 Feb 2022 09:39:39 +0000 (20:39 +1100)
commit82bea833f7b2b0ee8f0a97079e7dda17e6f0d39c
tree86c452349612ec00b52d83c78900bcf45b6bbd8d
parentb8962cc968a0596521ad5966e6861b4212fcdbfa
lib/xor: make xor prototypes more friendly to compiler vectorization

Modern compilers are perfectly capable of extracting parallelism from
the XOR routines, provided that the prototypes reflect the nature of the
input accurately, in particular, the fact that the input vectors are
expected not to overlap. This is not documented explicitly, but is
implied by the interchangeability of the various C routines, some of
which use temporary variables while others don't: this means that these
routines only behave identically for non-overlapping inputs.

So let's decorate these input vectors with the __restrict modifier,
which informs the compiler that there is no overlap. While at it, make
the input-only vectors pointer-to-const as well.

Tested-by: Nathan Chancellor <nathan@kernel.org>
Signed-off-by: Ard Biesheuvel <ardb@kernel.org>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Link: https://github.com/ClangBuiltLinux/linux/issues/563
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
17 files changed:
arch/alpha/include/asm/xor.h
arch/arm/include/asm/xor.h
arch/arm64/include/asm/xor.h
arch/arm64/lib/xor-neon.c
arch/ia64/include/asm/xor.h
arch/powerpc/include/asm/xor_altivec.h
arch/powerpc/lib/xor_vmx.c
arch/powerpc/lib/xor_vmx.h
arch/powerpc/lib/xor_vmx_glue.c
arch/s390/lib/xor.c
arch/sparc/include/asm/xor_32.h
arch/sparc/include/asm/xor_64.h
arch/x86/include/asm/xor.h
arch/x86/include/asm/xor_32.h
arch/x86/include/asm/xor_avx.h
include/asm-generic/xor.h
include/linux/raid/xor.h