[PATCH, rs6000, libcpp] Revise search_line_fast to avoid old unaligned load sequences
David Edelsohn
dje.gcc@gmail.com
Fri Oct 3 17:40:00 GMT 2014
On Mon, Sep 29, 2014 at 4:15 PM, Bill Schmidt
<wschmidt@linux.vnet.ibm.com> wrote:
> Hi,
>
> The vec_lvsl and vec_lvsr interfaces are deprecated for little-endian
> Power, and really should not be used on big-endian Power either when the
> target CPU is power8 or above. The lexer in libcpp currently makes use
> of these interfaces in search_line_fast(). This patch provides a new
> version of search_line_fast() that allows unaligned loads to be handled
> by the hardware.
>
> The new version is used when _ARCH_PWR8 and __ALTIVEC__ are defined.
> Otherwise, the older version may be used; however it is now restricted
> for use only on big-endian systems. If we are targeting little-endian
> (which requires P8 or higher) and either Altivec support or Power8
> architecture support has been disabled, then we revert to a slower
> search routine. This prevents ever using the deprecated instructions
> for little-endian code generation.
>
> I haven't added a new test case, as bootstrapping GCC is an excellent
> test of search_line_fast(), and that appears to be all we do at present
> for the existing implementations.
>
> Bootstrapped and tested on powerpc64le-unknown-linux-gnu and
> powerpc64-unknown-linux-gnu with no new regressions. Is this ok for
> trunk?
>
> Thanks,
> Bill
>
>
> 2014-09-29 Bill Schmidt <wschmidt@linux.vnet.ibm.com>
>
> * lex.c (search_line_fast): Add new version to be used for Power8
> and later targets when Altivec is enabled. Restrict the existing
> Altivec version to big-endian systems so that lvsr is not used on
> little endian, where it is deprecated. Remove LE-specific code
> from the now-BE-only version.
The code is POWER-specific. It's okay with me. The GCC front-end
maintainers do not seem to have any concerns or objections.
Thanks, David
More information about the Gcc-patches
mailing list