]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - tools/test/testfloat/sparc64/systfloat.S
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / tools / test / testfloat / sparc64 / systfloat.S
1 /*-
2  * Copyright (c) 2010 by Peter Jeremy <peterjeremy@acm.org>
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  *
14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
15  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
16  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
17  * IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
18  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
20  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
21  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
22  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
23  * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 /*
27 ===============================================================================
28
29 This GNU assembler source file is part of TestFloat, Release 2a, a package
30 of programs for testing the correctness of floating-point arithmetic
31 complying to the IEC/IEEE Standard for Floating-Point.
32
33 Written by John R. Hauser.  More information is available through the Web
34 page `http://HTTP.CS.Berkeley.EDU/~jhauser/arithmetic/TestFloat.html'.
35
36 THIS SOFTWARE IS DISTRIBUTED AS IS, FOR FREE.  Although reasonable effort
37 has been made to avoid it, THIS SOFTWARE MAY CONTAIN FAULTS THAT WILL AT
38 TIMES RESULT IN INCORRECT BEHAVIOR.  USE OF THIS SOFTWARE IS RESTRICTED TO
39 PERSONS AND ORGANIZATIONS WHO CAN AND WILL TAKE FULL RESPONSIBILITY FOR ANY
40 AND ALL LOSSES, COSTS, OR OTHER PROBLEMS ARISING FROM ITS USE.
41
42 Derivative works are acceptable, even for commercial purposes, so long as
43 (1) they include prominent notice that the work is derivative, and (2) they
44 include prominent notice akin to these four paragraphs for those parts of
45 this code that are retained.
46
47 ===============================================================================
48 */
49
50 #include <machine/asm.h>
51 __FBSDID("$FreeBSD$");
52
53         .text
54
55 /*
56         .macro i2f32    src=%i0,dst=%f0
57         st      \src,[%sp+2231]
58         ld      [%sp+2231],\dst
59         .endm
60
61         .macro i2f64    src=%i0,dst=%f0
62         stx     \src,[%sp+2231]
63         ldd     [%sp+2231],\dst
64         .endm
65
66         .macro f2i32    src=%f0,dst=%i0
67         st      \src,[%sp+2231]
68         ld      [%sp+2231],\dst
69         .endm
70
71         .macro f2i64    src=%f0,dst=%i0
72         std     \src,[%sp+2231]
73         ldx     [%sp+2231],\dst
74         .endm
75 */
76 /*
77 -------------------------------------------------------------------------------
78 -------------------------------------------------------------------------------
79 */
80         .align  4
81         .global syst_int32_to_float32
82 syst_int32_to_float32:
83         save    %sp,-192,%sp
84
85         st      %i0,[%sp+2231]
86         ld      [%sp+2231],%f0
87         fitos   %f0,%f0
88         st      %f0,[%sp+2231]
89         ld      [%sp+2231],%i0
90
91         ret
92         restore
93
94 /*
95 -------------------------------------------------------------------------------
96 -------------------------------------------------------------------------------
97 */
98         .align  4
99         .global syst_int32_to_float64
100 syst_int32_to_float64:
101         save    %sp,-192,%sp
102
103         st      %i0,[%sp+2231]
104         ld      [%sp+2231],%f0
105         fitod   %f0,%f0
106         std     %f0,[%sp+2231]
107         ldx     [%sp+2231],%i0
108
109         ret
110         restore
111
112 /*
113 -------------------------------------------------------------------------------
114 -------------------------------------------------------------------------------
115 */
116         .align  4
117         .global syst_int32_to_float128
118 syst_int32_to_float128:
119         save    %sp,-192,%sp
120
121         st      %i0,[%sp+2231]
122         ld      [%sp+2231],%f0
123         fitoq   %f0,%f0
124         std     %f0,[%sp+2231]
125         ldx     [%sp+2231],%i0
126         std     %f2,[%sp+2231]
127         ldx     [%sp+2231],%i1
128
129         ret
130         restore
131
132 /*
133 -------------------------------------------------------------------------------
134 -------------------------------------------------------------------------------
135 */
136         .align  4
137         .global syst_int64_to_float32
138 syst_int64_to_float32:
139         save    %sp,-192,%sp
140
141         stx     %i0,[%sp+2231]
142         ldd     [%sp+2231],%f0
143         fxtos   %f0,%f0
144         st      %f0,[%sp+2231]
145         ld      [%sp+2231],%i0
146
147         ret
148         restore
149
150 /*
151 -------------------------------------------------------------------------------
152 -------------------------------------------------------------------------------
153 */
154         .align  4
155         .global syst_int64_to_float64
156 syst_int64_to_float64:
157         save    %sp,-192,%sp
158
159         stx     %i0,[%sp+2231]
160         ldd     [%sp+2231],%f0
161         fxtod   %f0,%f0
162         std     %f0,[%sp+2231]
163         ldx     [%sp+2231],%i0
164
165         ret
166         restore
167
168 /*
169 -------------------------------------------------------------------------------
170 -------------------------------------------------------------------------------
171 */
172         .align  4
173         .global syst_int64_to_float128
174 syst_int64_to_float128:
175         save    %sp,-192,%sp
176
177         stx     %i0,[%sp+2231]
178         ldd     [%sp+2231],%f0
179         fxtoq   %f0,%f0
180         std     %f0,[%sp+2231]
181         ldx     [%sp+2231],%i0
182         std     %f2,[%sp+2231]
183         ldx     [%sp+2231],%i1
184
185         ret
186         restore
187
188 /*
189 -------------------------------------------------------------------------------
190 -------------------------------------------------------------------------------
191 */
192         .align  4
193         .global syst_float32_to_int32_round_to_zero
194 syst_float32_to_int32_round_to_zero:
195         save    %sp,-192,%sp
196
197         st      %i0,[%sp+2231]
198         ld      [%sp+2231],%f0
199         fstoi   %f0,%f0
200         st      %f0,[%sp+2231]
201         ld      [%sp+2231],%i0
202
203         ret
204         restore
205
206 /*
207 -------------------------------------------------------------------------------
208 -------------------------------------------------------------------------------
209 */
210         .align  4
211         .global syst_float32_to_int64_round_to_zero
212 syst_float32_to_int64_round_to_zero:
213         save    %sp,-192,%sp
214
215         st      %i0,[%sp+2231]
216         ld      [%sp+2231],%f0
217         fstox   %f0,%f0
218         std     %f0,[%sp+2231]
219         ldx     [%sp+2231],%i0
220
221         ret
222         restore
223
224 /*
225 -------------------------------------------------------------------------------
226 -------------------------------------------------------------------------------
227 */
228         .align  4
229         .global syst_float32_to_float64
230 syst_float32_to_float64:
231         save    %sp,-192,%sp
232
233         st      %i0,[%sp+2231]
234         ld      [%sp+2231],%f0
235         fstod   %f0,%f0
236         std     %f0,[%sp+2231]
237         ldx     [%sp+2231],%i0
238
239         ret
240         restore
241
242 /*
243 -------------------------------------------------------------------------------
244 -------------------------------------------------------------------------------
245 */
246         .align  4
247         .global syst_float32_to_float128
248 syst_float32_to_float128:
249         save    %sp,-192,%sp
250
251         st      %i0,[%sp+2231]
252         ld      [%sp+2231],%f0
253         fstoq   %f0,%f0
254         std     %f0,[%sp+2231]
255         ldx     [%sp+2231],%i0
256         std     %f2,[%sp+2231]
257         ldx     [%sp+2231],%i1
258
259         ret
260         restore
261
262 /*
263 -------------------------------------------------------------------------------
264 -------------------------------------------------------------------------------
265 */
266         .align  4
267         .global syst_float32_add
268 syst_float32_add:
269         save    %sp,-192,%sp
270
271         st      %i0,[%sp+2231]
272         ld      [%sp+2231],%f0
273         st      %i1,[%sp+2231]
274         ld      [%sp+2231],%f1
275         fadds   %f0,%f1,%f0
276         st      %f0,[%sp+2231]
277         ld      [%sp+2231],%i0
278
279         ret
280         restore
281
282 /*
283 -------------------------------------------------------------------------------
284 -------------------------------------------------------------------------------
285 */
286         .align  4
287         .global syst_float32_sub
288 syst_float32_sub:
289         save    %sp,-192,%sp
290
291         st      %i0,[%sp+2231]
292         ld      [%sp+2231],%f0
293         st      %i1,[%sp+2231]
294         ld      [%sp+2231],%f1
295         fsubs   %f0,%f1,%f0
296         st      %f0,[%sp+2231]
297         ld      [%sp+2231],%i0
298
299         ret
300         restore
301
302 /*
303 -------------------------------------------------------------------------------
304 -------------------------------------------------------------------------------
305 */
306         .align  4
307         .global syst_float32_mul
308 syst_float32_mul:
309         save    %sp,-192,%sp
310
311         st      %i0,[%sp+2231]
312         ld      [%sp+2231],%f0
313         st      %i1,[%sp+2231]
314         ld      [%sp+2231],%f1
315         fmuls   %f0,%f1,%f0
316         st      %f0,[%sp+2231]
317         ld      [%sp+2231],%i0
318
319         ret
320         restore
321
322 /*
323 -------------------------------------------------------------------------------
324 -------------------------------------------------------------------------------
325 */
326         .align  4
327         .global syst_float32_div
328 syst_float32_div:
329         save    %sp,-192,%sp
330
331         st      %i0,[%sp+2231]
332         ld      [%sp+2231],%f0
333         st      %i1,[%sp+2231]
334         ld      [%sp+2231],%f1
335         fdivs   %f0,%f1,%f0
336         st      %f0,[%sp+2231]
337         ld      [%sp+2231],%i0
338
339         ret
340         restore
341
342 /*
343 -------------------------------------------------------------------------------
344 -------------------------------------------------------------------------------
345 */
346         .align  4
347         .global syst_float32_sqrt
348 syst_float32_sqrt:
349         save    %sp,-192,%sp
350
351         st      %i0,[%sp+2231]
352         ld      [%sp+2231],%f0
353         fsqrts  %f0,%f0
354         st      %f0,[%sp+2231]
355         ld      [%sp+2231],%i0
356
357         ret
358         restore
359
360 /*
361 -------------------------------------------------------------------------------
362 -------------------------------------------------------------------------------
363 */
364         .align  4
365         .global syst_float32_eq
366 syst_float32_eq:
367         save    %sp,-192,%sp
368
369         st      %i0,[%sp+2231]
370         ld      [%sp+2231],%f0
371         st      %i1,[%sp+2231]
372         ld      [%sp+2231],%f1
373         fcmps   %fcc0,%f0,%f1
374         mov     0,%i0
375         move    %fcc0,1,%i0
376
377         ret
378         restore
379
380 /*
381 -------------------------------------------------------------------------------
382 -------------------------------------------------------------------------------
383 */
384         .align  4
385         .global syst_float32_le
386 syst_float32_le:
387         save    %sp,-192,%sp
388
389         st      %i0,[%sp+2231]
390         ld      [%sp+2231],%f0
391         st      %i1,[%sp+2231]
392         ld      [%sp+2231],%f1
393         fcmpes  %fcc0,%f0,%f1
394         mov     0,%i0
395         movle   %fcc0,1,%i0
396
397         ret
398         restore
399
400 /*
401 -------------------------------------------------------------------------------
402 -------------------------------------------------------------------------------
403 */
404         .align  4
405         .global syst_float32_lt
406 syst_float32_lt:
407         save    %sp,-192,%sp
408
409         st      %i0,[%sp+2231]
410         ld      [%sp+2231],%f0
411         st      %i1,[%sp+2231]
412         ld      [%sp+2231],%f1
413         fcmpes  %fcc0,%f0,%f1
414         mov     0,%i0
415         movl    %fcc0,1,%i0
416
417         ret
418         restore
419
420 /*
421 -------------------------------------------------------------------------------
422 -------------------------------------------------------------------------------
423 */
424         .align  4
425         .global syst_float32_eq_signaling
426 syst_float32_eq_signaling:
427         save    %sp,-192,%sp
428
429         st      %i0,[%sp+2231]
430         ld      [%sp+2231],%f0
431         st      %i1,[%sp+2231]
432         ld      [%sp+2231],%f1
433         fcmpes  %fcc0,%f0,%f1
434         mov     0,%i0
435         move    %fcc0,1,%i0
436
437         ret
438         restore
439
440 /*
441 -------------------------------------------------------------------------------
442 -------------------------------------------------------------------------------
443 */
444         .align  4
445         .global syst_float32_le_quiet
446 syst_float32_le_quiet:
447         save    %sp,-192,%sp
448
449         st      %i0,[%sp+2231]
450         ld      [%sp+2231],%f0
451         st      %i1,[%sp+2231]
452         ld      [%sp+2231],%f1
453         fcmps   %fcc0,%f0,%f1
454         mov     0,%i0
455         movle   %fcc0,1,%i0
456
457         ret
458         restore
459
460 /*
461 -------------------------------------------------------------------------------
462 -------------------------------------------------------------------------------
463 */
464         .align  4
465         .global syst_float32_lt_quiet
466 syst_float32_lt_quiet:
467         save    %sp,-192,%sp
468
469         st      %i0,[%sp+2231]
470         ld      [%sp+2231],%f0
471         st      %i1,[%sp+2231]
472         ld      [%sp+2231],%f1
473         fcmps   %fcc0,%f0,%f1
474         mov     0,%i0
475         movl    %fcc0,1,%i0
476
477         ret
478         restore
479
480 /*
481 -------------------------------------------------------------------------------
482 -------------------------------------------------------------------------------
483 */
484         .align  4
485         .global syst_float64_to_int32_round_to_zero
486 syst_float64_to_int32_round_to_zero:
487         save    %sp,-192,%sp
488
489         stx     %i0,[%sp+2231]
490         ldd     [%sp+2231],%f0
491         fdtoi   %f0,%f0
492         st      %f0,[%sp+2231]
493         ld      [%sp+2231],%i0
494
495         ret
496         restore
497
498 /*
499 -------------------------------------------------------------------------------
500 -------------------------------------------------------------------------------
501 */
502         .align  4
503         .global syst_float64_to_int64_round_to_zero
504 syst_float64_to_int64_round_to_zero:
505         save    %sp,-192,%sp
506
507         stx     %i0,[%sp+2231]
508         ldd     [%sp+2231],%f0
509         fdtox   %f0,%f0
510         std     %f0,[%sp+2231]
511         ldx     [%sp+2231],%i0
512
513         ret
514         restore
515
516 /*
517 -------------------------------------------------------------------------------
518 -------------------------------------------------------------------------------
519 */
520         .align  4
521         .global syst_float64_to_float32
522 syst_float64_to_float32:
523         save    %sp,-192,%sp
524
525         stx     %i0,[%sp+2231]
526         ldd     [%sp+2231],%f0
527         fdtos   %f0,%f0
528         st      %f0,[%sp+2231]
529         ld      [%sp+2231],%i0
530
531         ret
532         restore
533
534 /*
535 -------------------------------------------------------------------------------
536 -------------------------------------------------------------------------------
537 */
538         .align  4
539         .global syst_float64_to_float128
540 syst_float64_to_float128:
541         save    %sp,-192,%sp
542
543         stx     %i0,[%sp+2231]
544         ldd     [%sp+2231],%f0
545         fdtoq   %f0,%f0
546         std     %f0,[%sp+2231]
547         ldx     [%sp+2231],%i0
548         std     %f2,[%sp+2231]
549         ldx     [%sp+2231],%i1
550
551         ret
552         restore
553
554 /*
555 -------------------------------------------------------------------------------
556 -------------------------------------------------------------------------------
557 */
558         .align  4
559         .global syst_float64_add
560 syst_float64_add:
561         save    %sp,-192,%sp
562
563         stx     %i0,[%sp+2231]
564         ldd     [%sp+2231],%f0
565         stx     %i1,[%sp+2231]
566         ldd     [%sp+2231],%f2
567         faddd   %f0,%f2,%f0
568         std     %f0,[%sp+2231]
569         ldx     [%sp+2231],%i0
570
571         ret
572         restore
573
574 /*
575 -------------------------------------------------------------------------------
576 -------------------------------------------------------------------------------
577 */
578         .align  4
579         .global syst_float64_sub
580 syst_float64_sub:
581         save    %sp,-192,%sp
582
583         stx     %i0,[%sp+2231]
584         ldd     [%sp+2231],%f0
585         stx     %i1,[%sp+2231]
586         ldd     [%sp+2231],%f2
587         fsubd   %f0,%f2,%f0
588         std     %f0,[%sp+2231]
589         ldx     [%sp+2231],%i0
590
591         ret
592         restore
593
594 /*
595 -------------------------------------------------------------------------------
596 -------------------------------------------------------------------------------
597 */
598         .align  4
599         .global syst_float64_mul
600 syst_float64_mul:
601         save    %sp,-192,%sp
602
603         stx     %i0,[%sp+2231]
604         ldd     [%sp+2231],%f0
605         stx     %i1,[%sp+2231]
606         ldd     [%sp+2231],%f2
607         fmuld   %f0,%f2,%f0
608         std     %f0,[%sp+2231]
609         ldx     [%sp+2231],%i0
610
611         ret
612         restore
613
614 /*
615 -------------------------------------------------------------------------------
616 -------------------------------------------------------------------------------
617 */
618         .align  4
619         .global syst_float64_div
620 syst_float64_div:
621         save    %sp,-192,%sp
622
623         stx     %i0,[%sp+2231]
624         ldd     [%sp+2231],%f0
625         stx     %i1,[%sp+2231]
626         ldd     [%sp+2231],%f2
627         fdivd   %f0,%f2,%f0
628         std     %f0,[%sp+2231]
629         ldx     [%sp+2231],%i0
630
631         ret
632         restore
633
634 /*
635 -------------------------------------------------------------------------------
636 -------------------------------------------------------------------------------
637 */
638         .align  4
639         .global syst_float64_sqrt
640 syst_float64_sqrt:
641         save    %sp,-192,%sp
642
643         stx     %i0,[%sp+2231]
644         ldd     [%sp+2231],%f0
645         fsqrtd  %f0,%f0
646         std     %f0,[%sp+2231]
647         ldx     [%sp+2231],%i0
648
649         ret
650         restore
651
652 /*
653 -------------------------------------------------------------------------------
654 -------------------------------------------------------------------------------
655 */
656         .align  4
657         .global syst_float64_eq
658 syst_float64_eq:
659         save    %sp,-192,%sp
660
661         stx     %i0,[%sp+2231]
662         ldd     [%sp+2231],%f0
663         stx     %i1,[%sp+2231]
664         ldd     [%sp+2231],%f2
665         fcmpd   %fcc0,%f0,%f2
666         mov     0,%i0
667         move    %fcc0,1,%i0
668
669         ret
670         restore
671
672 /*
673 -------------------------------------------------------------------------------
674 -------------------------------------------------------------------------------
675 */
676         .align  4
677         .global syst_float64_le
678 syst_float64_le:
679         save    %sp,-192,%sp
680
681         stx     %i0,[%sp+2231]
682         ldd     [%sp+2231],%f0
683         stx     %i1,[%sp+2231]
684         ldd     [%sp+2231],%f2
685         fcmped  %fcc0,%f0,%f2
686         mov     0,%i0
687         movle   %fcc0,1,%i0
688
689         ret
690         restore
691
692 /*
693 -------------------------------------------------------------------------------
694 -------------------------------------------------------------------------------
695 */
696         .align  4
697         .global syst_float64_lt
698 syst_float64_lt:
699         save    %sp,-192,%sp
700
701         stx     %i0,[%sp+2231]
702         ldd     [%sp+2231],%f0
703         stx     %i1,[%sp+2231]
704         ldd     [%sp+2231],%f2
705         fcmped  %fcc0,%f0,%f2
706         mov     0,%i0
707         movl    %fcc0,1,%i0
708
709         ret
710         restore
711
712 /*
713 -------------------------------------------------------------------------------
714 -------------------------------------------------------------------------------
715 */
716         .align  4
717         .global syst_float64_eq_signaling
718 syst_float64_eq_signaling:
719         save    %sp,-192,%sp
720
721         stx     %i0,[%sp+2231]
722         ldd     [%sp+2231],%f0
723         stx     %i1,[%sp+2231]
724         ldd     [%sp+2231],%f2
725         fcmped  %fcc0,%f0,%f2
726         mov     0,%i0
727         move    %fcc0,1,%i0
728
729         ret
730         restore
731
732 /*
733 -------------------------------------------------------------------------------
734 -------------------------------------------------------------------------------
735 */
736         .align  4
737         .global syst_float64_le_quiet
738 syst_float64_le_quiet:
739         save    %sp,-192,%sp
740
741         stx     %i0,[%sp+2231]
742         ldd     [%sp+2231],%f0
743         stx     %i1,[%sp+2231]
744         ldd     [%sp+2231],%f2
745         fcmpd   %fcc0,%f0,%f2
746         mov     0,%i0
747         movle   %fcc0,1,%i0
748
749         ret
750         restore
751
752 /*
753 -------------------------------------------------------------------------------
754 -------------------------------------------------------------------------------
755 */
756         .align  4
757         .global syst_float64_lt_quiet
758 syst_float64_lt_quiet:
759         save    %sp,-192,%sp
760
761         stx     %i0,[%sp+2231]
762         ldd     [%sp+2231],%f0
763         stx     %i1,[%sp+2231]
764         ldd     [%sp+2231],%f2
765         fcmpd   %fcc0,%f0,%f2
766         mov     0,%i0
767         movl    %fcc0,1,%i0
768
769         ret
770         restore
771
772 /*
773 -------------------------------------------------------------------------------
774 -------------------------------------------------------------------------------
775 */
776         .align  4
777         .global syst_float128_to_int32_round_to_zero
778 syst_float128_to_int32_round_to_zero:
779         save    %sp,-192,%sp
780
781         stx     %i0,[%sp+2231]
782         ldd     [%sp+2231],%f0
783         stx     %i1,[%sp+2231]
784         ldd     [%sp+2231],%f2
785         fqtoi   %f0,%f0
786         st      %f0,[%sp+2231]
787         ld      [%sp+2231],%i0
788
789         ret
790         restore
791
792 /*
793 -------------------------------------------------------------------------------
794 -------------------------------------------------------------------------------
795 */
796         .align  4
797         .global syst_float128_to_int64_round_to_zero
798 syst_float128_to_int64_round_to_zero:
799         save    %sp,-192,%sp
800
801         stx     %i0,[%sp+2231]
802         ldd     [%sp+2231],%f0
803         stx     %i1,[%sp+2231]
804         ldd     [%sp+2231],%f2
805         fqtox   %f0,%f0
806         std     %f0,[%sp+2231]
807         ldx     [%sp+2231],%i0
808
809         ret
810         restore
811
812 /*
813 -------------------------------------------------------------------------------
814 -------------------------------------------------------------------------------
815 */
816         .align  4
817         .global syst_float128_to_float32
818 syst_float128_to_float32:
819         save    %sp,-192,%sp
820
821         stx     %i0,[%sp+2231]
822         ldd     [%sp+2231],%f0
823         stx     %i1,[%sp+2231]
824         ldd     [%sp+2231],%f2
825         fqtos   %f0,%f0
826         st      %f0,[%sp+2231]
827         ld      [%sp+2231],%i0
828
829         ret
830         restore
831
832 /*
833 -------------------------------------------------------------------------------
834 -------------------------------------------------------------------------------
835 */
836         .align  4
837         .global syst_float128_to_float64
838 syst_float128_to_float64:
839         save    %sp,-192,%sp
840
841         stx     %i0,[%sp+2231]
842         ldd     [%sp+2231],%f0
843         stx     %i1,[%sp+2231]
844         ldd     [%sp+2231],%f2
845         fqtod   %f0,%f0
846         std     %f0,[%sp+2231]
847         ldx     [%sp+2231],%i0
848
849         ret
850         restore
851
852 /*
853 -------------------------------------------------------------------------------
854 -------------------------------------------------------------------------------
855 */
856         .align  4
857         .global syst_float128_add
858 syst_float128_add:
859         save    %sp,-192,%sp
860
861         stx     %i0,[%sp+2231]
862         ldd     [%sp+2231],%f0
863         stx     %i1,[%sp+2231]
864         ldd     [%sp+2231],%f2
865         stx     %i2,[%sp+2231]
866         ldd     [%sp+2231],%f4
867         stx     %i3,[%sp+2231]
868         ldd     [%sp+2231],%f6
869         faddq   %f0,%f4,%f0
870         std     %f0,[%sp+2231]
871         ldx     [%sp+2231],%i0
872         std     %f2,[%sp+2231]
873         ldx     [%sp+2231],%i1
874
875         ret
876         restore
877
878 /*
879 -------------------------------------------------------------------------------
880 -------------------------------------------------------------------------------
881 */
882         .align  4
883         .global syst_float128_sub
884 syst_float128_sub:
885         save    %sp,-192,%sp
886
887         stx     %i0,[%sp+2231]
888         ldd     [%sp+2231],%f0
889         stx     %i1,[%sp+2231]
890         ldd     [%sp+2231],%f2
891         stx     %i2,[%sp+2231]
892         ldd     [%sp+2231],%f4
893         stx     %i3,[%sp+2231]
894         ldd     [%sp+2231],%f6
895         fsubq   %f0,%f4,%f0
896         std     %f0,[%sp+2231]
897         ldx     [%sp+2231],%i0
898         std     %f2,[%sp+2231]
899         ldx     [%sp+2231],%i1
900
901         ret
902         restore
903
904 /*
905 -------------------------------------------------------------------------------
906 -------------------------------------------------------------------------------
907 */
908         .align  4
909         .global syst_float128_mul
910 syst_float128_mul:
911         save    %sp,-192,%sp
912
913         stx     %i0,[%sp+2231]
914         ldd     [%sp+2231],%f0
915         stx     %i1,[%sp+2231]
916         ldd     [%sp+2231],%f2
917         stx     %i2,[%sp+2231]
918         ldd     [%sp+2231],%f4
919         stx     %i3,[%sp+2231]
920         ldd     [%sp+2231],%f6
921         fmulq   %f0,%f4,%f0
922         std     %f0,[%sp+2231]
923         ldx     [%sp+2231],%i0
924         std     %f2,[%sp+2231]
925         ldx     [%sp+2231],%i1
926
927         ret
928         restore
929
930 /*
931 -------------------------------------------------------------------------------
932 -------------------------------------------------------------------------------
933 */
934         .align  4
935         .global syst_float128_div
936 syst_float128_div:
937         save    %sp,-192,%sp
938
939         stx     %i0,[%sp+2231]
940         ldd     [%sp+2231],%f0
941         stx     %i1,[%sp+2231]
942         ldd     [%sp+2231],%f2
943         stx     %i2,[%sp+2231]
944         ldd     [%sp+2231],%f4
945         stx     %i3,[%sp+2231]
946         ldd     [%sp+2231],%f6
947         fdivq   %f0,%f4,%f0
948         std     %f0,[%sp+2231]
949         ldx     [%sp+2231],%i0
950         std     %f2,[%sp+2231]
951         ldx     [%sp+2231],%i1
952
953         ret
954         restore
955
956 /*
957 -------------------------------------------------------------------------------
958 -------------------------------------------------------------------------------
959 */
960         .align  4
961         .global syst_float128_sqrt
962 syst_float128_sqrt:
963         save    %sp,-192,%sp
964
965         stx     %i0,[%sp+2231]
966         ldd     [%sp+2231],%f0
967         stx     %i1,[%sp+2231]
968         ldd     [%sp+2231],%f2
969         fsqrtq  %f0,%f0
970         std     %f0,[%sp+2231]
971         ldx     [%sp+2231],%i0
972         std     %f2,[%sp+2231]
973         ldx     [%sp+2231],%i1
974
975         ret
976         restore
977
978 /*
979 -------------------------------------------------------------------------------
980 -------------------------------------------------------------------------------
981 */
982         .align  4
983         .global syst_float128_eq
984 syst_float128_eq:
985         save    %sp,-192,%sp
986
987         stx     %i0,[%sp+2231]
988         ldd     [%sp+2231],%f0
989         stx     %i1,[%sp+2231]
990         ldd     [%sp+2231],%f2
991         stx     %i2,[%sp+2231]
992         ldd     [%sp+2231],%f4
993         stx     %i3,[%sp+2231]
994         ldd     [%sp+2231],%f6
995         fcmpq   %fcc0,%f0,%f4
996         mov     0,%i0
997         move    %fcc0,1,%i0
998
999         ret
1000         restore
1001
1002 /*
1003 -------------------------------------------------------------------------------
1004 -------------------------------------------------------------------------------
1005 */
1006         .align  4
1007         .global syst_float128_le
1008 syst_float128_le:
1009         save    %sp,-192,%sp
1010
1011         stx     %i0,[%sp+2231]
1012         ldd     [%sp+2231],%f0
1013         stx     %i1,[%sp+2231]
1014         ldd     [%sp+2231],%f2
1015         stx     %i2,[%sp+2231]
1016         ldd     [%sp+2231],%f4
1017         stx     %i3,[%sp+2231]
1018         ldd     [%sp+2231],%f6
1019         fcmpeq  %fcc0,%f0,%f4
1020         mov     0,%i0
1021         movle   %fcc0,1,%i0
1022
1023         ret
1024         restore
1025
1026 /*
1027 -------------------------------------------------------------------------------
1028 -------------------------------------------------------------------------------
1029 */
1030         .align  4
1031         .global syst_float128_lt
1032 syst_float128_lt:
1033         save    %sp,-192,%sp
1034
1035         stx     %i0,[%sp+2231]
1036         ldd     [%sp+2231],%f0
1037         stx     %i1,[%sp+2231]
1038         ldd     [%sp+2231],%f2
1039         stx     %i2,[%sp+2231]
1040         ldd     [%sp+2231],%f4
1041         stx     %i3,[%sp+2231]
1042         ldd     [%sp+2231],%f6
1043         fcmpeq  %fcc0,%f0,%f4
1044         mov     0,%i0
1045         movl    %fcc0,1,%i0
1046
1047         ret
1048         restore
1049
1050 /*
1051 -------------------------------------------------------------------------------
1052 -------------------------------------------------------------------------------
1053 */
1054         .align  4
1055         .global syst_float128_eq_signaling
1056 syst_float128_eq_signaling:
1057         save    %sp,-192,%sp
1058
1059         stx     %i0,[%sp+2231]
1060         ldd     [%sp+2231],%f0
1061         stx     %i1,[%sp+2231]
1062         ldd     [%sp+2231],%f2
1063         stx     %i2,[%sp+2231]
1064         ldd     [%sp+2231],%f4
1065         stx     %i3,[%sp+2231]
1066         ldd     [%sp+2231],%f6
1067         fcmpeq  %fcc0,%f0,%f4
1068         mov     0,%i0
1069         move    %fcc0,1,%i0
1070
1071         ret
1072         restore
1073
1074 /*
1075 -------------------------------------------------------------------------------
1076 -------------------------------------------------------------------------------
1077 */
1078         .align  4
1079         .global syst_float128_le_quiet
1080 syst_float128_le_quiet:
1081         save    %sp,-192,%sp
1082
1083         stx     %i0,[%sp+2231]
1084         ldd     [%sp+2231],%f0
1085         stx     %i1,[%sp+2231]
1086         ldd     [%sp+2231],%f2
1087         stx     %i2,[%sp+2231]
1088         ldd     [%sp+2231],%f4
1089         stx     %i3,[%sp+2231]
1090         ldd     [%sp+2231],%f6
1091         fcmpq   %fcc0,%f0,%f4
1092         mov     0,%i0
1093         movle   %fcc0,1,%i0
1094
1095         ret
1096         restore
1097
1098 /*
1099 -------------------------------------------------------------------------------
1100 -------------------------------------------------------------------------------
1101 */
1102         .align  4
1103         .global syst_float128_lt_quiet
1104 syst_float128_lt_quiet:
1105         save    %sp,-192,%sp
1106
1107         stx     %i0,[%sp+2231]
1108         ldd     [%sp+2231],%f0
1109         stx     %i1,[%sp+2231]
1110         ldd     [%sp+2231],%f2
1111         stx     %i2,[%sp+2231]
1112         ldd     [%sp+2231],%f4
1113         stx     %i3,[%sp+2231]
1114         ldd     [%sp+2231],%f6
1115         fcmpq   %fcc0,%f0,%f4
1116         mov     0,%i0
1117         movl    %fcc0,1,%i0
1118
1119         ret
1120         restore