From 8451abc8f5efa5257669e96785c87ea6c2023dce Mon Sep 17 00:00:00 2001
From: kazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Mon, 3 Mar 2003 12:49:38 +0000
Subject: [PATCH] 	* config/h8300/h8300.md (*extzv_8_8): Use shorter code
 when 	operands[0] and operands[1] are different.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63718 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog             | 7 ++++++-
 gcc/config/h8300/h8300.md | 9 ++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 79429c287305..8b81f7e31eb8 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,4 +1,9 @@
-2003-03-02  Kazu Hirata  <kazu@cs.umass.edu>
+2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>
+
+	* config/h8300/h8300.md (*extzv_8_8): Use shorter code when
+	operands[0] and operands[1] are different.
+
+2003-03-03  Kazu Hirata  <kazu@cs.umass.edu>
 
 	* reload1.c (reload_cse_move2add): Remove variable success.
 
diff --git a/gcc/config/h8300/h8300.md b/gcc/config/h8300/h8300.md
index 61ae4b655328..28cb87ec7ff4 100644
--- a/gcc/config/h8300/h8300.md
+++ b/gcc/config/h8300/h8300.md
@@ -2630,7 +2630,14 @@
 			 (const_int 8)
 			 (const_int 8)))]
   "TARGET_H8300H || TARGET_H8300S"
-  "mov.b\\t%x1,%w0\;extu.w\\t%f0\;extu.l\\t%S0"
+  "*
+{
+  if (REG_P (operands[0]) && REG_P (operands[1])
+      && REGNO (operands[0]) != REGNO (operands[1]))
+    return \"sub.l\\t%S0,%S0\;mov.b\\t%x1,%w0\";
+  else
+    return \"mov.b\\t%x1,%w0\;extu.w\\t%f0\;extu.l\\t%S0\";
+}"
   [(set_attr "cc" "set_znv")
    (set_attr "length" "6")])
 
-- 
GitLab