From 573de31ffc06dfd33b590980550f1295575f70b9 Mon Sep 17 00:00:00 2001 From: zueuk Date: Thu, 22 Sep 2005 16:08:29 +0000 Subject: [PATCH] tried to convert a variation to assembler. although compiled code looks MUCH less optimal than this, I haven't noticed any performance increase :-/ --- 2.10/Source/VarEyefish.pas | 39 +++++++++++++++++++++++++++++++++++--- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/2.10/Source/VarEyefish.pas b/2.10/Source/VarEyefish.pas index 04cf264..bd1ff5e 100644 --- a/2.10/Source/VarEyefish.pas +++ b/2.10/Source/VarEyefish.pas @@ -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; ///////////////////////////////////////////////////////////////////////////////