(umulsi3_highpart): Test for CONST_INT and CONST_DOUBLE, not CONSTANT_P.

(smulsi3_highpart): Likewise.

(const_umulsi3_highpart): Use const_uint32_operand instead
of immediate_operand for op3.  Delete mode.
(const_smulsi3_highpart): Analogous change.

From-SVN: r9307
This commit is contained in:
Torbjorn Granlund 1995-04-03 22:54:09 +00:00
parent 67cd4f83cf
commit 28d29b39bc
1 changed files with 12 additions and 6 deletions

View File

@ -2907,9 +2907,12 @@
"
{
operands[3] = gen_reg_rtx (SImode);
if (CONSTANT_P (operands[2]))
if (GET_CODE (operands[2]) == CONST_INT
|| GET_CODE (operands[2]) == CONST_DOUBLE)
{
/* We have to rearrange the operand order for the matching constraints. */
if (! const_uint32_operand (operands[2]))
abort ();
/* We have to adjust the operand order for the matching constraints. */
emit_insn (gen_const_umulsi3_highpart (operands[0], operands[3],
operands[1], operands[2]));
DONE;
@ -2932,7 +2935,7 @@
(truncate:SI
(lshiftrt:DI
(mult:DI (zero_extend:DI (match_operand:SI 2 "register_operand" "1"))
(match_operand:DI 3 "immediate_operand" "i"))
(match_operand 3 "const_uint32_operand" ""))
(const_int 32))))
(clobber (match_operand:SI 1 "register_operand" "=d"))]
"TARGET_68020"
@ -2951,9 +2954,12 @@
"
{
operands[3] = gen_reg_rtx (SImode);
if (CONSTANT_P (operands[2]))
if (GET_CODE (operands[2]) == CONST_INT
|| GET_CODE (operands[2]) == CONST_DOUBLE)
{
/* We have to rearrange the operand order for the matching constraints. */
if (! const_sint32_operand (operands[2]))
abort ();
/* We have to adjust the operand order for the matching constraints. */
emit_insn (gen_const_smulsi3_highpart (operands[0], operands[3],
operands[1], operands[2]));
DONE;
@ -2976,7 +2982,7 @@
(truncate:SI
(lshiftrt:DI
(mult:DI (sign_extend:DI (match_operand:SI 2 "register_operand" "1"))
(match_operand:DI 3 "immediate_operand" "i"))
(match_operand 3 "const_sint32_operand" ""))
(const_int 32))))
(clobber (match_operand:SI 1 "register_operand" "=d"))]
"TARGET_68020"