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

--- Comment #11 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The master branch has been updated by Aaron Sawdey <acsaw...@gcc.gnu.org>:

https://gcc.gnu.org/g:6b91b3e9df171970a907638d9b2e0bca1e792975

commit r11-5097-g6b91b3e9df171970a907638d9b2e0bca1e792975
Author: Aaron Sawdey <acsaw...@linux.ibm.com>
Date:   Wed Nov 4 13:54:25 2020 -0600

    Add MODE_OPAQUE

    After discussion with Richard Sandiford on IRC, he suggested adding a
    new mode class MODE_OPAQUE to deal with the problems (PR 96791) we had
    been having with POImode/PXImode in powerpc target. This patch is the
    accumulation of changes I needed to make to add this and make it useable
    for the purposes of what power10 MMA needed.

    MODE_OPAQUE modes allow you to have modes for which you can just
    define loads and stores. By design, optimization does not expect to
    know how to do arithmetic or subregs on these modes. This allows us to
    have modes for multi-register vector operations where we don't want to
    open Pandora's Box and define general arithmetic operations.

    This patch will be followed by a target specific patch to change the
    powerpc power10 MMA builtins to use opaque modes, and will also let use
    use the vector pair loads/stores defined with that in the inline expansion
    of memcpy/memmove, allowing me to fix PR 96791.

    gcc/ChangeLog
            PR target/96791
            * mode-classes.def: Add MODE_OPAQUE.
            * machmode.def: Add OPAQUE_MODE.
            * tree.def: Add OPAQUE_TYPE for types that will use
            MODE_OPAQUE.
            * doc/generic.texi: Document OPAQUE_TYPE.
            * doc/rtl.texi: Document MODE_OPAQUE.
            * machmode.h: Add OPAQUE_MODE_P().
            * genmodes.c (complete_mode): Add MODE_OPAQUE.
            (opaque_mode): New function.
            * tree.c (tree_code_size): Add OPAQUE_TYPE.
            * tree.h: Add OPAQUE_TYPE_P().
            * stor-layout.c (int_mode_for_mode): Treat MODE_OPAQUE modes
            like BLKmode.
            * ira.c (find_moveable_pseudos): Treat MODE_OPAQUE modes more
            like integer/float modes here.
            * dbxout.c (dbxout_type): Treat OPAQUE_TYPE like VOID_TYPE.
            * tree-pretty-print.c (dump_generic_node): Treat OPAQUE_TYPE
            like like other types.

Reply via email to