Re: Strange instruction

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Kevin D. Kissell wrote:
> > Nigel Stephens wrote:
> > > Thiemo Seufer wrote:
> > > >GNU as has "move" as builtin macro which is expanded differently for
> > > >32 and 64 bit mode. This simplifies the task of writing code for both
> > > >models. Unfortunately the expansion was broken for a while and
> > > >generated always the 64 bit version if the toolchain was 64bit
> > > >_capable_. IIRC this was fixed in the early 2.14 timeframe.
> > > 
> > > Wouldn't it be safer, as Kevin suggests, for the "move" macro to 
> > > generate "or $rd,$0,$rs", since that will work correctly in either mode?
> > 
> > For CPUs with two adders the instruction scheduling is a bit better.
> 
> For CPUs with two adders, only one of which can do ORs, you mean.

Yes.

> Isn't that a pretty small population of MIPS CPUs?

Sure, but there's little reason to deny this optimization.

> > Ther are also many other macros which are expanded in dependence of
> > the 32/64 bit address/register size, a different "move" macro
> > expansion won't help much if the assembler invocation was wrong.
> 
> Perhaps, but it strikes me as being only prudent to remove unnecessarily
> fragile artifacts like this.

It was an assembler bug.


Thiemo


[Index of Archives]     [Linux MIPS Home]     [LKML Archive]     [Linux ARM Kernel]     [Linux ARM]     [Linux]     [Git]     [Yosemite News]     [Linux SCSI]     [Linux Hams]

  Powered by Linux