blob: b43d193e5af579789d092c62ed43df49d813df6d [file] [log] [blame]
Jingwei Zhang5d4f0e62014-10-31 18:29:18 +08001/*
2Copyright (c) 2014, Intel Corporation
3All rights reserved.
4
5Redistribution and use in source and binary forms, with or without
6modification, are permitted provided that the following conditions are met:
7
8 * Redistributions of source code must retain the above copyright notice,
9 * this list of conditions and the following disclaimer.
10
11 * Redistributions in binary form must reproduce the above copyright notice,
12 * this list of conditions and the following disclaimer in the documentation
13 * and/or other materials provided with the distribution.
14
15 * Neither the name of Intel Corporation nor the names of its contributors
16 * may be used to endorse or promote products derived from this software
17 * without specific prior written permission.
18
19THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
23ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
24(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
25LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
26ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
28SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29*/
30
31# -- Begin __libm_sincos_huge
32 .text
33 .align 16,0x90
34 .hidden __libm_sincos_huge
35 .globl __libm_sincos_huge
36__libm_sincos_huge:
37# parameter 1: 8 + %ebp
38# parameter 2: 16 + %ebp
39# parameter 3: 20 + %ebp
40..B1.1:
41 pushl %ebp
42 movl %esp, %ebp
43 andl $-64, %esp
44 pushl %esi
45 pushl %edi
46 pushl %ebx
47 subl $52, %esp
48 movl 16(%ebp), %eax
49 movl 20(%ebp), %edx
50 movl %eax, 32(%esp)
51 movl %edx, 36(%esp)
52..B1.2:
53 fnstcw 30(%esp)
54..B1.3:
55 call ..L2
56..L2:
57 popl %edi
58 lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
59 movsd 8(%ebp), %xmm1
60 movl 12(%ebp), %esi
61 movl %esi, %eax
62 andl $2147483647, %eax
63 andps .L_2il0floatpacket.0@GOTOFF(%edi), %xmm1
64 shrl $31, %esi
65 movl %eax, 40(%esp)
66 cmpl $1104150528, %eax
67 movsd %xmm1, 8(%ebp)
68 jae ..B1.11
69..B1.4:
70 movsd _Pi4Inv@GOTOFF(%edi), %xmm0
71 mulsd %xmm1, %xmm0
72 movzwl 30(%esp), %edx
73 movl %edx, %eax
74 andl $768, %eax
75 movsd %xmm0, (%esp)
76 cmpl $768, %eax
77 je ..B1.42
78..B1.5:
79 orl $-64768, %edx
80 movw %dx, 28(%esp)
81..B1.6:
82 fldcw 28(%esp)
83..B1.7:
84 movsd 8(%ebp), %xmm1
85 movl $1, %ebx
86..B1.8:
87 movl %ebx, 12(%esp)
88 movl 4(%esp), %ebx
89 movl %ebx, %eax
90 movl %esi, 8(%esp)
91 movl %ebx, %esi
92 shrl $20, %esi
93 andl $1048575, %eax
94 movl %esi, %ecx
95 orl $1048576, %eax
96 negl %ecx
97 movl %eax, %edx
98 addl $19, %ecx
99 addl $13, %esi
100 movl %ecx, 24(%esp)
101 shrl %cl, %edx
102 movl %esi, %ecx
103 shll %cl, %eax
104 movl 24(%esp), %ecx
105 movl (%esp), %esi
106 shrl %cl, %esi
107 orl %esi, %eax
108 cmpl $1094713344, %ebx
109 movsd %xmm1, 16(%esp)
110 fldl 16(%esp)
111 cmovb %edx, %eax
112 movl 8(%esp), %esi
113 lea 1(%eax), %edx
114 movl %edx, %ebx
115 andl $-2, %ebx
116 movl %ebx, 16(%esp)
117 fildl 16(%esp)
118 movl 12(%esp), %ebx
119 cmpl $1094713344, 40(%esp)
120 jae ..B1.10
121..B1.9:
122 fldl _Pi4x3@GOTOFF(%edi)
123 fmul %st(1), %st
124 faddp %st, %st(2)
125 fldl 8+_Pi4x3@GOTOFF(%edi)
126 fmul %st(1), %st
127 faddp %st, %st(2)
128 fldl 16+_Pi4x3@GOTOFF(%edi)
129 fmulp %st, %st(1)
130 faddp %st, %st(1)
131 jmp ..B1.17
132..B1.10:
133 fldl _Pi4x4@GOTOFF(%edi)
134 fmul %st(1), %st
135 faddp %st, %st(2)
136 fldl 8+_Pi4x4@GOTOFF(%edi)
137 fmul %st(1), %st
138 faddp %st, %st(2)
139 fldl 16+_Pi4x4@GOTOFF(%edi)
140 fmul %st(1), %st
141 faddp %st, %st(2)
142 fldl 24+_Pi4x4@GOTOFF(%edi)
143 fmulp %st, %st(1)
144 faddp %st, %st(1)
145 jmp ..B1.17
146..B1.11:
147 movzwl 30(%esp), %edx
148 movl %edx, %eax
149 andl $768, %eax
150 cmpl $768, %eax
151 je ..B1.43
152..B1.12:
153 orl $-64768, %edx
154 movw %dx, 28(%esp)
155..B1.13:
156 fldcw 28(%esp)
157..B1.14:
158 movsd 8(%ebp), %xmm1
159 movl $1, %ebx
160..B1.15:
161 movsd %xmm1, 16(%esp)
162 fldl 16(%esp)
163 addl $-32, %esp
164 lea 32(%esp), %eax
165 fstpt (%esp)
166 movl $0, 12(%esp)
167 movl %eax, 16(%esp)
168 call __libm_reduce_pi04l
169..B1.46:
170 addl $32, %esp
171..B1.16:
172 fldl (%esp)
173 lea 1(%eax), %edx
174 fldl 8(%esp)
175 faddp %st, %st(1)
176..B1.17:
177 movl %edx, %ecx
178 addl $3, %eax
179 shrl $2, %ecx
180 andl $1, %ecx
181 shrl $2, %eax
182 xorl %ecx, %esi
183 movl 36(%esp), %ecx
184 andl $1, %eax
185 andl $3, %ecx
186 cmpl $3, %ecx
187 jne ..B1.25
188..B1.18:
189 fldt 84+_SP@GOTOFF(%edi)
190 fld %st(1)
191 fmul %st(2), %st
192 testb $2, %dl
193 fmul %st, %st(1)
194 fldt 72+_SP@GOTOFF(%edi)
195 faddp %st, %st(2)
196 fmul %st, %st(1)
197 fldt 60+_SP@GOTOFF(%edi)
198 faddp %st, %st(2)
199 fmul %st, %st(1)
200 fldt 48+_SP@GOTOFF(%edi)
201 faddp %st, %st(2)
202 fmul %st, %st(1)
203 fldt 36+_SP@GOTOFF(%edi)
204 faddp %st, %st(2)
205 fmul %st, %st(1)
206 fldt 24+_SP@GOTOFF(%edi)
207 faddp %st, %st(2)
208 fmul %st, %st(1)
209 fldt 12+_SP@GOTOFF(%edi)
210 faddp %st, %st(2)
211 fmul %st, %st(1)
212 fldt _SP@GOTOFF(%edi)
213 faddp %st, %st(2)
214 fmul %st, %st(1)
215 fldt 84+_CP@GOTOFF(%edi)
216 fmul %st(1), %st
217 fldt 72+_CP@GOTOFF(%edi)
218 faddp %st, %st(1)
219 fmul %st(1), %st
220 fldt 60+_CP@GOTOFF(%edi)
221 faddp %st, %st(1)
222 fmul %st(1), %st
223 fldt 48+_CP@GOTOFF(%edi)
224 faddp %st, %st(1)
225 fmul %st(1), %st
226 fldt 36+_CP@GOTOFF(%edi)
227 faddp %st, %st(1)
228 fmul %st(1), %st
229 fldt 24+_CP@GOTOFF(%edi)
230 faddp %st, %st(1)
231 fmul %st(1), %st
232 fldt 12+_CP@GOTOFF(%edi)
233 faddp %st, %st(1)
234 fmul %st(1), %st
235 fldt _CP@GOTOFF(%edi)
236 faddp %st, %st(1)
237 fmulp %st, %st(1)
238 fldl _ones@GOTOFF(%edi,%esi,8)
239 fldl _ones@GOTOFF(%edi,%eax,8)
240 je ..B1.22
241..B1.19:
242 fmulp %st, %st(4)
243 testl %ebx, %ebx
244 fxch %st(2)
245 fmul %st(3), %st
246 movl 32(%esp), %eax
247 faddp %st, %st(3)
248 fxch %st(2)
249 fstpl (%eax)
250 fmul %st, %st(1)
251 faddp %st, %st(1)
252 fstpl 8(%eax)
253 je ..B1.21
254..B1.20:
255 fldcw 30(%esp)
256..B1.21:
257 addl $52, %esp
258 popl %ebx
259 popl %edi
260 popl %esi
261 movl %ebp, %esp
262 popl %ebp
263 ret
264..B1.22:
265 fxch %st(1)
266 fmulp %st, %st(4)
267 testl %ebx, %ebx
268 fxch %st(2)
269 fmul %st(3), %st
270 movl 32(%esp), %eax
271 faddp %st, %st(3)
272 fxch %st(2)
273 fstpl 8(%eax)
274 fmul %st, %st(1)
275 faddp %st, %st(1)
276 fstpl (%eax)
277 je ..B1.24
278..B1.23:
279 fldcw 30(%esp)
280..B1.24:
281 addl $52, %esp
282 popl %ebx
283 popl %edi
284 popl %esi
285 movl %ebp, %esp
286 popl %ebp
287 ret
288..B1.25:
289 testb $2, 36(%esp)
290 je ..B1.33
291..B1.26:
292 fld %st(0)
293 testb $2, %dl
294 fmul %st(1), %st
295 fld %st(0)
296 fmul %st(1), %st
297 je ..B1.30
298..B1.27:
299 fstp %st(2)
300 fldt 84+_CP@GOTOFF(%edi)
301 testl %ebx, %ebx
302 fmul %st(2), %st
303 fldt 72+_CP@GOTOFF(%edi)
304 fmul %st(3), %st
305 fldt 60+_CP@GOTOFF(%edi)
306 movl 32(%esp), %eax
307 faddp %st, %st(2)
308 fxch %st(1)
309 fmul %st(3), %st
310 fldt 48+_CP@GOTOFF(%edi)
311 faddp %st, %st(2)
312 fxch %st(1)
313 fmul %st(3), %st
314 fldt 36+_CP@GOTOFF(%edi)
315 faddp %st, %st(2)
316 fxch %st(1)
317 fmul %st(3), %st
318 fldt 24+_CP@GOTOFF(%edi)
319 faddp %st, %st(2)
320 fxch %st(1)
321 fmul %st(3), %st
322 fldt 12+_CP@GOTOFF(%edi)
323 faddp %st, %st(2)
324 fxch %st(1)
325 fmulp %st, %st(3)
326 fldt _CP@GOTOFF(%edi)
327 faddp %st, %st(1)
328 fmulp %st, %st(1)
329 faddp %st, %st(1)
330 fldl _ones@GOTOFF(%edi,%esi,8)
331 fmul %st, %st(1)
332 faddp %st, %st(1)
333 fstpl 8(%eax)
334 je ..B1.29
335..B1.28:
336 fldcw 30(%esp)
337..B1.29:
338 addl $52, %esp
339 popl %ebx
340 popl %edi
341 popl %esi
342 movl %ebp, %esp
343 popl %ebp
344 ret
345..B1.30:
346 fldt 84+_SP@GOTOFF(%edi)
347 testl %ebx, %ebx
348 fmul %st(1), %st
349 fldt 72+_SP@GOTOFF(%edi)
350 fmul %st(2), %st
351 fldt 60+_SP@GOTOFF(%edi)
352 movl 32(%esp), %eax
353 faddp %st, %st(2)
354 fxch %st(1)
355 fmul %st(2), %st
356 fldt 48+_SP@GOTOFF(%edi)
357 faddp %st, %st(2)
358 fxch %st(1)
359 fmul %st(2), %st
360 fldt 36+_SP@GOTOFF(%edi)
361 faddp %st, %st(2)
362 fxch %st(1)
363 fmul %st(2), %st
364 fldt 24+_SP@GOTOFF(%edi)
365 faddp %st, %st(2)
366 fxch %st(1)
367 fmul %st(2), %st
368 fldt 12+_SP@GOTOFF(%edi)
369 faddp %st, %st(2)
370 fxch %st(1)
371 fmulp %st, %st(2)
372 fldt _SP@GOTOFF(%edi)
373 faddp %st, %st(1)
374 fmulp %st, %st(2)
375 faddp %st, %st(1)
376 fldl _ones@GOTOFF(%edi,%esi,8)
377 fmulp %st, %st(2)
378 fmul %st(1), %st
379 faddp %st, %st(1)
380 fstpl 8(%eax)
381 je ..B1.32
382..B1.31:
383 fldcw 30(%esp)
384..B1.32:
385 addl $52, %esp
386 popl %ebx
387 popl %edi
388 popl %esi
389 movl %ebp, %esp
390 popl %ebp
391 ret
392..B1.33:
393 testb $1, 36(%esp)
394 je ..B1.41
395..B1.34:
396 fld %st(0)
397 testb $2, %dl
398 fmul %st(1), %st
399 fld %st(0)
400 fmul %st(1), %st
401 je ..B1.38
402..B1.35:
403 fldt 84+_SP@GOTOFF(%edi)
404 testl %ebx, %ebx
405 fmul %st(1), %st
406 fldt 72+_SP@GOTOFF(%edi)
407 fmul %st(2), %st
408 fldt 60+_SP@GOTOFF(%edi)
409 faddp %st, %st(2)
410 fxch %st(1)
411 fmul %st(2), %st
412 fldt 48+_SP@GOTOFF(%edi)
413 faddp %st, %st(2)
414 fxch %st(1)
415 fmul %st(2), %st
416 fldt 36+_SP@GOTOFF(%edi)
417 faddp %st, %st(2)
418 fxch %st(1)
419 fmul %st(2), %st
420 fldt 24+_SP@GOTOFF(%edi)
421 faddp %st, %st(2)
422 fxch %st(1)
423 fmul %st(2), %st
424 fldt 12+_SP@GOTOFF(%edi)
425 faddp %st, %st(2)
426 fxch %st(1)
427 fmulp %st, %st(2)
428 fldt _SP@GOTOFF(%edi)
429 faddp %st, %st(1)
430 fmulp %st, %st(2)
431 faddp %st, %st(1)
432 fldl _ones@GOTOFF(%edi,%eax,8)
433 fmulp %st, %st(2)
434 fmul %st(1), %st
435 movl 32(%esp), %eax
436 faddp %st, %st(1)
437 fstpl (%eax)
438 je ..B1.37
439..B1.36:
440 fldcw 30(%esp)
441..B1.37:
442 addl $52, %esp
443 popl %ebx
444 popl %edi
445 popl %esi
446 movl %ebp, %esp
447 popl %ebp
448 ret
449..B1.38:
450 fstp %st(2)
451 fldt 84+_CP@GOTOFF(%edi)
452 testl %ebx, %ebx
453 fmul %st(2), %st
454 fldt 72+_CP@GOTOFF(%edi)
455 fmul %st(3), %st
456 fldt 60+_CP@GOTOFF(%edi)
457 faddp %st, %st(2)
458 fxch %st(1)
459 fmul %st(3), %st
460 fldt 48+_CP@GOTOFF(%edi)
461 faddp %st, %st(2)
462 fxch %st(1)
463 fmul %st(3), %st
464 fldt 36+_CP@GOTOFF(%edi)
465 faddp %st, %st(2)
466 fxch %st(1)
467 fmul %st(3), %st
468 fldt 24+_CP@GOTOFF(%edi)
469 faddp %st, %st(2)
470 fxch %st(1)
471 fmul %st(3), %st
472 fldt 12+_CP@GOTOFF(%edi)
473 faddp %st, %st(2)
474 fxch %st(1)
475 fmulp %st, %st(3)
476 fldt _CP@GOTOFF(%edi)
477 faddp %st, %st(1)
478 fmulp %st, %st(1)
479 faddp %st, %st(1)
480 fldl _ones@GOTOFF(%edi,%eax,8)
481 fmul %st, %st(1)
482 movl 32(%esp), %eax
483 faddp %st, %st(1)
484 fstpl (%eax)
485 je ..B1.40
486..B1.39:
487 fldcw 30(%esp)
488..B1.40:
489 addl $52, %esp
490 popl %ebx
491 popl %edi
492 popl %esi
493 movl %ebp, %esp
494 popl %ebp
495 ret
496..B1.41:
497 fstp %st(0)
498 addl $52, %esp
499 popl %ebx
500 popl %edi
501 popl %esi
502 movl %ebp, %esp
503 popl %ebp
504 ret
505..B1.42:
506 xorl %ebx, %ebx
507 jmp ..B1.8
508..B1.43:
509 xorl %ebx, %ebx
510 jmp ..B1.15
511 .align 16,0x90
512 .type __libm_sincos_huge,@function
513 .size __libm_sincos_huge,.-__libm_sincos_huge
514 .data
515# -- End __libm_sincos_huge
516 .section .rodata, "a"
517 .align 16
518 .align 16
519.L_2il0floatpacket.0:
520 .long 0xffffffff,0x7fffffff,0x00000000,0x00000000
521 .type .L_2il0floatpacket.0,@object
522 .size .L_2il0floatpacket.0,16
523 .align 16
524_Pi4Inv:
525 .long 1841940611
526 .long 1072979760
527 .type _Pi4Inv,@object
528 .size _Pi4Inv,8
529 .space 8, 0x00 # pad
530 .align 16
531_Pi4x3:
532 .long 1413754880
533 .long 3219726843
534 .long 993632256
535 .long 1027030475
536 .long 3773204808
537 .long 3129236486
538 .type _Pi4x3,@object
539 .size _Pi4x3,24
540 .space 8, 0x00 # pad
541 .align 16
542_Pi4x4:
543 .long 1413480448
544 .long 3219726843
545 .long 442499072
546 .long 3183522913
547 .long 771751936
548 .long 3146979722
549 .long 622873025
550 .long 3110831002
551 .type _Pi4x4,@object
552 .size _Pi4x4,32
553 .align 16
554_SP:
555 .word 43691
556 .word 43690
557 .word 43690
558 .word 43690
559 .word 49148
560 .word 0
561 .word 34951
562 .word 34952
563 .word 34952
564 .word 34952
565 .word 16376
566 .word 0
567 .word 50471
568 .word 3328
569 .word 208
570 .word 53261
571 .word 49138
572 .word 0
573 .word 17910
574 .word 46614
575 .word 7466
576 .word 47343
577 .word 16364
578 .word 0
579 .word 33371
580 .word 14743
581 .word 11071
582 .word 55090
583 .word 49125
584 .word 0
585 .word 48947
586 .word 35764
587 .word 12250
588 .word 45202
589 .word 16350
590 .word 0
591 .word 17574
592 .word 60698
593 .word 10735
594 .word 55102
595 .word 49110
596 .word 0
597 .word 34320
598 .word 12415
599 .word 25249
600 .word 51489
601 .word 16334
602 .word 0
603 .type _SP,@object
604 .size _SP,96
605 .align 16
606_CP:
607 .word 0
608 .word 0
609 .word 0
610 .word 32768
611 .word 49150
612 .word 0
613 .word 43685
614 .word 43690
615 .word 43690
616 .word 43690
617 .word 16378
618 .word 0
619 .word 39983
620 .word 2912
621 .word 24758
622 .word 46603
623 .word 49141
624 .word 0
625 .word 61476
626 .word 3244
627 .word 208
628 .word 53261
629 .word 16367
630 .word 0
631 .word 1022
632 .word 16229
633 .word 32187
634 .word 37874
635 .word 49129
636 .word 0
637 .word 55373
638 .word 44526
639 .word 50840
640 .word 36726
641 .word 16354
642 .word 0
643 .word 55994
644 .word 65145
645 .word 59958
646 .word 51657
647 .word 49114
648 .word 0
649 .word 15046
650 .word 2976
651 .word 1998
652 .word 54661
653 .word 16338
654 .word 0
655 .type _CP,@object
656 .size _CP,96
657 .align 16
658_ones:
659 .long 0
660 .long 1072693248
661 .long 0
662 .long 3220176896
663 .type _ones,@object
664 .size _ones,16
665 .data
666 .hidden __libm_reduce_pi04l
667 .section .note.GNU-stack, ""
668# End