Message ID | 37378DC5BCD0EE48BA4B082E0B55DFAA429E3A5B@XAP-PVEXMBX02.xlnx.xilinx.com |
---|---|
State | New |
Headers | show |
On 01/12/2016 09:42 AM, Ajit Kumar Agarwal wrote: > The patch contains the changes in the macros fixed_registers and call_used_registers. > Earlier the register r21 is marked as fixed and also marked as 1 for call_used registers. > On top of that r21 is not assigned to any of the temporaries in rtl insns. > > This makes the usage of registers r21 in the callee functions not possible and wasting > one registers to allocate in the callee function. The changes makes the register r21 as > allocatable to the callee function and optimized usage of the registers r21 in the callee > function reduces spill and fetch. The reduction in the spill and fetch is due to availability > of register r21 in the callee function. The availability of register r21 is made by > marking the register r21 as not fixed and the call_used registers is marked as 0. > Also r20 is marked as fixed. The changes are done not to mark as fixed thus allowing > the registers to be used reducing the spill and fetch. > > Regtested for Microblaze. > > Performance runs made on Mibench/EEMBC benchmarks for microblaze. Following benchmarks > shows the gains > > Benchmarks Gains > automotive_qsort1 = 3.96% > automotive_susan_c = 7.68% > consumer_mad = 9.6% > security_rijndael_d = 19.57% > telecom_CRC32 = 7.66% > bitmnp01_lite = 10.61% > a2time01_lite = 6.97% > > ChangeLog: > 2016-01-12 Ajit Agarwal <ajitkum@xilinx.com> > > * config/microblaze/microblaze.h > (FIXED_REGISTERS): Update in macro. > (CALL_USED_REGISTERS): Update in macro. > > Signed-off-by:Ajit Agarwal ajitkum@xilinx.com. > --- > gcc/config/microblaze/microblaze.h | 4 ++-- > 1 files changed, 2 insertions(+), 2 deletions(-) > > diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h > index e115c42..dbfb652 100644 > --- a/gcc/config/microblaze/microblaze.h > +++ b/gcc/config/microblaze/microblaze.h > @@ -253,14 +253,14 @@ extern enum pipeline_type microblaze_pipe; > #define FIXED_REGISTERS \ > { \ > 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, \ > - 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ > + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ > 1, 1, 1, 1 \ > } > > #define CALL_USED_REGISTERS \ > { \ > 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ > - 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ > + 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ > 1, 1, 1, 1 \ > } > #define GP_REG_FIRST 0 > Committed revision 232682.
diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h index e115c42..dbfb652 100644 --- a/gcc/config/microblaze/microblaze.h +++ b/gcc/config/microblaze/microblaze.h @@ -253,14 +253,14 @@ extern enum pipeline_type microblaze_pipe; #define FIXED_REGISTERS \ { \ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, \ - 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ 1, 1, 1, 1 \ } #define CALL_USED_REGISTERS \ { \ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \ - 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ + 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \ 1, 1, 1, 1 \ } #define GP_REG_FIRST 0