alignment on stack-allocated arrays/structs
Trass3r
mrmocool at gmx.de
Tue Nov 17 12:12:50 PST 2009
I originally posted a question about this in D.learn. bearophile advised
me to ask for that feature here.
Original post:
==============
OpenCL requires all types to be naturally aligned.
The D specs state:
"AlignAttribute is ignored when applied to declarations that are not
struct members."
Could there arise any problems translating the following
/*
* Vector types
*
* Note: OpenCL requires that all types be naturally aligned.
* This means that vector types must be naturally aligned.
* For example, a vector of four floats must be aligned to
* a 16 byte boundary (calculated as 4 * the natural 4-byte
* alignment of the float). The alignment qualifiers here
* will only function properly if your compiler supports them
* and if you don't actively work to defeat them. For example,
* in order for a cl_float4 to be 16 byte aligned in a struct,
* the start of the struct must itself be 16-byte aligned.
*
* Maintaining proper alignment is the user's responsibility.
*/
typedef double cl_double2[2] __attribute__((aligned(16)));
typedef double cl_double4[4] __attribute__((aligned(32)));
typedef double cl_double8[8] __attribute__((aligned(64)));
typedef double cl_double16[16] __attribute__((aligned(128)));
into just
alias double[2] cl_double2;
alias double[4] cl_double4;
alias double[8] cl_double8;
alias double[16] cl_double16;
?
More information about the Digitalmars-d
mailing list