http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53110

--- Comment #13 from tejohnson at gcc dot gnu.org 2012-07-25 20:11:23 UTC ---
Author: tejohnson
Date: Wed Jul 25 20:11:13 2012
New Revision: 189866

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=189866
Log:
Backport the following patches from trunk to ensure that
"andw $0xff, $reg" is always converted to a zero extend
to avoid LCP stalls on core2/corei7 (b/6615073):
r184891, r186839, r186979, r186993, r188630, r188634, r188648

    r184891:
        2012-03-04  Uros Bizjak  <ubiz...@gmail.com>
        * config/i386/constraints.md (Ya): New internal constraint.
        * config/i386/i386.md (zero_extendsidi2): Remove expansion.
        (*zero_extendsidi2_rex64): Add x,x alternative.
        (*zero_extendsidi2): Ditto.  Add o,0 alternative.
        Remove flags reg clobber.  Adjust corresponding splits.
        (zero_extend<mode>si2): Macroize expander from zero_extendhisi2 and
        zero_extendqisi2 expanders using SWI12 mode iterator.
        (zero_extend<mode>si2_and): Macroize insn from
        zero_extendhisi2_and and zero_extendqisi2_and.  Merge corresponding
        splitters.
        (*zero_extend<mode>si2):  Macroize insn from
        *zero_extendhisi2_movzbl and *zero_extendqisi2_movzbl.
        (*zero_extend*2_movzbl_and): Remove insn patterns.
        (zero_extendqihi2_and): Merge corresponding splitter.
        (*zero_extendqihi2): Rename from *zero_extendqihi2_movzbl.
        (*zero_extend*2_movzbl_and): Remove insn patterns.
        (*anddi_1): Split TYPE_IMOVX instructions.
        (*andsi_1): Use Ya for alternative 2.  Split TYPE_IMOVX instructions.
        (*andhi_1): Ditto.
        (and->zext splitter): Add splitter pattern.
        (zero extend with andsi3 splitter): Adjust zero_extend pattern.

    r186839:
        2012-04-25  Jakub Jelinek  <ja...@redhat.com>
        PR target/53110
        * config/i386/i386.md (and<mode>3): For andq $0xffffffff, reg
        instead expand it as zero extension.

    r186979:
        2012-04-30  Uros Bizjak  <ubiz...@gmail.com>
        * config/i386/i386.md (and<mode>3): Expand masking operations with
        0xff, 0xffff or 0xffffffff immediates to corresponding zero_extend RTX.
        (and splitter): Split to DImode zero_extend RTX for DImode operand[0].

    r186993:
        2012-04-30  Uros Bizjak  <ubiz...@gmail.com>
        * config/i386/i386.md (and<mode>3): Change runtime operand mode checks
        to compile-time "mode == <MODE>mode" checks.
        (and splitter): Ditto.

    r188630:
        2012-06-14  Uros Bizjak  <ubiz...@gmail.com>
        * config/i386/i386.md (*zero_extendsidi2): Remove x,x alternative.
        (*zero_extendsidi2_rex64): Ditto.  Remove isa attribute.

    r188634:
        2012-06-14  Uros Bizjak  <ubiz...@gmail.com>
        Fix my previous commit to:
        * config/i386/i386.md (*zero_extendsidi2): Remove x,x alternative.
        (*zero_extendsidi2_rex64): Ditto.  Remove isa attribute.

    r188648:
        2012-06-14  Uros Bizjak  <ubiz...@gmail.com>
       (*zero_extendsidi2_rex64): Remove isa attribute.


Modified:
    branches/google/gcc-4_7/gcc/ChangeLog.google-4_7
    branches/google/gcc-4_7/gcc/config/i386/constraints.md
    branches/google/gcc-4_7/gcc/config/i386/i386.md

Reply via email to