"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