adjust to match the expanded name.
[AROS-Contrib.git] / Demo / InfPlane / refresh-i386.S
blobe2360fb05b3ef4f9a168f995a0d97ac7d5dee263
1 /*
2         This code comes originally from the output of gcc
3         (gcc -S) [ Dont forget to specify -O3 also !!!]
5         Then it has been hand-optimized in the inner loop
6         
7         Hum it is a bit faster... but not enough to satisfy me :)
9 */
13         
14 .extern buffer
15 .text
16         .align 4
17         .globl refresh_prout
18         
19 refresh_prout:
20         pushl %ebp
21         movl %esp,%ebp
22         subl $72,%esp
23         pushl %edi
24         pushl %esi
25         pushl %ebx
26         movl $0,-8(%ebp)
27         movl $0,-64(%ebp)
28         movl $0,-68(%ebp)
29         .align 4
30 .L167:
31         movl $0,-4(%ebp)
32         movl -68(%ebp),%esi
33         movl %esi,-60(%ebp)
34         .align 4
35 .L171:
36         movl -60(%ebp),%esi
37         movl ikse(%esi),%esi
38         movl %esi,-24(%ebp)
39         movl -60(%ebp),%esi
40         movl ikse+4(%esi),%esi
41         movl %esi,-40(%ebp)
42         movl -60(%ebp),%esi
43         movl ikse+168(%esi),%ecx
44         movl igrek(%esi),%esi
45         movl %esi,-32(%ebp)
46         movl -60(%ebp),%esi
47         movl igrek+4(%esi),%esi
48         movl %esi,-48(%ebp)
49         movl -60(%ebp),%esi
50         movl igrek+164(%esi),%edx
51         movl igrek+168(%esi),%ebx
52         movl ikse+164(%esi),%eax
53         subl -24(%ebp),%eax
54         jns .L172
55         addl $7,%eax
56 .L172:
57         sarl $3,%eax
58         movl %eax,-28(%ebp)
59         movl %edx,%eax
60         subl -32(%ebp),%eax
61         jns .L173
62         addl $7,%eax
63 .L173:
64         sarl $3,%eax
65         movl %eax,-36(%ebp)
66         movl %ecx,%eax
67         subl -40(%ebp),%eax
68         jns .L174
69         addl $7,%eax
70 .L174:
71         sarl $3,%eax
72         movl %eax,-44(%ebp)
73         movl %ebx,%eax
74         subl -48(%ebp),%eax
75         jns .L175
76         addl $7,%eax
77 .L175:
78         sarl $3,%eax
79         movl %eax,-52(%ebp)
80         movl -4(%ebp),%eax
81         sall $4,%eax
82         addl buffer,%eax
83         addl -64(%ebp),%eax
84         movl %eax,-56(%ebp)
85         movl $8,-12(%ebp)
86         .align 4
87 .L179:
88         movl -56(%ebp),%esi   // swapped ebx et esi
89         addl $640,%esi
90         movl %esi,-56(%ebp)  
91         movl -24(%ebp),%ecx  // swapped ecx et edi
92         movl -32(%ebp),%ebx
93 //      movl %esi,-72(%ebp)
94         movl -40(%ebp),%eax
95         subl %ecx,%eax
96         sarl $3,%eax
97         movl %eax,-16(%ebp)
98         movl -48(%ebp),%eax
99         subl %ebx,%eax
100         sarl $3,%eax
101         movl %eax,-20(%ebp)
103         xorl    %eax,%eax
104         movl texture1,%edx
105         movl    -16(%ebp),%edi
106         .align 4
107 .L183:
108         movb %ch,%al
109         addl %edi,%ecx
110         movb %bh,%ah
111         addl -20(%ebp),%ebx
112         movw (%edx,%eax,2),%ax
113         movw %ax,(%esi)
115                 movb %ch,%al
116         addl %edi,%ecx
117         movb %bh,%ah
118         addl -20(%ebp),%ebx
119         movw (%edx,%eax,2),%ax
120         movw %ax,2(%esi)
122                 movb %ch,%al
123         addl %edi,%ecx
124         movb %bh,%ah
125         addl -20(%ebp),%ebx
126         movw (%edx,%eax,2),%ax
127         movw %ax,4(%esi)
129                 movb %ch,%al
130         addl %edi,%ecx
131         movb %bh,%ah
132         addl -20(%ebp),%ebx
133         movw (%edx,%eax,2),%ax
134         movw %ax,6(%esi)
136                 movb %ch,%al
137         addl %edi,%ecx
138         movb %bh,%ah
139         addl -20(%ebp),%ebx
140         movw (%edx,%eax,2),%ax
141         movw %ax,8(%esi)
143                 movb %ch,%al
144         addl %edi,%ecx
145         movb %bh,%ah
146         addl -20(%ebp),%ebx
147         movw (%edx,%eax,2),%ax
148         movw %ax,10(%esi)
150                 movb %ch,%al
151         addl %edi,%ecx
152         movb %bh,%ah
153         addl -20(%ebp),%ebx
154         movw (%edx,%eax,2),%ax
155         movw %ax,12(%esi)
157                 movb %ch,%al
158         addl %edi,%ecx
159         movb %bh,%ah
160         addl -20(%ebp),%ebx
161         movw (%edx,%eax,2),%ax
162         movw %ax,14(%esi)
166              // end of swap
167         movl -28(%ebp),%esi
168         addl %esi,-24(%ebp)
169         movl -36(%ebp),%esi
170         addl %esi,-32(%ebp)
171         movl -44(%ebp),%esi
172         addl %esi,-40(%ebp)
173         movl -52(%ebp),%esi
174         addl %esi,-48(%ebp)
175         decl -12(%ebp)
176         jne .L179
177         addl $4,-60(%ebp)
178         incl -4(%ebp)
179         cmpl $39,-4(%ebp)
180         jle .L171
181         addl $5120,-64(%ebp)
182         addl $164,-68(%ebp)
183         incl -8(%ebp)
184         cmpl $29,-8(%ebp)
185         jle .L167
186         leal -84(%ebp),%esp
187         popl %ebx
188         popl %esi
189         popl %edi
190         leave
191         ret