1/* 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 1301