"Rohit Arul Raj" <[EMAIL PROTECTED]> writes:

> I had a single movsf insn that accepts all alternatives for the reload to 
> work.
> 
> (define_insn "movsf"
>  [(set (match_operand:SF 0 "nonimmediate_operand" "=f,m,f,f,d,d")
>            (match_operand:SF 1 "general_operand"       "m,f,f,d,f,i"))
>            ]
> But for the alternative 3, i need a another data register.
> so i used
> (define_insn "movsf"
>  [(set (match_operand:SF 0 "nonimmediate_operand" "=f,m,f,f,d,d")
>            (match_operand:SF 1 "general_operand"       "m,f,f,d,f,i"))
> (clobber (match_scratch:SF 2 "=X,X,X,&d,X,X")) ]
> 
> But i am getting: error: insn does not satisfy its constraints:
> 
> Is there any other way to generate a temporary register other than
> using gen_reg_RTX in define expand and emitting the corresponding mov
> patterns?

For this sort of irritating case, I recommend studying the wonder that
is secondary reloads.  That is, don't handle the case in movsf at all.
Use a secondary reload instead.

Ian

Reply via email to