This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[GCC-9 PATCH, i386]: Emit inter-unit moves using preferred_for_speed infrastructure


Hello!

Attached patch conditionally emits inter-unit moves using
preferred_for_speed_infrastructure. Current approach, where registers
are enabled only for TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC is not
optimal, since for non-performance critical parts of the binary, we
can still emit inter-unit moves, shaving a couple of bytes here and
there.

2018-04-18  Uros Bizjak  <ubizjak@gmail.com>

    * config/i386/i386.md ("isa" attribute): Add x64_sse2.
    ("enabled" attribute): Handle "isa" attribute.
    (*movdi_internal): Substitute Yi and Yj constraint with x
    and Ym and Yn constraint with y constraint.  Update "isa"
    attribute and set "preferred_for_speed" attribute from
    TARGET_INTER_UNIT_MOVES_{FROM,TO}_VEC for updated alternatives.
    (*movsi_internal): Ditto.
    (*movdf_internal): Ditto.
    (*movsf_internal): Ditto.
    (*zero_extendsidi2): Ditto.
    * config/i386/sse.md (vec_set<mode>_0): Ditto.
    (sse2_loadld): Ditto.
    (*vec_extract<ssevecmodelower>_0): Ditto.
    (*vec_extractv4si_0_zext_sse4): Ditto.
    (vec_concatv2di): Ditto.
    (*vec_dup<mode>): Ditto.
    * config/i386/mmx.md (*mov<mode>_internal): Ditto.
    * config/i386/constraints.md (Yi): Remove.
    (Yj): Remove.
    (Ym): Remove.
    (Yn): Remove.

Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

I plan to commit the patch to gcc-9 when it opens for general development.

Uros.

Attachment: interunit.diff.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]