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