Free Pascal supports the new MMX (Multi-Media extensions) instructions of Intel processors. The idea of MMX is to process multiple data with one instruction, for example the processor can add simultaneously 4 words. To implement this efficiently, the Pascal language needs to be extended. So Free Pascal allows to add for example two array[0..3] of word, if MMX support is switched on. The operation is done by the MMX unit and allows people without assembler knowledge to take advantage of the MMX extensions.
Here is an example:
uses
MMX; { include some predefined data types }
const
{ tmmxword = array[0..3] of word;, declared by unit MMX }
w1 : tmmxword = (111,123,432,4356);
w2 : tmmxword = (4213,63456,756,4);
var
w3 : tmmxword;
l : longint;
begin
if is_mmx_cpu then { is_mmx_cpu is exported from unit mmx }
begin
{$mmx+} { turn mmx on }
w3:=w1+w2;
{$mmx-}
end
else
begin
for i:=0 to 3 do
w3[i]:=w1[i]+w2[i];
end;
end.