Покопавшись, нашел еще вариант. Полагаю то, что Вам нужно.
Код:
function TruncMEM_SSE(Var Value: Double): Integer;
asm
// as written, fatest version
CVTTSD2SI EAX, [Value]
end;
И вот еще наблюдение.
Код:
function Trunc_Dbl(var Value: Double): Integer; // VAR
var
d_w: array[0..3] of word absolute Value;
begin
Result := ((d_w[3] shl 11) or (d_w[2] shr 5) or $8000) shr (14 - (d_w[3] shr 4 and $03FF));
end;
В таком варианте функция Trunc_Dbc работает чуть быстрее Round (219-234 тика на том же тесте), а функция TruncMEM_SSE без
VAR работает медленнее (390 тиков при том же тесте).