]> git.sesse.net Git - x264/blob - common/sparc/pixel.asm
Update file headers throughout x264
[x264] / common / sparc / pixel.asm
1 /*****************************************************************************
2  * pixel.asm: h264 encoder library
3  *****************************************************************************
4  * Copyright (C) 2005 Phil Jensen <philj@csufresno.edu>
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02111, USA.
19  *****************************************************************************/
20
21 ! VIS optimized SAD for UltraSPARC
22
23 .text
24 .global x264_pixel_sad_8x8_vis
25 x264_pixel_sad_8x8_vis:
26         save %sp, -120, %sp
27
28         fzero %f12
29
30         alignaddr %i0, %g0, %l0
31         ldd [%l0], %f0
32         ldd [%l0+8], %f2
33         faligndata %f0, %f2, %f4
34
35         alignaddr %i2, %g0, %l2
36         ldd [%l2], %f6
37         ldd [%l2+8], %f8
38         faligndata %f6, %f8, %f10
39
40         add %i0, %i1, %i0
41         add %i2, %i3, %i2
42         pdist %f4, %f10, %f12
43
44         alignaddr %i0, %g0, %l0
45         ldd [%l0], %f0
46         ldd [%l0+8], %f2
47         faligndata %f0, %f2, %f4
48
49         alignaddr %i2, %g0, %l2
50         ldd [%l2], %f6
51         ldd [%l2+8], %f8
52         faligndata %f6, %f8, %f10
53
54         add %i0, %i1, %i0
55         add %i2, %i3, %i2
56         pdist %f4, %f10, %f12
57
58         alignaddr %i0, %g0, %l0
59         ldd [%l0], %f0
60         ldd [%l0+8], %f2
61         faligndata %f0, %f2, %f4
62
63         alignaddr %i2, %g0, %l2
64         ldd [%l2], %f6
65         ldd [%l2+8], %f8
66         faligndata %f6, %f8, %f10
67
68         add %i0, %i1, %i0
69         add %i2, %i3, %i2
70         pdist %f4, %f10, %f12
71
72         alignaddr %i0, %g0, %l0
73         ldd [%l0], %f0
74         ldd [%l0+8], %f2
75         faligndata %f0, %f2, %f4
76
77         alignaddr %i2, %g0, %l2
78         ldd [%l2], %f6
79         ldd [%l2+8], %f8
80         faligndata %f6, %f8, %f10
81
82         add %i0, %i1, %i0
83         add %i2, %i3, %i2
84         pdist %f4, %f10, %f12
85
86         alignaddr %i0, %g0, %l0
87         ldd [%l0], %f0
88         ldd [%l0+8], %f2
89         faligndata %f0, %f2, %f4
90
91         alignaddr %i2, %g0, %l2
92         ldd [%l2], %f6
93         ldd [%l2+8], %f8
94         faligndata %f6, %f8, %f10
95
96         add %i0, %i1, %i0
97         add %i2, %i3, %i2
98         pdist %f4, %f10, %f12
99
100         alignaddr %i0, %g0, %l0
101         ldd [%l0], %f0
102         ldd [%l0+8], %f2
103         faligndata %f0, %f2, %f4
104
105         alignaddr %i2, %g0, %l2
106         ldd [%l2], %f6
107         ldd [%l2+8], %f8
108         faligndata %f6, %f8, %f10
109
110         add %i0, %i1, %i0
111         add %i2, %i3, %i2
112         pdist %f4, %f10, %f12
113
114         alignaddr %i0, %g0, %l0
115         ldd [%l0], %f0
116         ldd [%l0+8], %f2
117         faligndata %f0, %f2, %f4
118
119         alignaddr %i2, %g0, %l2
120         ldd [%l2], %f6
121         ldd [%l2+8], %f8
122         faligndata %f6, %f8, %f10
123
124         add %i0, %i1, %i0
125         add %i2, %i3, %i2
126         pdist %f4, %f10, %f12
127
128         alignaddr %i0, %g0, %l0
129         ldd [%l0], %f0
130         ldd [%l0+8], %f2
131         faligndata %f0, %f2, %f4
132
133         alignaddr %i2, %g0, %l2
134         ldd [%l2], %f6
135         ldd [%l2+8], %f8
136         faligndata %f6, %f8, %f10
137
138         add %i0, %i1, %i0
139         add %i2, %i3, %i2
140         pdist %f4, %f10, %f12
141
142         std %f12, [%fp-24]
143         ld [%fp-20], %i0
144
145         ret
146         restore
147
148 .global x264_pixel_sad_8x16_vis
149 x264_pixel_sad_8x16_vis:
150         save %sp, -120, %sp
151
152         fzero %f12
153
154         alignaddr %i0, %g0, %l0
155         ldd [%l0], %f0
156         ldd [%l0+8], %f2
157         faligndata %f0, %f2, %f4
158
159         alignaddr %i2, %g0, %l2
160         ldd [%l2], %f6
161         ldd [%l2+8], %f8
162         faligndata %f6, %f8, %f10
163
164         add %i0, %i1, %i0
165         add %i2, %i3, %i2
166         pdist %f4, %f10, %f12
167
168         alignaddr %i0, %g0, %l0
169         ldd [%l0], %f0
170         ldd [%l0+8], %f2
171         faligndata %f0, %f2, %f4
172
173         alignaddr %i2, %g0, %l2
174         ldd [%l2], %f6
175         ldd [%l2+8], %f8
176         faligndata %f6, %f8, %f10
177
178         add %i0, %i1, %i0
179         add %i2, %i3, %i2
180         pdist %f4, %f10, %f12
181
182         alignaddr %i0, %g0, %l0
183         ldd [%l0], %f0
184         ldd [%l0+8], %f2
185         faligndata %f0, %f2, %f4
186
187         alignaddr %i2, %g0, %l2
188         ldd [%l2], %f6
189         ldd [%l2+8], %f8
190         faligndata %f6, %f8, %f10
191
192         add %i0, %i1, %i0
193         add %i2, %i3, %i2
194         pdist %f4, %f10, %f12
195
196         alignaddr %i0, %g0, %l0
197         ldd [%l0], %f0
198         ldd [%l0+8], %f2
199         faligndata %f0, %f2, %f4
200
201         alignaddr %i2, %g0, %l2
202         ldd [%l2], %f6
203         ldd [%l2+8], %f8
204         faligndata %f6, %f8, %f10
205
206         add %i0, %i1, %i0
207         add %i2, %i3, %i2
208         pdist %f4, %f10, %f12
209
210         alignaddr %i0, %g0, %l0
211         ldd [%l0], %f0
212         ldd [%l0+8], %f2
213         faligndata %f0, %f2, %f4
214
215         alignaddr %i2, %g0, %l2
216         ldd [%l2], %f6
217         ldd [%l2+8], %f8
218         faligndata %f6, %f8, %f10
219
220         add %i0, %i1, %i0
221         add %i2, %i3, %i2
222         pdist %f4, %f10, %f12
223
224         alignaddr %i0, %g0, %l0
225         ldd [%l0], %f0
226         ldd [%l0+8], %f2
227         faligndata %f0, %f2, %f4
228
229         alignaddr %i2, %g0, %l2
230         ldd [%l2], %f6
231         ldd [%l2+8], %f8
232         faligndata %f6, %f8, %f10
233
234         add %i0, %i1, %i0
235         add %i2, %i3, %i2
236         pdist %f4, %f10, %f12
237
238         alignaddr %i0, %g0, %l0
239         ldd [%l0], %f0
240         ldd [%l0+8], %f2
241         faligndata %f0, %f2, %f4
242
243         alignaddr %i2, %g0, %l2
244         ldd [%l2], %f6
245         ldd [%l2+8], %f8
246         faligndata %f6, %f8, %f10
247
248         add %i0, %i1, %i0
249         add %i2, %i3, %i2
250         pdist %f4, %f10, %f12
251
252         alignaddr %i0, %g0, %l0
253         ldd [%l0], %f0
254         ldd [%l0+8], %f2
255         faligndata %f0, %f2, %f4
256
257         alignaddr %i2, %g0, %l2
258         ldd [%l2], %f6
259         ldd [%l2+8], %f8
260         faligndata %f6, %f8, %f10
261
262         add %i0, %i1, %i0
263         add %i2, %i3, %i2
264         pdist %f4, %f10, %f12
265
266         alignaddr %i0, %g0, %l0
267         ldd [%l0], %f0
268         ldd [%l0+8], %f2
269         faligndata %f0, %f2, %f4
270
271         alignaddr %i2, %g0, %l2
272         ldd [%l2], %f6
273         ldd [%l2+8], %f8
274         faligndata %f6, %f8, %f10
275
276         add %i0, %i1, %i0
277         add %i2, %i3, %i2
278         pdist %f4, %f10, %f12
279
280         alignaddr %i0, %g0, %l0
281         ldd [%l0], %f0
282         ldd [%l0+8], %f2
283         faligndata %f0, %f2, %f4
284
285         alignaddr %i2, %g0, %l2
286         ldd [%l2], %f6
287         ldd [%l2+8], %f8
288         faligndata %f6, %f8, %f10
289
290         add %i0, %i1, %i0
291         add %i2, %i3, %i2
292         pdist %f4, %f10, %f12
293
294         alignaddr %i0, %g0, %l0
295         ldd [%l0], %f0
296         ldd [%l0+8], %f2
297         faligndata %f0, %f2, %f4
298
299         alignaddr %i2, %g0, %l2
300         ldd [%l2], %f6
301         ldd [%l2+8], %f8
302         faligndata %f6, %f8, %f10
303
304         add %i0, %i1, %i0
305         add %i2, %i3, %i2
306         pdist %f4, %f10, %f12
307
308         alignaddr %i0, %g0, %l0
309         ldd [%l0], %f0
310         ldd [%l0+8], %f2
311         faligndata %f0, %f2, %f4
312
313         alignaddr %i2, %g0, %l2
314         ldd [%l2], %f6
315         ldd [%l2+8], %f8
316         faligndata %f6, %f8, %f10
317
318         add %i0, %i1, %i0
319         add %i2, %i3, %i2
320         pdist %f4, %f10, %f12
321
322         alignaddr %i0, %g0, %l0
323         ldd [%l0], %f0
324         ldd [%l0+8], %f2
325         faligndata %f0, %f2, %f4
326
327         alignaddr %i2, %g0, %l2
328         ldd [%l2], %f6
329         ldd [%l2+8], %f8
330         faligndata %f6, %f8, %f10
331
332         add %i0, %i1, %i0
333         add %i2, %i3, %i2
334         pdist %f4, %f10, %f12
335
336         alignaddr %i0, %g0, %l0
337         ldd [%l0], %f0
338         ldd [%l0+8], %f2
339         faligndata %f0, %f2, %f4
340
341         alignaddr %i2, %g0, %l2
342         ldd [%l2], %f6
343         ldd [%l2+8], %f8
344         faligndata %f6, %f8, %f10
345
346         add %i0, %i1, %i0
347         add %i2, %i3, %i2
348         pdist %f4, %f10, %f12
349
350         alignaddr %i0, %g0, %l0
351         ldd [%l0], %f0
352         ldd [%l0+8], %f2
353         faligndata %f0, %f2, %f4
354
355         alignaddr %i2, %g0, %l2
356         ldd [%l2], %f6
357         ldd [%l2+8], %f8
358         faligndata %f6, %f8, %f10
359
360         add %i0, %i1, %i0
361         add %i2, %i3, %i2
362         pdist %f4, %f10, %f12
363
364         alignaddr %i0, %g0, %l0
365         ldd [%l0], %f0
366         ldd [%l0+8], %f2
367         faligndata %f0, %f2, %f4
368
369         alignaddr %i2, %g0, %l2
370         ldd [%l2], %f6
371         ldd [%l2+8], %f8
372         faligndata %f6, %f8, %f10
373
374         add %i0, %i1, %i0
375         add %i2, %i3, %i2
376         pdist %f4, %f10, %f12
377
378         std %f12, [%fp-24]
379         ld [%fp-20], %i0
380
381         ret
382         restore
383
384 .global x264_pixel_sad_16x8_vis
385 x264_pixel_sad_16x8_vis:
386         save %sp, -120, %sp
387
388         fzero %f12                      ! zero out the accumulator used for pdist
389
390         sub %i1, 8, %i1                 ! reduce stride by 8, since we are moving forward 8 each block
391         sub %i3, 8, %i3                 ! same here, reduce stride by 8
392
393         alignaddr %i0, %g0, %l0 
394         ldd [%l0], %f0
395         ldd [%l0+8], %f2
396         faligndata %f0, %f2, %f4
397
398         alignaddr %i2, %g0, %l2
399         ldd [%l2], %f6
400         ldd [%l2+8], %f8
401         faligndata %f6, %f8, %f10
402
403         add %i0, 8, %i0
404         add %i2, 8, %i2
405         pdist %f4, %f10, %f12
406
407         alignaddr %i0, %g0, %l0 
408         ldd [%l0], %f0
409         ldd [%l0+8], %f2
410         faligndata %f0, %f2, %f4
411
412         alignaddr %i2, %g0, %l2
413         ldd [%l2], %f6
414         ldd [%l2+8], %f8
415         faligndata %f6, %f8, %f10
416
417         add %i0, %i1, %i0
418         add %i2, %i3, %i2
419         pdist %f4, %f10, %f12
420
421         alignaddr %i0, %g0, %l0 
422         ldd [%l0], %f0
423         ldd [%l0+8], %f2
424         faligndata %f0, %f2, %f4
425
426         alignaddr %i2, %g0, %l2
427         ldd [%l2], %f6
428         ldd [%l2+8], %f8
429         faligndata %f6, %f8, %f10
430
431         add %i0, 8, %i0
432         add %i2, 8, %i2
433         pdist %f4, %f10, %f12
434
435         alignaddr %i0, %g0, %l0 
436         ldd [%l0], %f0
437         ldd [%l0+8], %f2
438         faligndata %f0, %f2, %f4
439
440         alignaddr %i2, %g0, %l2
441         ldd [%l2], %f6
442         ldd [%l2+8], %f8
443         faligndata %f6, %f8, %f10
444
445         add %i0, %i1, %i0
446         add %i2, %i3, %i2
447         pdist %f4, %f10, %f12
448
449         alignaddr %i0, %g0, %l0 
450         ldd [%l0], %f0
451         ldd [%l0+8], %f2
452         faligndata %f0, %f2, %f4
453
454         alignaddr %i2, %g0, %l2
455         ldd [%l2], %f6
456         ldd [%l2+8], %f8
457         faligndata %f6, %f8, %f10
458
459         add %i0, 8, %i0
460         add %i2, 8, %i2
461         pdist %f4, %f10, %f12
462
463         alignaddr %i0, %g0, %l0 
464         ldd [%l0], %f0
465         ldd [%l0+8], %f2
466         faligndata %f0, %f2, %f4
467
468         alignaddr %i2, %g0, %l2
469         ldd [%l2], %f6
470         ldd [%l2+8], %f8
471         faligndata %f6, %f8, %f10
472
473         add %i0, %i1, %i0
474         add %i2, %i3, %i2
475         pdist %f4, %f10, %f12
476
477         alignaddr %i0, %g0, %l0 
478         ldd [%l0], %f0
479         ldd [%l0+8], %f2
480         faligndata %f0, %f2, %f4
481
482         alignaddr %i2, %g0, %l2
483         ldd [%l2], %f6
484         ldd [%l2+8], %f8
485         faligndata %f6, %f8, %f10
486
487         add %i0, 8, %i0
488         add %i2, 8, %i2
489         pdist %f4, %f10, %f12
490
491         alignaddr %i0, %g0, %l0 
492         ldd [%l0], %f0
493         ldd [%l0+8], %f2
494         faligndata %f0, %f2, %f4
495
496         alignaddr %i2, %g0, %l2
497         ldd [%l2], %f6
498         ldd [%l2+8], %f8
499         faligndata %f6, %f8, %f10
500
501         add %i0, %i1, %i0
502         add %i2, %i3, %i2
503         pdist %f4, %f10, %f12
504
505         alignaddr %i0, %g0, %l0 
506         ldd [%l0], %f0
507         ldd [%l0+8], %f2
508         faligndata %f0, %f2, %f4
509
510         alignaddr %i2, %g0, %l2
511         ldd [%l2], %f6
512         ldd [%l2+8], %f8
513         faligndata %f6, %f8, %f10
514
515         add %i0, 8, %i0
516         add %i2, 8, %i2
517         pdist %f4, %f10, %f12
518
519         alignaddr %i0, %g0, %l0 
520         ldd [%l0], %f0
521         ldd [%l0+8], %f2
522         faligndata %f0, %f2, %f4
523
524         alignaddr %i2, %g0, %l2
525         ldd [%l2], %f6
526         ldd [%l2+8], %f8
527         faligndata %f6, %f8, %f10
528
529         add %i0, %i1, %i0
530         add %i2, %i3, %i2
531         pdist %f4, %f10, %f12
532
533         alignaddr %i0, %g0, %l0 
534         ldd [%l0], %f0
535         ldd [%l0+8], %f2
536         faligndata %f0, %f2, %f4
537
538         alignaddr %i2, %g0, %l2
539         ldd [%l2], %f6
540         ldd [%l2+8], %f8
541         faligndata %f6, %f8, %f10
542
543         add %i0, 8, %i0
544         add %i2, 8, %i2
545         pdist %f4, %f10, %f12
546
547         alignaddr %i0, %g0, %l0 
548         ldd [%l0], %f0
549         ldd [%l0+8], %f2
550         faligndata %f0, %f2, %f4
551
552         alignaddr %i2, %g0, %l2
553         ldd [%l2], %f6
554         ldd [%l2+8], %f8
555         faligndata %f6, %f8, %f10
556
557         add %i0, %i1, %i0
558         add %i2, %i3, %i2
559         pdist %f4, %f10, %f12
560
561         alignaddr %i0, %g0, %l0 
562         ldd [%l0], %f0
563         ldd [%l0+8], %f2
564         faligndata %f0, %f2, %f4
565
566         alignaddr %i2, %g0, %l2
567         ldd [%l2], %f6
568         ldd [%l2+8], %f8
569         faligndata %f6, %f8, %f10
570
571         add %i0, 8, %i0
572         add %i2, 8, %i2
573         pdist %f4, %f10, %f12
574
575         alignaddr %i0, %g0, %l0 
576         ldd [%l0], %f0
577         ldd [%l0+8], %f2
578         faligndata %f0, %f2, %f4
579
580         alignaddr %i2, %g0, %l2
581         ldd [%l2], %f6
582         ldd [%l2+8], %f8
583         faligndata %f6, %f8, %f10
584
585         add %i0, %i1, %i0
586         add %i2, %i3, %i2
587         pdist %f4, %f10, %f12
588
589         alignaddr %i0, %g0, %l0 
590         ldd [%l0], %f0
591         ldd [%l0+8], %f2
592         faligndata %f0, %f2, %f4
593
594         alignaddr %i2, %g0, %l2
595         ldd [%l2], %f6
596         ldd [%l2+8], %f8
597         faligndata %f6, %f8, %f10
598
599         add %i0, 8, %i0
600         add %i2, 8, %i2
601         pdist %f4, %f10, %f12
602
603         alignaddr %i0, %g0, %l0 
604         ldd [%l0], %f0
605         ldd [%l0+8], %f2
606         faligndata %f0, %f2, %f4
607
608         alignaddr %i2, %g0, %l2
609         ldd [%l2], %f6
610         ldd [%l2+8], %f8
611         faligndata %f6, %f8, %f10
612
613         add %i0, %i1, %i0
614         add %i2, %i3, %i2
615         pdist %f4, %f10, %f12
616
617         std %f12, [%fp-24]
618         ld [%fp-20], %i0
619
620         ret
621         restore
622
623 .global x264_pixel_sad_16x16_vis
624 x264_pixel_sad_16x16_vis:
625         save %sp, -120, %sp
626
627         fzero %f12                      ! zero out the accumulator used for pdist
628
629         sub %i1, 8, %i1                 ! reduce stride by 8, since we are moving forward 8 each block
630         sub %i3, 8, %i3                 ! same here, reduce stride by 8
631
632         alignaddr %i0, %g0, %l0 
633         ldd [%l0], %f0
634         ldd [%l0+8], %f2
635         faligndata %f0, %f2, %f4
636
637         alignaddr %i2, %g0, %l2
638         ldd [%l2], %f6
639         ldd [%l2+8], %f8
640         faligndata %f6, %f8, %f10
641
642         add %i0, 8, %i0
643         add %i2, 8, %i2
644         pdist %f4, %f10, %f12
645
646         alignaddr %i0, %g0, %l0 
647         ldd [%l0], %f0
648         ldd [%l0+8], %f2
649         faligndata %f0, %f2, %f4
650
651         alignaddr %i2, %g0, %l2
652         ldd [%l2], %f6
653         ldd [%l2+8], %f8
654         faligndata %f6, %f8, %f10
655
656         add %i0, %i1, %i0
657         add %i2, %i3, %i2
658         pdist %f4, %f10, %f12
659
660         alignaddr %i0, %g0, %l0 
661         ldd [%l0], %f0
662         ldd [%l0+8], %f2
663         faligndata %f0, %f2, %f4
664
665         alignaddr %i2, %g0, %l2
666         ldd [%l2], %f6
667         ldd [%l2+8], %f8
668         faligndata %f6, %f8, %f10
669
670         add %i0, 8, %i0
671         add %i2, 8, %i2
672         pdist %f4, %f10, %f12
673
674         alignaddr %i0, %g0, %l0 
675         ldd [%l0], %f0
676         ldd [%l0+8], %f2
677         faligndata %f0, %f2, %f4
678
679         alignaddr %i2, %g0, %l2
680         ldd [%l2], %f6
681         ldd [%l2+8], %f8
682         faligndata %f6, %f8, %f10
683
684         add %i0, %i1, %i0
685         add %i2, %i3, %i2
686         pdist %f4, %f10, %f12
687
688         alignaddr %i0, %g0, %l0 
689         ldd [%l0], %f0
690         ldd [%l0+8], %f2
691         faligndata %f0, %f2, %f4
692
693         alignaddr %i2, %g0, %l2
694         ldd [%l2], %f6
695         ldd [%l2+8], %f8
696         faligndata %f6, %f8, %f10
697
698         add %i0, 8, %i0
699         add %i2, 8, %i2
700         pdist %f4, %f10, %f12
701
702         alignaddr %i0, %g0, %l0 
703         ldd [%l0], %f0
704         ldd [%l0+8], %f2
705         faligndata %f0, %f2, %f4
706
707         alignaddr %i2, %g0, %l2
708         ldd [%l2], %f6
709         ldd [%l2+8], %f8
710         faligndata %f6, %f8, %f10
711
712         add %i0, %i1, %i0
713         add %i2, %i3, %i2
714         pdist %f4, %f10, %f12
715
716         alignaddr %i0, %g0, %l0 
717         ldd [%l0], %f0
718         ldd [%l0+8], %f2
719         faligndata %f0, %f2, %f4
720
721         alignaddr %i2, %g0, %l2
722         ldd [%l2], %f6
723         ldd [%l2+8], %f8
724         faligndata %f6, %f8, %f10
725
726         add %i0, 8, %i0
727         add %i2, 8, %i2
728         pdist %f4, %f10, %f12
729
730         alignaddr %i0, %g0, %l0 
731         ldd [%l0], %f0
732         ldd [%l0+8], %f2
733         faligndata %f0, %f2, %f4
734
735         alignaddr %i2, %g0, %l2
736         ldd [%l2], %f6
737         ldd [%l2+8], %f8
738         faligndata %f6, %f8, %f10
739
740         add %i0, %i1, %i0
741         add %i2, %i3, %i2
742         pdist %f4, %f10, %f12
743
744         alignaddr %i0, %g0, %l0 
745         ldd [%l0], %f0
746         ldd [%l0+8], %f2
747         faligndata %f0, %f2, %f4
748
749         alignaddr %i2, %g0, %l2
750         ldd [%l2], %f6
751         ldd [%l2+8], %f8
752         faligndata %f6, %f8, %f10
753
754         add %i0, 8, %i0
755         add %i2, 8, %i2
756         pdist %f4, %f10, %f12
757
758         alignaddr %i0, %g0, %l0 
759         ldd [%l0], %f0
760         ldd [%l0+8], %f2
761         faligndata %f0, %f2, %f4
762
763         alignaddr %i2, %g0, %l2
764         ldd [%l2], %f6
765         ldd [%l2+8], %f8
766         faligndata %f6, %f8, %f10
767
768         add %i0, %i1, %i0
769         add %i2, %i3, %i2
770         pdist %f4, %f10, %f12
771
772         alignaddr %i0, %g0, %l0 
773         ldd [%l0], %f0
774         ldd [%l0+8], %f2
775         faligndata %f0, %f2, %f4
776
777         alignaddr %i2, %g0, %l2
778         ldd [%l2], %f6
779         ldd [%l2+8], %f8
780         faligndata %f6, %f8, %f10
781
782         add %i0, 8, %i0
783         add %i2, 8, %i2
784         pdist %f4, %f10, %f12
785
786         alignaddr %i0, %g0, %l0 
787         ldd [%l0], %f0
788         ldd [%l0+8], %f2
789         faligndata %f0, %f2, %f4
790
791         alignaddr %i2, %g0, %l2
792         ldd [%l2], %f6
793         ldd [%l2+8], %f8
794         faligndata %f6, %f8, %f10
795
796         add %i0, %i1, %i0
797         add %i2, %i3, %i2
798         pdist %f4, %f10, %f12
799
800         alignaddr %i0, %g0, %l0 
801         ldd [%l0], %f0
802         ldd [%l0+8], %f2
803         faligndata %f0, %f2, %f4
804
805         alignaddr %i2, %g0, %l2
806         ldd [%l2], %f6
807         ldd [%l2+8], %f8
808         faligndata %f6, %f8, %f10
809
810         add %i0, 8, %i0
811         add %i2, 8, %i2
812         pdist %f4, %f10, %f12
813
814         alignaddr %i0, %g0, %l0 
815         ldd [%l0], %f0
816         ldd [%l0+8], %f2
817         faligndata %f0, %f2, %f4
818
819         alignaddr %i2, %g0, %l2
820         ldd [%l2], %f6
821         ldd [%l2+8], %f8
822         faligndata %f6, %f8, %f10
823
824         add %i0, %i1, %i0
825         add %i2, %i3, %i2
826         pdist %f4, %f10, %f12
827
828         alignaddr %i0, %g0, %l0 
829         ldd [%l0], %f0
830         ldd [%l0+8], %f2
831         faligndata %f0, %f2, %f4
832
833         alignaddr %i2, %g0, %l2
834         ldd [%l2], %f6
835         ldd [%l2+8], %f8
836         faligndata %f6, %f8, %f10
837
838         add %i0, 8, %i0
839         add %i2, 8, %i2
840         pdist %f4, %f10, %f12
841
842         alignaddr %i0, %g0, %l0 
843         ldd [%l0], %f0
844         ldd [%l0+8], %f2
845         faligndata %f0, %f2, %f4
846
847         alignaddr %i2, %g0, %l2
848         ldd [%l2], %f6
849         ldd [%l2+8], %f8
850         faligndata %f6, %f8, %f10
851
852         add %i0, %i1, %i0
853         add %i2, %i3, %i2
854         pdist %f4, %f10, %f12
855
856         alignaddr %i0, %g0, %l0 
857         ldd [%l0], %f0
858         ldd [%l0+8], %f2
859         faligndata %f0, %f2, %f4
860
861         alignaddr %i2, %g0, %l2
862         ldd [%l2], %f6
863         ldd [%l2+8], %f8
864         faligndata %f6, %f8, %f10
865
866         add %i0, 8, %i0
867         add %i2, 8, %i2
868         pdist %f4, %f10, %f12
869
870         alignaddr %i0, %g0, %l0 
871         ldd [%l0], %f0
872         ldd [%l0+8], %f2
873         faligndata %f0, %f2, %f4
874
875         alignaddr %i2, %g0, %l2
876         ldd [%l2], %f6
877         ldd [%l2+8], %f8
878         faligndata %f6, %f8, %f10
879
880         add %i0, %i1, %i0
881         add %i2, %i3, %i2
882         pdist %f4, %f10, %f12
883
884         alignaddr %i0, %g0, %l0 
885         ldd [%l0], %f0
886         ldd [%l0+8], %f2
887         faligndata %f0, %f2, %f4
888
889         alignaddr %i2, %g0, %l2
890         ldd [%l2], %f6
891         ldd [%l2+8], %f8
892         faligndata %f6, %f8, %f10
893
894         add %i0, 8, %i0
895         add %i2, 8, %i2
896         pdist %f4, %f10, %f12
897
898         alignaddr %i0, %g0, %l0 
899         ldd [%l0], %f0
900         ldd [%l0+8], %f2
901         faligndata %f0, %f2, %f4
902
903         alignaddr %i2, %g0, %l2
904         ldd [%l2], %f6
905         ldd [%l2+8], %f8
906         faligndata %f6, %f8, %f10
907
908         add %i0, %i1, %i0
909         add %i2, %i3, %i2
910         pdist %f4, %f10, %f12
911
912         alignaddr %i0, %g0, %l0 
913         ldd [%l0], %f0
914         ldd [%l0+8], %f2
915         faligndata %f0, %f2, %f4
916
917         alignaddr %i2, %g0, %l2
918         ldd [%l2], %f6
919         ldd [%l2+8], %f8
920         faligndata %f6, %f8, %f10
921
922         add %i0, 8, %i0
923         add %i2, 8, %i2
924         pdist %f4, %f10, %f12
925
926         alignaddr %i0, %g0, %l0 
927         ldd [%l0], %f0
928         ldd [%l0+8], %f2
929         faligndata %f0, %f2, %f4
930
931         alignaddr %i2, %g0, %l2
932         ldd [%l2], %f6
933         ldd [%l2+8], %f8
934         faligndata %f6, %f8, %f10
935
936         add %i0, %i1, %i0
937         add %i2, %i3, %i2
938         pdist %f4, %f10, %f12
939
940         alignaddr %i0, %g0, %l0 
941         ldd [%l0], %f0
942         ldd [%l0+8], %f2
943         faligndata %f0, %f2, %f4
944
945         alignaddr %i2, %g0, %l2
946         ldd [%l2], %f6
947         ldd [%l2+8], %f8
948         faligndata %f6, %f8, %f10
949
950         add %i0, 8, %i0
951         add %i2, 8, %i2
952         pdist %f4, %f10, %f12
953
954         alignaddr %i0, %g0, %l0 
955         ldd [%l0], %f0
956         ldd [%l0+8], %f2
957         faligndata %f0, %f2, %f4
958
959         alignaddr %i2, %g0, %l2
960         ldd [%l2], %f6
961         ldd [%l2+8], %f8
962         faligndata %f6, %f8, %f10
963
964         add %i0, %i1, %i0
965         add %i2, %i3, %i2
966         pdist %f4, %f10, %f12
967
968         alignaddr %i0, %g0, %l0 
969         ldd [%l0], %f0
970         ldd [%l0+8], %f2
971         faligndata %f0, %f2, %f4
972
973         alignaddr %i2, %g0, %l2
974         ldd [%l2], %f6
975         ldd [%l2+8], %f8
976         faligndata %f6, %f8, %f10
977
978         add %i0, 8, %i0
979         add %i2, 8, %i2
980         pdist %f4, %f10, %f12
981
982         alignaddr %i0, %g0, %l0 
983         ldd [%l0], %f0
984         ldd [%l0+8], %f2
985         faligndata %f0, %f2, %f4
986
987         alignaddr %i2, %g0, %l2
988         ldd [%l2], %f6
989         ldd [%l2+8], %f8
990         faligndata %f6, %f8, %f10
991
992         add %i0, %i1, %i0
993         add %i2, %i3, %i2
994         pdist %f4, %f10, %f12
995
996         alignaddr %i0, %g0, %l0 
997         ldd [%l0], %f0
998         ldd [%l0+8], %f2
999         faligndata %f0, %f2, %f4
1000
1001         alignaddr %i2, %g0, %l2
1002         ldd [%l2], %f6
1003         ldd [%l2+8], %f8
1004         faligndata %f6, %f8, %f10
1005
1006         add %i0, 8, %i0
1007         add %i2, 8, %i2
1008         pdist %f4, %f10, %f12
1009
1010         alignaddr %i0, %g0, %l0 
1011         ldd [%l0], %f0
1012         ldd [%l0+8], %f2
1013         faligndata %f0, %f2, %f4
1014
1015         alignaddr %i2, %g0, %l2
1016         ldd [%l2], %f6
1017         ldd [%l2+8], %f8
1018         faligndata %f6, %f8, %f10
1019
1020         add %i0, %i1, %i0
1021         add %i2, %i3, %i2
1022         pdist %f4, %f10, %f12
1023
1024         alignaddr %i0, %g0, %l0 
1025         ldd [%l0], %f0
1026         ldd [%l0+8], %f2
1027         faligndata %f0, %f2, %f4
1028
1029         alignaddr %i2, %g0, %l2
1030         ldd [%l2], %f6
1031         ldd [%l2+8], %f8
1032         faligndata %f6, %f8, %f10
1033
1034         add %i0, 8, %i0
1035         add %i2, 8, %i2
1036         pdist %f4, %f10, %f12
1037
1038         alignaddr %i0, %g0, %l0 
1039         ldd [%l0], %f0
1040         ldd [%l0+8], %f2
1041         faligndata %f0, %f2, %f4
1042
1043         alignaddr %i2, %g0, %l2
1044         ldd [%l2], %f6
1045         ldd [%l2+8], %f8
1046         faligndata %f6, %f8, %f10
1047
1048         add %i0, %i1, %i0
1049         add %i2, %i3, %i2
1050         pdist %f4, %f10, %f12
1051
1052         alignaddr %i0, %g0, %l0 
1053         ldd [%l0], %f0
1054         ldd [%l0+8], %f2
1055         faligndata %f0, %f2, %f4
1056
1057         alignaddr %i2, %g0, %l2
1058         ldd [%l2], %f6
1059         ldd [%l2+8], %f8
1060         faligndata %f6, %f8, %f10
1061
1062         add %i0, 8, %i0
1063         add %i2, 8, %i2
1064         pdist %f4, %f10, %f12
1065
1066         alignaddr %i0, %g0, %l0 
1067         ldd [%l0], %f0
1068         ldd [%l0+8], %f2
1069         faligndata %f0, %f2, %f4
1070
1071         alignaddr %i2, %g0, %l2
1072         ldd [%l2], %f6
1073         ldd [%l2+8], %f8
1074         faligndata %f6, %f8, %f10
1075
1076         add %i0, %i1, %i0
1077         add %i2, %i3, %i2
1078         pdist %f4, %f10, %f12
1079
1080         std %f12, [%fp-24]
1081         ld [%fp-20], %i0
1082
1083         ret
1084         restore