On Thu, Jun 17, 2010 at 6:47 PM, Adam Miles <[email protected]> wrote:

>
> The more I read what little documentation there is on variable alignment
> the
> more I realise I might have misunderstood what is guaranteed. The guarantee
> appears to be that the top of the stack frame is 16 byte aligned, not
> necessarily every variable on the stack. So the variable at the top (?) of
> the stack is 16 byte aligned however if the top variable is a float, the
> next variable will be on a 4 byte boundary, not 16.
>
> Where I've passed 3 Vector4f's by reference into a function it has pushed
> my
> stack allocated Vector4 12 bytes along (presumably a 'ref' variable is 4
> bytes on the stack, like a pointer). I could pass all Vector4f's by value,
> but even then you couldn't also pass a float as well.
>
> Assuming I've understood this correct (that's a big if), Mono.Simd is going
> to suffer quite poor performance with all the unavoidable unaligned loads
> and there's nothing that the user can do to work around it.
>
>
Support for 16bytes aligned locals/parameters is planned, but due to how
much work we have on our hands right now, it's hard to tell when it will
be done.
_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to