[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