17.01.2013 Views

musicdsp.org source code archive - WSInf

musicdsp.org source code archive - WSInf

musicdsp.org source code archive - WSInf

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

END;<br />

{$ELSE}<br />

BEGIN<br />

RESULT:=(Value SHR Shift) OR (($FFFFFFFF+(1-((Value AND (1 SHL 31)) SHR 31) AND ORD(Shift0))) SHL (32-Shift));<br />

END;<br />

{$ENDIF}<br />

from : bero@0ok.de<br />

comment : Ny branchless clipping functions (the first is faster than the second)<br />

FUNCTION Clip(Value,Min,Max:SINGLE):SINGLE; ASSEMBLER; STDCALL;<br />

CONST Constant0Dot5:SINGLE=0.5;<br />

ASM<br />

FLD DWORD PTR Value<br />

FLD DWORD PTR Min<br />

FLD DWORD PTR Max<br />

FLD ST(2)<br />

FSUB ST(0),ST(2)<br />

FABS<br />

FADD ST(0),ST(2)<br />

FADD ST(0),ST(1)<br />

FLD ST(3)<br />

FSUB ST(0),ST(2)<br />

FABS<br />

FSUBP ST(1),ST(0)<br />

FMUL DWORD PTR Constant0Dot5<br />

FFREE ST(4)<br />

FFREE ST(3)<br />

FFREE ST(2)<br />

FFREE ST(1)<br />

END;<br />

FUNCTION ClipDSP(Value:SINGLE):SINGLE; {$IFDEF CPU386} ASSEMBLER; REGISTER;<br />

ASM<br />

MOV EAX,DWORD PTR Value<br />

AND EAX,$80000000<br />

AND DWORD PTR Value,$7FFFFFFF<br />

FLD DWORD PTR Value<br />

FLD1<br />

FSUBP ST(1),ST(0)<br />

FSTP DWORD PTR Value<br />

MOV EDX,DWORD PTR Value<br />

AND EDX,$80000000<br />

SHR EDX,31<br />

NEG EDX<br />

AND DWORD PTR Value,EDX<br />

FLD DWORD PTR Value<br />

FLD1<br />

FADDP ST(1),ST(0)<br />

FSTP DWORD PTR Value<br />

OR DWORD PTR Value,EAX<br />

FLD DWORD PTR Value<br />

END;<br />

{$ELSE}<br />

VAR ValueCasted:LONGWORD ABSOLUTE Value;<br />

Sign:LONGWORD;<br />

BEGIN<br />

Sign:=ValueCasted AND $80000000;<br />

ValueCasted:=ValueCasted AND $7FFFFFFF;<br />

Value:=Value-1;<br />

ValueCasted:=ValueCasted AND (-LONGWORD((ValueCasted AND $80000000) SHR 31));<br />

Value:=Value+1;<br />

ValueCasted:=ValueCasted OR Sign;<br />

RESULT:=Value;<br />

END;<br />

{$ENDIF}<br />

from : stevenaajp4709@super-fast-email.com<br />

comment : I liked your site

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!