aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKazu Hirata <kazu@hxi.com>2001-12-15 01:16:28 +0000
committerKazu Hirata <kazu@gcc.gnu.org>2001-12-15 01:16:28 +0000
commit05fb1639060fc8db1c2512a819e35bd2b25dc5e6 (patch)
tree88335c0519902139e5c2657de0cc1b0901ebe81c
parent08f7f057cc47625a6005912eca9f752f18a67167 (diff)
downloadgcc-05fb1639060fc8db1c2512a819e35bd2b25dc5e6.zip
gcc-05fb1639060fc8db1c2512a819e35bd2b25dc5e6.tar.gz
gcc-05fb1639060fc8db1c2512a819e35bd2b25dc5e6.tar.bz2
h8300.md (udivqi3): Remove.
* config/h8300/h8300.md (udivqi3): Remove. (divqi3): Likewise. (udivhi3): Likewise. (divhi3): Likewise. (umodqi3): Likewise. (modqi3): Likewise. (umodhi3): Likewise. (modhi3): Likewise. (udivmodqi3): New. (divmodqi3): Likewise. (udivmodhi3): Likewise. (divmodhi3): Likewise. From-SVN: r48023
-rw-r--r--gcc/ChangeLog15
-rw-r--r--gcc/config/h8300/h8300.md120
2 files changed, 72 insertions, 63 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 14fd691..3dba7c7 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,18 @@
+2001-12-14 Kazu Hirata <kazu@hxi.com>
+
+ * config/h8300/h8300.md (udivqi3): Remove.
+ (divqi3): Likewise.
+ (udivhi3): Likewise.
+ (divhi3): Likewise.
+ (umodqi3): Likewise.
+ (modqi3): Likewise.
+ (umodhi3): Likewise.
+ (modhi3): Likewise.
+ (udivmodqi3): New.
+ (divmodqi3): Likewise.
+ (udivmodhi3): Likewise.
+ (divmodhi3): Likewise.
+
Sat Dec 15 01:39:12 CET 2001 Jan Hubicka <jh@suse.cz>
* cfgcleanup.c (flow_find_cross_jump): Replace tests for note
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 2e0ad0d..285d9ad 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -921,100 +921,94 @@
(set_attr "cc" "none_0hit")])
;; ----------------------------------------------------------------------
-;; DIVIDE INSTRUCTIONS
+;; DIVIDE/MOD INSTRUCTIONS
;; ----------------------------------------------------------------------
-(define_insn "udivqi3"
+(define_insn "udivmodqi4"
[(set (match_operand:QI 0 "register_operand" "=r")
(truncate:QI
(udiv:HI
(match_operand:HI 1 "general_operand" "0")
- (zero_extend:HI (match_operand:QI 2 "register_operand" "r")))))]
- ""
- "divxu %X2,%T0"
- [(set_attr "length" "2")
- (set_attr "cc" "clobber")])
-
-;; ??? Will divxu always work here?
-
-(define_insn "divqi3"
- [(set (match_operand:QI 0 "register_operand" "=r")
+ (zero_extend:HI (match_operand:QI 2 "register_operand" "r")))))
+ (set (match_operand:QI 3 "register_operand" "=r")
(truncate:QI
- (div:HI
- (match_operand:HI 1 "general_operand" "0")
- (sign_extend:HI (match_operand:QI 2 "register_operand" "r")))))]
- ""
- "divxu %X2,%T0"
- [(set_attr "length" "2")
- (set_attr "cc" "clobber")])
-
-(define_insn "udivhi3"
- [(set (match_operand:HI 0 "register_operand" "=r")
- (truncate:HI
- (udiv:SI
- (match_operand:SI 1 "general_operand" "0")
- (zero_extend:SI (match_operand:HI 2 "register_operand" "r")))))]
- "TARGET_H8300H || TARGET_H8300S"
- "divxu.w %T2,%S0"
- [(set_attr "length" "2")
- (set_attr "cc" "clobber")])
-
-(define_insn "divhi3"
- [(set (match_operand:HI 0 "register_operand" "=r")
- (truncate:HI
- (div:SI
- (match_operand:SI 1 "general_operand" "0")
- (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))))]
+ (umod:HI
+ (match_dup 1)
+ (zero_extend:HI (match_dup 2)))))]
"TARGET_H8300H || TARGET_H8300S"
- "divxs.w %T2,%S0"
+ "*
+{
+ if (find_reg_note (insn, REG_UNUSED, operands[3]))
+ return \"divxu.b\\t%X2,%T0\";
+ else
+ return \"divxu.b\\t%X2,%T0\;mov.b\\t%t0,%s3\";
+}"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
-;; ----------------------------------------------------------------------
-;; MOD INSTRUCTIONS
-;; ----------------------------------------------------------------------
-
-(define_insn "umodqi3"
+(define_insn "divmodqi4"
[(set (match_operand:QI 0 "register_operand" "=r")
(truncate:QI
- (umod:HI
+ (div:HI
(match_operand:HI 1 "general_operand" "0")
- (zero_extend:HI (match_operand:QI 2 "register_operand" "r")))))]
- ""
- "divxu %X2,%T0\;mov %t0,%s0"
- [(set_attr "length" "4")
- (set_attr "cc" "clobber")])
-
-(define_insn "modqi3"
- [(set (match_operand:QI 0 "register_operand" "=r")
+ (sign_extend:HI (match_operand:QI 2 "register_operand" "r")))))
+ (set (match_operand:QI 3 "register_operand" "=r")
(truncate:QI
(mod:HI
- (match_operand:HI 1 "general_operand" "0")
- (sign_extend:HI (match_operand:QI 2 "register_operand" "r")))))]
+ (match_dup 1)
+ (sign_extend:HI (match_dup 2)))))]
"TARGET_H8300H || TARGET_H8300S"
- "divxs.b %X2,%T0\;mov %t0,%s0"
+ "*
+{
+ if (find_reg_note (insn, REG_UNUSED, operands[3]))
+ return \"divxs.b\\t%X2,%T0\";
+ else
+ return \"divxs.b\\t%X2,%T0\;mov.b\\t%t0,%s3\";
+}"
[(set_attr "length" "6")
(set_attr "cc" "clobber")])
-(define_insn "umodhi3"
+(define_insn "udivmodhi4"
[(set (match_operand:HI 0 "register_operand" "=r")
(truncate:HI
- (umod:SI
+ (udiv:SI
(match_operand:SI 1 "general_operand" "0")
- (zero_extend:SI (match_operand:HI 2 "register_operand" "r")))))]
+ (zero_extend:SI (match_operand:HI 2 "register_operand" "r")))))
+ (set (match_operand:HI 3 "register_operand" "=r")
+ (truncate:HI
+ (umod:SI
+ (match_dup 1)
+ (zero_extend:SI (match_dup 2)))))]
"TARGET_H8300H || TARGET_H8300S"
- "divxu.w %T2,%S0\;mov %e0,%f0"
+ "*
+{
+ if (find_reg_note (insn, REG_UNUSED, operands[3]))
+ return \"divxu.w\\t%T2,%S0\";
+ else
+ return \"divxu.w\\t%T2,%S0\;mov.w\\t%e0,%f3\";
+}"
[(set_attr "length" "4")
(set_attr "cc" "clobber")])
-(define_insn "modhi3"
+(define_insn "divmodhi4"
[(set (match_operand:HI 0 "register_operand" "=r")
(truncate:HI
- (mod:SI
+ (div:SI
(match_operand:SI 1 "general_operand" "0")
- (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))))]
+ (sign_extend:SI (match_operand:HI 2 "register_operand" "r")))))
+ (set (match_operand:HI 3 "register_operand" "=r")
+ (truncate:HI
+ (mod:SI
+ (match_dup 1)
+ (sign_extend:SI (match_dup 2)))))]
"TARGET_H8300H || TARGET_H8300S"
- "divxs.w %T2,%S0\;mov %e0,%f0"
+ "*
+{
+ if (find_reg_note (insn, REG_UNUSED, operands[3]))
+ return \"divxs.w\\t%T2,%S0\";
+ else
+ return \"divxs.w\\t%T2,%S0\;mov.w\\t%e0,%f3\";
+}"
[(set_attr "length" "6")
(set_attr "cc" "clobber")])