From 3d427cc1c8a0618874d8826acc1da7b392266081 Mon Sep 17 00:00:00 2001 From: Andreas Krebbel Date: Thu, 26 Jan 2012 10:04:43 +0000 Subject: [PATCH] s390.h: Make BRANCH_COST an option. 2012-01-26 Andreas Krebbel * config/s390/s390.h: Make BRANCH_COST an option. * config/s390/s390.opt: New option -mbranch-cost. 2012-01-26 Andreas Krebbel * gcc.dg/pr46309.c: Set branch-cost to 2 for s390 and s390x. * gcc.dg/pr44194-1.c: Disable since s390 returns structs always in memory. * gfortran.dg/reassoc_4.f: Force max-completely-peeled-insns to the default value for s390 and s390x. From-SVN: r183555 --- gcc/ChangeLog | 5 +++++ gcc/config/s390/s390.h | 2 +- gcc/config/s390/s390.opt | 6 ++++++ gcc/testsuite/ChangeLog | 8 ++++++++ gcc/testsuite/gcc.dg/pr44194-1.c | 2 +- gcc/testsuite/gcc.dg/pr46309.c | 2 +- gcc/testsuite/gfortran.dg/reassoc_4.f | 1 + 7 files changed, 23 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 338e038553f..e9b140e069a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2012-01-26 Andreas Krebbel + + * config/s390/s390.h: Make BRANCH_COST an option. + * config/s390/s390.opt: New option -mbranch-cost. + 2012-01-26 Richard Henderson Revert 2012-01-24 change: diff --git a/gcc/config/s390/s390.h b/gcc/config/s390/s390.h index afd22ad883b..edc6399789e 100644 --- a/gcc/config/s390/s390.h +++ b/gcc/config/s390/s390.h @@ -722,7 +722,7 @@ do { \ /* A C expression for the cost of a branch instruction. A value of 1 is the default; other values are interpreted relative to that. */ -#define BRANCH_COST(speed_p, predictable_p) 1 +#define BRANCH_COST(speed_p, predictable_p) s390_branch_cost /* Nonzero if access to memory by bytes is slow and undesirable. */ #define SLOW_BYTE_ACCESS 1 diff --git a/gcc/config/s390/s390.opt b/gcc/config/s390/s390.opt index 6ce32dc9c9e..51b395ee99d 100644 --- a/gcc/config/s390/s390.opt +++ b/gcc/config/s390/s390.opt @@ -140,3 +140,9 @@ Warn if a single function's framesize exceeds the given framesize mzarch Target Report RejectNegative Negative(mesa) Mask(ZARCH) z/Architecture + +mbranch-cost= +Target Report Joined RejectNegative UInteger Var(s390_branch_cost) Init(1) +Set the branch costs for conditional branch instructions. Reasonable +values are small, non-negative integers. The default branch cost is +1. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 60e392b3341..0905ff1e5f7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,11 @@ +2012-01-26 Andreas Krebbel + + * gcc.dg/pr46309.c: Set branch-cost to 2 for s390 and s390x. + * gcc.dg/pr44194-1.c: Disable since s390 returns structs always in + memory. + * gfortran.dg/reassoc_4.f: Force max-completely-peeled-insns to + the default value for s390 and s390x. + 2012-01-25 Aldy Hernandez PR lto/51698 diff --git a/gcc/testsuite/gcc.dg/pr44194-1.c b/gcc/testsuite/gcc.dg/pr44194-1.c index cb653635682..df042cd8d53 100644 --- a/gcc/testsuite/gcc.dg/pr44194-1.c +++ b/gcc/testsuite/gcc.dg/pr44194-1.c @@ -1,4 +1,4 @@ -/* { dg-do compile { target { { { i?86-*-* x86_64-*-* } && x32 } || lp64 } } } */ +/* { dg-do compile { target { { { { i?86-*-* x86_64-*-* } && x32 } || lp64 } && { ! s390*-*-* } } } } */ /* { dg-options "-O2 -fdump-rtl-dse1" } */ /* Restricting to 64-bit targets since 32-bit targets return structures in memory. */ diff --git a/gcc/testsuite/gcc.dg/pr46309.c b/gcc/testsuite/gcc.dg/pr46309.c index f567afac75b..68a344a1bdc 100644 --- a/gcc/testsuite/gcc.dg/pr46309.c +++ b/gcc/testsuite/gcc.dg/pr46309.c @@ -4,7 +4,7 @@ /* The transformation depends on BRANCH_COST being greater than 1 (see the notes in the PR), so try to force that. */ /* { dg-additional-options "-mtune=octeon2" { target mips*-*-* } } */ -/* { dg-additional-options "-mbranch-cost=2" { target avr*-*-* } } */ +/* { dg-additional-options "-mbranch-cost=2" { target avr*-*-* s390*-*-* } } */ int f1 (int a) diff --git a/gcc/testsuite/gfortran.dg/reassoc_4.f b/gcc/testsuite/gfortran.dg/reassoc_4.f index 1bcdf1893d3..8ed7e19f793 100644 --- a/gcc/testsuite/gfortran.dg/reassoc_4.f +++ b/gcc/testsuite/gfortran.dg/reassoc_4.f @@ -1,6 +1,7 @@ ! { dg-do compile } ! { dg-options "-O3 -ffast-math -fdump-tree-reassoc1" } ! { dg-options "-O3 -ffast-math -fdump-tree-reassoc1 --param max-completely-peel-times=16" { target spu-*-* } } +! { dg-options "-O3 -ffast-math -fdump-tree-reassoc1 --param max-completely-peeled-insns=400" { target s390*-*-* } } subroutine anisonl(w,vo,anisox,s,ii1,jj1,weight) integer ii1,jj1,i1,iii1,j1,jjj1,k1,l1,m1,n1 real*8 w(3,3),vo(3,3),anisox(3,3,3,3),s(60,60),weight