blob: 2f93a34bb9130864a805405a4eebd01f083a04b9 [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/******************************************************************************/
32// ALGORITHM DESCRIPTION
33// ---------------------
34//
35// 1. RANGE REDUCTION
36//
37// We perform an initial range reduction from X to r with
38//
39// X =~= N * pi/32 + r
40//
41// so that |r| <= pi/64 + epsilon. We restrict inputs to those
42// where |N| <= 932560. Beyond this, the range reduction is
43// insufficiently accurate. For extremely small inputs,
44// denormalization can occur internally, impacting performance.
45// This means that the main path is actually only taken for
46// 2^-252 <= |X| < 90112.
47//
48// To avoid branches, we perform the range reduction to full
49// accuracy each time.
50//
51// X - N * (P_1 + P_2 + P_3)
52//
53// where P_1 and P_2 are 32-bit numbers (so multiplication by N
54// is exact) and P_3 is a 53-bit number. Together, these
55// approximate pi well enough for all cases in the restricted
56// range.
57//
58// The main reduction sequence is:
59//
60// y = 32/pi * x
61// N = integer(y)
62// (computed by adding and subtracting off SHIFTER)
63//
64// m_1 = N * P_1
65// m_2 = N * P_2
66// r_1 = x - m_1
67// r = r_1 - m_2
68// (this r can be used for most of the calculation)
69//
70// c_1 = r_1 - r
71// m_3 = N * P_3
72// c_2 = c_1 - m_2
73// c = c_2 - m_3
74//
75// 2. MAIN ALGORITHM
76//
77// The algorithm uses a table lookup based on B = M * pi / 32
78// where M = N mod 64. The stored values are:
79// sigma closest power of 2 to cos(B)
80// C_hl 53-bit cos(B) - sigma
81// S_hi + S_lo 2 * 53-bit sin(B)
82//
83// The computation is organized as follows:
84//
85// sin(B + r + c) = [sin(B) + sigma * r] +
86// r * (cos(B) - sigma) +
87// sin(B) * [cos(r + c) - 1] +
88// cos(B) * [sin(r + c) - r]
89//
90// which is approximately:
91//
92// [S_hi + sigma * r] +
93// C_hl * r +
94// S_lo + S_hi * [(cos(r) - 1) - r * c] +
95// (C_hl + sigma) * [(sin(r) - r) + c]
96//
97// and this is what is actually computed. We separate this sum
98// into four parts:
99//
100// hi + med + pols + corr
101//
102// where
103//
104// hi = S_hi + sigma r
105// med = C_hl * r
106// pols = S_hi * (cos(r) - 1) + (C_hl + sigma) * (sin(r) - r)
107// corr = S_lo + c * ((C_hl + sigma) - S_hi * r)
108//
109// 3. POLYNOMIAL
110//
111// The polynomial S_hi * (cos(r) - 1) + (C_hl + sigma) *
112// (sin(r) - r) can be rearranged freely, since it is quite
113// small, so we exploit parallelism to the fullest.
114//
115// psc4 = SC_4 * r_1
116// msc4 = psc4 * r
117// r2 = r * r
118// msc2 = SC_2 * r2
119// r4 = r2 * r2
120// psc3 = SC_3 + msc4
121// psc1 = SC_1 + msc2
122// msc3 = r4 * psc3
123// sincospols = psc1 + msc3
124// pols = sincospols *
125// <S_hi * r^2 | (C_hl + sigma) * r^3>
126//
127// 4. CORRECTION TERM
128//
129// This is where the "c" component of the range reduction is
130// taken into account; recall that just "r" is used for most of
131// the calculation.
132//
133// -c = m_3 - c_2
134// -d = S_hi * r - (C_hl + sigma)
135// corr = -c * -d + S_lo
136//
137// 5. COMPENSATED SUMMATIONS
138//
139// The two successive compensated summations add up the high
140// and medium parts, leaving just the low parts to add up at
141// the end.
142//
143// rs = sigma * r
144// res_int = S_hi + rs
145// k_0 = S_hi - res_int
146// k_2 = k_0 + rs
147// med = C_hl * r
148// res_hi = res_int + med
149// k_1 = res_int - res_hi
150// k_3 = k_1 + med
151//
152// 6. FINAL SUMMATION
153//
154// We now add up all the small parts:
155//
156// res_lo = pols(hi) + pols(lo) + corr + k_1 + k_3
157//
158// Now the overall result is just:
159//
160// res_hi + res_lo
161//
162// 7. SMALL ARGUMENTS
163//
164// If |x| < SNN (SNN meaning the smallest normal number), we
165// simply perform 0.1111111 cdots 1111 * x. For SNN <= |x|, we
166// do 2^-55 * (2^55 * x - x).
167//
168// Special cases:
169// sin(NaN) = quiet NaN, and raise invalid exception
170// sin(INF) = NaN and raise invalid exception
171// sin(+/-0) = +/-0
172//
173/******************************************************************************/
174
175#include <private/bionic_asm.h>
176# -- Begin sin
177ENTRY(sin)
178# parameter 1: %xmm0
179..B1.1:
180..___tag_value_sin.1:
181 pushq %rbx
182..___tag_value_sin.3:
183 subq $16, %rsp
184..___tag_value_sin.5:
185 movsd %xmm0, 8(%rsp)
186..B1.2:
187 movl 12(%rsp), %eax
188 movq PI32INV(%rip), %xmm1
189 movq SHIFTER(%rip), %xmm2
190 andl $2147418112, %eax
191 subl $808452096, %eax
192 cmpl $281346048, %eax
193 ja .L_2TAG_PACKET_0.0.1
194 mulsd %xmm0, %xmm1
195 movapd ONEHALF(%rip), %xmm5
196 movq SIGN_MASK(%rip), %xmm4
197 andpd %xmm0, %xmm4
198 orps %xmm4, %xmm5
199 addpd %xmm5, %xmm1
200 cvttsd2si %xmm1, %edx
201 cvtsi2sd %edx, %xmm1
202 movapd P_2(%rip), %xmm6
203 movq $0x3fb921fb54400000, %r8
204 movd %r8, %xmm3
205 movapd SC_4(%rip), %xmm5
206 pshufd $68, %xmm0, %xmm4
207 mulsd %xmm1, %xmm3
208 movddup %xmm1, %xmm1
209 andl $63, %edx
210 shll $5, %edx
211 lea Ctable(%rip), %rax
212 addq %rdx, %rax
213 mulpd %xmm1, %xmm6
214 mulsd P_3(%rip), %xmm1
215 subsd %xmm3, %xmm4
216 movq 8(%rax), %xmm7
217 subsd %xmm3, %xmm0
218 movddup %xmm4, %xmm3
219 subsd %xmm6, %xmm4
220 pshufd $68, %xmm0, %xmm0
221 movapd (%rax), %xmm2
222 mulpd %xmm0, %xmm5
223 subpd %xmm6, %xmm0
224 mulsd %xmm4, %xmm7
225 subsd %xmm4, %xmm3
226 mulpd %xmm0, %xmm5
227 mulpd %xmm0, %xmm0
228 subsd %xmm6, %xmm3
229 movapd SC_2(%rip), %xmm6
230 subsd %xmm3, %xmm1
231 movq 24(%rax), %xmm3
232 addsd %xmm3, %xmm2
233 subsd %xmm2, %xmm7
234 mulsd %xmm4, %xmm2
235 mulpd %xmm0, %xmm6
236 mulsd %xmm4, %xmm3
237 mulpd %xmm0, %xmm2
238 mulpd %xmm0, %xmm0
239 addpd SC_3(%rip), %xmm5
240 mulsd (%rax), %xmm4
241 addpd SC_1(%rip), %xmm6
242 mulpd %xmm0, %xmm5
243 movq %xmm3, %xmm0
244 addsd 8(%rax), %xmm3
245 mulpd %xmm7, %xmm1
246 movq %xmm4, %xmm7
247 addsd %xmm3, %xmm4
248 addpd %xmm5, %xmm6
249 movq 8(%rax), %xmm5
250 subsd %xmm3, %xmm5
251 subsd %xmm4, %xmm3
252 addsd 16(%rax), %xmm1
253 mulpd %xmm2, %xmm6
254 addsd %xmm0, %xmm5
255 addsd %xmm7, %xmm3
256 addsd %xmm5, %xmm1
257 addsd %xmm3, %xmm1
258 addsd %xmm6, %xmm1
259 unpckhpd %xmm6, %xmm6
260 movq %xmm4, %xmm0
261 addsd %xmm6, %xmm1
262 addsd %xmm1, %xmm0
263 jmp ..B1.4
264.L_2TAG_PACKET_0.0.1:
265 jg .L_2TAG_PACKET_1.0.1
266 shrl $20, %eax
267 cmpw $3325, %ax
268 jne .L_2TAG_PACKET_2.0.1
269 mulsd ALL_ONES(%rip), %xmm0
270 jmp ..B1.4
271.L_2TAG_PACKET_2.0.1:
272 movq TWO_POW_55(%rip), %xmm3
273 mulsd %xmm0, %xmm3
274 subsd %xmm0, %xmm3
275 mulsd TWO_POW_M55(%rip), %xmm3
276 jmp ..B1.4
277.L_2TAG_PACKET_1.0.1:
278 pextrw $3, %xmm0, %eax
279 andl $32752, %eax
280 cmpl $32752, %eax
281 je .L_2TAG_PACKET_3.0.1
282 pextrw $3, %xmm0, %ecx
283 andl $32752, %ecx
284 subl $16224, %ecx
285 shrl $7, %ecx
286 andl $65532, %ecx
287 lea PI_INV_TABLE(%rip), %r11
288 addq %r11, %rcx
289 movd %xmm0, %rax
290 movl 20(%rcx), %r10d
291 movl 24(%rcx), %r8d
292 movl %eax, %edx
293 shrq $21, %rax
294 orl $-2147483648, %eax
295 shrl $11, %eax
296 movl %r10d, %r9d
297 imulq %rdx, %r10
298 imulq %rax, %r9
299 imulq %rax, %r8
300 movl 16(%rcx), %esi
301 movl 12(%rcx), %edi
302 movl %r10d, %r11d
303 shrq $32, %r10
304 addq %r10, %r9
305 addq %r8, %r11
306 movl %r11d, %r8d
307 shrq $32, %r11
308 addq %r11, %r9
309 movl %esi, %r10d
310 imulq %rdx, %rsi
311 imulq %rax, %r10
312 movl %edi, %r11d
313 imulq %rdx, %rdi
314 movl %esi, %ebx
315 shrq $32, %rsi
316 addq %rbx, %r9
317 movl %r9d, %ebx
318 shrq $32, %r9
319 addq %rsi, %r10
320 addq %r9, %r10
321 shlq $32, %rbx
322 orq %rbx, %r8
323 imulq %rax, %r11
324 movl 8(%rcx), %r9d
325 movl 4(%rcx), %esi
326 movl %edi, %ebx
327 shrq $32, %rdi
328 addq %rbx, %r10
329 movl %r10d, %ebx
330 shrq $32, %r10
331 addq %rdi, %r11
332 addq %r10, %r11
333 movq %r9, %rdi
334 imulq %rdx, %r9
335 imulq %rax, %rdi
336 movl %r9d, %r10d
337 shrq $32, %r9
338 addq %r10, %r11
339 movl %r11d, %r10d
340 shrq $32, %r11
341 addq %r9, %rdi
342 addq %r11, %rdi
343 movq %rsi, %r9
344 imulq %rdx, %rsi
345 imulq %rax, %r9
346 shlq $32, %r10
347 orq %rbx, %r10
348 movl (%rcx), %eax
349 movl %esi, %r11d
350 shrq $32, %rsi
351 addq %r11, %rdi
352 movl %edi, %r11d
353 shrq $32, %rdi
354 addq %rsi, %r9
355 addq %rdi, %r9
356 imulq %rax, %rdx
357 pextrw $3, %xmm0, %ebx
358 lea PI_INV_TABLE(%rip), %rdi
359 subq %rdi, %rcx
360 addl %ecx, %ecx
361 addl %ecx, %ecx
362 addl %ecx, %ecx
363 addl $19, %ecx
364 movl $32768, %esi
365 andl %ebx, %esi
366 shrl $4, %ebx
367 andl $2047, %ebx
368 subl $1023, %ebx
369 subl %ebx, %ecx
370 addq %rdx, %r9
371 movl %ecx, %edx
372 addl $32, %edx
373 cmpl $1, %ecx
374 jl .L_2TAG_PACKET_4.0.1
375 negl %ecx
376 addl $29, %ecx
377 shll %cl, %r9d
378 movl %r9d, %edi
379 andl $536870911, %r9d
380 testl $268435456, %r9d
381 jne .L_2TAG_PACKET_5.0.1
382 shrl %cl, %r9d
383 movl $0, %ebx
384 shlq $32, %r9
385 orq %r11, %r9
386.L_2TAG_PACKET_6.0.1:
387.L_2TAG_PACKET_7.0.1:
388 cmpq $0, %r9
389 je .L_2TAG_PACKET_8.0.1
390.L_2TAG_PACKET_9.0.1:
391 bsr %r9, %r11
392 movl $29, %ecx
393 subl %r11d, %ecx
394 jle .L_2TAG_PACKET_10.0.1
395 shlq %cl, %r9
396 movq %r10, %rax
397 shlq %cl, %r10
398 addl %ecx, %edx
399 negl %ecx
400 addl $64, %ecx
401 shrq %cl, %rax
402 shrq %cl, %r8
403 orq %rax, %r9
404 orq %r8, %r10
405.L_2TAG_PACKET_11.0.1:
406 cvtsi2sdq %r9, %xmm0
407 shrq $1, %r10
408 cvtsi2sdq %r10, %xmm3
409 xorpd %xmm4, %xmm4
410 shll $4, %edx
411 negl %edx
412 addl $16368, %edx
413 orl %esi, %edx
414 xorl %ebx, %edx
415 pinsrw $3, %edx, %xmm4
416 movq PI_4(%rip), %xmm2
417 movq 8+PI_4(%rip), %xmm6
418 xorpd %xmm5, %xmm5
419 subl $1008, %edx
420 pinsrw $3, %edx, %xmm5
421 mulsd %xmm4, %xmm0
422 shll $16, %esi
423 sarl $31, %esi
424 mulsd %xmm5, %xmm3
425 movq %xmm0, %xmm1
426 mulsd %xmm2, %xmm0
427 shrl $29, %edi
428 addsd %xmm3, %xmm1
429 mulsd %xmm2, %xmm3
430 addl %esi, %edi
431 xorl %esi, %edi
432 mulsd %xmm1, %xmm6
433 movl %edi, %eax
434 addsd %xmm3, %xmm6
435 movq %xmm0, %xmm2
436 addsd %xmm6, %xmm0
437 subsd %xmm0, %xmm2
438 addsd %xmm2, %xmm6
439.L_2TAG_PACKET_12.0.1:
440 movq PI32INV(%rip), %xmm1
441 mulsd %xmm0, %xmm1
442 movq ONEHALF(%rip), %xmm5
443 movq SIGN_MASK(%rip), %xmm4
444 andpd %xmm0, %xmm4
445 orps %xmm4, %xmm5
446 addpd %xmm5, %xmm1
447 cvttsd2si %xmm1, %edx
448 cvtsi2sd %edx, %xmm1
449 movq P_1(%rip), %xmm3
450 movapd P_2(%rip), %xmm2
451 mulsd %xmm1, %xmm3
452 unpcklpd %xmm1, %xmm1
453 shll $3, %eax
454 addl $1865216, %edx
455 movq %xmm0, %xmm4
456 addl %eax, %edx
457 andl $63, %edx
458 movapd SC_4(%rip), %xmm5
459 lea Ctable(%rip), %rax
460 shll $5, %edx
461 addq %rdx, %rax
462 mulpd %xmm1, %xmm2
463 subsd %xmm3, %xmm0
464 mulsd P_3(%rip), %xmm1
465 subsd %xmm3, %xmm4
466 movq 8(%rax), %xmm7
467 unpcklpd %xmm0, %xmm0
468 movq %xmm4, %xmm3
469 subsd %xmm2, %xmm4
470 mulpd %xmm0, %xmm5
471 subpd %xmm2, %xmm0
472 mulsd %xmm4, %xmm7
473 subsd %xmm4, %xmm3
474 mulpd %xmm0, %xmm5
475 mulpd %xmm0, %xmm0
476 subsd %xmm2, %xmm3
477 movapd (%rax), %xmm2
478 subsd %xmm3, %xmm1
479 movq 24(%rax), %xmm3
480 addsd %xmm3, %xmm2
481 subsd %xmm2, %xmm7
482 subsd %xmm6, %xmm1
483 movapd SC_2(%rip), %xmm6
484 mulsd %xmm4, %xmm2
485 mulpd %xmm0, %xmm6
486 mulsd %xmm4, %xmm3
487 mulpd %xmm0, %xmm2
488 mulpd %xmm0, %xmm0
489 addpd SC_3(%rip), %xmm5
490 mulsd (%rax), %xmm4
491 addpd SC_1(%rip), %xmm6
492 mulpd %xmm0, %xmm5
493 movq %xmm3, %xmm0
494 addsd 8(%rax), %xmm3
495 mulpd %xmm7, %xmm1
496 movq %xmm4, %xmm7
497 addsd %xmm3, %xmm4
498 addpd %xmm5, %xmm6
499 movq 8(%rax), %xmm5
500 subsd %xmm3, %xmm5
501 subsd %xmm4, %xmm3
502 addsd 16(%rax), %xmm1
503 mulpd %xmm2, %xmm6
504 addsd %xmm0, %xmm5
505 addsd %xmm7, %xmm3
506 addsd %xmm5, %xmm1
507 addsd %xmm3, %xmm1
508 addsd %xmm6, %xmm1
509 unpckhpd %xmm6, %xmm6
510 movq %xmm4, %xmm0
511 addsd %xmm6, %xmm1
512 addsd %xmm1, %xmm0
513 jmp ..B1.4
514.L_2TAG_PACKET_8.0.1:
515 addl $64, %edx
516 movq %r10, %r9
517 movq %r8, %r10
518 movq $0, %r8
519 cmpq $0, %r9
520 jne .L_2TAG_PACKET_9.0.1
521 addl $64, %edx
522 movq %r10, %r9
523 movq %r8, %r10
524 cmpq $0, %r9
525 jne .L_2TAG_PACKET_9.0.1
526 xorpd %xmm0, %xmm0
527 xorpd %xmm6, %xmm6
528 jmp .L_2TAG_PACKET_12.0.1
529.L_2TAG_PACKET_10.0.1:
530 je .L_2TAG_PACKET_11.0.1
531 negl %ecx
532 shrq %cl, %r10
533 movq %r9, %rax
534 shrq %cl, %r9
535 subl %ecx, %edx
536 negl %ecx
537 addl $64, %ecx
538 shlq %cl, %rax
539 orq %rax, %r10
540 jmp .L_2TAG_PACKET_11.0.1
541.L_2TAG_PACKET_4.0.1:
542 negl %ecx
543 shlq $32, %r9
544 orq %r11, %r9
545 shlq %cl, %r9
546 movq %r9, %rdi
547 testl $-2147483648, %r9d
548 jne .L_2TAG_PACKET_13.0.1
549 shrl %cl, %r9d
550 movl $0, %ebx
551 shrq $3, %rdi
552 jmp .L_2TAG_PACKET_7.0.1
553.L_2TAG_PACKET_5.0.1:
554 shrl %cl, %r9d
555 movl $536870912, %ebx
556 shrl %cl, %ebx
557 shlq $32, %r9
558 orq %r11, %r9
559 shlq $32, %rbx
560 addl $536870912, %edi
561 movq $0, %rcx
562 movq $0, %r11
563 subq %r8, %rcx
564 sbbq %r10, %r11
565 sbbq %r9, %rbx
566 movq %rcx, %r8
567 movq %r11, %r10
568 movq %rbx, %r9
569 movl $32768, %ebx
570 jmp .L_2TAG_PACKET_6.0.1
571.L_2TAG_PACKET_13.0.1:
572 shrl %cl, %r9d
573 movq $0x100000000, %rbx
574 shrq %cl, %rbx
575 movq $0, %rcx
576 movq $0, %r11
577 subq %r8, %rcx
578 sbbq %r10, %r11
579 sbbq %r9, %rbx
580 movq %rcx, %r8
581 movq %r11, %r10
582 movq %rbx, %r9
583 movl $32768, %ebx
584 shrq $3, %rdi
585 addl $536870912, %edi
586 jmp .L_2TAG_PACKET_7.0.1
587.L_2TAG_PACKET_3.0.1:
588 movq 8(%rsp), %xmm0
589 mulsd NEG_ZERO(%rip), %xmm0
590 movq %xmm0, (%rsp)
591.L_2TAG_PACKET_14.0.1:
592..B1.4:
593 addq $16, %rsp
594..___tag_value_sin.6:
595 popq %rbx
596..___tag_value_sin.8:
597 ret
598..___tag_value_sin.9:
599END(sin)
600# -- End sin
601 .section .rodata, "a"
602 .align 16
603 .align 16
604ONEHALF:
605 .long 0
606 .long 1071644672
607 .long 0
608 .long 1071644672
609 .type ONEHALF,@object
610 .size ONEHALF,16
611 .align 16
612P_2:
613 .long 442499072
614 .long 1032893537
615 .long 442499072
616 .long 1032893537
617 .type P_2,@object
618 .size P_2,16
619 .align 16
620SC_4:
621 .long 2773927732
622 .long 1053236707
623 .long 436314138
624 .long 1056571808
625 .type SC_4,@object
626 .size SC_4,16
627 .align 16
628Ctable:
629 .long 0
630 .long 0
631 .long 0
632 .long 0
633 .long 0
634 .long 0
635 .long 0
636 .long 1072693248
637 .long 393047345
638 .long 3212032302
639 .long 3156849708
640 .long 1069094822
641 .long 3758096384
642 .long 3158189848
643 .long 0
644 .long 1072693248
645 .long 18115067
646 .long 3214126342
647 .long 1013556747
648 .long 1070135480
649 .long 3221225472
650 .long 3160567065
651 .long 0
652 .long 1072693248
653 .long 2476548698
654 .long 3215330282
655 .long 785751814
656 .long 1070765062
657 .long 2684354560
658 .long 3161838221
659 .long 0
660 .long 1072693248
661 .long 2255197647
662 .long 3216211105
663 .long 2796464483
664 .long 1071152610
665 .long 3758096384
666 .long 3160878317
667 .long 0
668 .long 1072693248
669 .long 1945768569
670 .long 3216915048
671 .long 939980347
672 .long 1071524701
673 .long 536870912
674 .long 1012796809
675 .long 0
676 .long 1072693248
677 .long 1539668340
678 .long 3217396327
679 .long 967731400
680 .long 1071761211
681 .long 536870912
682 .long 1015752157
683 .long 0
684 .long 1072693248
685 .long 1403757309
686 .long 3217886718
687 .long 621354454
688 .long 1071926515
689 .long 536870912
690 .long 1013450602
691 .long 0
692 .long 1072693248
693 .long 2583490354
694 .long 1070236281
695 .long 1719614413
696 .long 1072079006
697 .long 536870912
698 .long 3163282740
699 .long 0
700 .long 1071644672
701 .long 2485417816
702 .long 1069626316
703 .long 1796544321
704 .long 1072217216
705 .long 536870912
706 .long 3162686945
707 .long 0
708 .long 1071644672
709 .long 2598800519
710 .long 1068266419
711 .long 688824739
712 .long 1072339814
713 .long 3758096384
714 .long 1010431536
715 .long 0
716 .long 1071644672
717 .long 2140183630
718 .long 3214756396
719 .long 4051746225
720 .long 1072445618
721 .long 2147483648
722 .long 3161907377
723 .long 0
724 .long 1071644672
725 .long 1699043957
726 .long 3216902261
727 .long 3476196678
728 .long 1072533611
729 .long 536870912
730 .long 1014257638
731 .long 0
732 .long 1071644672
733 .long 1991047213
734 .long 1067753521
735 .long 1455828442
736 .long 1072602945
737 .long 3758096384
738 .long 1015505073
739 .long 0
740 .long 1070596096
741 .long 240740309
742 .long 3215727903
743 .long 3489094832
744 .long 1072652951
745 .long 536870912
746 .long 1014325783
747 .long 0
748 .long 1070596096
749 .long 257503056
750 .long 3214647653
751 .long 2748392742
752 .long 1072683149
753 .long 1073741824
754 .long 3163061750
755 .long 0
756 .long 1069547520
757 .long 0
758 .long 0
759 .long 0
760 .long 1072693248
761 .long 0
762 .long 0
763 .long 0
764 .long 0
765 .long 257503056
766 .long 1067164005
767 .long 2748392742
768 .long 1072683149
769 .long 1073741824
770 .long 3163061750
771 .long 0
772 .long 3217031168
773 .long 240740309
774 .long 1068244255
775 .long 3489094832
776 .long 1072652951
777 .long 536870912
778 .long 1014325783
779 .long 0
780 .long 3218079744
781 .long 1991047213
782 .long 3215237169
783 .long 1455828442
784 .long 1072602945
785 .long 3758096384
786 .long 1015505073
787 .long 0
788 .long 3218079744
789 .long 1699043957
790 .long 1069418613
791 .long 3476196678
792 .long 1072533611
793 .long 536870912
794 .long 1014257638
795 .long 0
796 .long 3219128320
797 .long 2140183630
798 .long 1067272748
799 .long 4051746225
800 .long 1072445618
801 .long 2147483648
802 .long 3161907377
803 .long 0
804 .long 3219128320
805 .long 2598800519
806 .long 3215750067
807 .long 688824739
808 .long 1072339814
809 .long 3758096384
810 .long 1010431536
811 .long 0
812 .long 3219128320
813 .long 2485417816
814 .long 3217109964
815 .long 1796544321
816 .long 1072217216
817 .long 536870912
818 .long 3162686945
819 .long 0
820 .long 3219128320
821 .long 2583490354
822 .long 3217719929
823 .long 1719614413
824 .long 1072079006
825 .long 536870912
826 .long 3163282740
827 .long 0
828 .long 3219128320
829 .long 1403757309
830 .long 1070403070
831 .long 621354454
832 .long 1071926515
833 .long 536870912
834 .long 1013450602
835 .long 0
836 .long 3220176896
837 .long 1539668340
838 .long 1069912679
839 .long 967731400
840 .long 1071761211
841 .long 536870912
842 .long 1015752157
843 .long 0
844 .long 3220176896
845 .long 1945768569
846 .long 1069431400
847 .long 939980347
848 .long 1071524701
849 .long 536870912
850 .long 1012796809
851 .long 0
852 .long 3220176896
853 .long 2255197647
854 .long 1068727457
855 .long 2796464483
856 .long 1071152610
857 .long 3758096384
858 .long 3160878317
859 .long 0
860 .long 3220176896
861 .long 2476548698
862 .long 1067846634
863 .long 785751814
864 .long 1070765062
865 .long 2684354560
866 .long 3161838221
867 .long 0
868 .long 3220176896
869 .long 18115067
870 .long 1066642694
871 .long 1013556747
872 .long 1070135480
873 .long 3221225472
874 .long 3160567065
875 .long 0
876 .long 3220176896
877 .long 393047345
878 .long 1064548654
879 .long 3156849708
880 .long 1069094822
881 .long 3758096384
882 .long 3158189848
883 .long 0
884 .long 3220176896
885 .long 0
886 .long 0
887 .long 0
888 .long 0
889 .long 0
890 .long 0
891 .long 0
892 .long 3220176896
893 .long 393047345
894 .long 1064548654
895 .long 3156849708
896 .long 3216578470
897 .long 3758096384
898 .long 1010706200
899 .long 0
900 .long 3220176896
901 .long 18115067
902 .long 1066642694
903 .long 1013556747
904 .long 3217619128
905 .long 3221225472
906 .long 1013083417
907 .long 0
908 .long 3220176896
909 .long 2476548698
910 .long 1067846634
911 .long 785751814
912 .long 3218248710
913 .long 2684354560
914 .long 1014354573
915 .long 0
916 .long 3220176896
917 .long 2255197647
918 .long 1068727457
919 .long 2796464483
920 .long 3218636258
921 .long 3758096384
922 .long 1013394669
923 .long 0
924 .long 3220176896
925 .long 1945768569
926 .long 1069431400
927 .long 939980347
928 .long 3219008349
929 .long 536870912
930 .long 3160280457
931 .long 0
932 .long 3220176896
933 .long 1539668340
934 .long 1069912679
935 .long 967731400
936 .long 3219244859
937 .long 536870912
938 .long 3163235805
939 .long 0
940 .long 3220176896
941 .long 1403757309
942 .long 1070403070
943 .long 621354454
944 .long 3219410163
945 .long 536870912
946 .long 3160934250
947 .long 0
948 .long 3220176896
949 .long 2583490354
950 .long 3217719929
951 .long 1719614413
952 .long 3219562654
953 .long 536870912
954 .long 1015799092
955 .long 0
956 .long 3219128320
957 .long 2485417816
958 .long 3217109964
959 .long 1796544321
960 .long 3219700864
961 .long 536870912
962 .long 1015203297
963 .long 0
964 .long 3219128320
965 .long 2598800519
966 .long 3215750067
967 .long 688824739
968 .long 3219823462
969 .long 3758096384
970 .long 3157915184
971 .long 0
972 .long 3219128320
973 .long 2140183630
974 .long 1067272748
975 .long 4051746225
976 .long 3219929266
977 .long 2147483648
978 .long 1014423729
979 .long 0
980 .long 3219128320
981 .long 1699043957
982 .long 1069418613
983 .long 3476196678
984 .long 3220017259
985 .long 536870912
986 .long 3161741286
987 .long 0
988 .long 3219128320
989 .long 1991047213
990 .long 3215237169
991 .long 1455828442
992 .long 3220086593
993 .long 3758096384
994 .long 3162988721
995 .long 0
996 .long 3218079744
997 .long 240740309
998 .long 1068244255
999 .long 3489094832
1000 .long 3220136599
1001 .long 536870912
1002 .long 3161809431
1003 .long 0
1004 .long 3218079744
1005 .long 257503056
1006 .long 1067164005
1007 .long 2748392742
1008 .long 3220166797
1009 .long 1073741824
1010 .long 1015578102
1011 .long 0
1012 .long 3217031168
1013 .long 0
1014 .long 0
1015 .long 0
1016 .long 3220176896
1017 .long 0
1018 .long 0
1019 .long 0
1020 .long 0
1021 .long 257503056
1022 .long 3214647653
1023 .long 2748392742
1024 .long 3220166797
1025 .long 1073741824
1026 .long 1015578102
1027 .long 0
1028 .long 1069547520
1029 .long 240740309
1030 .long 3215727903
1031 .long 3489094832
1032 .long 3220136599
1033 .long 536870912
1034 .long 3161809431
1035 .long 0
1036 .long 1070596096
1037 .long 1991047213
1038 .long 1067753521
1039 .long 1455828442
1040 .long 3220086593
1041 .long 3758096384
1042 .long 3162988721
1043 .long 0
1044 .long 1070596096
1045 .long 1699043957
1046 .long 3216902261
1047 .long 3476196678
1048 .long 3220017259
1049 .long 536870912
1050 .long 3161741286
1051 .long 0
1052 .long 1071644672
1053 .long 2140183630
1054 .long 3214756396
1055 .long 4051746225
1056 .long 3219929266
1057 .long 2147483648
1058 .long 1014423729
1059 .long 0
1060 .long 1071644672
1061 .long 2598800519
1062 .long 1068266419
1063 .long 688824739
1064 .long 3219823462
1065 .long 3758096384
1066 .long 3157915184
1067 .long 0
1068 .long 1071644672
1069 .long 2485417816
1070 .long 1069626316
1071 .long 1796544321
1072 .long 3219700864
1073 .long 536870912
1074 .long 1015203297
1075 .long 0
1076 .long 1071644672
1077 .long 2583490354
1078 .long 1070236281
1079 .long 1719614413
1080 .long 3219562654
1081 .long 536870912
1082 .long 1015799092
1083 .long 0
1084 .long 1071644672
1085 .long 1403757309
1086 .long 3217886718
1087 .long 621354454
1088 .long 3219410163
1089 .long 536870912
1090 .long 3160934250
1091 .long 0
1092 .long 1072693248
1093 .long 1539668340
1094 .long 3217396327
1095 .long 967731400
1096 .long 3219244859
1097 .long 536870912
1098 .long 3163235805
1099 .long 0
1100 .long 1072693248
1101 .long 1945768569
1102 .long 3216915048
1103 .long 939980347
1104 .long 3219008349
1105 .long 536870912
1106 .long 3160280457
1107 .long 0
1108 .long 1072693248
1109 .long 2255197647
1110 .long 3216211105
1111 .long 2796464483
1112 .long 3218636258
1113 .long 3758096384
1114 .long 1013394669
1115 .long 0
1116 .long 1072693248
1117 .long 2476548698
1118 .long 3215330282
1119 .long 785751814
1120 .long 3218248710
1121 .long 2684354560
1122 .long 1014354573
1123 .long 0
1124 .long 1072693248
1125 .long 18115067
1126 .long 3214126342
1127 .long 1013556747
1128 .long 3217619128
1129 .long 3221225472
1130 .long 1013083417
1131 .long 0
1132 .long 1072693248
1133 .long 393047345
1134 .long 3212032302
1135 .long 3156849708
1136 .long 3216578470
1137 .long 3758096384
1138 .long 1010706200
1139 .long 0
1140 .long 1072693248
1141 .type Ctable,@object
1142 .size Ctable,2048
1143 .align 16
1144SC_2:
1145 .long 286331153
1146 .long 1065423121
1147 .long 1431655765
1148 .long 1067799893
1149 .type SC_2,@object
1150 .size SC_2,16
1151 .align 16
1152SC_3:
1153 .long 436314138
1154 .long 3207201184
1155 .long 381774871
1156 .long 3210133868
1157 .type SC_3,@object
1158 .size SC_3,16
1159 .align 16
1160SC_1:
1161 .long 1431655765
1162 .long 3217380693
1163 .long 0
1164 .long 3219128320
1165 .type SC_1,@object
1166 .size SC_1,16
1167 .align 16
1168PI_INV_TABLE:
1169 .long 0
1170 .long 0
1171 .long 2734261102
1172 .long 1313084713
1173 .long 4230436817
1174 .long 4113882560
1175 .long 3680671129
1176 .long 1011060801
1177 .long 4266746795
1178 .long 3736847713
1179 .long 3072618042
1180 .long 1112396512
1181 .long 105459434
1182 .long 164729372
1183 .long 4263373596
1184 .long 2972297022
1185 .long 3900847605
1186 .long 784024708
1187 .long 3919343654
1188 .long 3026157121
1189 .long 965858873
1190 .long 2203269620
1191 .long 2625920907
1192 .long 3187222587
1193 .long 536385535
1194 .long 3724908559
1195 .long 4012839307
1196 .long 1510632735
1197 .long 1832287951
1198 .long 667617719
1199 .long 1330003814
1200 .long 2657085997
1201 .long 1965537991
1202 .long 3957715323
1203 .long 1023883767
1204 .long 2320667370
1205 .long 1811636145
1206 .long 529358088
1207 .long 1443049542
1208 .long 4235946923
1209 .long 4040145953
1210 .type PI_INV_TABLE,@object
1211 .size PI_INV_TABLE,164
1212 .space 12, 0x00 # pad
1213 .align 16
1214PI_4:
1215 .long 1073741824
1216 .long 1072243195
1217 .long 407279769
1218 .long 1046758445
1219 .type PI_4,@object
1220 .size PI_4,16
1221 .align 8
1222PI32INV:
1223 .long 1841940611
1224 .long 1076125488
1225 .type PI32INV,@object
1226 .size PI32INV,8
1227 .align 8
1228SHIFTER:
1229 .long 0
1230 .long 1127743488
1231 .type SHIFTER,@object
1232 .size SHIFTER,8
1233 .align 8
1234SIGN_MASK:
1235 .long 0
1236 .long 2147483648
1237 .type SIGN_MASK,@object
1238 .size SIGN_MASK,8
1239 .align 8
1240P_3:
1241 .long 771977331
1242 .long 996350346
1243 .type P_3,@object
1244 .size P_3,8
1245 .align 8
1246ALL_ONES:
1247 .long 4294967295
1248 .long 1072693247
1249 .type ALL_ONES,@object
1250 .size ALL_ONES,8
1251 .align 8
1252TWO_POW_55:
1253 .long 0
1254 .long 1130364928
1255 .type TWO_POW_55,@object
1256 .size TWO_POW_55,8
1257 .align 8
1258TWO_POW_M55:
1259 .long 0
1260 .long 1015021568
1261 .type TWO_POW_M55,@object
1262 .size TWO_POW_M55,8
1263 .align 8
1264P_1:
1265 .long 1413480448
1266 .long 1069097467
1267 .type P_1,@object
1268 .size P_1,8
1269 .align 8
1270NEG_ZERO:
1271 .long 0
1272 .long 2147483648
1273 .type NEG_ZERO,@object
1274 .size NEG_ZERO,8
1275 .data
1276 .section .note.GNU-stack, ""
1277// -- Begin DWARF2 SEGMENT .eh_frame
1278 .section .eh_frame,"a",@progbits
1279.eh_frame_seg:
1280 .align 1
1281 .4byte 0x00000014
1282 .8byte 0x00527a0100000000
1283 .8byte 0x08070c1b01107801
1284 .4byte 0x00000190
1285 .4byte 0x0000002c
1286 .4byte 0x0000001c
1287 .4byte ..___tag_value_sin.1-.
1288 .4byte ..___tag_value_sin.9-..___tag_value_sin.1
1289 .2byte 0x0400
1290 .4byte ..___tag_value_sin.3-..___tag_value_sin.1
1291 .4byte 0x0283100e
1292 .byte 0x04
1293 .4byte ..___tag_value_sin.5-..___tag_value_sin.3
1294 .2byte 0x200e
1295 .byte 0x04
1296 .4byte ..___tag_value_sin.6-..___tag_value_sin.5
1297 .4byte 0x04c3100e
1298 .4byte ..___tag_value_sin.8-..___tag_value_sin.6
1299 .2byte 0x080e
1300# End