Using shifts by 1 on K6,K7 and i386

Martin Erhardsen MartinErhardsen@mail.tele.dk
Fri Jul 7 06:01:00 GMT 2000


----- Original Message ----- 
From: "Richard Henderson" <rth@cygnus.com>
To: "Martin Erhardsen" <MartinErhardsen@mail.tele.dk>
Cc: <gcc@gcc.gnu.org>
Sent: Friday, July 07, 2000 2:24 AM
Subject: Re: Using shifts by 1 on K6,K7 and i386


> On Sat, Jul 01, 2000 at 11:30:56AM +0200, Martin Erhardsen wrote:
> > I propose that the current predicate for using shifts 
> > and rotates by 1
> > 
> > (TARGET_PENTIUM || TARGET_PENTIUMPRO)
> > 
> > be replaced by this
> > 
> > (!TARGET_I486 || optimize_size)
> 
> Actaully, if any change is made, it should be of the form
> `TARGET_USE_SHIFT1', much like the existing TARGET_USE_LEAVE
> and friends.
> 

I have looked at the 486 manual, and it is not that simple. Shifts by one are 
slower only when using register operands on the 486. This means that the 
ideally the predicate should be something like this

(!(TARGET_I486 && register_operand(operands[0],SImode)) || optimize_size)

I'm not sure what the second operand to memory_operand does and if it is 
necessary, but I would need at least one operand to a TARGET_USE_SHIFT1
macro.




More information about the Gcc mailing list