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]

Re: [PATCH] Add pre-reload splitter for low part SI/DImode extraction out of vector regs (PR target/65078)


On Tue, Mar 17, 2015 at 7:15 PM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> This patch fixes a regression where since the removal of specialized
> builtin from _mm_storel_epi64 we force the extraction of DImode (or SImode)
> low value out of 16/32/64 byte vector registers into memory.
> As the vector extraction is from a vector register with a different
> element mode, the expander doesn't know it might be beneficial to subreg it
> to a vector mode with the same size, but different element mode and do
> vector extraction out of that.  This patch adds a pre-reload splitter that
> will turn it into such a vector extraction.  At least for the -m32
> DImode extraction directly into memory, I think teaching RA to do that would
> be much harder.

Agreed.

> Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
>
> 2015-03-17  Jakub Jelinek  <jakub@redhat.com>
>
>         PR target/65078
>         * config/i386/sse.md (movsi/movdi -> vec_extract_*_0 splitter): New.
>
>         * gcc.target/i386/pr65078-1.c: New test.
>         * gcc.target/i386/pr65078-2.c: New test.
>         * gcc.target/i386/pr65078-3.c: New test.
>         * gcc.target/i386/pr65078-4.c: New test.
>         * gcc.target/i386/pr65078-5.c: New test.
>         * gcc.target/i386/pr65078-6.c: New test.

OK for mainline.

Thanks,
Uros.


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