[Bug target/98119] [10/11 Regression] SVE: Wrong code with -O1 -ftree-vectorize -msve-vector-bits=512 -mtune=thunderx

cvs-commit at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Wed Mar 31 10:26:19 GMT 2021


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

--- Comment #4 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Richard Sandiford <rsandifo@gcc.gnu.org>:

https://gcc.gnu.org/g:1393938e4c7dab9306cdce5a73d93b242fc246ec

commit r11-7927-g1393938e4c7dab9306cdce5a73d93b242fc246ec
Author: Richard Sandiford <richard.sandiford@arm.com>
Date:   Wed Mar 31 11:26:06 2021 +0100

    aarch64: Fix target alignment for SVE [PR98119]

    The vectoriser supports peeling for alignment using predication:
    we move back to the previous aligned boundary and make the skipped
    elements inactive in the first loop iteration.  As it happens,
    the costs for existing CPUs give an equal cost to aligned and
    unaligned accesses, so this feature is rarely used.

    However, the PR shows that when the feature was forced on, we were
    still trying to align to a full-vector boundary even when using
    partial vectors.

    gcc/
            PR target/98119
            * config/aarch64/aarch64.c
            (aarch64_vectorize_preferred_vector_alignment): Query the size
            of the provided SVE vector; do not assume that all SVE vectors
            have the same size.

    gcc/testsuite/
            PR target/98119
            * gcc.target/aarch64/sve/pr98119.c: New test.


More information about the Gcc-bugs mailing list