On Mon, Sep 1, 2014 at 3:49 PM, Segher Boessenkool <seg...@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 <seg...@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