Re: [2/2] selftests/powerpc: benchmarks/context_switch.c use vector instructions/types
From: Michael Ellerman <mpe@ellerman.id.au>
Date: 2016-07-05 14:10:10
On Thu, 2016-03-03 at 23:06:40 UTC, Cyril Bur wrote:
Currently it doesn't appear the resulting binary actually uses any Altivec
or VSX instructions the solution is to explicitly tell GCC to use vector
instructions and use vector types in the code.
Part of this this issue can be GCC version specific:
GCC 4.9.x is happy to use Altivec and VSX instructions if altivec.h is
includedi (and possibly if vector types are used), this also means that
4.9.x will use VSX instructions even if only -maltivec is passed. It is
also possible that Altivec instructions will be used even without -maltivec
or -mabi=altivec.
GCC 5.2.x complains about the lack of -maltivec parameter if altivec.h is
included and will not use VSX unless -mvsx is present on commandline.
GCC 5.3.0 has a regression that means __attribute__((__target__("no-vsx"))
fails to build. A fix is targeted for 5.4.
Furthermore LTO (Link Time Optimisation) doesn't play well with
__attribute__((__target__("no-vsx")), LTO can cause GCC to forget about the
attribute and compile with VSX instructions regardless. Be weary when
enabling -flfo for this test.
Signed-off-by: Cyril Bur <redacted>Applied to powerpc next, thanks. https://git.kernel.org/powerpc/c/f2418ae8a81760b4dec8d5e3e7 cheers