On Wed, Sep 30, 2015 at 12:00 AM, Pat Haugen
<[email protected]> wrote:
> On 09/25/2015 11:51 PM, Ajit Kumar Agarwal wrote:
>>
>> I have made the following changes in the estimate_reg_pressure_cost
>> function used
>> by the loop invariant and IVOPTS.
>>
>> Earlier the estimate_reg_pressure cost uses the cost of n_new variables
>> that are generated by the Loop Invariant
>>   and IVOPTS. These are not sufficient for register pressure calculation.
>> The register pressure cost calculation should
>> use the n_new + n_old (numbers) to consider the cost. n_old is the
>> register  used inside the loops and the effect of
>>   n_new new variables generated by loop invariant and IVOPTS on register
>> pressure is based on how the new
>> variables impact on register used inside the loops. The increase or
>> decrease in register pressure is due to the impact
>> of new variables on the register used  inside the loops. The
>> register-register move cost or the spill cost should consider
>> the cost associated with register used and the new variables generated.
>> The movement  of new variables increases or
>> decreases the register pressure, which is based on  overall cost of n_new
>> + n_old variables.
>>
>> The increase and decrease in register pressure is based on the overall
>> cost of n_new + n_old as the changes in the
>> register pressure caused due to new variables is based on how the changes
>> behave with respect to the register used
>> in the loops.
>>
>> Thus the register pressure caused to new variables is based on the new
>> variables and its impact on register used inside
>>   the loops and thus consider the overall  cost of n_new + n_old.
>>
>> Bootstrap for i386 and reg tested on i386 with the change is fine.
>>
>> SPEC CPU 2000 benchmarks are run and there is following impact on the
>> performance
>> and code size.
>>
>> ratio with the optimization vs ratio without optimization for INT
>> benchmarks
>> (3807.632 vs 3804.661)
>>
>> ratio with the optimization vs ratio without optimization for FP
>> benchmarks
>> ( 4668.743 vs 4778.741)
>>
>> Code size reduction with respect to FP SPEC CPU 2000 benchmarks
>>
>> Number of instruction with optimization = 1094117
>> Number of instruction without optimization = 1094659
>>
>> Reduction in number of instruction with the optimization = 542
>> instruction.
>
> I tried your patch on powerpc64le using CPU2006. There was a small
> degradation in mcf (-1.5%) and small improvement in bwaves (+1.3%), the
> remaining benchmarks (and overall results) were neutral.
We collected performance data on AArch64 for spec2k6, Most cases vary
within [-1%, 1%], three cases vary from +/-[1%, 2%].  INT cases are
generally slightly regressed, while FP cases are generally slightly
improved.  INT overall score is regressed by 0.25%; FP overall score
is improved by 0.35%.

Thanks,
bin
>
> -Pat
>

Reply via email to