[Mono-dev] Mono generates inefficient vectorized code

Rodrigo Kumpera kumpera at gmail.com
Thu Apr 8 11:08:03 EDT 2010

Hi Sergei,

On Thu, Apr 8, 2010 at 11:59 AM, Sergei Dyshel <qyron.private at gmail.com>wrote:

> Hello Rodrigo,
> Just picking up this conversation we had some time ago. I was asking why
> JIT does unneeded loads and stores and you answered that this behavior is
> because of lack of global reg allocator. I understand it so that any vreg
> which is used in different basic blocks is "promoted" to "memory variable"
> and hence gets loaded and stored each time.
> Then I asked why bare "global" 'ints' are treated differently (and more
> effectively) and you said that there are callee-saved iregs so there is a
> specialized allocator for them.
> Can you please point at the relevant place in code?

Look into liveness.c / linear_scan.c.
In liveness.c look for mono_analyze_liveness
In linear_scan.c look for mono_linear_scan

> On Altivec we have callee-saved vector registers too. Is it possible to use
> the same trick with them , in order to remove unnecessary loads/stores?

Yes, it might be possible to do so, not sure how much work it will be thou.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20100408/3bc3fd69/attachment.html 

More information about the Mono-devel-list mailing list