1159b3361Sopenharmony_ci;
2159b3361Sopenharmony_ci;    (C) Frank Klemm 1995,99,2000
3159b3361Sopenharmony_ci;    Dedicated to the LAME project
4159b3361Sopenharmony_ci;
5159b3361Sopenharmony_ci;
6159b3361Sopenharmony_ci        %include "nasm.h"
7159b3361Sopenharmony_ci
8159b3361Sopenharmony_ci        segment_code
9159b3361Sopenharmony_ci        
10159b3361Sopenharmony_ci; float_t  scalar04_float32_i387 ( 
11159b3361Sopenharmony_ci;         const float32_t* const  p, 
12159b3361Sopenharmony_ci;         const float32_t* const  q );
13159b3361Sopenharmony_ci
14159b3361Sopenharmony_ciproc    scalar04_float32_i387
15159b3361Sopenharmony_ci%$p     arg     4
16159b3361Sopenharmony_ci%$q     arg     4
17159b3361Sopenharmony_ci;;;     alloc
18159b3361Sopenharmony_ci
19159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
20159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
21159b3361Sopenharmony_ci        fld     dword [eax]
22159b3361Sopenharmony_ci        fmul    dword [edx]
23159b3361Sopenharmony_ci        fld     dword [eax +  4]
24159b3361Sopenharmony_ci        fmul    dword [edx +  4]
25159b3361Sopenharmony_ci        faddp   st1,st0
26159b3361Sopenharmony_ci        fld     dword [eax +  8]
27159b3361Sopenharmony_ci        fmul    dword [edx +  8]
28159b3361Sopenharmony_ci        faddp   st1,st0
29159b3361Sopenharmony_ci        fld     dword [eax + 12]
30159b3361Sopenharmony_ci        fmul    dword [edx + 12]
31159b3361Sopenharmony_ci        faddp   st1,st0    
32159b3361Sopenharmony_ciendproc
33159b3361Sopenharmony_ci
34159b3361Sopenharmony_ci
35159b3361Sopenharmony_ciproc    scalar08_float32_i387
36159b3361Sopenharmony_ci%$p     arg     4
37159b3361Sopenharmony_ci%$q     arg     4
38159b3361Sopenharmony_ci;;;     alloc
39159b3361Sopenharmony_ci
40159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
41159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
42159b3361Sopenharmony_ci        fld     dword [eax]
43159b3361Sopenharmony_ci        fmul    dword [edx]
44159b3361Sopenharmony_ci        fld     dword [eax +  4]
45159b3361Sopenharmony_ci        fmul    dword [edx +  4]
46159b3361Sopenharmony_ci        faddp   st1,st0
47159b3361Sopenharmony_ci        fld     dword [eax +  8]
48159b3361Sopenharmony_ci        fmul    dword [edx +  8]
49159b3361Sopenharmony_ci        faddp   st1,st0
50159b3361Sopenharmony_ci        fld     dword [eax + 12]
51159b3361Sopenharmony_ci        fmul    dword [edx + 12]
52159b3361Sopenharmony_ci        faddp   st1,st0    
53159b3361Sopenharmony_ci        fld     dword [eax + 16]
54159b3361Sopenharmony_ci        fmul    dword [edx + 16]
55159b3361Sopenharmony_ci        faddp   st1,st0    
56159b3361Sopenharmony_ci        fld     dword [eax + 20]
57159b3361Sopenharmony_ci        fmul    dword [edx + 20]
58159b3361Sopenharmony_ci        faddp   st1,st0    
59159b3361Sopenharmony_ci        fld     dword [eax + 24]
60159b3361Sopenharmony_ci        fmul    dword [edx + 24]
61159b3361Sopenharmony_ci        faddp   st1,st0    
62159b3361Sopenharmony_ci        fld     dword [eax + 28]
63159b3361Sopenharmony_ci        fmul    dword [edx + 28]
64159b3361Sopenharmony_ci        faddp   st1,st0    
65159b3361Sopenharmony_ciendproc
66159b3361Sopenharmony_ci
67159b3361Sopenharmony_ci
68159b3361Sopenharmony_ciproc    scalar12_float32_i387
69159b3361Sopenharmony_ci%$p     arg     4
70159b3361Sopenharmony_ci%$q     arg     4
71159b3361Sopenharmony_ci;;;     alloc
72159b3361Sopenharmony_ci
73159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
74159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
75159b3361Sopenharmony_ci        fld     dword [eax]
76159b3361Sopenharmony_ci        fmul    dword [edx]
77159b3361Sopenharmony_ci        fld     dword [eax +  4]
78159b3361Sopenharmony_ci        fmul    dword [edx +  4]
79159b3361Sopenharmony_ci        faddp   st1,st0
80159b3361Sopenharmony_ci        fld     dword [eax +  8]
81159b3361Sopenharmony_ci        fmul    dword [edx +  8]
82159b3361Sopenharmony_ci        faddp   st1,st0
83159b3361Sopenharmony_ci        fld     dword [eax + 12]
84159b3361Sopenharmony_ci        fmul    dword [edx + 12]
85159b3361Sopenharmony_ci        faddp   st1,st0    
86159b3361Sopenharmony_ci        fld     dword [eax + 16]
87159b3361Sopenharmony_ci        fmul    dword [edx + 16]
88159b3361Sopenharmony_ci        faddp   st1,st0    
89159b3361Sopenharmony_ci        fld     dword [eax + 20]
90159b3361Sopenharmony_ci        fmul    dword [edx + 20]
91159b3361Sopenharmony_ci        faddp   st1,st0    
92159b3361Sopenharmony_ci        fld     dword [eax + 24]
93159b3361Sopenharmony_ci        fmul    dword [edx + 24]
94159b3361Sopenharmony_ci        faddp   st1,st0    
95159b3361Sopenharmony_ci        fld     dword [eax + 28]
96159b3361Sopenharmony_ci        fmul    dword [edx + 28]
97159b3361Sopenharmony_ci        faddp   st1,st0    
98159b3361Sopenharmony_ci        fld     dword [eax + 32]
99159b3361Sopenharmony_ci        fmul    dword [edx + 32]
100159b3361Sopenharmony_ci        faddp   st1,st0    
101159b3361Sopenharmony_ci        fld     dword [eax + 36]
102159b3361Sopenharmony_ci        fmul    dword [edx + 36]
103159b3361Sopenharmony_ci        faddp   st1,st0    
104159b3361Sopenharmony_ci        fld     dword [eax + 40]
105159b3361Sopenharmony_ci        fmul    dword [edx + 40]
106159b3361Sopenharmony_ci        faddp   st1,st0    
107159b3361Sopenharmony_ci        fld     dword [eax + 44]
108159b3361Sopenharmony_ci        fmul    dword [edx + 44]
109159b3361Sopenharmony_ci        faddp   st1,st0    
110159b3361Sopenharmony_ciendproc
111159b3361Sopenharmony_ci
112159b3361Sopenharmony_ci
113159b3361Sopenharmony_ciproc    scalar16_float32_i387
114159b3361Sopenharmony_ci%$p     arg     4
115159b3361Sopenharmony_ci%$q     arg     4
116159b3361Sopenharmony_ci;;;     alloc
117159b3361Sopenharmony_ci
118159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
119159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
120159b3361Sopenharmony_ci        fld     dword [eax]
121159b3361Sopenharmony_ci        fmul    dword [edx]
122159b3361Sopenharmony_ci        fld     dword [eax +  4]
123159b3361Sopenharmony_ci        fmul    dword [edx +  4]
124159b3361Sopenharmony_ci        faddp   st1,st0
125159b3361Sopenharmony_ci        fld     dword [eax +  8]
126159b3361Sopenharmony_ci        fmul    dword [edx +  8]
127159b3361Sopenharmony_ci        faddp   st1,st0
128159b3361Sopenharmony_ci        fld     dword [eax + 12]
129159b3361Sopenharmony_ci        fmul    dword [edx + 12]
130159b3361Sopenharmony_ci        faddp   st1,st0    
131159b3361Sopenharmony_ci        fld     dword [eax + 16]
132159b3361Sopenharmony_ci        fmul    dword [edx + 16]
133159b3361Sopenharmony_ci        faddp   st1,st0    
134159b3361Sopenharmony_ci        fld     dword [eax + 20]
135159b3361Sopenharmony_ci        fmul    dword [edx + 20]
136159b3361Sopenharmony_ci        faddp   st1,st0    
137159b3361Sopenharmony_ci        fld     dword [eax + 24]
138159b3361Sopenharmony_ci        fmul    dword [edx + 24]
139159b3361Sopenharmony_ci        faddp   st1,st0    
140159b3361Sopenharmony_ci        fld     dword [eax + 28]
141159b3361Sopenharmony_ci        fmul    dword [edx + 28]
142159b3361Sopenharmony_ci        faddp   st1,st0    
143159b3361Sopenharmony_ci        fld     dword [eax + 32]
144159b3361Sopenharmony_ci        fmul    dword [edx + 32]
145159b3361Sopenharmony_ci        faddp   st1,st0    
146159b3361Sopenharmony_ci        fld     dword [eax + 36]
147159b3361Sopenharmony_ci        fmul    dword [edx + 36]
148159b3361Sopenharmony_ci        faddp   st1,st0    
149159b3361Sopenharmony_ci        fld     dword [eax + 40]
150159b3361Sopenharmony_ci        fmul    dword [edx + 40]
151159b3361Sopenharmony_ci        faddp   st1,st0    
152159b3361Sopenharmony_ci        fld     dword [eax + 44]
153159b3361Sopenharmony_ci        fmul    dword [edx + 44]
154159b3361Sopenharmony_ci        faddp   st1,st0    
155159b3361Sopenharmony_ci        fld     dword [eax + 48]
156159b3361Sopenharmony_ci        fmul    dword [edx + 48]
157159b3361Sopenharmony_ci        faddp   st1,st0    
158159b3361Sopenharmony_ci        fld     dword [eax + 52]
159159b3361Sopenharmony_ci        fmul    dword [edx + 52]
160159b3361Sopenharmony_ci        faddp   st1,st0    
161159b3361Sopenharmony_ci        fld     dword [eax + 56]
162159b3361Sopenharmony_ci        fmul    dword [edx + 56]
163159b3361Sopenharmony_ci        faddp   st1,st0    
164159b3361Sopenharmony_ci        fld     dword [eax + 60]
165159b3361Sopenharmony_ci        fmul    dword [edx + 60]
166159b3361Sopenharmony_ci        faddp   st1,st0    
167159b3361Sopenharmony_ciendproc
168159b3361Sopenharmony_ci
169159b3361Sopenharmony_ci
170159b3361Sopenharmony_ciproc    scalar20_float32_i387
171159b3361Sopenharmony_ci%$p     arg     4
172159b3361Sopenharmony_ci%$q     arg     4
173159b3361Sopenharmony_ci;;;     alloc
174159b3361Sopenharmony_ci
175159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
176159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
177159b3361Sopenharmony_ci        fld     dword [eax]
178159b3361Sopenharmony_ci        fmul    dword [edx]
179159b3361Sopenharmony_ci        fld     dword [eax +  4]
180159b3361Sopenharmony_ci        fmul    dword [edx +  4]
181159b3361Sopenharmony_ci        faddp   st1,st0
182159b3361Sopenharmony_ci        fld     dword [eax +  8]
183159b3361Sopenharmony_ci        fmul    dword [edx +  8]
184159b3361Sopenharmony_ci        faddp   st1,st0
185159b3361Sopenharmony_ci        fld     dword [eax + 12]
186159b3361Sopenharmony_ci        fmul    dword [edx + 12]
187159b3361Sopenharmony_ci        faddp   st1,st0    
188159b3361Sopenharmony_ci        fld     dword [eax + 16]
189159b3361Sopenharmony_ci        fmul    dword [edx + 16]
190159b3361Sopenharmony_ci        faddp   st1,st0    
191159b3361Sopenharmony_ci        fld     dword [eax + 20]
192159b3361Sopenharmony_ci        fmul    dword [edx + 20]
193159b3361Sopenharmony_ci        faddp   st1,st0    
194159b3361Sopenharmony_ci        fld     dword [eax + 24]
195159b3361Sopenharmony_ci        fmul    dword [edx + 24]
196159b3361Sopenharmony_ci        faddp   st1,st0    
197159b3361Sopenharmony_ci        fld     dword [eax + 28]
198159b3361Sopenharmony_ci        fmul    dword [edx + 28]
199159b3361Sopenharmony_ci        faddp   st1,st0    
200159b3361Sopenharmony_ci        fld     dword [eax + 32]
201159b3361Sopenharmony_ci        fmul    dword [edx + 32]
202159b3361Sopenharmony_ci        faddp   st1,st0    
203159b3361Sopenharmony_ci        fld     dword [eax + 36]
204159b3361Sopenharmony_ci        fmul    dword [edx + 36]
205159b3361Sopenharmony_ci        faddp   st1,st0    
206159b3361Sopenharmony_ci        fld     dword [eax + 40]
207159b3361Sopenharmony_ci        fmul    dword [edx + 40]
208159b3361Sopenharmony_ci        faddp   st1,st0    
209159b3361Sopenharmony_ci        fld     dword [eax + 44]
210159b3361Sopenharmony_ci        fmul    dword [edx + 44]
211159b3361Sopenharmony_ci        faddp   st1,st0    
212159b3361Sopenharmony_ci        fld     dword [eax + 48]
213159b3361Sopenharmony_ci        fmul    dword [edx + 48]
214159b3361Sopenharmony_ci        faddp   st1,st0    
215159b3361Sopenharmony_ci        fld     dword [eax + 52]
216159b3361Sopenharmony_ci        fmul    dword [edx + 52]
217159b3361Sopenharmony_ci        faddp   st1,st0    
218159b3361Sopenharmony_ci        fld     dword [eax + 56]
219159b3361Sopenharmony_ci        fmul    dword [edx + 56]
220159b3361Sopenharmony_ci        faddp   st1,st0    
221159b3361Sopenharmony_ci        fld     dword [eax + 60]
222159b3361Sopenharmony_ci        fmul    dword [edx + 60]
223159b3361Sopenharmony_ci        faddp   st1,st0    
224159b3361Sopenharmony_ci        fld     dword [eax + 64]
225159b3361Sopenharmony_ci        fmul    dword [edx + 64]
226159b3361Sopenharmony_ci        faddp   st1,st0    
227159b3361Sopenharmony_ci        fld     dword [eax + 68]
228159b3361Sopenharmony_ci        fmul    dword [edx + 68]
229159b3361Sopenharmony_ci        faddp   st1,st0    
230159b3361Sopenharmony_ci        fld     dword [eax + 72]
231159b3361Sopenharmony_ci        fmul    dword [edx + 72]
232159b3361Sopenharmony_ci        faddp   st1,st0    
233159b3361Sopenharmony_ci        fld     dword [eax + 76]
234159b3361Sopenharmony_ci        fmul    dword [edx + 76]
235159b3361Sopenharmony_ci        faddp   st1,st0    
236159b3361Sopenharmony_ciendproc
237159b3361Sopenharmony_ci
238159b3361Sopenharmony_ci
239159b3361Sopenharmony_ciproc    scalar24_float32_i387
240159b3361Sopenharmony_ci%$p     arg     4
241159b3361Sopenharmony_ci%$q     arg     4
242159b3361Sopenharmony_ci;;;     alloc
243159b3361Sopenharmony_ci
244159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
245159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
246159b3361Sopenharmony_ci        fld     dword [eax]
247159b3361Sopenharmony_ci        fmul    dword [edx]
248159b3361Sopenharmony_ci        fld     dword [eax +  4]
249159b3361Sopenharmony_ci        fmul    dword [edx +  4]
250159b3361Sopenharmony_ci        faddp   st1,st0
251159b3361Sopenharmony_ci        fld     dword [eax +  8]
252159b3361Sopenharmony_ci        fmul    dword [edx +  8]
253159b3361Sopenharmony_ci        faddp   st1,st0
254159b3361Sopenharmony_ci        fld     dword [eax + 12]
255159b3361Sopenharmony_ci        fmul    dword [edx + 12]
256159b3361Sopenharmony_ci        faddp   st1,st0    
257159b3361Sopenharmony_ci        fld     dword [eax + 16]
258159b3361Sopenharmony_ci        fmul    dword [edx + 16]
259159b3361Sopenharmony_ci        faddp   st1,st0    
260159b3361Sopenharmony_ci        fld     dword [eax + 20]
261159b3361Sopenharmony_ci        fmul    dword [edx + 20]
262159b3361Sopenharmony_ci        faddp   st1,st0    
263159b3361Sopenharmony_ci        fld     dword [eax + 24]
264159b3361Sopenharmony_ci        fmul    dword [edx + 24]
265159b3361Sopenharmony_ci        faddp   st1,st0    
266159b3361Sopenharmony_ci        fld     dword [eax + 28]
267159b3361Sopenharmony_ci        fmul    dword [edx + 28]
268159b3361Sopenharmony_ci        faddp   st1,st0    
269159b3361Sopenharmony_ci        fld     dword [eax + 32]
270159b3361Sopenharmony_ci        fmul    dword [edx + 32]
271159b3361Sopenharmony_ci        faddp   st1,st0    
272159b3361Sopenharmony_ci        fld     dword [eax + 36]
273159b3361Sopenharmony_ci        fmul    dword [edx + 36]
274159b3361Sopenharmony_ci        faddp   st1,st0    
275159b3361Sopenharmony_ci        fld     dword [eax + 40]
276159b3361Sopenharmony_ci        fmul    dword [edx + 40]
277159b3361Sopenharmony_ci        faddp   st1,st0    
278159b3361Sopenharmony_ci        fld     dword [eax + 44]
279159b3361Sopenharmony_ci        fmul    dword [edx + 44]
280159b3361Sopenharmony_ci        faddp   st1,st0    
281159b3361Sopenharmony_ci        fld     dword [eax + 48]
282159b3361Sopenharmony_ci        fmul    dword [edx + 48]
283159b3361Sopenharmony_ci        faddp   st1,st0    
284159b3361Sopenharmony_ci        fld     dword [eax + 52]
285159b3361Sopenharmony_ci        fmul    dword [edx + 52]
286159b3361Sopenharmony_ci        faddp   st1,st0    
287159b3361Sopenharmony_ci        fld     dword [eax + 56]
288159b3361Sopenharmony_ci        fmul    dword [edx + 56]
289159b3361Sopenharmony_ci        faddp   st1,st0    
290159b3361Sopenharmony_ci        fld     dword [eax + 60]
291159b3361Sopenharmony_ci        fmul    dword [edx + 60]
292159b3361Sopenharmony_ci        faddp   st1,st0    
293159b3361Sopenharmony_ci        fld     dword [eax + 64]
294159b3361Sopenharmony_ci        fmul    dword [edx + 64]
295159b3361Sopenharmony_ci        faddp   st1,st0    
296159b3361Sopenharmony_ci        fld     dword [eax + 68]
297159b3361Sopenharmony_ci        fmul    dword [edx + 68]
298159b3361Sopenharmony_ci        faddp   st1,st0    
299159b3361Sopenharmony_ci        fld     dword [eax + 72]
300159b3361Sopenharmony_ci        fmul    dword [edx + 72]
301159b3361Sopenharmony_ci        faddp   st1,st0    
302159b3361Sopenharmony_ci        fld     dword [eax + 76]
303159b3361Sopenharmony_ci        fmul    dword [edx + 76]
304159b3361Sopenharmony_ci        faddp   st1,st0    
305159b3361Sopenharmony_ci        fld     dword [eax + 80]
306159b3361Sopenharmony_ci        fmul    dword [edx + 80]
307159b3361Sopenharmony_ci        faddp   st1,st0    
308159b3361Sopenharmony_ci        fld     dword [eax + 84]
309159b3361Sopenharmony_ci        fmul    dword [edx + 84]
310159b3361Sopenharmony_ci        faddp   st1,st0    
311159b3361Sopenharmony_ci        fld     dword [eax + 88]
312159b3361Sopenharmony_ci        fmul    dword [edx + 88]
313159b3361Sopenharmony_ci        faddp   st1,st0    
314159b3361Sopenharmony_ci        fld     dword [eax + 92]
315159b3361Sopenharmony_ci        fmul    dword [edx + 92]
316159b3361Sopenharmony_ci        faddp   st1,st0    
317159b3361Sopenharmony_ciendproc
318159b3361Sopenharmony_ci
319159b3361Sopenharmony_ci
320159b3361Sopenharmony_ciproc    scalar32_float32_i387
321159b3361Sopenharmony_ci%$p     arg     4
322159b3361Sopenharmony_ci%$q     arg     4
323159b3361Sopenharmony_ci;;;     alloc
324159b3361Sopenharmony_ci
325159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
326159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
327159b3361Sopenharmony_ci        fld     dword [eax]
328159b3361Sopenharmony_ci        fmul    dword [edx]
329159b3361Sopenharmony_ci        fld     dword [eax +  4]
330159b3361Sopenharmony_ci        fmul    dword [edx +  4]
331159b3361Sopenharmony_ci        faddp   st1,st0
332159b3361Sopenharmony_ci        fld     dword [eax +  8]
333159b3361Sopenharmony_ci        fmul    dword [edx +  8]
334159b3361Sopenharmony_ci        faddp   st1,st0
335159b3361Sopenharmony_ci        fld     dword [eax + 12]
336159b3361Sopenharmony_ci        fmul    dword [edx + 12]
337159b3361Sopenharmony_ci        faddp   st1,st0    
338159b3361Sopenharmony_ci        fld     dword [eax + 16]
339159b3361Sopenharmony_ci        fmul    dword [edx + 16]
340159b3361Sopenharmony_ci        faddp   st1,st0    
341159b3361Sopenharmony_ci        fld     dword [eax + 20]
342159b3361Sopenharmony_ci        fmul    dword [edx + 20]
343159b3361Sopenharmony_ci        faddp   st1,st0    
344159b3361Sopenharmony_ci        fld     dword [eax + 24]
345159b3361Sopenharmony_ci        fmul    dword [edx + 24]
346159b3361Sopenharmony_ci        faddp   st1,st0    
347159b3361Sopenharmony_ci        fld     dword [eax + 28]
348159b3361Sopenharmony_ci        fmul    dword [edx + 28]
349159b3361Sopenharmony_ci        faddp   st1,st0    
350159b3361Sopenharmony_ci        fld     dword [eax + 32]
351159b3361Sopenharmony_ci        fmul    dword [edx + 32]
352159b3361Sopenharmony_ci        faddp   st1,st0    
353159b3361Sopenharmony_ci        fld     dword [eax + 36]
354159b3361Sopenharmony_ci        fmul    dword [edx + 36]
355159b3361Sopenharmony_ci        faddp   st1,st0    
356159b3361Sopenharmony_ci        fld     dword [eax + 40]
357159b3361Sopenharmony_ci        fmul    dword [edx + 40]
358159b3361Sopenharmony_ci        faddp   st1,st0    
359159b3361Sopenharmony_ci        fld     dword [eax + 44]
360159b3361Sopenharmony_ci        fmul    dword [edx + 44]
361159b3361Sopenharmony_ci        faddp   st1,st0    
362159b3361Sopenharmony_ci        fld     dword [eax + 48]
363159b3361Sopenharmony_ci        fmul    dword [edx + 48]
364159b3361Sopenharmony_ci        faddp   st1,st0    
365159b3361Sopenharmony_ci        fld     dword [eax + 52]
366159b3361Sopenharmony_ci        fmul    dword [edx + 52]
367159b3361Sopenharmony_ci        faddp   st1,st0    
368159b3361Sopenharmony_ci        fld     dword [eax + 56]
369159b3361Sopenharmony_ci        fmul    dword [edx + 56]
370159b3361Sopenharmony_ci        faddp   st1,st0    
371159b3361Sopenharmony_ci        fld     dword [eax + 60]
372159b3361Sopenharmony_ci        fmul    dword [edx + 60]
373159b3361Sopenharmony_ci        faddp   st1,st0    
374159b3361Sopenharmony_ci        fld     dword [eax + 64]
375159b3361Sopenharmony_ci        fmul    dword [edx + 64]
376159b3361Sopenharmony_ci        faddp   st1,st0    
377159b3361Sopenharmony_ci        fld     dword [eax + 68]
378159b3361Sopenharmony_ci        fmul    dword [edx + 68]
379159b3361Sopenharmony_ci        faddp   st1,st0    
380159b3361Sopenharmony_ci        fld     dword [eax + 72]
381159b3361Sopenharmony_ci        fmul    dword [edx + 72]
382159b3361Sopenharmony_ci        faddp   st1,st0    
383159b3361Sopenharmony_ci        fld     dword [eax + 76]
384159b3361Sopenharmony_ci        fmul    dword [edx + 76]
385159b3361Sopenharmony_ci        faddp   st1,st0    
386159b3361Sopenharmony_ci        fld     dword [eax + 80]
387159b3361Sopenharmony_ci        fmul    dword [edx + 80]
388159b3361Sopenharmony_ci        faddp   st1,st0    
389159b3361Sopenharmony_ci        fld     dword [eax + 84]
390159b3361Sopenharmony_ci        fmul    dword [edx + 84]
391159b3361Sopenharmony_ci        faddp   st1,st0    
392159b3361Sopenharmony_ci        fld     dword [eax + 88]
393159b3361Sopenharmony_ci        fmul    dword [edx + 88]
394159b3361Sopenharmony_ci        faddp   st1,st0    
395159b3361Sopenharmony_ci        fld     dword [eax + 92]
396159b3361Sopenharmony_ci        fmul    dword [edx + 92]
397159b3361Sopenharmony_ci        faddp   st1,st0    
398159b3361Sopenharmony_ci        fld     dword [eax + 96]
399159b3361Sopenharmony_ci        fmul    dword [edx + 96]
400159b3361Sopenharmony_ci        faddp   st1,st0    
401159b3361Sopenharmony_ci        fld     dword [eax +100]
402159b3361Sopenharmony_ci        fmul    dword [edx +100]
403159b3361Sopenharmony_ci        faddp   st1,st0    
404159b3361Sopenharmony_ci        fld     dword [eax +104]
405159b3361Sopenharmony_ci        fmul    dword [edx +104]
406159b3361Sopenharmony_ci        faddp   st1,st0    
407159b3361Sopenharmony_ci        fld     dword [eax +108]
408159b3361Sopenharmony_ci        fmul    dword [edx +108]
409159b3361Sopenharmony_ci        faddp   st1,st0    
410159b3361Sopenharmony_ci        fld     dword [eax +112]
411159b3361Sopenharmony_ci        fmul    dword [edx +112]
412159b3361Sopenharmony_ci        faddp   st1,st0    
413159b3361Sopenharmony_ci        fld     dword [eax +116]
414159b3361Sopenharmony_ci        fmul    dword [edx +116]
415159b3361Sopenharmony_ci        faddp   st1,st0    
416159b3361Sopenharmony_ci        fld     dword [eax +120]
417159b3361Sopenharmony_ci        fmul    dword [edx +120]
418159b3361Sopenharmony_ci        faddp   st1,st0    
419159b3361Sopenharmony_ci        fld     dword [eax +124]
420159b3361Sopenharmony_ci        fmul    dword [edx +124]
421159b3361Sopenharmony_ci        faddp   st1,st0    
422159b3361Sopenharmony_ciendproc
423159b3361Sopenharmony_ci
424159b3361Sopenharmony_ci
425159b3361Sopenharmony_ci; float_t  scalar4n_float32_i387 ( 
426159b3361Sopenharmony_ci;         const float32_t* const  p, 
427159b3361Sopenharmony_ci;         const float32_t* const  q,
428159b3361Sopenharmony_ci;         const size_t            len );
429159b3361Sopenharmony_ci
430159b3361Sopenharmony_ciproc    scalar4n_float32_i387
431159b3361Sopenharmony_ci%$p     arg     4
432159b3361Sopenharmony_ci%$q     arg     4
433159b3361Sopenharmony_ci%$len   arg     4
434159b3361Sopenharmony_ci;;;     alloc
435159b3361Sopenharmony_ci
436159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
437159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
438159b3361Sopenharmony_ci        mov     ecx,[sp(%$len)]
439159b3361Sopenharmony_ci        fld     dword [eax]
440159b3361Sopenharmony_ci        fmul    dword [edx]
441159b3361Sopenharmony_ci        fld     dword [eax +  4]
442159b3361Sopenharmony_ci        fmul    dword [edx +  4]
443159b3361Sopenharmony_ci        faddp   st1,st0
444159b3361Sopenharmony_ci        fld     dword [eax +  8]
445159b3361Sopenharmony_ci        fmul    dword [edx +  8]
446159b3361Sopenharmony_ci        faddp   st1,st0
447159b3361Sopenharmony_ci        fld     dword [eax + 12]
448159b3361Sopenharmony_ci        fmul    dword [edx + 12]
449159b3361Sopenharmony_ci        faddp   st1,st0
450159b3361Sopenharmony_ci        dec     ecx
451159b3361Sopenharmony_ci        jz      .ret1
452159b3361Sopenharmony_ci        add     eax,byte 16
453159b3361Sopenharmony_ci        add     edx,byte 16
454159b3361Sopenharmony_ci.lbl1
455159b3361Sopenharmony_ci        fld     dword [eax]
456159b3361Sopenharmony_ci        fmul    dword [edx]
457159b3361Sopenharmony_ci        faddp   st1,st0
458159b3361Sopenharmony_ci        fld     dword [eax +  4]
459159b3361Sopenharmony_ci        fmul    dword [edx +  4]
460159b3361Sopenharmony_ci        faddp   st1,st0
461159b3361Sopenharmony_ci        fld     dword [eax +  8]
462159b3361Sopenharmony_ci        fmul    dword [edx +  8]
463159b3361Sopenharmony_ci        faddp   st1,st0
464159b3361Sopenharmony_ci        fld     dword [eax + 12]
465159b3361Sopenharmony_ci        fmul    dword [edx + 12]
466159b3361Sopenharmony_ci        faddp   st1,st0
467159b3361Sopenharmony_ci        add     eax,byte 16
468159b3361Sopenharmony_ci        add     edx,byte 16
469159b3361Sopenharmony_ci        dec     ecx
470159b3361Sopenharmony_ci        jnz     .lbl1
471159b3361Sopenharmony_ci.ret1   
472159b3361Sopenharmony_ciendproc
473159b3361Sopenharmony_ci
474159b3361Sopenharmony_ci
475159b3361Sopenharmony_ci; float_t  scalar1n_float32_i387 ( 
476159b3361Sopenharmony_ci;         const float32_t* const  p, 
477159b3361Sopenharmony_ci;         const float32_t* const  q,
478159b3361Sopenharmony_ci;         const size_t            len );
479159b3361Sopenharmony_ci
480159b3361Sopenharmony_ciproc    scalar1n_float32_i387
481159b3361Sopenharmony_ci%$p     arg     4
482159b3361Sopenharmony_ci%$q     arg     4
483159b3361Sopenharmony_ci%$len   arg     4
484159b3361Sopenharmony_ci;;;     alloc
485159b3361Sopenharmony_ci
486159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
487159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
488159b3361Sopenharmony_ci        mov     ecx,[sp(%$len)]
489159b3361Sopenharmony_ci        fld0
490159b3361Sopenharmony_ci        shr     ecx,1
491159b3361Sopenharmony_ci        jnc     .lbl2
492159b3361Sopenharmony_ci        fld     dword [eax]
493159b3361Sopenharmony_ci        fmul    dword [edx]
494159b3361Sopenharmony_ci        faddp   st1,st0
495159b3361Sopenharmony_ci        add     eax,byte 4
496159b3361Sopenharmony_ci        add     edx,byte 4
497159b3361Sopenharmony_ci.lbl2
498159b3361Sopenharmony_ci        shr     ecx,1
499159b3361Sopenharmony_ci        jnc     .lbl3
500159b3361Sopenharmony_ci        fld     dword [eax]
501159b3361Sopenharmony_ci        fmul    dword [edx]
502159b3361Sopenharmony_ci        faddp   st1,st0
503159b3361Sopenharmony_ci        fld     dword [eax + 4]
504159b3361Sopenharmony_ci        fmul    dword [edx + 4]
505159b3361Sopenharmony_ci        faddp   st1,st0
506159b3361Sopenharmony_ci        add     eax,byte 8
507159b3361Sopenharmony_ci        add     edx,byte 8
508159b3361Sopenharmony_ci        and     ecx,ecx
509159b3361Sopenharmony_ci.lbl3
510159b3361Sopenharmony_ci        jz      .ret2
511159b3361Sopenharmony_ci.lbl4
512159b3361Sopenharmony_ci        fld     dword [eax]
513159b3361Sopenharmony_ci        fmul    dword [edx]
514159b3361Sopenharmony_ci        faddp   st1,st0
515159b3361Sopenharmony_ci        fld     dword [eax +  4]
516159b3361Sopenharmony_ci        fmul    dword [edx +  4]
517159b3361Sopenharmony_ci        faddp   st1,st0
518159b3361Sopenharmony_ci        fld     dword [eax +  8]
519159b3361Sopenharmony_ci        fmul    dword [edx +  8]
520159b3361Sopenharmony_ci        faddp   st1,st0
521159b3361Sopenharmony_ci        fld     dword [eax + 12]
522159b3361Sopenharmony_ci        fmul    dword [edx + 12]
523159b3361Sopenharmony_ci        faddp   st1,st0
524159b3361Sopenharmony_ci        add     eax,byte 16
525159b3361Sopenharmony_ci        add     edx,byte 16
526159b3361Sopenharmony_ci        dec     ecx
527159b3361Sopenharmony_ci        jnz     .lbl4
528159b3361Sopenharmony_ci.ret2
529159b3361Sopenharmony_ciendproc
530159b3361Sopenharmony_ci
531159b3361Sopenharmony_ci
532159b3361Sopenharmony_ciproc    scalar04_float32_3DNow
533159b3361Sopenharmony_ci%$p     arg     4
534159b3361Sopenharmony_ci%$q     arg     4
535159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
536159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
537159b3361Sopenharmony_ci
538159b3361Sopenharmony_ci        pmov    mm0,qword [eax]
539159b3361Sopenharmony_ci        pmov    mm1,qword [eax+8]
540159b3361Sopenharmony_ci        pfmul   mm0,qword [edx]
541159b3361Sopenharmony_ci        pfmul   mm1,qword [edx+8]
542159b3361Sopenharmony_ci
543159b3361Sopenharmony_ci        pfadd   mm0,mm1
544159b3361Sopenharmony_ci        pmov    qword [sp(%$p)],mm0
545159b3361Sopenharmony_ci        femms
546159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
547159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
548159b3361Sopenharmony_ciendproc
549159b3361Sopenharmony_ci
550159b3361Sopenharmony_ci
551159b3361Sopenharmony_ciproc    scalar08_float32_3DNow
552159b3361Sopenharmony_ci%$p     arg     4
553159b3361Sopenharmony_ci%$q     arg     4
554159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
555159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
556159b3361Sopenharmony_ci
557159b3361Sopenharmony_ci        pmov    mm0,qword [eax]
558159b3361Sopenharmony_ci        pmov    mm1,qword [eax+8]
559159b3361Sopenharmony_ci        pfmul   mm0,qword [edx]
560159b3361Sopenharmony_ci        pfmul   mm1,qword [edx+8]
561159b3361Sopenharmony_ci
562159b3361Sopenharmony_ci        pmov    mm2,qword [eax+16]
563159b3361Sopenharmony_ci        pmov    mm3,qword [eax+24]
564159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+16]
565159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+24]
566159b3361Sopenharmony_ci        pfadd   mm0,mm2
567159b3361Sopenharmony_ci        pfadd   mm1,mm3
568159b3361Sopenharmony_ci
569159b3361Sopenharmony_ci        pfadd   mm0,mm1
570159b3361Sopenharmony_ci        pmov    qword [sp(%$p)],mm0
571159b3361Sopenharmony_ci        femms
572159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
573159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
574159b3361Sopenharmony_ciendproc
575159b3361Sopenharmony_ci
576159b3361Sopenharmony_ci
577159b3361Sopenharmony_ciproc    scalar12_float32_3DNow
578159b3361Sopenharmony_ci%$p     arg     4
579159b3361Sopenharmony_ci%$q     arg     4
580159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
581159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
582159b3361Sopenharmony_ci
583159b3361Sopenharmony_ci        pmov    mm0,qword [eax]
584159b3361Sopenharmony_ci        pmov    mm1,qword [eax+8]
585159b3361Sopenharmony_ci        pfmul   mm0,qword [edx]
586159b3361Sopenharmony_ci        pfmul   mm1,qword [edx+8]
587159b3361Sopenharmony_ci
588159b3361Sopenharmony_ci        pmov    mm2,qword [eax+16]
589159b3361Sopenharmony_ci        pmov    mm3,qword [eax+24]
590159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+16]
591159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+24]
592159b3361Sopenharmony_ci        pfadd   mm0,mm2
593159b3361Sopenharmony_ci        pfadd   mm1,mm3
594159b3361Sopenharmony_ci
595159b3361Sopenharmony_ci        pmov    mm2,qword [eax+32]
596159b3361Sopenharmony_ci        pmov    mm3,qword [eax+40]
597159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+32]
598159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+40]
599159b3361Sopenharmony_ci        pfadd   mm0,mm2
600159b3361Sopenharmony_ci        pfadd   mm1,mm3
601159b3361Sopenharmony_ci
602159b3361Sopenharmony_ci        pfadd   mm0,mm1
603159b3361Sopenharmony_ci        pmov    qword [sp(%$p)],mm0
604159b3361Sopenharmony_ci        femms
605159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
606159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
607159b3361Sopenharmony_ciendproc
608159b3361Sopenharmony_ci
609159b3361Sopenharmony_ci
610159b3361Sopenharmony_ciproc    scalar16_float32_3DNow
611159b3361Sopenharmony_ci%$p     arg     4
612159b3361Sopenharmony_ci%$q     arg     4
613159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
614159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
615159b3361Sopenharmony_ci
616159b3361Sopenharmony_ci        pmov    mm0,qword [eax]
617159b3361Sopenharmony_ci        pmov    mm1,qword [eax+8]
618159b3361Sopenharmony_ci        pfmul   mm0,qword [edx]
619159b3361Sopenharmony_ci        pfmul   mm1,qword [edx+8]
620159b3361Sopenharmony_ci
621159b3361Sopenharmony_ci        pmov    mm2,qword [eax+16]
622159b3361Sopenharmony_ci        pmov    mm3,qword [eax+24]
623159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+16]
624159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+24]
625159b3361Sopenharmony_ci        pfadd   mm0,mm2
626159b3361Sopenharmony_ci        pfadd   mm1,mm3
627159b3361Sopenharmony_ci
628159b3361Sopenharmony_ci        pmov    mm2,qword [eax+32]
629159b3361Sopenharmony_ci        pmov    mm3,qword [eax+40]
630159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+32]
631159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+40]
632159b3361Sopenharmony_ci        pfadd   mm0,mm2
633159b3361Sopenharmony_ci        pfadd   mm1,mm3
634159b3361Sopenharmony_ci
635159b3361Sopenharmony_ci        pmov    mm2,qword [eax+48]
636159b3361Sopenharmony_ci        pmov    mm3,qword [eax+56]
637159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+48]
638159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+56]
639159b3361Sopenharmony_ci        pfadd   mm0,mm2
640159b3361Sopenharmony_ci        pfadd   mm1,mm3
641159b3361Sopenharmony_ci
642159b3361Sopenharmony_ci        pfadd   mm0,mm1
643159b3361Sopenharmony_ci        pmov    qword [sp(%$p)],mm0
644159b3361Sopenharmony_ci        femms
645159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
646159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
647159b3361Sopenharmony_ciendproc
648159b3361Sopenharmony_ci
649159b3361Sopenharmony_ci
650159b3361Sopenharmony_ciproc    scalar20_float32_3DNow
651159b3361Sopenharmony_ci%$p     arg     4
652159b3361Sopenharmony_ci%$q     arg     4
653159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
654159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
655159b3361Sopenharmony_ci
656159b3361Sopenharmony_ci        pmov    mm0,qword [eax]
657159b3361Sopenharmony_ci        pmov    mm1,qword [eax+8]
658159b3361Sopenharmony_ci        pfmul   mm0,qword [edx]
659159b3361Sopenharmony_ci        pfmul   mm1,qword [edx+8]
660159b3361Sopenharmony_ci
661159b3361Sopenharmony_ci        pmov    mm2,qword [eax+16]
662159b3361Sopenharmony_ci        pmov    mm3,qword [eax+24]
663159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+16]
664159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+24]
665159b3361Sopenharmony_ci        pfadd   mm0,mm2
666159b3361Sopenharmony_ci        pfadd   mm1,mm3
667159b3361Sopenharmony_ci
668159b3361Sopenharmony_ci        pmov    mm2,qword [eax+32]
669159b3361Sopenharmony_ci        pmov    mm3,qword [eax+40]
670159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+32]
671159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+40]
672159b3361Sopenharmony_ci        pfadd   mm0,mm2
673159b3361Sopenharmony_ci        pfadd   mm1,mm3
674159b3361Sopenharmony_ci
675159b3361Sopenharmony_ci        pmov    mm2,qword [eax+48]
676159b3361Sopenharmony_ci        pmov    mm3,qword [eax+56]
677159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+48]
678159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+56]
679159b3361Sopenharmony_ci        pfadd   mm0,mm2
680159b3361Sopenharmony_ci        pfadd   mm1,mm3
681159b3361Sopenharmony_ci
682159b3361Sopenharmony_ci        pmov    mm2,qword [eax+64]
683159b3361Sopenharmony_ci        pmov    mm3,qword [eax+72]
684159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+64]
685159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+72]
686159b3361Sopenharmony_ci        pfadd   mm0,mm2
687159b3361Sopenharmony_ci        pfadd   mm1,mm3
688159b3361Sopenharmony_ci
689159b3361Sopenharmony_ci        pfadd   mm0,mm1
690159b3361Sopenharmony_ci        pmov    qword [sp(%$p)],mm0
691159b3361Sopenharmony_ci        femms
692159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
693159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
694159b3361Sopenharmony_ciendproc
695159b3361Sopenharmony_ci
696159b3361Sopenharmony_ci
697159b3361Sopenharmony_ciproc    scalar24_float32_3DNow
698159b3361Sopenharmony_ci%$p     arg     4
699159b3361Sopenharmony_ci%$q     arg     4
700159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
701159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
702159b3361Sopenharmony_ci
703159b3361Sopenharmony_ci        pmov    mm0,qword [eax]
704159b3361Sopenharmony_ci        pmov    mm1,qword [eax+8]
705159b3361Sopenharmony_ci        pfmul   mm0,qword [edx]
706159b3361Sopenharmony_ci        pfmul   mm1,qword [edx+8]
707159b3361Sopenharmony_ci
708159b3361Sopenharmony_ci        pmov    mm2,qword [eax+16]
709159b3361Sopenharmony_ci        pmov    mm3,qword [eax+24]
710159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+16]
711159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+24]
712159b3361Sopenharmony_ci        pfadd   mm0,mm2
713159b3361Sopenharmony_ci        pfadd   mm1,mm3
714159b3361Sopenharmony_ci
715159b3361Sopenharmony_ci        pmov    mm2,qword [eax+32]
716159b3361Sopenharmony_ci        pmov    mm3,qword [eax+40]
717159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+32]
718159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+40]
719159b3361Sopenharmony_ci        pfadd   mm0,mm2
720159b3361Sopenharmony_ci        pfadd   mm1,mm3
721159b3361Sopenharmony_ci
722159b3361Sopenharmony_ci        pmov    mm2,qword [eax+48]
723159b3361Sopenharmony_ci        pmov    mm3,qword [eax+56]
724159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+48]
725159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+56]
726159b3361Sopenharmony_ci        pfadd   mm0,mm2
727159b3361Sopenharmony_ci        pfadd   mm1,mm3
728159b3361Sopenharmony_ci
729159b3361Sopenharmony_ci        pmov    mm2,qword [eax+64]
730159b3361Sopenharmony_ci        pmov    mm3,qword [eax+72]
731159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+64]
732159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+72]
733159b3361Sopenharmony_ci        pfadd   mm0,mm2
734159b3361Sopenharmony_ci        pfadd   mm1,mm3
735159b3361Sopenharmony_ci
736159b3361Sopenharmony_ci        pmov    mm2,qword [eax+80]
737159b3361Sopenharmony_ci        pmov    mm3,qword [eax+88]
738159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+80]
739159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+88]
740159b3361Sopenharmony_ci        pfadd   mm0,mm2
741159b3361Sopenharmony_ci        pfadd   mm1,mm3
742159b3361Sopenharmony_ci
743159b3361Sopenharmony_ci        pfadd   mm0,mm1
744159b3361Sopenharmony_ci        pmov    qword [sp(%$p)],mm0
745159b3361Sopenharmony_ci        femms
746159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
747159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
748159b3361Sopenharmony_ciendproc
749159b3361Sopenharmony_ci
750159b3361Sopenharmony_ciproc    scalar32_float32_3DNow
751159b3361Sopenharmony_ci%$p     arg     4
752159b3361Sopenharmony_ci%$q     arg     4
753159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
754159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
755159b3361Sopenharmony_ci
756159b3361Sopenharmony_ci        pmov    mm0,qword [eax]
757159b3361Sopenharmony_ci        pmov    mm1,qword [eax+8]
758159b3361Sopenharmony_ci        pfmul   mm0,qword [edx]
759159b3361Sopenharmony_ci        pfmul   mm1,qword [edx+8]
760159b3361Sopenharmony_ci
761159b3361Sopenharmony_ci        pmov    mm2,qword [eax+16]
762159b3361Sopenharmony_ci        pmov    mm3,qword [eax+24]
763159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+16]
764159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+24]
765159b3361Sopenharmony_ci        pfadd   mm0,mm2
766159b3361Sopenharmony_ci        pfadd   mm1,mm3
767159b3361Sopenharmony_ci
768159b3361Sopenharmony_ci        pmov    mm2,qword [eax+32]
769159b3361Sopenharmony_ci        pmov    mm3,qword [eax+40]
770159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+32]
771159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+40]
772159b3361Sopenharmony_ci        pfadd   mm0,mm2
773159b3361Sopenharmony_ci        pfadd   mm1,mm3
774159b3361Sopenharmony_ci
775159b3361Sopenharmony_ci        pmov    mm2,qword [eax+48]
776159b3361Sopenharmony_ci        pmov    mm3,qword [eax+56]
777159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+48]
778159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+56]
779159b3361Sopenharmony_ci        pfadd   mm0,mm2
780159b3361Sopenharmony_ci        pfadd   mm1,mm3
781159b3361Sopenharmony_ci
782159b3361Sopenharmony_ci        pmov    mm2,qword [eax+64]
783159b3361Sopenharmony_ci        pmov    mm3,qword [eax+72]
784159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+64]
785159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+72]
786159b3361Sopenharmony_ci        pfadd   mm0,mm2
787159b3361Sopenharmony_ci        pfadd   mm1,mm3
788159b3361Sopenharmony_ci
789159b3361Sopenharmony_ci        pmov    mm2,qword [eax+80]
790159b3361Sopenharmony_ci        pmov    mm3,qword [eax+88]
791159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+80]
792159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+88]
793159b3361Sopenharmony_ci        pfadd   mm0,mm2
794159b3361Sopenharmony_ci        pfadd   mm1,mm3
795159b3361Sopenharmony_ci
796159b3361Sopenharmony_ci        pmov    mm2,qword [eax+96]
797159b3361Sopenharmony_ci        pmov    mm3,qword [eax+104]
798159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+96]
799159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+104]
800159b3361Sopenharmony_ci        pfadd   mm0,mm2
801159b3361Sopenharmony_ci        pfadd   mm1,mm3
802159b3361Sopenharmony_ci
803159b3361Sopenharmony_ci        pmov    mm2,qword [eax+112]
804159b3361Sopenharmony_ci        pmov    mm3,qword [eax+120]
805159b3361Sopenharmony_ci        pfmul   mm2,qword [edx+112]
806159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+120]
807159b3361Sopenharmony_ci        pfadd   mm0,mm2
808159b3361Sopenharmony_ci        pfadd   mm1,mm3
809159b3361Sopenharmony_ci
810159b3361Sopenharmony_ci        pfadd   mm0,mm1
811159b3361Sopenharmony_ci        pmov    qword [sp(%$p)],mm0
812159b3361Sopenharmony_ci        femms
813159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
814159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
815159b3361Sopenharmony_ciendproc
816159b3361Sopenharmony_ci
817159b3361Sopenharmony_ci
818159b3361Sopenharmony_ciproc    scalar4n_float32_3DNow
819159b3361Sopenharmony_ci%$p     arg     4
820159b3361Sopenharmony_ci%$q     arg     4
821159b3361Sopenharmony_ci%$len   arg     4
822159b3361Sopenharmony_ci
823159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
824159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
825159b3361Sopenharmony_ci        mov     ecx,[sp(%$len)]
826159b3361Sopenharmony_ci
827159b3361Sopenharmony_ci        pmov    mm0,qword [eax]
828159b3361Sopenharmony_ci        pmov    mm1,qword [eax+8]
829159b3361Sopenharmony_ci        pfmul   mm0,qword [edx]
830159b3361Sopenharmony_ci        pfmul   mm1,qword [edx+8]
831159b3361Sopenharmony_ci        dec     ecx
832159b3361Sopenharmony_ci        jz      .ret4
833159b3361Sopenharmony_ci        
834159b3361Sopenharmony_ci        add     eax,byte 16
835159b3361Sopenharmony_ci        add     edx,byte 16
836159b3361Sopenharmony_ci.lbl4:  
837159b3361Sopenharmony_ci        pmov    mm2,qword [eax]
838159b3361Sopenharmony_ci        pmov    mm3,qword [eax+8]
839159b3361Sopenharmony_ci        pfmul   mm2,qword [edx]
840159b3361Sopenharmony_ci        pfmul   mm3,qword [edx+8]
841159b3361Sopenharmony_ci        add     eax,byte 16
842159b3361Sopenharmony_ci        add     edx,byte 16
843159b3361Sopenharmony_ci        pfadd   mm0,mm2
844159b3361Sopenharmony_ci        pfadd   mm1,mm3
845159b3361Sopenharmony_ci        dec     ecx
846159b3361Sopenharmony_ci        jnz     .lbl4
847159b3361Sopenharmony_ci
848159b3361Sopenharmony_ci.ret4:  pfadd   mm0,mm1
849159b3361Sopenharmony_ci        pmov    qword [sp(%$p)],mm0
850159b3361Sopenharmony_ci        femms
851159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
852159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
853159b3361Sopenharmony_ciendproc
854159b3361Sopenharmony_ci
855159b3361Sopenharmony_ci
856159b3361Sopenharmony_ciproc    scalar1n_float32_3DNow
857159b3361Sopenharmony_ci        jmp     scalar24_float32_i387
858159b3361Sopenharmony_ciendproc
859159b3361Sopenharmony_ci
860159b3361Sopenharmony_ci
861159b3361Sopenharmony_ciproc    scalar04_float32_SIMD
862159b3361Sopenharmony_ci        jmp     scalar04_float32_i387
863159b3361Sopenharmony_ciendproc
864159b3361Sopenharmony_ci
865159b3361Sopenharmony_ci
866159b3361Sopenharmony_ciproc    scalar08_float32_SIMD
867159b3361Sopenharmony_ci%$p     arg     4
868159b3361Sopenharmony_ci%$q     arg     4
869159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
870159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
871159b3361Sopenharmony_ci
872159b3361Sopenharmony_ci        movups  xmm0, [eax]
873159b3361Sopenharmony_ci        movups  xmm1, [eax+16]
874159b3361Sopenharmony_ci        mulps   xmm0, [edx]
875159b3361Sopenharmony_ci        mulps   xmm1, [edx+16]
876159b3361Sopenharmony_ci
877159b3361Sopenharmony_ci        addps   xmm0,xmm1
878159b3361Sopenharmony_ci        sub     esp,16
879159b3361Sopenharmony_ci        movups  [esp],xmm0
880159b3361Sopenharmony_ci        fld     dword [esp+ 0]
881159b3361Sopenharmony_ci        fadd    dword [esp+ 4]
882159b3361Sopenharmony_ci        fadd    dword [esp+ 8]
883159b3361Sopenharmony_ci        fadd    dword [esp+12]
884159b3361Sopenharmony_ci        add     esp,16
885159b3361Sopenharmony_ciendproc
886159b3361Sopenharmony_ci
887159b3361Sopenharmony_ci
888159b3361Sopenharmony_ciproc    scalar12_float32_SIMD
889159b3361Sopenharmony_ci        jmp     scalar12_float32_i387
890159b3361Sopenharmony_ciendproc
891159b3361Sopenharmony_ci
892159b3361Sopenharmony_ci
893159b3361Sopenharmony_ciproc    scalar16_float32_SIMD
894159b3361Sopenharmony_ci%$p     arg     4
895159b3361Sopenharmony_ci%$q     arg     4
896159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
897159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
898159b3361Sopenharmony_ci
899159b3361Sopenharmony_ci        movups  xmm0, [eax]
900159b3361Sopenharmony_ci        movups  xmm1, [eax+16]
901159b3361Sopenharmony_ci        mulps   xmm0, [edx]
902159b3361Sopenharmony_ci        mulps   xmm1, [edx+16]
903159b3361Sopenharmony_ci
904159b3361Sopenharmony_ci        movups  xmm2, [eax+32]
905159b3361Sopenharmony_ci        movups  xmm3, [eax+48]
906159b3361Sopenharmony_ci        mulps   xmm2, [edx+32]
907159b3361Sopenharmony_ci        mulps   xmm3, [edx+48]
908159b3361Sopenharmony_ci        addps   xmm0,xmm2
909159b3361Sopenharmony_ci        addps   xmm1,xmm3
910159b3361Sopenharmony_ci
911159b3361Sopenharmony_ci        addps   xmm0,xmm1
912159b3361Sopenharmony_ci        sub     esp,16
913159b3361Sopenharmony_ci        movups  [esp],xmm0
914159b3361Sopenharmony_ci        fld     dword [esp+ 0]
915159b3361Sopenharmony_ci        fadd    dword [esp+ 4]
916159b3361Sopenharmony_ci        fadd    dword [esp+ 8]
917159b3361Sopenharmony_ci        fadd    dword [esp+12]
918159b3361Sopenharmony_ci        add     esp,16
919159b3361Sopenharmony_ciendproc
920159b3361Sopenharmony_ci
921159b3361Sopenharmony_ci
922159b3361Sopenharmony_ciproc    scalar20_float32_SIMD
923159b3361Sopenharmony_ci        jmp     scalar20_float32_i387
924159b3361Sopenharmony_ciendproc
925159b3361Sopenharmony_ci
926159b3361Sopenharmony_ci
927159b3361Sopenharmony_ciproc    scalar24_float32_SIMD
928159b3361Sopenharmony_ci%$p     arg     4
929159b3361Sopenharmony_ci%$q     arg     4
930159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
931159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
932159b3361Sopenharmony_ci
933159b3361Sopenharmony_ci        movups  xmm0, [eax]
934159b3361Sopenharmony_ci        movups  xmm1, [eax+16]
935159b3361Sopenharmony_ci        mulps   xmm0, [edx]
936159b3361Sopenharmony_ci        mulps   xmm1, [edx+16]
937159b3361Sopenharmony_ci
938159b3361Sopenharmony_ci        movups  xmm2, [eax+32]
939159b3361Sopenharmony_ci        movups  xmm3, [eax+48]
940159b3361Sopenharmony_ci        mulps   xmm2, [edx+32]
941159b3361Sopenharmony_ci        mulps   xmm3, [edx+48]
942159b3361Sopenharmony_ci        addps   xmm0,xmm2
943159b3361Sopenharmony_ci        addps   xmm1,xmm3
944159b3361Sopenharmony_ci
945159b3361Sopenharmony_ci        movups  xmm2, [eax+64]
946159b3361Sopenharmony_ci        movups  xmm3, [eax+80]
947159b3361Sopenharmony_ci        mulps   xmm2, [edx+64]
948159b3361Sopenharmony_ci        mulps   xmm3, [edx+80]
949159b3361Sopenharmony_ci        addps   xmm0,xmm2
950159b3361Sopenharmony_ci        addps   xmm1,xmm3
951159b3361Sopenharmony_ci
952159b3361Sopenharmony_ci        addps   xmm0,xmm1
953159b3361Sopenharmony_ci        sub     esp,16
954159b3361Sopenharmony_ci        movups  [esp],xmm0
955159b3361Sopenharmony_ci        fld     dword [esp+ 0]
956159b3361Sopenharmony_ci        fadd    dword [esp+ 4]
957159b3361Sopenharmony_ci        fadd    dword [esp+ 8]
958159b3361Sopenharmony_ci        fadd    dword [esp+12]
959159b3361Sopenharmony_ci        add     esp,16
960159b3361Sopenharmony_ciendproc
961159b3361Sopenharmony_ci
962159b3361Sopenharmony_ci
963159b3361Sopenharmony_ciproc    scalar32_float32_SIMD
964159b3361Sopenharmony_ci%$p     arg     4
965159b3361Sopenharmony_ci%$q     arg     4
966159b3361Sopenharmony_ci        mov     eax,[sp(%$p)]
967159b3361Sopenharmony_ci        mov     edx,[sp(%$q)]
968159b3361Sopenharmony_ci
969159b3361Sopenharmony_ci        movups  xmm0, [eax]
970159b3361Sopenharmony_ci        movups  xmm1, [eax+16]
971159b3361Sopenharmony_ci        mulps   xmm0, [edx]
972159b3361Sopenharmony_ci        mulps   xmm1, [edx+16]
973159b3361Sopenharmony_ci
974159b3361Sopenharmony_ci        movups  xmm2, [eax+32]
975159b3361Sopenharmony_ci        movups  xmm3, [eax+48]
976159b3361Sopenharmony_ci        mulps   xmm2, [edx+32]
977159b3361Sopenharmony_ci        mulps   xmm3, [edx+48]
978159b3361Sopenharmony_ci        addps   xmm0,xmm2
979159b3361Sopenharmony_ci        addps   xmm1,xmm3
980159b3361Sopenharmony_ci
981159b3361Sopenharmony_ci        movups  xmm2, [eax+64]
982159b3361Sopenharmony_ci        movups  xmm3, [eax+80]
983159b3361Sopenharmony_ci        mulps   xmm2, [edx+64]
984159b3361Sopenharmony_ci        mulps   xmm3, [edx+80]
985159b3361Sopenharmony_ci        addps   xmm0,xmm2
986159b3361Sopenharmony_ci        addps   xmm1,xmm3
987159b3361Sopenharmony_ci
988159b3361Sopenharmony_ci        movups  xmm2, [eax+96]
989159b3361Sopenharmony_ci        movups  xmm3, [eax+112]
990159b3361Sopenharmony_ci        mulps   xmm2, [edx+96]
991159b3361Sopenharmony_ci        mulps   xmm3, [edx+112]
992159b3361Sopenharmony_ci        addps   xmm0,xmm2
993159b3361Sopenharmony_ci        addps   xmm1,xmm3
994159b3361Sopenharmony_ci
995159b3361Sopenharmony_ci        addps   xmm0,xmm1
996159b3361Sopenharmony_ci
997159b3361Sopenharmony_ci        ;sub     esp,16
998159b3361Sopenharmony_ci        ;movups  [esp],xmm0
999159b3361Sopenharmony_ci        ;fld     dword [esp+ 0]
1000159b3361Sopenharmony_ci        ;fadd    dword [esp+ 4]
1001159b3361Sopenharmony_ci        ;fadd    dword [esp+ 8]
1002159b3361Sopenharmony_ci        ;fadd    dword [esp+12]
1003159b3361Sopenharmony_ci        ;add     esp,16
1004159b3361Sopenharmony_ci         
1005159b3361Sopenharmony_ci         movhlps xmm1,xmm0
1006159b3361Sopenharmony_ci         addps   xmm0,xmm1
1007159b3361Sopenharmony_ci         movlps  [sp(%$p)],xmm0
1008159b3361Sopenharmony_ci        fld     dword [sp(%$p)]
1009159b3361Sopenharmony_ci        fadd    dword [sp(%$p)+4]
1010159b3361Sopenharmony_ciendproc
1011159b3361Sopenharmony_ci
1012159b3361Sopenharmony_ci
1013159b3361Sopenharmony_ciproc    scalar4n_float32_SIMD
1014159b3361Sopenharmony_ci        jmp     scalar4n_float32_i387
1015159b3361Sopenharmony_ciendproc
1016159b3361Sopenharmony_ci
1017159b3361Sopenharmony_ci
1018159b3361Sopenharmony_ciproc    scalar1n_float32_SIMD
1019159b3361Sopenharmony_ci        jmp     scalar1n_float32_i387
1020159b3361Sopenharmony_ciendproc
1021159b3361Sopenharmony_ci
1022159b3361Sopenharmony_ci; end of scalar.nas
1023