Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5277 → Rev 5278

/programs/develop/libraries/TinyGL/asm_fork/clip.asm
227,74 → 227,66
; tmin,tmax -> &float
align 4
proc ClipLine1 uses ebx, denom:dword,num:dword,tmin:dword,tmax:dword
fldz
fcom dword[denom]
fld dword[denom]
ftst
fstsw ax
sahf
je .u2
jmp @f
.u2:
fcom dword[num]
fstsw ax
sahf
jb .r0 ;if (denom==0 && num>0) return 0
jmp .r1
@@:
 
fcom dword[denom]
fstsw ax
sahf
ja .els_0 ;if (0<denom)
jbe .els_0 ;if (denom>0)
fld dword[num]
fdiv dword[denom]
 
fxch st1
fdivp ;t=num/denom
mov ebx,[tmax]
fcom dword[ebx]
fstsw ax
sahf
ja .r0_f2 ;if (t>*tmax) return 0
 
ja .r0_f1 ;if (t>*tmax) return 0
mov ebx,[tmin]
fcom dword[ebx]
fstsw ax
sahf
jbe .r1_f2
fstp dword[ebx] ;if (t>*tmin) *tmin=t
jbe .r1_f1 ;if (t>*tmin) *tmin=t
fstp dword[ebx]
jmp .r1
 
.els_0: ;else if (0>denom)
.els_0: ;else if (denom<0)
jae .els_1
fld dword[num]
fdiv dword[denom]
 
fxch st1
fdivp ;t=num/denom
mov ebx,[tmin]
fcom dword[ebx]
fstsw ax
sahf
jb .r0_f2 ;if (t<*tmin) return 0
 
jb .r0_f1 ;if (t<*tmin) return 0
mov ebx,[tmax]
fcom dword[ebx]
fstsw ax
sahf
jae .r1_f2
jae .r1_f1
fstp dword[ebx] ;if (t<*tmin) *tmax=t
jmp .r1
.els_1: ;else if (num>0)
ffree st0 ;denom
fincstp
fld dword[num]
ftst
fstsw ax
sahf
ja .r0_f1 ;if (num>0) return 0
jmp .r1_f1
 
.r0_f2: ;return 0 & free st0,st1
.r0_f1: ;return 0 & free st0
ffree st0
fincstp
.r0: ;return 0 & free st0
.r0: ;return 0
xor eax,eax
jmp .end_f
.r1_f2: ;return 1 & free st0,st1
.r1_f1: ;return 1 & free st0
ffree st0
fincstp
.r1: ;return 1 & free st0
.r1: ;return 1
xor eax,eax
inc eax
.end_f:
ffree st0
fincstp
ret
endp