Dave Korn wrote:
  But it is ok to use a define_expand (that accepts all alternatives) for
movsf and use that to generate one of several movsf_XXXX insns, isn't it?

No.  You have to have a single movsf insn that accepts all constraints.

reload knows that it can fix practically anything by emitting a move insn to move an operand into a reg or mem.

However, you can't fix a move insn by emitting yet another move insn. That doesn't actually fix anything. That just moves the same problem to the new move insn. So the rules are different for move insns. You have to have a single pattern that accepts all alternatives that might be generated by reload.

If you want to be pedantic, you can actually have multiple movsf patterns if you have operands that can't be generated by reload. For instance if you have EXTRA_CONSTRAINTS R, S, and T, then you could have 3 patterns one which accepts R and all usual operand combinations, one which accepts S and all usual operand combinations, and one which accepts T and all usual operand combinations. Doing that would be pointless though. You would be much better off just having the one pattern that accepts R, S, T and the usual operand combinations.
--
Jim Wilson, GNU Tools Support, http://www.specifix.com

Reply via email to