From 498cf3d0edd7db5c044dc73b8b9c37c8f6906fd6 Mon Sep 17 00:00:00 2001 From: Matthew Hiller Date: Thu, 29 Mar 2001 02:32:46 +0000 Subject: [PATCH] mn10300.md (cmpsi): Fix first alternative's output template. 2001-03-28 Matthew Hiller * config/mn10300/mn10300.md (cmpsi): Fix first alternative's output template. * MAINTAINERS: Added self. From-SVN: r40956 --- MAINTAINERS | 1 + gcc/ChangeLog | 7 +++++++ gcc/config/mn10300/mn10300.md | 16 ++++++++++++---- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/MAINTAINERS b/MAINTAINERS index 27cb3a61a015..49b1cfcabfcc 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -124,6 +124,7 @@ Anthony Green green@redhat.com Stu Grossman grossman@redhat.com Andrew Haley aph@redhat.com Aldy Hernandez aldyh@redhat.com +Matthew Hiller hiller@redhat.com Kazu Hirata kazu@hxi.com Manfred Hollstein mhollstein@redhat.com Jan Hubicka hubicka@freesoft.cz diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f9edd3df4277..cc07a8b43003 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-03-28 Matthew Hiller + + * config/mn10300/mn10300.md (cmpsi): Fix first alternative's + output template. + + * MAINTAINERS: Added self. + 2001-03-28 Richard Henderson * Makefile.in (cs-tconfig.h): Depend on CONFIG_H, not GCONFIG_H. diff --git a/gcc/config/mn10300/mn10300.md b/gcc/config/mn10300/mn10300.md index 564a4c95d34c..bf913b23b72e 100644 --- a/gcc/config/mn10300/mn10300.md +++ b/gcc/config/mn10300/mn10300.md @@ -709,15 +709,23 @@ "* return output_tst (operands[0], insn);" [(set_attr "cc" "set_znv")]) +;; Ordinarily, the cmp instruction will set the Z bit of cc0 to 1 if +;; its operands hold equal values, but the operands of a cmp +;; instruction must be distinct registers. In the case where we'd +;; like to compare a register to itself, we can achieve this effect +;; with a btst 0,d0 instead. (This will not alter the contents of d0 +;; but will have the proper effect on cc0. Using d0 is arbitrary; any +;; data register would work.) + (define_insn "cmpsi" [(set (cc0) - (compare (match_operand:SI 0 "register_operand" "!*d*a*x,dax") - (match_operand:SI 1 "nonmemory_operand" "!*0,daxi")))] + (compare (match_operand:SI 0 "register_operand" "*d*a*x,dax") + (match_operand:SI 1 "nonmemory_operand" "*0,daxi")))] "" "@ - add 0,%0 + btst 0,d0 cmp %1,%0" - [(set_attr "cc" "invert,compare")]) + [(set_attr "cc" "compare,compare")]) ;; ---------------------------------------------------------------------- ;; ADD INSTRUCTIONS -- 2.43.5