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 - email@example.com http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel