DMD 1.034 and 2.018 releases - Align

Koroskin Denis 2korden at gmail.com
Mon Aug 11 11:26:58 PDT 2008


On Mon, 11 Aug 2008 22:13:03 +0400, Wayne Anderson <wanderon at comcast.net>  
wrote:

> Don Wrote:
>
>> bearophile wrote:
>> > Aligned memory for array ops:
>> >
>> > The MMX (etc), SSE, SSE2, SSE3, SSSE3, SSE4, SSE4.1, SSE4.2, SSE4a,  
>> SSE5, AVE instructions require data aligned to 8/16 bytes (and maybe  
>> more in the future, the D language has to be flexible for things  
>> present in the CPUs 3 years from now), the current array ops of D  
>> contain code that manages such problems in the alignment, but I presume  
>> properly aligned data may lead to better performance.
>> >
>> > If the static/dynamic pointers in D aren't guaranteed to be aligned  
>> to 8/16 (and in the future maybe 32 bytes) then a syntax may be added  
>> to ensure it.
>>
>> Dynamic and static memory allocation of arrays is guaranteed to be
>> aligned to 16 since D1.023.
>> Stack-allocated arrays aren't yet aligned. I've added a possible
>> solution in bugzilla #2278.
>> There'll always be a problem with slicing, though -- if you start a
>> slice from an odd index, it's going to be misaligned.
>>
>>
>>
> I don't understand that.  Doesn't it depend on the size of the data type  
> being stored in the array.  If the size of the type being stored is a  
> multiple of 16 shouldn't any slice still be aligned?

I think he was talking about ints, floats and doubles since SSE# operate  
with those types.


More information about the Digitalmars-d-announce mailing list