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

--- Comment #2 from Wilco <wilco at gcc dot gnu.org> ---
Author: wilco
Date: Wed Sep 18 19:52:09 2019
New Revision: 275907

URL: https://gcc.gnu.org/viewcvs?rev=275907&root=gcc&view=rev
Log:
[ARM] Add logical DImode expanders

We currently use default mid-end expanders for logical DImode operations.
These split operations without first splitting off complex immediates or
memory operands.  The resulting expansions are non-optimal and allow for
fewer LDRD/STRD opportunities.  So add back explicit expanders which ensure
memory operands and immediates are handled more efficiently.

    gcc/
        PR target/91738
        * config/arm/arm.md (<logical_op>di3): Expand explicitly.
        (one_cmpldi2): Likewise.
        * config/arm/arm.c (const_ok_for_dimode_op): Return true if one
        of the constant parts is simple.
        * config/arm/iterators.md (LOGICAL): Add new code iterator.
        (logical_op): Add new code attribute.
        (logical_OP): Likewise.
        * config/arm/predicates.md (arm_anddi_operand): Add predicate.
        (arm_iordi_operand): Add predicate.
        (arm_xordi_operand): Add predicate.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/arm/arm.c
    trunk/gcc/config/arm/arm.md
    trunk/gcc/config/arm/iterators.md
    trunk/gcc/config/arm/predicates.md

Reply via email to