This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 06/30/10 01:45, Jie Zhang wrote:This is a runtime performance improvement.Currently reload_cse_move2add can transformWas this a size or runtime performance improvement?
(set (REGX) (CONST_INT A)) ... (set (REGX) (CONST_INT B))
to
(set (REGX) (CONST_INT A)) ... (set (REGX) (plus (REGX) (CONST_INT B-A)))
This patch enhances it to be able to transform
(set (REGX) (CONST (PLUS (SYMBOL_REF) (CONST_INT A)))) ... (set (REGY) (CONST (PLUS (SYMBOL_REF) (CONST_INT B))))
to
(set (REGX) (CONST (PLUS (SYMBOL_REF) (CONST_INT A)))) ... (set (REGY) (CONST (PLUS (REGX) (CONST_INT B-A))))
Benchmarking using EEMBC on ARM Cortex-A8 shows performance improvement on one test:
idctrn01: 6%
I'm not sure what caused the regressions. I'm redoing the benchmarking. This time I do it without X and shut down running servers as much as I can. Hope this can remove measuring error.
Benchmarking using SPEC2000 on AMD Athlon64 X2 3800+ shows 0.4% regression on CINT2000 and 0.1% improvement on CFP2000.
Bootstrapped and regression tested on x86_64.Any thoughts on why spec2k showed a regression and was it a size or runtime regression?
OK.I'm generally OK with the patch, but want to understand what's happening benchmark-wise before final approval.
Thanks, Jie
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |