Am 19.01.2018 um 21:08 schrieb J. Gareth Moreton:
> Hi everyone,
> 
> So unless anyone has any objections, I would like to start experimenting to 
> implement a feature that allows 
> for per-type data alignment.  The main purpose for this is to better support 
> x86-64 SIMD extensions, where 
> aligned data is far faster to process.  While there is a compiler directive 
> that enforces byte alignment, 
> this risks causing conflicts with third party units and is a bit much of a 
> demand for a programmer wishing 
> to use an SIMD-tuned unit, say.
> 
> Bug/feature details: https://bugs.freepascal.org/view.php?id=32780
> 
> The format would be as follows:
> 
> type TypeName = TypeInfo [align ByteAmount];
> 
> The syntax for declaring a type is exactly the same, with a new optional 
> "align" keyword before the 
> terminating semicolon. "ByteAmount" has to be a power of 2, which I will 
> probably limit to 128 currently, 
> just so it doesn't cause ridiculous or malicious memory usage.  There will 
> probably have to be a minimum 
> alignment as well, although this will probably just be automatically enforced 
> (e.g. Single is always aligned 
> on a 4-byte boundary minimum).
> 
> The intention here is that this feature will be a stepping stone for properly 
> supporting vectorisation, 
> implementing some form of the "M128" and "M256" types, and the "vectorcall" 
> compiler directive for Windows.

In r38020 I committed a fix and an example tm128 how these records (m128/m256) 
can be implemented
properly without any additional suffix. Please give it a try.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to