Hi,

the attached patch increases the move costs for moves involving the CC
register.  This saves us some instructions in SPEC CPU2006.

Regards
 Robin

--

gcc/ChangeLog:

2018-11-05  Robin Dapp  <rd...@linux.ibm.com>

        * config/s390/s390.c (s390_register_move_cost): Increase costs
        for moves involving the CC reg.
diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c
index 762c6bff07b..0f33101d779 100644
--- a/gcc/config/s390/s390.c
+++ b/gcc/config/s390/s390.c
@@ -3416,6 +3416,11 @@ s390_register_move_cost (machine_mode mode,
 	  && reg_classes_intersect_p (to, GENERAL_REGS)))
     return 10;
 
+  /* We usually do not want to copy via CC.  */
+  if (reg_classes_intersect_p (from, CC_REGS)
+       || reg_classes_intersect_p (to, CC_REGS))
+    return 5;
+
   return 1;
 }
 

Reply via email to