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: [3.3/mainline] FIx SSE move patterns


> On Mon, Feb 03, 2003 at 12:55:25AM +0100, Jan Hubicka wrote:
> > 	* i386.c (ix86_expand_store_builtin):  Always force op1 to memory.
> 
> You're actually forcing to register.
> 
> >   (define_expand "movti"
> > !   [(set (match_operand:TI 0 "nonimmediate_operand" "")
> > ! 	(match_operand:TI 1 "nonimmediate_operand" ""))]
> >     "TARGET_SSE || TARGET_64BIT"
> >   {
> > +   if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
> > +     operands[0] = force_reg (TImode, operands[0]);
> 
> This is incorrect.  You want to force op1 to register.

I've fixed all these in updated patch I sent later.
> 
> >   (define_expand "movv2df"
> > !   [(set (match_operand:V2DF 0 "nonimmediate_operand" "")
> > ! 	(match_operand:V2DF 1 "nonimmediate_operand" ""))]
> >     "TARGET_SSE2"
> >   {
> > +   if (GET_CODE (operands[0]) == MEM && GET_CODE (operands[1]) == MEM)
> > +     operands[0] = force_reg (V2DFmode, operands[0]);
> >     ix86_expand_vector_move (V2DFmode, operands);
> 
> Also incorrect.  And why don't you handle this in
> ix86_expand_vector_move instead?

Hmm, ix86_expand_vetor_move does that already.
Would be the updated patch OK after removing all force_reg calls just
before expand_vector_move?  I guess I just got overactive here - only
patterns that need it are the unaligned moves as they go trought
different channels.

Honza
> 
> 
> 
> r~


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