This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
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~