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: PR target/40470: unable to find a registe r to spill in class ‘SSE_FIRST_REG’


On Wed, Jun 17, 2009 at 7:22 PM, Jeff Law<law@redhat.com> wrote:
> Ian Lance Taylor wrote:
>>
>> Of course it would be nice if ra/reload handled this sort of thing
>> better.
>>
>
> The problem is primarily reload. ?I'll try to keep this kind of thing in
> mind for reload v2 -- in fact I think it would just work with the code I've
> got right now.
>

This sounds very promising. What do we do with gcc 4.3 and 4.4?
Here is an updated patch for 4.3 and 4.4. It fixes additional testcases
by forcing into XMM0 during expand and changing operand constraint
to reg_xmm0_operand so that other passes won't replace XMM0
with a different register in such a way that RA/reload can't handle. Any
comments?

Thanks.

-- 
H.J.
---

gcc/

2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/40470
	* config/i386/predicates.md (reg_xmm0_operand): New.

	* config/i386/sse.md (sse4_1_blendvp<ssemodesuffixf2c>): Renamed
	to ...
	(*sse4_1_blendvp<ssemodesuffixf2c>): This.  Use reg_xmm0_operand.
	(sse4_1_pblendvb): Renamed to ...
	(*sse4_1_pblendvb): This.  Use reg_xmm0_operand.
	(sse4_1_blendvp<ssemodesuffixf2c>): New.
	(sse4_1_pblendvb): Likewise.
	(sse4_2_pcmpestr): Force operand 1 into XMM0.
	(sse4_2_pcmpistr): Likewise.
	(sse4_2_pcmpestrm): Use reg_xmm0_operand.
	(sse4_2_pcmpistrm): Likewise.

gcc/testsuite/

2009-06-17  H.J. Lu  <hongjiu.lu@intel.com>

	PR target/40470
	* gcc.dg/torture/pr40470-1.c: New.
	* gcc.dg/torture/pr40470-2.c: Likewise.
	* gcc.dg/torture/pr40470-3.c: Likewise.
	* gcc.dg/torture/pr40470-4.c: Likewise.

Attachment: gcc-pr40470-2.patch
Description: Text document


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