You have to take it from the appropriate set (callee/caller) saved it belongs to.<div>The regalloc ask the arch code for a mask of available registers so, for example, pic code</div><div>can save a register for the GOT pointer.<br>
<div><div><div><br><div class="gmail_quote">On Tue, Aug 21, 2012 at 7:21 PM, Braddock Gaskill (Contractor) <span dir="ltr"><<a href="mailto:braddock.gaskill@apx-labs.com" target="_blank">braddock.gaskill@apx-labs.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div>
<div style="direction:ltr;font-size:10pt;font-family:Tahoma">Hi Rodrigo,<br>
<br>
How do I take a general purpose register out of the available set for the register allocator? 
<br>
<br>
I see with xmm15 on amd64 that you cleared the corresponding bit in MONO_ARCH_CALLEE_FREGS. 
<br>
<br>
Can I just do the same with MONO_ARCH_CALLEE_REGS?  The allocator never touches callER saved regs?  (why not?)<br>
<br>
Thanks,<br>
Braddock  <br>
<br>
<br>
<div style="font-size:16px;font-family:Times New Roman">
<hr>
<div style="direction:ltr"><font color="#000000" face="Tahoma"><b>From:</b> Rodrigo Kumpera [<a href="mailto:kumpera@gmail.com" target="_blank">kumpera@gmail.com</a>]<br>
<b>Sent:</b> Thursday, August 16, 2012 8:39 AM<br>
<b>To:</b> Braddock Gaskill (Contractor)<br>
<b>Cc:</b> <a href="mailto:mono-devel-list@lists.ximian.com" target="_blank">mono-devel-list@lists.ximian.com</a><br>
<b>Subject:</b> Re: [Mono-dev] How do I use scratch registers in op code implementation<br>
</font><br>
</div><div><div class="h5">
<div></div>
<div>You can take a register out of the available set and the register allocator will never use it.
<div><br>
</div>
<div>We do that with xmm reg 15 on amd64.<br>
<br>
<div class="gmail_quote">On Thu, Aug 16, 2012 at 11:04 AM, Braddock Gaskill (Contractor)
<span dir="ltr"><<a href="mailto:braddock.gaskill@apx-labs.com" target="_blank">braddock.gaskill@apx-labs.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div>
<div style="direction:ltr;font-size:10pt;font-family:Tahoma">Hi folks,<br>
We're working on the mono port to the Tilera TILE-Gx cpu.<br>
<br>
When implementing IR op codes in mono_arch_output_basic_block() we sometimes need to use a scratch register.  For example, TILE-Gx has no single membase + offset load instruction - we must do the address addition as a separate step.<br>

<br>
How do we inform the runtime that we have/will clobber a register?  I know that if we clobber a source register we can set the clob field in the machine description file, but what if we use another register?  Is it possible to reserve a register for this purpose?<br>

<br>
Thanks,<br>
Braddock Gaskill<br>
<br>
</div>
</div>
<br>
_______________________________________________<br>
Mono-devel-list mailing list<br>
<a href="mailto:Mono-devel-list@lists.ximian.com" target="_blank">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>
<br>
</blockquote>
</div>
<br>
</div>
</div>
</div></div></div>
</div>
</div>

</blockquote></div><br></div></div></div></div>