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]

[PATCH, i386]: Fix PR 80833, avoid partial memory stalls for double-mode inter-unit moves


Hello!

Attached patch implements splitting of double-mode inter-unit moves to
movd/pinsrd and movd/pextrd (and their 64bit "q" variants for TImode
moves) for SSE4 targets. This way, partial memory stalls are avoided.

2017-05-30  Uros Bizjak  <ubizjak@gmail.com>

    PR target/80833
    * config/i386/constraints.md (Yd): New constraint.
    (Ye): Ditto.
    * config/i386/i386.md (*movti_internal): Add (?r, Ye)
    and (?Yd, r) alternatives.  Update insn attributes.
    * config/i386/i386.md (*movti_internal): Add (?r, *Ye)
    and (?*Yd, r) alternatives.  Update insn attributes.
    (double-mode inter-unit splitters): Add new GR<->XMM splitters.

testsuite/ChangeLog:

2017-05-30  Uros Bizjak  <ubizjak@gmail.com>

    PR target/80833
    * gcc.target/i386/pr80833-1.c: New test.
    * gcc.target/i386/pr80833-2.c: Ditto.

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

Committed to mainline SVN.

Uros.

Attachment: p.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]