[PING] [m32c] mul and div insn

Richard Henderson rth@redhat.com
Wed Apr 25 21:11:00 GMT 2007


On Tue, Apr 24, 2007 at 02:53:34PM -0400, DJ Delorie wrote:
> Immediate operands are always VOIDmode.  Why did you add modes to
> those operands?

Because we do do things like validate that a given constant
is valid for the mode.  That said, probably const_int_operand
and "n" is better than "immediate_operand" and "i", since the
later allows symbolics.

This test

+(define_expand "mulsi3"
+  [(set (match_operand:SI 0 "m32c_hl_operand" "=R02,R02")
+        (mult:SI (match_operand:SI 1 "m32c_hl_operand" "%0,0")
+                 (match_operand:SI 2 "mra_operand" "RsiSd,?Rmm")))]
+   "TARGET_M32C"
+   "{
+     if ((GET_MODE (operands[2]) != SImode) && (GET_MODE (operands[2]) != VOIDm

should never be true.

> Do you really need the sign/zero extends for the divide?  Doesn't GCC
> do the promotions according to the language standards before emitting
> the divide?

Yes, it does.


r~



More information about the Gcc-patches mailing list