OSDN Git Service

* config/mn10300/mn10300.h (REGISTER_MOVE_COST): Provide more
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Apr 2000 21:32:24 +0000 (21:32 +0000)
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Apr 2000 21:32:24 +0000 (21:32 +0000)
accurate data about SP moves.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@33326 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/mn10300/mn10300.h

index d0bac16..140d2a6 100644 (file)
@@ -1,3 +1,8 @@
+Fri Apr 21 18:30:00 2000  Alexandre Oliva  <aoliva@cygnus.com>
+
+       * config/mn10300/mn10300.h (REGISTER_MOVE_COST): Provide more
+       accurate data about SP moves.
+
 Fri Apr 21 18:28:28 2000  Alexandre Oliva  <aoliva@cygnus.com>
 
        * config/mn10300/mn10300.h (ADDITIONAL_REGISTER_NAMES): Added
index 412aad7..9369e7c 100644 (file)
@@ -816,7 +816,15 @@ struct cum_arg {int nbytes; };
 
 #define REGISTER_MOVE_COST(CLASS1, CLASS2) \
   ((CLASS1 == CLASS2 && (CLASS1 == ADDRESS_REGS || CLASS1 == DATA_REGS)) ? 2 :\
-   CLASS1 == CLASS2 && CLASS1 == EXTENDED_REGS ? 6 : 4)
+   ((CLASS1 == ADDRESS_REGS || CLASS1 == DATA_REGS) && \
+    (CLASS2 == ADDRESS_REGS || CLASS2 == DATA_REGS)) ? 4 : \
+   (CLASS1 == SP_REGS && CLASS2 == ADDRESS_REGS) ? 2 : \
+   (CLASS1 == ADDRESS_REGS && CLASS2 == SP_REGS) ? 4 : \
+   ! TARGET_AM33 ? 6 : \
+   (CLASS1 == SP_REGS || CLASS2 == SP_REGS) ? 6 : \
+   (CLASS1 == CLASS2 && CLASS1 == EXTENDED_REGS) ? 6 : \
+   (CLASS1 == EXTENDED_REGS || CLASS2 == EXTENDED_REGS) ? 4 : \
+   4)
 
 #define ADDRESS_COST(X) mn10300_address_cost((X), 0)