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]

Re: [PATCH/AARCH64] Add rtx_costs routine for vulcan.


Hi James,

Please find the patch after taking care of your comments.


> Did you see those patches, and did you consider whether there would be a
> benefit to doing the same for Vulcan?
In our simulation environment, we did not observe any performance gain
for specfp2006.
However, we did it to keep the cost strategy same as cortexa-57/53.

Please review and merge to trunk.


gcc/ChangeLog:

Virendra Pathak  <virendra.pathak@broadcom.com>
Julian Brown  <julian@codesourcery.com>

        * config/aarch64/aarch64-cores.def: Update vulcan COSTS.
        * config/aarch64/aarch64-cost-tables.h
        (vulcan_extra_costs): New variable.
        * config/aarch64/aarch64.c
        (vulcan_addrcost_table): Likewise.
        (vulcan_regmove_cost): Likewise.
        (vulcan_vector_cost): Likewise.
        (vulcan_branch_cost): Likewise.
        (vulcan_tunings): Likewise.



with regards,
Virendra Pathak


On Wed, Jun 29, 2016 at 4:23 PM, Virendra Pathak
<virendra.pathak@broadcom.com> wrote:
> Hi James,
>
>> Did you see those patches, and did you consider whether there would be a
>> benefit to doing the same for Vulcan?
> No. I have not studied those patches yet. Currently I am working on
> adding vulcan scheduler as a next patch.
> Kindly advise on the following:
> Could this patch be merged now (assuming you are okay),
> and I will update vulcan costs based on your patch later (after vulcan
> scheduler)?
>
> Thanks for your time.
>
> with regards,
> Virendra Pathak
>
>
> On Wed, Jun 29, 2016 at 4:11 PM, James Greenhalgh
> <james.greenhalgh@arm.com> wrote:
>> On Thu, Jun 23, 2016 at 02:45:21PM +0530, Virendra Pathak wrote:
>>> Hi gcc-patches group,
>>>
>>> Please find the patch for adding rtx_costs routine for vulcan cpu.
>>>
>>> Tested with compiling cross aarch64-linux-gcc , bootstrapped native
>>> aarch64-unknown-linux-gnu
>>> and make check (gcc). No new regression failure is added by this patch.
>>>
>>> Kindly review and merge the patch to trunk, if the patch is okay.
>>> Thanks.
>>
>> This is OK, but I have the same question for you as I had for the
>> qdf24xx tuning that Jim proposed, so I won't commit it yet...
>>
>>> gcc/ChangeLog:
>>>
>>> Virendra Pathak  <virendra.pathak@broadcom.com>
>>>
>>>         * config/aarch64/aarch64-cores.def: Update vulcan COSTS.
>>>         * config/aarch64/aarch64-cost-tables.h
>>>         (vulcan_extra_costs): New variable.
>>>         * config/aarch64/aarch64.c
>>>         (vulcan_addrcost_table): Likewise.
>>>         (vulcan_regmove_cost): Likewise.
>>>         (vulcan_vector_cost): Likewise.
>>>         (vulcan_branch_cost): Likewise.
>>>         (vulcan_tunings): Likewise.
>>
>>
>>>
>>> +  {
>>> +    /* FP SFmode */
>>> +    {
>>> +      COSTS_N_INSNS (16),    /* Div.  */
>>> +      COSTS_N_INSNS (6),     /* Mult.  */
>>> +      COSTS_N_INSNS (6),     /* Mult_addsub. */
>>> +      COSTS_N_INSNS (6),     /* Fma.  */
>>> +      COSTS_N_INSNS (6),     /* Addsub.  */
>>> +      COSTS_N_INSNS (5),     /* Fpconst. */
>>> +      COSTS_N_INSNS (5),     /* Neg.  */
>>> +      COSTS_N_INSNS (5),     /* Compare.  */
>>> +      COSTS_N_INSNS (7),     /* Widen.  */
>>> +      COSTS_N_INSNS (7),     /* Narrow.  */
>>> +      COSTS_N_INSNS (7),     /* Toint.  */
>>> +      COSTS_N_INSNS (7),     /* Fromint.  */
>>> +      COSTS_N_INSNS (7)      /* Roundint.  */
>>> +    },
>>> +    /* FP DFmode */
>>> +    {
>>> +      COSTS_N_INSNS (23),    /* Div.  */
>>> +      COSTS_N_INSNS (6),     /* Mult.  */
>>> +      COSTS_N_INSNS (6),     /* Mult_addsub.  */
>>> +      COSTS_N_INSNS (6),     /* Fma.  */
>>> +      COSTS_N_INSNS (6),     /* Addsub.  */
>>> +      COSTS_N_INSNS (5),     /* Fpconst.  */
>>> +      COSTS_N_INSNS (5),     /* Neg.  */
>>> +      COSTS_N_INSNS (5),     /* Compare.  */
>>> +      COSTS_N_INSNS (7),     /* Widen.  */
>>> +      COSTS_N_INSNS (7),     /* Narrow.  */
>>> +      COSTS_N_INSNS (7),     /* Toint.  */
>>> +      COSTS_N_INSNS (7),     /* Fromint.  */
>>> +      COSTS_N_INSNS (7)      /* Roundint.  */
>>> +    }
>>
>> Recently ( https://gcc.gnu.org/ml/gcc-patches/2016-06/msg00251.html ,
>>  https://gcc.gnu.org/ml/gcc-patches/2016-06/msg01418.html ), I changed the
>> Cortex-A57 and Cortex-A53 cost tables to make the cost of a floating-point
>> operation relative to the cost of a floating-point move. This gave some
>> code generation benefits, particularly around conditional execution and
>> generation of constants.
>>
>> Did you see those patches, and did you consider whether there would be a
>> benefit to doing the same for Vulcan?
>>
>> Thanks,
>> James
>>

Attachment: 0001-AArch64-Add-rtx_costs-routine-for-vulcan.patch.txt
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]