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

--- Comment #1 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Tamar Christina <tnfch...@gcc.gnu.org>:

https://gcc.gnu.org/g:53161358180fdc2c2c21c8f46bbdd339a1fbb8ae

commit r10-7537-g53161358180fdc2c2c21c8f46bbdd339a1fbb8ae
Author: Tamar Christina <tamar.christ...@arm.com>
Date:   Fri Apr 3 15:18:35 2020 +0100

    AArch64: Fix options canonicalization for assembler

    It is currently impossible to use fp16 on any architecture higher than
Armv8.3-a
    due to a bug in options canonization.  This bug results in the fp16 flag
not
    being emitted in the assembly when it should have been.

    This is caused by a complicated architectural requirement at Armv8.4-a.  On
    Armv8.2-a and Armv8.3-a fp16fml is an optional extension and turning it on
turns
    on both fp and fp16.  However starting with Armv8.4-a fp16fml is mandatory
if
    fp16 is available, otherwise it's optional.

    In short this means that to enable fp16fml the smallest option that needs
to
    passed to the assembler is Armv8.4-a+fp16.

    The fix in this patch takes into account that an option may be on by
default in
    an architecture, but that not all the bits required to use it are on by
default
    in an architecture.  In such cases the difference between the two are still
    emitted to the assembler.

    gcc/ChangeLog:

            PR target/94396
            * common/config/aarch64/aarch64-common.c
            (aarch64_get_extension_string_for_isa_flags): Handle default flags.

    gcc/testsuite/ChangeLog:

            PR target/94396
            * gcc.target/aarch64/options_set_11.c: New test.
            * gcc.target/aarch64/options_set_12.c: New test.
            * gcc.target/aarch64/options_set_13.c: New test.
            * gcc.target/aarch64/options_set_14.c: New test.
            * gcc.target/aarch64/options_set_15.c: New test.
            * gcc.target/aarch64/options_set_16.c: New test.
            * gcc.target/aarch64/options_set_17.c: New test.
            * gcc.target/aarch64/options_set_18.c: New test.
            * gcc.target/aarch64/options_set_19.c: New test.
            * gcc.target/aarch64/options_set_20.c: New test.
            * gcc.target/aarch64/options_set_21.c: New test.
            * gcc.target/aarch64/options_set_22.c: New test.
            * gcc.target/aarch64/options_set_23.c: New test.
            * gcc.target/aarch64/options_set_24.c: New test.
            * gcc.target/aarch64/options_set_25.c: New test.
            * gcc.target/aarch64/options_set_26.c: New test.

Reply via email to