[PATCH] i386: Remove "m" constraint for "register_operand"

Jan Hubicka hubicka@ucw.cz
Tue Aug 14 13:08:00 GMT 2007


>    There is a mismatch between the constraints permitting memory operands
> and the predicate accepting only register operands. This patch fixes that.
> Bootstrapped and tested on x86_64-unknown-linux-gnu with no regressions. Ok
> for trunk?

The i386.md part is OK (zext variants really needs to destinate)
with following change:
> -		 (match_operand:SI 2 "general_operand" "ri,rm")))))
> +		 (match_operand:SI 2 "general_operand" "g")))))

"rim" here for consistency.  I guess we should rename them all to "g" in
followup step.

For sse.md part:
>  (define_insn "*sse4_1_extractps"
> -  [(set (match_operand:SF 0 "register_operand" "=rm")
> +  [(set (match_operand:SF 0 "register_operand" "=r")

H.J., can you please double check that memory is not allowed here?
It seems to me that changing register_operand to nonimmediate_operand
would be correct fix.
This instruction is not yet in my ISA reference.
>  	(vec_select:SF
>  	  (match_operand:V4SF 1 "register_operand" "x")
>  	  (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n")])))]
> @@ -1694,7 +1694,7 @@
>  (define_insn "sse2_vmsqrtv2df2"
>    [(set (match_operand:V2DF 0 "register_operand" "=x")
>  	(vec_merge:V2DF
> -	  (sqrt:V2DF (match_operand:V2DF 1 "register_operand" "xm"))
> +	  (sqrt:V2DF (match_operand:V2DF 1 "register_operand" "x"))
nonimmediate_operand here instead of removing 'm'

Honza
>  	  (match_operand:V2DF 2 "register_operand" "0")
>  	  (const_int 1)))]
>    "TARGET_SSE2"



More information about the Gcc-patches mailing list