This is the mail archive of the 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: Better info for combine results in worse code generated

On Tue, Jun 02, 2015 at 08:49:37AM +0930, Alan Modra wrote:
> > > In and<mode>3 expander I think you want the following since
> > > and64_2_operand covers the extra double-rotate cases, not all DImode.
> > > 
> > > -  if ((<MODE>mode == DImode && !and64_2_operand (operands[2], <MODE>mode))
> > > -      || (<MODE>mode != DImode && !and_operand (operands[2], <MODE>mode)))
> > > +  if (!and_operand (operands[2], <MODE>mode)
> > > +      && (<MODE>mode != DImode || !and64_2_operand (operands[2], <MODE>mode)))
> > 
> > and64_2_operand includes all of and_operand.  I agree it is a mess.
> but and64_2_operand doesn't include all of and_operand!

Maybe I'm slow today, but I don't see it?  Do you have an example?

> > 
> > rs6000 should not define it.  What e.g. does it mean for mullw?  Or,
> > worse, mulhw?  Pretty much anything with "w" in its name is problematic.
> In many places WORD_REGISTER_OPERATIONS is used, it is saying "don't
> trust the high bits".  At the moment we definitely do need it defined!

I don't see that either; do you have a pointer for me?

I've run some bootstraps and tests with WORD_REGISTER_OPERATIONS
undefined: 32-bit code becomes very slightly bigger, and 64-bit code
becomes slightly smaller.  No change in testresults.


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