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.

>   (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?



r~


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