Hi All,

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?

Regards,
Rohit



On 3/15/07, Jim Wilson <[EMAIL PROTECTED]> wrote:
Rohit Arul Raj wrote:
> (define_insn "movsf_store"
>  [(set (match_operand:SF 0 "memory_operand"  "=m")
>     (match_operand:SF 1 "float_reg"    "f"))]

You must have a single movsf define_insn that accepts all alternatives
so that reload will work.  You can't have separate define_insns for
movsf and movsf_store.
--
Jim Wilson, GNU Tools Support, http://www.specifix.com

Reply via email to