Am 04.02.2018 um 20:57 schrieb J. Gareth Moreton:
> Hi everyone,
> 
> So I've almost finished implementing Microsoft's 'vectorcall' calling 
> convention into Free Pascal - the final 
> sticking point are Homogeneous Float Aggregates (HFA's), since the 
> documentation isn't tremendously clear on 
> their internal alignment - vectorcall allows the passing and returning of a 
> record type that contains between 1 
> and 4 fields (or an array) of the same type out of float (Single), Double, or 
> an aligned vector (M128, M256 or 
> M512).
> 
> I'm not certain if my definition of 'aggregate' is correct, but must the 
> fields be packed like an array to be a 
> valid HFA? I'm not certain if they should be packed or each field aligned to 
> a 16-byte boundary like with 
> Homogeneous Vector Aggregates (with M128 fields).  Since the examples given 
> on the Microsoft pages have array-
> like fields, I'm assuming packed (and naturally aligned to 4-byte boundaries 
> for Singles and 8 bytes for 
> Doubles).

Well, naturally aligned I think. packed means the whole hfa may be 1 byte 
aligned.

> 
> Can anyone confirm this? I don't want to end up programming the 
> implementation incorrectly, as this will cause 
> compatibility problems with any external libraries that use vectorcall.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to