[Bug target/97019] rs6000:redundant rldicr fed to lvx/stvx

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Sep 16 05:23:39 GMT 2020


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97019

--- Comment #2 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Kewen Lin <linkw@gcc.gnu.org>:

https://gcc.gnu.org/g:e0d98ffd14487b7105de3d151122144086faa1fa

commit r11-3217-ge0d98ffd14487b7105de3d151122144086faa1fa
Author: Kewen Lin <linkw@linux.ibm.com>
Date:   Tue Sep 15 22:32:55 2020 -0500

    rs6000: Remove useless insns fed into lvx/stvx [PR97019]

    This patch is to extend the existing function find_alignment_op to
    check all defintions of base_reg are AND operations with mask -16B
    to force the alignment.  If all are satifised, it passes all AND
    operations and instructions to function recombine_lvx_pattern
    and recombine_stvx_pattern, they can remove all useless ANDs
    further.

    Bootstrapped/regtested on powerpc64le-linux-gnu P8.

    gcc/ChangeLog:

            PR target/97019
            * config/rs6000/rs6000-p8swap.c (find_alignment_op): Adjust to
            support multiple defintions which are all AND operations with
            the mask -16B.
            (recombine_lvx_pattern): Adjust to handle multiple AND operations
            from find_alignment_op.
            (recombine_stvx_pattern): Likewise.

    gcc/testsuite/ChangeLog:

            PR target/97019
            * gcc.target/powerpc/pr97019.c: New test.


More information about the Gcc-bugs mailing list