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