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; }