Generate LDRD/STRD in ARM mode with -O2 for CPUs that set "prefer_ldrd_strd"
tune flag.

The patch consists of
* peephole2 patterns that merge LDR/STR into DImode move to match the
existing arm_movdi defne_insn,
* peephole2 patterns that attempt to rename and reorder registers to enable
LDRD/STRD, and
* a change in output_move_double that enabled generation of LDRD/STRD with
ip.
* replace "r" constraints with "q" constraints in patterns for movdi, in
alternatives that emit LDRD/STRD via a call to output_move_double.

gcc/ChangeLog

2011-10-28  Greta Yorsh  <greta.yo...@arm.com>

        * config/arm/ldrdstrd0.md: New peepholes for ARM mode.
        * config/arm/arm.c (output_move_double): enable LDRD/STRD
        with IP register.
        * config/arm/arm.md (arm_movdi, movdf_soft_insn): replace
        constraint "r" with "q" for output_move_double alternatives
        to generate LDRD/STRD with ip.
        * config/arm/vfp.md (movdi_vfp, movdi_vfp_cortexa8): Likewise.
        * config/arm/iwmmxt.md (iwmmxt_arm_movdi): Likewise.
        * config/arm/fpa.md (movdf_fpa): Likewise.
        * config/arm/cirrus.md (cirrus_arm_movdi): Likewise.

Attachment: 2-output-double.patch
Description: Binary data

Reply via email to