Yes. I think OSX may actually require 16 byte alignment in some cases. SSE seems like a major issue as well.
Sent from my iPhone On Jun 28, 2010, at 11:36 AM, Steve Schveighoffer <[email protected]> wrote: > Recently, this bug has surfaced: > http://d.puremagic.com/issues/show_bug.cgi?id=4400 > > In a nutshell, sometimes the byte alignment of arrays is 8 bytes instead 16 > bytes. > > This was caused by my array append patch, because in large arrays, I store > the length at the front of the array. With some queries before I created my > patch, I was told that 8 byte alignment was fine. However, the alignment is > easy to change since it's a couple specific functions that determine the > padding and alignment. So changing to 16 bytes is not an issue technically, > and functionally, this is only on PAGE sized arrays and larger, so 16 bytes > vs. 8 bytes isn't likely to cause problems. > > Bearophile's main argument stems from this. I am not a processor or assembly > expert, so I have no idea about this at all: > > ----------------- > The 16 bytes alignment was introduced because instructions like the SSE2 > movapd > need 16 byte alignment: > http://en.wikipedia.org/wiki/MOVAPD > > I have recently used it here: > http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=112670 > > And some other SSE* instructions work with 8 byte alignment too, but they are > slower (future CPUs can remove such alignment requirements, some of it has > being removed already, so in that future the GC can go back giving 8 bytes > aligned memory). > ----------------- > > So should I change it? > > -Steve > > > > > _______________________________________________ > phobos mailing list > [email protected] > http://lists.puremagic.com/mailman/listinfo/phobos _______________________________________________ phobos mailing list [email protected] http://lists.puremagic.com/mailman/listinfo/phobos
