This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Add pre-reload splitter for low part SI/DImode extraction out of vector regs (PR target/65078)
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: Jakub Jelinek <jakub at redhat dot com>
- Cc: Yuri Rumyantsev <ysrumyan at gmail dot com>, "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 18 Mar 2015 10:42:15 +0100
- Subject: Re: [PATCH] Add pre-reload splitter for low part SI/DImode extraction out of vector regs (PR target/65078)
- Authentication-results: sourceware.org; auth=none
- References: <20150317181522 dot GD1746 at tucnak dot redhat dot com>
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.