From: DJ Delorie Date: Tue, 4 Nov 2003 18:22:37 +0000 (-0500) Subject: v850.md (mulhisi3): Expand the const_int case separately to avoid trying to sign... X-Git-Tag: releases/gcc-3.4.0~2508 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=15bb534e0a20a3b0ef1d4fa328a05baf8ef27460;p=thirdparty%2Fgcc.git v850.md (mulhisi3): Expand the const_int case separately to avoid trying to sign extend the const. * config/v850/v850.md (mulhisi3): Expand the const_int case separately to avoid trying to sign extend the const. From-SVN: r73256 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e26d5c3ac59b..cb0d1b55de4a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2003-11-04 DJ Delorie + + * config/v850/v850.md (mulhisi3): Expand the const_int case + separately to avoid trying to sign extend the const. + 2003-11-04 Richard Sandiford * emit-rtl.c (copy_rtx_if_shared): Don't allow MEMs with constant diff --git a/gcc/config/v850/v850.md b/gcc/config/v850/v850.md index ba058a45e761..8e028aba559a 100644 --- a/gcc/config/v850/v850.md +++ b/gcc/config/v850/v850.md @@ -368,7 +368,11 @@ (sign_extend:SI (match_operand:HI 1 "register_operand" "")) (sign_extend:SI (match_operand:HI 2 "nonmemory_operand" ""))))] "" - "") + "if (GET_CODE (operands[2]) == CONST_INT) + { + emit_insn (gen_mulhisi3_internal2 (operands[0], operands[1], operands[2])); + DONE; + }") (define_insn "*mulhisi3_internal1" [(set (match_operand:SI 0 "register_operand" "=r") @@ -381,13 +385,11 @@ (set_attr "cc" "none_0hit") (set_attr "type" "mult")]) -;; ??? Sign extending constants isn't valid. Fix? - -(define_insn "*mulhisi3_internal2" +(define_insn "mulhisi3_internal2" [(set (match_operand:SI 0 "register_operand" "=r,r") (mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" "%0,r")) - (sign_extend:SI (match_operand 2 "const_int_operand" "J,K"))))] + (match_operand:HI 2 "const_int_operand" "J,K")))] "" "@ mulh %2,%0