From 15bb534e0a20a3b0ef1d4fa328a05baf8ef27460 Mon Sep 17 00:00:00 2001 From: DJ Delorie Date: Tue, 4 Nov 2003 13:22:37 -0500 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/v850/v850.md | 12 +++++++----- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e26d5c3..cb0d1b5 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 ba058a4..8e028ab 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 -- 2.7.4