The code generator
English · Français
back to contents FPC internals
With the version 1.9.x of FPC the code generator has been completly rewritten to fit the needs of a compiler with multiple processor target support.
MM support
The FPC code generator supports the usage of multimedia registers as they are implemented by modern processors.
The shuffle operand
Most multimedia units support scalar as well as vector operations on the multimedia registers. To distinguish between these different operations, the mm methods of tcg take a so-called shuffle parameter. This parameter allows to specify how the data is processed when generating multimedia code.
pmmshuffle = ^tmmshuffle;
{ this record describes shuffle operations for mm operations; if a pointer a shuffle record
passed to an mm operation is nil, it means that the whole location is moved }
tmmshuffle = record
{ describes how many shuffles are actually described, if len=0 then
moving the scalar with index 0 to the scalar with index 0 is meant }
len : byte;
{ lower nibble of each entry of this array describes index of the source data index while
the upper nibble describes the destination index }
shuffles : array[1..1] of byte;
end;From the Free Pascal wiki, page "The code generator", as it stood on 2020-12-31 after a change by E-ric, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
