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;
|
||||
{$if false}
|
||||
var
|
||||
r: double;
|
||||
begin
|
||||
r := 2 / (sqrt(FTx^ * FTx^ + FTy^ * FTy^) + 1);
|
||||
FPx^ := FPx^ + vvar * r * FTx^;
|
||||
FPy^ := FPy^ + vvar * r * FTy^;
|
||||
r := 2 * vvar / (sqrt(FTx^ * FTx^ + FTy^ * FTy^) + 1);
|
||||
FPx^ := FPx^ + r * FTx^;
|
||||
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;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
Loading…
Reference in New Issue
Block a user