tried to convert a variation to assembler.
although compiled code looks MUCH less optimal than this, I haven't noticed any performance increase :-/
This commit is contained in:
parent
6f3af378af
commit
573de31ffc
@ -23,12 +23,45 @@ uses
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
procedure TVariationEyefish.CalcFunction;
|
procedure TVariationEyefish.CalcFunction;
|
||||||
|
{$if false}
|
||||||
var
|
var
|
||||||
r: double;
|
r: double;
|
||||||
begin
|
begin
|
||||||
r := 2 / (sqrt(FTx^ * FTx^ + FTy^ * FTy^) + 1);
|
r := 2 * vvar / (sqrt(FTx^ * FTx^ + FTy^ * FTy^) + 1);
|
||||||
FPx^ := FPx^ + vvar * r * FTx^;
|
FPx^ := FPx^ + r * FTx^;
|
||||||
FPy^ := FPy^ + vvar * r * FTy^;
|
FPy^ := FPy^ + r * FTy^;
|
||||||
|
{$else}
|
||||||
|
asm
|
||||||
|
fld qword ptr [eax+vvar]
|
||||||
|
fadd st, st
|
||||||
|
|
||||||
|
mov ecx, [eax+FTy]
|
||||||
|
fld qword ptr [ecx]
|
||||||
|
mov ecx, [eax+FTx]
|
||||||
|
fld qword ptr [ecx]
|
||||||
|
|
||||||
|
fld st(1)
|
||||||
|
fmul st, st
|
||||||
|
fld st(1)
|
||||||
|
fmul st, st
|
||||||
|
fadd
|
||||||
|
fsqrt
|
||||||
|
|
||||||
|
fld1
|
||||||
|
fadd
|
||||||
|
fdivp st(3), st
|
||||||
|
|
||||||
|
fmul st, st(2)
|
||||||
|
mov ecx, [eax+FPx]
|
||||||
|
fadd qword ptr [ecx]
|
||||||
|
fstp qword ptr [ecx]
|
||||||
|
|
||||||
|
fmulp
|
||||||
|
mov ecx, [eax+FPy]
|
||||||
|
fadd qword ptr [ecx]
|
||||||
|
fstp qword ptr [ecx]
|
||||||
|
|
||||||
|
{$ifend}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
Loading…
Reference in New Issue
Block a user