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
- From: Richard Henderson <rth at redhat dot com>
- To: Jan Hubicka <jh at suse dot cz>
- Cc: gcc-patches at gcc dot gnu dot org
- Date: Mon, 3 Feb 2003 10:32:59 -0800
- Subject: Re: [3.3/mainline] FIx SSE move patterns
- References: <20030202235525.GG26901@kam.mff.cuni.cz>
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~