Why does CogARMCompiler>>msr: yield MSRNE?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Why does CogARMCompiler>>msr: yield MSRNE?

Boris Shingarov
 
I just noticed something unusual in CogARMCompiler>>msr:.

The field cond -- which comes from the leftmost nibble of 16r1328F000 --
is 1, i.e. NE.

So in fact we are emitting MSRNE, not MSR.  Is this on purpose? Or
should the code read ^16rE328F000 + ... + ... ?  (E for "Always")

Reply | Threaded
Open this post in threaded view
|

Re: Why does CogARMCompiler>>msr: yield MSRNE?

timrowledge
 


> On 2020-09-17, at 12:25 AM, Boris Shingarov <[hidden email]> wrote:
>
> I just noticed something unusual in CogARMCompiler>>msr:.
>
> The field cond -- which comes from the leftmost nibble of 16r1328F000 -- is 1, i.e. NE.
>
Huh. That does look weird. Why would I have done that?

> So in fact we are emitting MSRNE, not MSR.  Is this on purpose? Or should the code read ^16rE328F000 + ... + ... ?  (E for "Always")

OK, found it. It's only used in #genMulR:R; in a place where we have just tested the condition codes and only want to transfer the V flag if the prior multiply  overflow test requires it.

Boy, that could do with better comments. I'll try to provide some soon.


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: RCR: Rewind Card Reader