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