<div dir="ltr">Hi,<div><br></div><div>  The mono JIT only uses double precision registers in most cases and only uses single precision ones for temporary purposes, like to implement casts. There were some problems with choosing these temporary registers, but they should be fixed in 3.4.0/master.</div>
<div><br></div><div>             Zoltan</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Tue, Mar 25, 2014 at 12:23 PM, SilentBob <span dir="ltr"><<a href="mailto:cinnamondonkey@gmail.com" target="_blank">cinnamondonkey@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
I'm hoping someone can provide some insight into how the cross-compiler<br>
handles allocating registers when the registers overlap.<br>
<br>
I'm looking at a case on ARM where the following code:<br>
<br>
    double d = 7.2199997900000001;<br>
    float f = (f)d;<br>
<br>
Results in:<br>
<br>
    vcvt.f32.f64 s4, d2<br>
<br>
Because the 'd' registers are made up of pairs of 's' registers (in this<br>
case d2 overlaps with s4 and s5) there is the potential for collision as in<br>
this case. The end result is that d2 changes as s4 is updated. It would be<br>
fine if it was not for d2 then being used immediately by the next<br>
instruction.<br>
<br>
mono_local_regalloc () in mini-codegen.c seems to be translating<br>
'float_conv_to_r4 R25 <- R24' and ending up with dreg = 4 and sreg1 = 4 this<br>
eventually gets emitted as above.<br>
<br>
Thank you in advance for all help.<br>
<br>
Regards,<br>
Shaun<br>
<br>
<br>
<br>
<br>
<br>
--<br>
View this message in context: <a href="http://mono.1490590.n4.nabble.com/Register-allocation-and-overlapping-registers-tp4662363.html" target="_blank">http://mono.1490590.n4.nabble.com/Register-allocation-and-overlapping-registers-tp4662363.html</a><br>

Sent from the Mono - Dev mailing list archive at Nabble.com.<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com">Mono-devel-list@lists.ximian.com</a><br>
<a href="http://lists.ximian.com/mailman/listinfo/mono-devel-list" target="_blank">http://lists.ximian.com/mailman/listinfo/mono-devel-list</a><br>
</blockquote></div><br></div>