19.11.2011 14:14, Jonas Maebe пишет:

On 19 Nov 2011, at 11:31, Sergei Gorelkin wrote:

Is it possible to declare a (SSE friendly) record or array type, so that local 
variables of this type get aligned to e.g. 16 bytes?

I don't think so. For this, we'd probably need a separate vector type (possibly 
using a modifier for array types, or with a new keyword). All ABIs for 
architectures supporting vector processing also treat vectors as distinct 
types. Such functionality is also required to finish the high level code 
generator in the JVM branch for native targets (it has to be to distinguish 
vectors from arrays at the tdef level).

Hm, that looks like two separate tasks: one is distinct vector type for ABIs, another one is alignment of arbitrary types. The issue I've stumbled into is the TContext record (CPU context), which contains only word and qword members, but has to be 16 byte aligned because it is used by SSE instructions. In SDK it has a __declspec(align(16)) attribute, I guess we need something like that too.

Sergei

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to