struct alignments
dominik
asd at asd.com
Sun Apr 13 15:42:21 PDT 2008
I'm working on my vector and matrix math library, and now I'm prototyping my
SIMD optimizations, obviously I would like data alignment.. fact is I have
no clue how to do it ( I vaguely remember align directive)
for example something like (mixed C++ and D! :) ), what would I need for
pragma pack equivalent in D then for a struct?
#pragma pack(16)
struct Vector4d {
union {
struct { float x = 0.0f, y = 0.0f, z = 0.0f, w = 0.0f; };
struct { float r, g, b, a; };
struct { float cell[4]; };
Repeat!(float, 4) tuple;
};
...
}
also somewhere down the road in the code I'd like equivalent of declspec
align too, for example something like
Vector4d opAdd( ref Vector4d v ) {
version(NORMAL) {
return Vector4d( x + v.x, y + v.y, z + v.z, w + v.w );
}
else version(SIMD) {
__declspec(align(16)) Vector4d v4_ret;
asm {
mov esi, this
mov edi, v
movaps xmm0, [esi]
addps xmm0, [edi]
movaps v4_ret, xmm0
}
return v4_ret;
}
}
or something like that, its illustrative only :)
More information about the Digitalmars-d-learn
mailing list