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 2/4] rs6000: Merge and improve highpart and widening muls


On Mon, Sep 1, 2014 at 3:49 PM, Segher Boessenkool
<segher@kernel.crashing.org> wrote:
> This is a little more complex.  The highpart muls generate a "truncate
> lshiftrt" pattern that is not canonical when widening to two registers,
> so this doesn't optimise well with combine.  This patch changes it to use
> the canonical subreg patterns instead, which means we need separate patterns
> for LE mode.  Oh well.
>
> Tested as usual.  This regresses gcc.dg/sms-8.c with -m32: SMS now _does_
> succeed, from my shallow investigation because there now are subregs and
> SMS explicitly looks for that.  I didn't look further because other SMS
> tests are failing (without the patch) as well.
>
> Is this okay to apply?
>
>
> Segher
>
>
> 2014-09-01  Segher Boessenkool  <segher@kernel.crashing.org>
>
> gcc/
>         * config/rs6000/rs6000.md (any_extend): New code iterator.
>         (u, su): New code attributes.
>         (dmode, DMODE): New mode attributes.
>         (<su>mul<mode>3_highpart): New.
>         (*<su>mul<mode>3_highpart): New.
>         (<su>mulsi3_highpart_le): New.
>         (<su>muldi3_highpart_le): New.
>         (<su>mulsi3_highpart_64): New.
>         (<u>mul<mode><dmode>3): New.
>         (mulsidi3, umulsidi3, smulsi3_highpart, umulsi3_highpart, and two
>         splitters): Delete.
>         (mulditi3, umulditi3, smuldi3_highpart, umuldi3_highpart, and two
>         splitters): Delete.

Okay.

Thanks, David


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