aboutsummaryrefslogtreecommitdiffstats
path: root/lcc/x86/win32/tst/spill.sbk
diff options
context:
space:
mode:
Diffstat (limited to 'lcc/x86/win32/tst/spill.sbk')
-rwxr-xr-xlcc/x86/win32/tst/spill.sbk259
1 files changed, 259 insertions, 0 deletions
diff --git a/lcc/x86/win32/tst/spill.sbk b/lcc/x86/win32/tst/spill.sbk
new file mode 100755
index 0000000..51cf7be
--- /dev/null
+++ b/lcc/x86/win32/tst/spill.sbk
@@ -0,0 +1,259 @@
+.486
+.model flat
+extrn __fltused:near
+extrn __ftol:near
+public _main
+_TEXT segment
+_main:
+push ebx
+push esi
+push edi
+push ebp
+mov ebp,esp
+mov eax,0
+L1:
+mov esp,ebp
+pop ebp
+pop edi
+pop esi
+pop ebx
+ret
+public _f
+_f:
+push ebx
+push esi
+push edi
+push ebp
+mov ebp,esp
+call _f
+add esp,0
+mov edi,eax
+call _f
+add esp,0
+lea edi,[eax][edi]
+mov dword ptr (20)[ebp],edi
+mov eax,0
+L2:
+mov esp,ebp
+pop ebp
+pop edi
+pop esi
+pop ebx
+ret
+public _f2
+_f2:
+push ebx
+push esi
+push edi
+push ebp
+mov ebp,esp
+sub esp,4
+call _f
+add esp,0
+mov edi,eax
+cmp dword ptr (20)[ebp],0
+je L5
+call _f
+add esp,0
+mov esi,eax
+mov dword ptr (-4)[ebp],esi
+jmp L6
+L5:
+mov dword ptr (-4)[ebp],1
+L6:
+mov esi,dword ptr (-4)[ebp]
+lea edi,[esi][edi]
+mov dword ptr (20)[ebp],edi
+mov eax,0
+L3:
+mov esp,ebp
+pop ebp
+pop edi
+pop esi
+pop ebx
+ret
+public _f3
+_f3:
+push ebx
+push esi
+push edi
+push ebp
+mov ebp,esp
+sub esp,44
+mov dword ptr (-4)[ebp],0
+mov dword ptr (-8)[ebp],0
+mov dword ptr (-12)[ebp],0
+mov dword ptr (-16)[ebp],0
+mov dword ptr (-20)[ebp],0
+mov dword ptr (-24)[ebp],0
+mov dword ptr (-28)[ebp],0
+mov dword ptr (-32)[ebp],0
+mov dword ptr (-36)[ebp],0
+mov dword ptr (-40)[ebp],0
+mov edi,dword ptr (24)[ebp]
+lea esi,(4)[edi]
+mov dword ptr (24)[ebp],esi
+cmp dword ptr (20)[ebp],0
+je L9
+call _f
+add esp,0
+mov esi,eax
+mov dword ptr (-44)[ebp],esi
+jmp L10
+L9:
+mov dword ptr (-44)[ebp],0
+L10:
+mov esi,dword ptr (-44)[ebp]
+mov dword ptr [edi],esi
+mov eax,0
+L7:
+mov esp,ebp
+pop ebp
+pop edi
+pop esi
+pop ebx
+ret
+public _f4
+_f4:
+push ebx
+push esi
+push edi
+push ebp
+mov ebp,esp
+sub esp,52
+mov dword ptr (-4)[ebp],0
+mov dword ptr (-8)[ebp],0
+mov dword ptr (-12)[ebp],0
+mov dword ptr (-16)[ebp],0
+mov dword ptr (-20)[ebp],0
+mov dword ptr (-24)[ebp],0
+mov edi,dword ptr (_i)
+lea esi,[edi*8]
+fld qword ptr (_a)[esi]
+fstp qword ptr (-36)[ebp]
+fld qword ptr (_b)[esi]
+fstp qword ptr (-44)[ebp]
+fld qword ptr (-36)[ebp]
+fadd qword ptr (-44)[ebp]
+fld qword ptr (L15)
+fcompp
+fstsw ax
+sahf
+je L13
+cmp edi,0
+je L13
+fld qword ptr (-36)[ebp]
+fsub qword ptr (-44)[ebp]
+fld qword ptr (L15)
+fcompp
+fstsw ax
+sahf
+je L13
+mov dword ptr (-28)[ebp],1
+jmp L14
+L13:
+mov dword ptr (-28)[ebp],0
+L14:
+mov edi,dword ptr (-28)[ebp]
+mov dword ptr (_i),edi
+mov eax,0
+L11:
+mov esp,ebp
+pop ebp
+pop edi
+pop esi
+pop ebx
+ret
+public _f5
+_f5:
+push ebx
+push esi
+push edi
+push ebp
+mov ebp,esp
+mov edi,dword ptr (_k)
+mov esi,dword ptr (_m)
+mov ebx,dword ptr (_A)
+mov edx,edi
+imul edx,esi
+lea edx,[ebx][edx*8]
+mov ecx,dword ptr (_j)
+mov eax,ecx
+imul eax,esi
+lea esi,[ebx][eax*8]
+mov ebx,dword ptr (_n)
+mov eax,dword ptr (_B)
+imul edi,ebx
+lea edi,[eax][edi*8]
+imul ecx,ebx
+lea ebx,[eax][ecx*8]
+fld qword ptr [edx]
+fmul qword ptr [esi]
+fld qword ptr [edi]
+fmul qword ptr [ebx]
+faddp st(1),st
+fstp qword ptr (_x)
+fld qword ptr [edx]
+fmul qword ptr [ebx]
+fld qword ptr [edi]
+fmul qword ptr [esi]
+fsubp st(1),st
+fstp qword ptr (_x)
+mov eax,0
+L16:
+mov esp,ebp
+pop ebp
+pop edi
+pop esi
+pop ebx
+ret
+_TEXT ends
+_DATA segment
+public _x
+align 4
+_x label byte
+db 8 dup (0)
+public _B
+align 4
+_B label byte
+db 4 dup (0)
+public _A
+align 4
+_A label byte
+db 4 dup (0)
+public _n
+align 4
+_n label byte
+db 4 dup (0)
+public _m
+align 4
+_m label byte
+db 4 dup (0)
+public _k
+align 4
+_k label byte
+db 4 dup (0)
+public _j
+align 4
+_j label byte
+db 4 dup (0)
+public _i
+align 4
+_i label byte
+db 4 dup (0)
+public _b
+align 4
+_b label byte
+db 80 dup (0)
+public _a
+align 4
+_a label byte
+db 80 dup (0)
+_DATA ends
+_TEXT segment
+align 4
+L15 label byte
+dd 00H
+dd 00H
+_TEXT ends
+end