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] |
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] |