[PATCH, Atom] Improve AGU stalls avoidance optimization

H.J. Lu hjl.tools@gmail.com
Thu Sep 8 13:56:00 GMT 2011


On Tue, Sep 6, 2011 at 10:54 AM, Ilya Enkovich <enkovich.gnu@gmail.com> wrote:
> 2011/9/6 Uros Bizjak <ubizjak@gmail.com>:
>>
>> Please merge your new splitters with corresponding LEA patterns.
>>
>> OK with this change.
>>
>> Thanks,
>> Uros.
>>
>
> Fixed. Could please someone check it in if it's OK now?
>
> Thanks,
> Ilya
> ---
> gcc/
>
> 2011-09-06  Enkovich Ilya  <ilya.enkovich@intel.com>
>
>        * config/i386/i386-protos.h (ix86_lea_outperforms): New.
>        (ix86_avoid_lea_for_add): Likewise.
>        (ix86_avoid_lea_for_addr): Likewise.
>        (ix86_split_lea_for_addr): Likewise.
>
>        * config/i386/i386.c (LEA_MAX_STALL): New.
>        (increase_distance): Likewise.
>        (insn_defines_reg): Likewise.
>        (insn_uses_reg_mem): Likewise.
>        (distance_non_agu_define_in_bb): Likewise.
>        (distance_agu_use_in_bb): Likewise.
>        (ix86_lea_outperforms): Likewise.
>        (ix86_ok_to_clobber_flags): Likewise.
>        (ix86_avoid_lea_for_add): Likewise.
>        (ix86_avoid_lea_for_addr): Likewise.
>        (ix86_split_lea_for_addr): Likewise.
>        (distance_non_agu_define): Search in pred BBs added.
>        (distance_agu_use): Search in succ BBs added.
>        (IX86_LEA_PRIORITY): Value changed from 2 to 0.
>        (LEA_SEARCH_THRESHOLD): Now depends on LEA_MAX_STALL.
>        (ix86_lea_for_add_ok): Use ix86_lea_outperforms to make decision.
>
>        * config/i386/i386.md: Split added to transform non destructive
>        add into move and add.
>        (lea_1): transformed into insn_and_split to avoid AGU stalls.
>        (lea<mode>_2): Likewise.
>

I checked it into trunk for you.

Thanks.

-- 
H.J.



More information about the Gcc-patches mailing list