Home | History | Annotate | Download | only in x86_64
      1 /*
      2 Copyright (c) 2014, Intel Corporation
      3 All rights reserved.
      4 
      5 Redistribution and use in source and binary forms, with or without
      6 modification, are permitted provided that the following conditions 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 
     19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     20 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     21 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     22 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
     23 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     24 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     25 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
     26 ANY 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
     28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29 */
     30 
     31 /******************************************************************************/
     32 //                     ALGORITHM DESCRIPTION
     33 //                     ---------------------
     34 //
     35 // tanh(x)=(exp(x)-exp(-x))/(exp(x)+exp(-x))=(1-exp(-2*x))/(1+exp(-2*x))
     36 //
     37 // Let |x|=xH+xL (upper 26 bits, lower 27 bits)
     38 // log2(e) rounded to 26 bits (high part) plus a double precision low part is
     39 //         L2EH+L2EL (upper 26, lower 53 bits)
     40 //
     41 // Let xH*L2EH=k+f+r`, where (k+f)*2^8*2=int(xH*L2EH*2^9),
     42 //                             f=0.b1 b2 ... b8, k integer
     43 // 2^{-f} is approximated as Tn[f]+Dn[f]
     44 // Tn stores the high 53 bits, Dn stores (2^{-f}-Tn[f]) rounded to double precision
     45 //
     46 //  r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-9}+2^{-14},
     47 //                      for |x| in [23/64,3*2^7)
     48 // e^{-2*|x|}=2^{-k-f}*2^{-r} ~ 2^{-k}*(Tn+Dn)*(1+p)=(T0+D0)*(1+p)
     49 //
     50 // For |x| in [2^{-4},2^5):
     51 //         2^{-r}-1 ~ p=c1*r+c2*r^2+..+c5*r^5
     52 //      Let R=1/(1+T0+p*T0), truncated to 35 significant bits
     53 //  R=1/(1+T0+D0+p*(T0+D0))*(1+eps), |eps|<2^{-33}
     54 //  1+T0+D0+p*(T0+D0)=KH+KL, where
     55 //       KH=(1+T0+c1*r*T0)_high (leading 17 bits)
     56 //       KL=T0_low+D0+(c1*r*T0)_low+c1*r*D0+(c2*r^2+..c5*r^5)*T0
     57 //  eps ~ (R*KH-1)+R*KL
     58 //  1/(1+T0+D0+p*(T0+D0)) ~ R-R*eps
     59 //  The result is approximated as (1-T0-D0-(T0+D0)*p)*(R-R*eps)
     60 //  1-T0-D0-(T0+D0)*p=-((KH-2)+KL)
     61 //    The result is formed as
     62 //    (KH-2)*R+(-(KH-2)*R*eps+(KL*R-KL*R*eps)), with the correct sign
     63 //                                                  set at the end
     64 //
     65 // For |x| in [2^{-64},2^{-4}):
     66 //  A Taylor series expansion is used  (x+p3*x^3+..+p13*x^{13})
     67 //
     68 // For |x|<2^{-64}:  x is returned
     69 //
     70 // For |x|>=2^32: return +/-1
     71 //
     72 // Special cases:
     73 //  tanh(NaN) = quiet NaN, and raise invalid exception
     74 //  tanh(INF) = that INF
     75 //  tanh(+/-0) = +/-0
     76 //
     77 /******************************************************************************/
     78 
     79 #include <private/bionic_asm.h>
     80 # -- Begin  tanh
     81 ENTRY(tanh)
     82 # parameter 1: %xmm0
     83 ..B1.1:
     84 ..___tag_value_tanh.1:
     85         pushq     %rsi
     86 ..___tag_value_tanh.3:
     87 ..B1.2:
     88         movsd     HALFMASK(%rip), %xmm3
     89         xorpd     %xmm4, %xmm4
     90         movsd     L2E(%rip), %xmm1
     91         movsd     8+L2E(%rip), %xmm2
     92         movl      $32768, %eax
     93         pinsrw    $3, %eax, %xmm4
     94         movsd     Shifter(%rip), %xmm6
     95         pextrw    $3, %xmm0, %ecx
     96         andpd     %xmm0, %xmm3
     97         andnpd    %xmm0, %xmm4
     98         pshufd    $68, %xmm4, %xmm5
     99         movl      $32768, %edx
    100         andl      %ecx, %edx
    101         andl      $32767, %ecx
    102         subl      $16304, %ecx
    103         cmpl      $144, %ecx
    104         jae       .L_2TAG_PACKET_0.0.1
    105         subsd     %xmm3, %xmm4
    106         mulsd     %xmm1, %xmm3
    107         mulsd     %xmm5, %xmm2
    108         cvtsd2si  %xmm3, %eax
    109         movq      %xmm3, %xmm7
    110         addsd     %xmm6, %xmm3
    111         mulsd     %xmm4, %xmm1
    112         movsd     ONEMASK(%rip), %xmm4
    113         subsd     %xmm6, %xmm3
    114         xorpd     %xmm0, %xmm0
    115         addsd     %xmm1, %xmm2
    116         subsd     %xmm3, %xmm7
    117         movapd    cv(%rip), %xmm6
    118         addsd     %xmm7, %xmm2
    119         movl      $255, %ecx
    120         andl      %eax, %ecx
    121         addl      %ecx, %ecx
    122         lea       T2_neg_f(%rip), %r8
    123         movapd    (%r8,%rcx,8), %xmm5
    124         shrl      $4, %eax
    125         andl      $65520, %eax
    126         subl      $16368, %eax
    127         negl      %eax
    128         pinsrw    $3, %eax, %xmm0
    129         movapd    16+cv(%rip), %xmm1
    130         pshufd    $68, %xmm0, %xmm0
    131         mulpd     %xmm5, %xmm0
    132         movsd     32+cv(%rip), %xmm7
    133         pshufd    $68, %xmm2, %xmm2
    134         movq      %xmm4, %xmm5
    135         addsd     %xmm0, %xmm4
    136         mulpd     %xmm2, %xmm6
    137         mulsd     %xmm2, %xmm7
    138         mulpd     %xmm2, %xmm2
    139         addpd     %xmm6, %xmm1
    140         mulsd     %xmm2, %xmm2
    141         movsd     ONEMASK(%rip), %xmm3
    142         mulpd     %xmm2, %xmm1
    143         pshufd    $78, %xmm1, %xmm6
    144         addsd     %xmm6, %xmm1
    145         movq      %xmm1, %xmm6
    146         addsd     %xmm7, %xmm1
    147         mulsd     %xmm0, %xmm1
    148         addsd     %xmm4, %xmm1
    149         andpd     MASK3(%rip), %xmm4
    150         divsd     %xmm1, %xmm5
    151         subsd     %xmm4, %xmm3
    152         pshufd    $238, %xmm0, %xmm1
    153         addsd     %xmm0, %xmm3
    154         movq      %xmm4, %xmm2
    155         addsd     %xmm1, %xmm3
    156         mulsd     %xmm7, %xmm1
    157         mulsd     %xmm0, %xmm7
    158         addsd     %xmm1, %xmm3
    159         addsd     %xmm7, %xmm4
    160         movsd     RMASK(%rip), %xmm1
    161         mulsd     %xmm0, %xmm6
    162         andpd     MASK3(%rip), %xmm4
    163         addsd     %xmm6, %xmm3
    164         movq      %xmm4, %xmm6
    165         subsd     %xmm4, %xmm2
    166         addsd     %xmm7, %xmm2
    167         movsd     ONEMASK(%rip), %xmm7
    168         andpd     %xmm1, %xmm5
    169         addsd     %xmm2, %xmm3
    170         mulsd     %xmm5, %xmm4
    171         xorpd     %xmm2, %xmm2
    172         mulsd     %xmm5, %xmm3
    173         subsd     TWOMASK(%rip), %xmm6
    174         subsd     %xmm7, %xmm4
    175         xorl      $32768, %edx
    176         pinsrw    $3, %edx, %xmm2
    177         addsd     %xmm3, %xmm4
    178         mulsd     %xmm5, %xmm6
    179         movq      %xmm3, %xmm1
    180         mulsd     %xmm4, %xmm3
    181         movq      %xmm6, %xmm0
    182         mulsd     %xmm4, %xmm6
    183         subsd     %xmm3, %xmm1
    184         subsd     %xmm6, %xmm1
    185         addsd     %xmm1, %xmm0
    186         xorpd     %xmm2, %xmm0
    187         jmp       ..B1.4
    188 .L_2TAG_PACKET_0.0.1:
    189         addl      $960, %ecx
    190         cmpl      $1104, %ecx
    191         jae       .L_2TAG_PACKET_1.0.1
    192         movapd    pv(%rip), %xmm2
    193         pshufd    $68, %xmm0, %xmm1
    194         movapd    16+pv(%rip), %xmm3
    195         mulpd     %xmm1, %xmm1
    196         movapd    32+pv(%rip), %xmm4
    197         mulpd     %xmm1, %xmm2
    198         pshufd    $68, %xmm1, %xmm5
    199         addpd     %xmm3, %xmm2
    200         mulsd     %xmm5, %xmm5
    201         mulpd     %xmm1, %xmm2
    202         mulsd     %xmm5, %xmm5
    203         addpd     %xmm4, %xmm2
    204         mulpd     %xmm5, %xmm2
    205         pshufd    $238, %xmm2, %xmm5
    206         addsd     %xmm5, %xmm2
    207         mulsd     %xmm0, %xmm2
    208         addsd     %xmm2, %xmm0
    209         jmp       ..B1.4
    210 .L_2TAG_PACKET_1.0.1:
    211         addl      $15344, %ecx
    212         cmpl      $16448, %ecx
    213         jae       .L_2TAG_PACKET_2.0.1
    214         cmpl      $16, %ecx
    215         jb        .L_2TAG_PACKET_3.0.1
    216         xorpd     %xmm2, %xmm2
    217         movl      $17392, %eax
    218         pinsrw    $3, %eax, %xmm2
    219         mulsd     %xmm0, %xmm2
    220         addsd     %xmm0, %xmm2
    221         jmp       ..B1.4
    222 .L_2TAG_PACKET_3.0.1:
    223         movq      %xmm0, %xmm2
    224         mulsd     %xmm2, %xmm2
    225         jmp       ..B1.4
    226 .L_2TAG_PACKET_2.0.1:
    227         cmpl      $32752, %ecx
    228         jae       .L_2TAG_PACKET_4.0.1
    229         xorpd     %xmm2, %xmm2
    230         movl      $15344, %ecx
    231         pinsrw    $3, %ecx, %xmm2
    232         movq      %xmm2, %xmm3
    233         mulsd     %xmm2, %xmm2
    234         addsd     %xmm3, %xmm2
    235 .L_2TAG_PACKET_5.0.1:
    236         xorpd     %xmm0, %xmm0
    237         orl       $16368, %edx
    238         pinsrw    $3, %edx, %xmm0
    239         jmp       ..B1.4
    240 .L_2TAG_PACKET_4.0.1:
    241         movq      %xmm0, %xmm2
    242         movd      %xmm0, %eax
    243         psrlq     $20, %xmm2
    244         movd      %xmm2, %ecx
    245         orl       %eax, %ecx
    246         cmpl      $0, %ecx
    247         je        .L_2TAG_PACKET_5.0.1
    248         addsd     %xmm0, %xmm0
    249         movq      %xmm0, (%rsp)
    250 .L_2TAG_PACKET_6.0.1:
    251 ..B1.4:
    252         popq      %rcx
    253 ..___tag_value_tanh.4:
    254         ret
    255 ..___tag_value_tanh.5:
    256 END(tanh)
    257 # -- End  tanh
    258 	.section .rodata, "a"
    259 	.align 16
    260 	.align 16
    261 L2E:
    262 	.long	1610612736
    263 	.long	1082594631
    264 	.long	4166901572
    265 	.long	1055174155
    266 	.type	L2E,@object
    267 	.size	L2E,16
    268 	.align 16
    269 Shifter:
    270 	.long	0
    271 	.long	1127743488
    272 	.long	0
    273 	.long	3275227136
    274 	.type	Shifter,@object
    275 	.size	Shifter,16
    276 	.align 16
    277 cv:
    278 	.long	3884607281
    279 	.long	3168131199
    280 	.long	3607404735
    281 	.long	3190582024
    282 	.long	1874480759
    283 	.long	1032041131
    284 	.long	4286760334
    285 	.long	1053736893
    286 	.long	4277811695
    287 	.long	3211144770
    288 	.long	0
    289 	.long	0
    290 	.type	cv,@object
    291 	.size	cv,48
    292 	.align 16
    293 T2_neg_f:
    294 	.long	0
    295 	.long	1072693248
    296 	.long	0
    297 	.long	0
    298 	.long	1797923801
    299 	.long	1072687577
    300 	.long	1950547427
    301 	.long	1013229059
    302 	.long	730821105
    303 	.long	1072681922
    304 	.long	2523232743
    305 	.long	1012067188
    306 	.long	915592468
    307 	.long	1072676282
    308 	.long	352947894
    309 	.long	3161024371
    310 	.long	2174652632
    311 	.long	1072670657
    312 	.long	4087714590
    313 	.long	1014450259
    314 	.long	35929225
    315 	.long	1072665048
    316 	.long	2809788041
    317 	.long	3159436968
    318 	.long	2912730644
    319 	.long	1072659453
    320 	.long	3490067722
    321 	.long	3163405074
    322 	.long	2038973688
    323 	.long	1072653874
    324 	.long	892941374
    325 	.long	1016046459
    326 	.long	1533953344
    327 	.long	1072648310
    328 	.long	769171851
    329 	.long	1015665633
    330 	.long	1222472308
    331 	.long	1072642761
    332 	.long	1054357470
    333 	.long	3161021018
    334 	.long	929806999
    335 	.long	1072637227
    336 	.long	3205336643
    337 	.long	1015259557
    338 	.long	481706282
    339 	.long	1072631708
    340 	.long	1696079173
    341 	.long	3162710528
    342 	.long	3999357479
    343 	.long	1072626203
    344 	.long	2258941616
    345 	.long	1015924724
    346 	.long	2719515920
    347 	.long	1072620714
    348 	.long	2760332941
    349 	.long	1015137933
    350 	.long	764307441
    351 	.long	1072615240
    352 	.long	3021057420
    353 	.long	3163329523
    354 	.long	2256325230
    355 	.long	1072609780
    356 	.long	580117746
    357 	.long	1015317295
    358 	.long	2728693978
    359 	.long	1072604335
    360 	.long	396109971
    361 	.long	3163462691
    362 	.long	2009970496
    363 	.long	1072598905
    364 	.long	2159039665
    365 	.long	3162572948
    366 	.long	4224142467
    367 	.long	1072593489
    368 	.long	3389820386
    369 	.long	1015207202
    370 	.long	610758006
    371 	.long	1072588089
    372 	.long	1965209397
    373 	.long	3161866232
    374 	.long	3884662774
    375 	.long	1072582702
    376 	.long	2158611599
    377 	.long	1014210185
    378 	.long	991358482
    379 	.long	1072577331
    380 	.long	838715019
    381 	.long	3163157668
    382 	.long	351641897
    383 	.long	1072571974
    384 	.long	2172261526
    385 	.long	3163010599
    386 	.long	1796832535
    387 	.long	1072566631
    388 	.long	3176955716
    389 	.long	3160585513
    390 	.long	863738719
    391 	.long	1072561303
    392 	.long	1326992220
    393 	.long	3162613197
    394 	.long	1679558232
    395 	.long	1072555989
    396 	.long	2390342287
    397 	.long	3163333970
    398 	.long	4076975200
    399 	.long	1072550689
    400 	.long	2029000899
    401 	.long	1015208535
    402 	.long	3594158869
    403 	.long	1072545404
    404 	.long	2456521700
    405 	.long	3163256561
    406 	.long	64696965
    407 	.long	1072540134
    408 	.long	1768797490
    409 	.long	1015816960
    410 	.long	1912561781
    411 	.long	1072534877
    412 	.long	3147495102
    413 	.long	1015678253
    414 	.long	382305176
    415 	.long	1072529635
    416 	.long	2347622376
    417 	.long	3162578625
    418 	.long	3898795731
    419 	.long	1072524406
    420 	.long	1249994144
    421 	.long	1011869818
    422 	.long	3707479175
    423 	.long	1072519192
    424 	.long	3613079303
    425 	.long	1014164738
    426 	.long	3939148246
    427 	.long	1072513992
    428 	.long	3210352148
    429 	.long	1015274323
    430 	.long	135105010
    431 	.long	1072508807
    432 	.long	1906148728
    433 	.long	3163375739
    434 	.long	721996136
    435 	.long	1072503635
    436 	.long	563754734
    437 	.long	1015371318
    438 	.long	1242007932
    439 	.long	1072498477
    440 	.long	1132034716
    441 	.long	3163339831
    442 	.long	1532734324
    443 	.long	1072493333
    444 	.long	3094216535
    445 	.long	3163162857
    446 	.long	1432208378
    447 	.long	1072488203
    448 	.long	1401068914
    449 	.long	3162363963
    450 	.long	778901109
    451 	.long	1072483087
    452 	.long	2248183955
    453 	.long	3161268751
    454 	.long	3706687593
    455 	.long	1072477984
    456 	.long	3521726940
    457 	.long	1013253067
    458 	.long	1464976603
    459 	.long	1072472896
    460 	.long	3507292405
    461 	.long	3161977534
    462 	.long	2483480501
    463 	.long	1072467821
    464 	.long	1216371780
    465 	.long	1013034172
    466 	.long	2307442995
    467 	.long	1072462760
    468 	.long	3190117721
    469 	.long	3162404539
    470 	.long	777507147
    471 	.long	1072457713
    472 	.long	4282924205
    473 	.long	1015187533
    474 	.long	2029714210
    475 	.long	1072452679
    476 	.long	613660079
    477 	.long	1015099143
    478 	.long	1610600570
    479 	.long	1072447659
    480 	.long	3766732298
    481 	.long	1015760183
    482 	.long	3657065772
    483 	.long	1072442652
    484 	.long	399025623
    485 	.long	3162957078
    486 	.long	3716502172
    487 	.long	1072437659
    488 	.long	2303740125
    489 	.long	1014042725
    490 	.long	1631695677
    491 	.long	1072432680
    492 	.long	2717633076
    493 	.long	3162344026
    494 	.long	1540824585
    495 	.long	1072427714
    496 	.long	1064017011
    497 	.long	3163487690
    498 	.long	3287523847
    499 	.long	1072422761
    500 	.long	1625971539
    501 	.long	3157009955
    502 	.long	2420883922
    503 	.long	1072417822
    504 	.long	2049810052
    505 	.long	1014119888
    506 	.long	3080351519
    507 	.long	1072412896
    508 	.long	3379126788
    509 	.long	3157218001
    510 	.long	815859274
    511 	.long	1072407984
    512 	.long	240396590
    513 	.long	3163487443
    514 	.long	4062661092
    515 	.long	1072403084
    516 	.long	1422616006
    517 	.long	3163255318
    518 	.long	4076559943
    519 	.long	1072398198
    520 	.long	2119478331
    521 	.long	3160758351
    522 	.long	703710506
    523 	.long	1072393326
    524 	.long	1384660846
    525 	.long	1015195891
    526 	.long	2380618042
    527 	.long	1072388466
    528 	.long	3149557219
    529 	.long	3163320799
    530 	.long	364333489
    531 	.long	1072383620
    532 	.long	3923737744
    533 	.long	3161421373
    534 	.long	3092190715
    535 	.long	1072378786
    536 	.long	814012168
    537 	.long	3159523422
    538 	.long	1822067026
    539 	.long	1072373966
    540 	.long	1241994956
    541 	.long	1015340290
    542 	.long	697153126
    543 	.long	1072369159
    544 	.long	1283515429
    545 	.long	3163283189
    546 	.long	3861050111
    547 	.long	1072364364
    548 	.long	254893773
    549 	.long	3162813180
    550 	.long	2572866477
    551 	.long	1072359583
    552 	.long	878562433
    553 	.long	1015521741
    554 	.long	977020788
    555 	.long	1072354815
    556 	.long	3065100517
    557 	.long	1015541563
    558 	.long	3218338682
    559 	.long	1072350059
    560 	.long	3404164304
    561 	.long	3162477108
    562 	.long	557149882
    563 	.long	1072345317
    564 	.long	3672720709
    565 	.long	1014537265
    566 	.long	1434058175
    567 	.long	1072340587
    568 	.long	251133233
    569 	.long	1015085769
    570 	.long	1405169241
    571 	.long	1072335870
    572 	.long	2998539689
    573 	.long	3162830951
    574 	.long	321958744
    575 	.long	1072331166
    576 	.long	3401933767
    577 	.long	1015794558
    578 	.long	2331271250
    579 	.long	1072326474
    580 	.long	812057446
    581 	.long	1012207446
    582 	.long	2990417245
    583 	.long	1072321795
    584 	.long	3683467745
    585 	.long	3163369326
    586 	.long	2152073944
    587 	.long	1072317129
    588 	.long	1486860576
    589 	.long	3163203456
    590 	.long	3964284211
    591 	.long	1072312475
    592 	.long	2111583915
    593 	.long	1015427164
    594 	.long	3985553595
    595 	.long	1072307834
    596 	.long	4002146062
    597 	.long	1015834136
    598 	.long	2069751141
    599 	.long	1072303206
    600 	.long	1562170675
    601 	.long	3162724681
    602 	.long	2366108318
    603 	.long	1072298590
    604 	.long	2867985102
    605 	.long	3161762254
    606 	.long	434316067
    607 	.long	1072293987
    608 	.long	2028358766
    609 	.long	1013458122
    610 	.long	424392917
    611 	.long	1072289396
    612 	.long	2749202995
    613 	.long	3162838718
    614 	.long	2191782032
    615 	.long	1072284817
    616 	.long	2960257726
    617 	.long	1013742662
    618 	.long	1297350157
    619 	.long	1072280251
    620 	.long	1308022040
    621 	.long	3163412558
    622 	.long	1892288442
    623 	.long	1072275697
    624 	.long	2446255666
    625 	.long	3162600381
    626 	.long	3833209506
    627 	.long	1072271155
    628 	.long	2722920684
    629 	.long	1013754842
    630 	.long	2682146384
    631 	.long	1072266626
    632 	.long	2082178513
    633 	.long	3163363419
    634 	.long	2591453363
    635 	.long	1072262109
    636 	.long	2132396182
    637 	.long	3159074198
    638 	.long	3418903055
    639 	.long	1072257604
    640 	.long	2527457337
    641 	.long	3160820604
    642 	.long	727685349
    643 	.long	1072253112
    644 	.long	2038246809
    645 	.long	3162358742
    646 	.long	2966275557
    647 	.long	1072248631
    648 	.long	2176155324
    649 	.long	3159842759
    650 	.long	1403662306
    651 	.long	1072244163
    652 	.long	2788809599
    653 	.long	3161671007
    654 	.long	194117574
    655 	.long	1072239707
    656 	.long	777528612
    657 	.long	3163412089
    658 	.long	3492293770
    659 	.long	1072235262
    660 	.long	2248032210
    661 	.long	1015386826
    662 	.long	2568320822
    663 	.long	1072230830
    664 	.long	2732824428
    665 	.long	1014352915
    666 	.long	1577608921
    667 	.long	1072226410
    668 	.long	1875489510
    669 	.long	3162968394
    670 	.long	380978316
    671 	.long	1072222002
    672 	.long	854188970
    673 	.long	3160462686
    674 	.long	3134592888
    675 	.long	1072217605
    676 	.long	4232266862
    677 	.long	1015991134
    678 	.long	1110089947
    679 	.long	1072213221
    680 	.long	1451641639
    681 	.long	1015474673
    682 	.long	2759350287
    683 	.long	1072208848
    684 	.long	1148526634
    685 	.long	1015894933
    686 	.long	3649726105
    687 	.long	1072204487
    688 	.long	4085036346
    689 	.long	1015649474
    690 	.long	3643909174
    691 	.long	1072200138
    692 	.long	3537586109
    693 	.long	1014354647
    694 	.long	2604962541
    695 	.long	1072195801
    696 	.long	2614425274
    697 	.long	3163539192
    698 	.long	396319521
    699 	.long	1072191476
    700 	.long	4172420816
    701 	.long	3159074632
    702 	.long	1176749997
    703 	.long	1072187162
    704 	.long	2738998779
    705 	.long	3162035844
    706 	.long	515457527
    707 	.long	1072182860
    708 	.long	836709333
    709 	.long	1015651226
    710 	.long	2571947539
    711 	.long	1072178569
    712 	.long	3558159064
    713 	.long	3163376669
    714 	.long	2916157145
    715 	.long	1072174290
    716 	.long	219487565
    717 	.long	1015309367
    718 	.long	1413356050
    719 	.long	1072170023
    720 	.long	1651349291
    721 	.long	3162668166
    722 	.long	2224145553
    723 	.long	1072165767
    724 	.long	3482522030
    725 	.long	3161489169
    726 	.long	919555682
    727 	.long	1072161523
    728 	.long	3121969534
    729 	.long	1012948226
    730 	.long	1660913392
    731 	.long	1072157290
    732 	.long	4218599604
    733 	.long	1015135707
    734 	.long	19972402
    735 	.long	1072153069
    736 	.long	3507899862
    737 	.long	1016009292
    738 	.long	158781403
    739 	.long	1072148859
    740 	.long	2221464712
    741 	.long	3163286453
    742 	.long	1944781191
    743 	.long	1072144660
    744 	.long	3993278767
    745 	.long	3161724279
    746 	.long	950803702
    747 	.long	1072140473
    748 	.long	1655364926
    749 	.long	1015237032
    750 	.long	1339972927
    751 	.long	1072136297
    752 	.long	167908909
    753 	.long	1015572152
    754 	.long	2980802057
    755 	.long	1072132132
    756 	.long	378619896
    757 	.long	1015773303
    758 	.long	1447192521
    759 	.long	1072127979
    760 	.long	1462857171
    761 	.long	3162514521
    762 	.long	903334909
    763 	.long	1072123837
    764 	.long	1636462108
    765 	.long	1015039997
    766 	.long	1218806132
    767 	.long	1072119706
    768 	.long	1818613052
    769 	.long	3162548441
    770 	.long	2263535754
    771 	.long	1072115586
    772 	.long	752233586
    773 	.long	3162639008
    774 	.long	3907805044
    775 	.long	1072111477
    776 	.long	2257091225
    777 	.long	3161550407
    778 	.long	1727278727
    779 	.long	1072107380
    780 	.long	3562710623
    781 	.long	1011471940
    782 	.long	4182873220
    783 	.long	1072103293
    784 	.long	629542646
    785 	.long	3161996303
    786 	.long	2555984613
    787 	.long	1072099218
    788 	.long	2652555442
    789 	.long	3162552692
    790 	.long	1013258799
    791 	.long	1072095154
    792 	.long	1748797611
    793 	.long	3160129082
    794 	.long	3721688645
    795 	.long	1072091100
    796 	.long	3069276937
    797 	.long	1015839401
    798 	.long	1963711167
    799 	.long	1072087058
    800 	.long	1744767757
    801 	.long	3160574294
    802 	.long	4201977662
    803 	.long	1072083026
    804 	.long	748330254
    805 	.long	1013594357
    806 	.long	1719614413
    807 	.long	1072079006
    808 	.long	330458198
    809 	.long	3163282740
    810 	.long	2979960120
    811 	.long	1072074996
    812 	.long	2599109725
    813 	.long	1014498493
    814 	.long	3561793907
    815 	.long	1072070997
    816 	.long	1157054053
    817 	.long	1011890350
    818 	.long	3339203574
    819 	.long	1072067009
    820 	.long	1483497780
    821 	.long	3162408754
    822 	.long	2186617381
    823 	.long	1072063032
    824 	.long	2270764084
    825 	.long	3163272713
    826 	.long	4273770423
    827 	.long	1072059065
    828 	.long	3383180809
    829 	.long	3163218901
    830 	.long	885834528
    831 	.long	1072055110
    832 	.long	1973258547
    833 	.long	3162261564
    834 	.long	488188413
    835 	.long	1072051165
    836 	.long	3199821029
    837 	.long	1015564048
    838 	.long	2956612997
    839 	.long	1072047230
    840 	.long	2118169751
    841 	.long	3162735553
    842 	.long	3872257780
    843 	.long	1072043306
    844 	.long	1253592103
    845 	.long	1015958334
    846 	.long	3111574537
    847 	.long	1072039393
    848 	.long	2606161479
    849 	.long	3162759746
    850 	.long	551349105
    851 	.long	1072035491
    852 	.long	3821916050
    853 	.long	3162106589
    854 	.long	363667784
    855 	.long	1072031599
    856 	.long	813753950
    857 	.long	1015785209
    858 	.long	2425981843
    859 	.long	1072027717
    860 	.long	2830390851
    861 	.long	3163346599
    862 	.long	2321106615
    863 	.long	1072023846
    864 	.long	2171176610
    865 	.long	1009535771
    866 	.long	4222122499
    867 	.long	1072019985
    868 	.long	1277378074
    869 	.long	3163256737
    870 	.long	3712504873
    871 	.long	1072016135
    872 	.long	88491949
    873 	.long	1015427660
    874 	.long	671025100
    875 	.long	1072012296
    876 	.long	3832014351
    877 	.long	3163022030
    878 	.long	3566716925
    879 	.long	1072008466
    880 	.long	1536826856
    881 	.long	1014142433
    882 	.long	3689071823
    883 	.long	1072004647
    884 	.long	2321004996
    885 	.long	3162552716
    886 	.long	917841882
    887 	.long	1072000839
    888 	.long	18715565
    889 	.long	1015659308
    890 	.long	3723038930
    891 	.long	1071997040
    892 	.long	378465264
    893 	.long	3162569582
    894 	.long	3395129871
    895 	.long	1071993252
    896 	.long	4025345435
    897 	.long	3162335388
    898 	.long	4109806887
    899 	.long	1071989474
    900 	.long	422403966
    901 	.long	1014469229
    902 	.long	1453150082
    903 	.long	1071985707
    904 	.long	498154669
    905 	.long	3161488062
    906 	.long	3896463087
    907 	.long	1071981949
    908 	.long	1139797873
    909 	.long	3161233805
    910 	.long	2731501122
    911 	.long	1071978202
    912 	.long	1774031855
    913 	.long	3162470021
    914 	.long	2135241198
    915 	.long	1071974465
    916 	.long	1236747871
    917 	.long	1013589147
    918 	.long	1990012071
    919 	.long	1071970738
    920 	.long	3529070563
    921 	.long	3162813193
    922 	.long	2178460671
    923 	.long	1071967021
    924 	.long	777878098
    925 	.long	3162842493
    926 	.long	2583551245
    927 	.long	1071963314
    928 	.long	3161094195
    929 	.long	1015606491
    930 	.long	3088564500
    931 	.long	1071959617
    932 	.long	1762311517
    933 	.long	1015045673
    934 	.long	3577096743
    935 	.long	1071955930
    936 	.long	2951496418
    937 	.long	1013793687
    938 	.long	3933059031
    939 	.long	1071952253
    940 	.long	2133366768
    941 	.long	3161531832
    942 	.long	4040676318
    943 	.long	1071948586
    944 	.long	4090609238
    945 	.long	1015663458
    946 	.long	3784486610
    947 	.long	1071944929
    948 	.long	1581883040
    949 	.long	3161698953
    950 	.long	3049340112
    951 	.long	1071941282
    952 	.long	3062915824
    953 	.long	1013170595
    954 	.long	1720398391
    955 	.long	1071937645
    956 	.long	3980678963
    957 	.long	3163300080
    958 	.long	3978100823
    959 	.long	1071934017
    960 	.long	3513027190
    961 	.long	1015845963
    962 	.long	1118294578
    963 	.long	1071930400
    964 	.long	2197495694
    965 	.long	3159909401
    966 	.long	1617004845
    967 	.long	1071926792
    968 	.long	82804944
    969 	.long	1010342778
    970 	.long	1065662932
    971 	.long	1071923194
    972 	.long	2533670915
    973 	.long	1014530238
    974 	.long	3645941911
    975 	.long	1071919605
    976 	.long	3814685081
    977 	.long	3161573341
    978 	.long	654919306
    979 	.long	1071916027
    980 	.long	3232961757
    981 	.long	3163047469
    982 	.long	569847338
    983 	.long	1071912458
    984 	.long	472945272
    985 	.long	3159290729
    986 	.long	3278348324
    987 	.long	1071908898
    988 	.long	3069497416
    989 	.long	1014750712
    990 	.long	78413852
    991 	.long	1071905349
    992 	.long	4183226867
    993 	.long	3163017251
    994 	.long	3743175029
    995 	.long	1071901808
    996 	.long	2072812490
    997 	.long	3162175075
    998 	.long	1276261410
    999 	.long	1071898278
   1000 	.long	300981948
   1001 	.long	1014684169
   1002 	.long	1156440435
   1003 	.long	1071894757
   1004 	.long	2351451249
   1005 	.long	1013967056
   1006 	.long	3272845541
   1007 	.long	1071891245
   1008 	.long	928852419
   1009 	.long	3163488248
   1010 	.long	3219942644
   1011 	.long	1071887743
   1012 	.long	3798990616
   1013 	.long	1015368806
   1014 	.long	887463927
   1015 	.long	1071884251
   1016 	.long	3596744163
   1017 	.long	3160794166
   1018 	.long	460407023
   1019 	.long	1071880768
   1020 	.long	4237175092
   1021 	.long	3163138469
   1022 	.long	1829099622
   1023 	.long	1071877294
   1024 	.long	1016661181
   1025 	.long	3163461005
   1026 	.long	589198666
   1027 	.long	1071873830
   1028 	.long	2664346172
   1029 	.long	3163157962
   1030 	.long	926591435
   1031 	.long	1071870375
   1032 	.long	3208833762
   1033 	.long	3162913514
   1034 	.long	2732492859
   1035 	.long	1071866929
   1036 	.long	2691479646
   1037 	.long	3162255684
   1038 	.long	1603444721
   1039 	.long	1071863493
   1040 	.long	1548633640
   1041 	.long	3162201326
   1042 	.long	1726216749
   1043 	.long	1071860066
   1044 	.long	2466808228
   1045 	.long	3161676405
   1046 	.long	2992903935
   1047 	.long	1071856648
   1048 	.long	2218154406
   1049 	.long	1015228193
   1050 	.long	1000925746
   1051 	.long	1071853240
   1052 	.long	1018491672
   1053 	.long	3163309544
   1054 	.long	4232894513
   1055 	.long	1071849840
   1056 	.long	2383938684
   1057 	.long	1014668519
   1058 	.long	3991843581
   1059 	.long	1071846450
   1060 	.long	4092853457
   1061 	.long	1014585763
   1062 	.long	171030293
   1063 	.long	1071843070
   1064 	.long	3526460132
   1065 	.long	1014428778
   1066 	.long	1253935211
   1067 	.long	1071839698
   1068 	.long	1395382931
   1069 	.long	3159702613
   1070 	.long	2839424854
   1071 	.long	1071836335
   1072 	.long	1171596163
   1073 	.long	1013041679
   1074 	.long	526652809
   1075 	.long	1071832982
   1076 	.long	4223459736
   1077 	.long	1015879375
   1078 	.long	2799960843
   1079 	.long	1071829637
   1080 	.long	1423655381
   1081 	.long	1015022151
   1082 	.long	964107055
   1083 	.long	1071826302
   1084 	.long	2800439588
   1085 	.long	3162833221
   1086 	.long	3504003472
   1087 	.long	1071822975
   1088 	.long	3594001060
   1089 	.long	3157330652
   1090 	.long	1724976915
   1091 	.long	1071819658
   1092 	.long	420909223
   1093 	.long	3163117379
   1094 	.long	4112506593
   1095 	.long	1071816349
   1096 	.long	2947355221
   1097 	.long	1014371048
   1098 	.long	1972484976
   1099 	.long	1071813050
   1100 	.long	675290301
   1101 	.long	3161640050
   1102 	.long	3790955393
   1103 	.long	1071809759
   1104 	.long	2352942462
   1105 	.long	3163180090
   1106 	.long	874372905
   1107 	.long	1071806478
   1108 	.long	100263788
   1109 	.long	1015940732
   1110 	.long	1709341917
   1111 	.long	1071803205
   1112 	.long	2571168217
   1113 	.long	1014152499
   1114 	.long	1897844341
   1115 	.long	1071799941
   1116 	.long	1254300460
   1117 	.long	1015275938
   1118 	.long	1337108031
   1119 	.long	1071796686
   1120 	.long	3203724452
   1121 	.long	1014677845
   1122 	.long	4219606026
   1123 	.long	1071793439
   1124 	.long	2434574742
   1125 	.long	1014681548
   1126 	.long	1853186616
   1127 	.long	1071790202
   1128 	.long	3066496371
   1129 	.long	1015656574
   1130 	.long	2725843665
   1131 	.long	1071786973
   1132 	.long	1433917087
   1133 	.long	1014838523
   1134 	.long	2440944790
   1135 	.long	1071783753
   1136 	.long	2492769774
   1137 	.long	1014147454
   1138 	.long	897099801
   1139 	.long	1071780542
   1140 	.long	754756297
   1141 	.long	1015241005
   1142 	.long	2288159958
   1143 	.long	1071777339
   1144 	.long	2169144469
   1145 	.long	1014876021
   1146 	.long	2218315341
   1147 	.long	1071774145
   1148 	.long	2694295388
   1149 	.long	3163288868
   1150 	.long	586995997
   1151 	.long	1071770960
   1152 	.long	41662348
   1153 	.long	3162627992
   1154 	.long	1588871207
   1155 	.long	1071767783
   1156 	.long	143439582
   1157 	.long	3162963416
   1158 	.long	828946858
   1159 	.long	1071764615
   1160 	.long	10642492
   1161 	.long	1015939438
   1162 	.long	2502433899
   1163 	.long	1071761455
   1164 	.long	2148595913
   1165 	.long	1015023991
   1166 	.long	2214878420
   1167 	.long	1071758304
   1168 	.long	892270087
   1169 	.long	3163116422
   1170 	.long	4162030108
   1171 	.long	1071755161
   1172 	.long	2763428480
   1173 	.long	1015529349
   1174 	.long	3949972341
   1175 	.long	1071752027
   1176 	.long	2068408548
   1177 	.long	1014913868
   1178 	.long	1480023343
   1179 	.long	1071748902
   1180 	.long	2247196168
   1181 	.long	1015327453
   1182 	.long	948735466
   1183 	.long	1071745785
   1184 	.long	3516338028
   1185 	.long	3162574883
   1186 	.long	2257959872
   1187 	.long	1071742676
   1188 	.long	3802946148
   1189 	.long	1012964927
   1190 	.long	1014845819
   1191 	.long	1071739576
   1192 	.long	3117910646
   1193 	.long	3161559105
   1194 	.long	1416741826
   1195 	.long	1071736484
   1196 	.long	2196380210
   1197 	.long	1011413563
   1198 	.long	3366293073
   1199 	.long	1071733400
   1200 	.long	3119426314
   1201 	.long	1014120554
   1202 	.long	2471440686
   1203 	.long	1071730325
   1204 	.long	968836267
   1205 	.long	3162214888
   1206 	.long	2930322912
   1207 	.long	1071727258
   1208 	.long	2599499422
   1209 	.long	3162714047
   1210 	.long	351405227
   1211 	.long	1071724200
   1212 	.long	3125337328
   1213 	.long	3159822479
   1214 	.long	3228316108
   1215 	.long	1071721149
   1216 	.long	3010241991
   1217 	.long	3158422804
   1218 	.long	2875075254
   1219 	.long	1071718107
   1220 	.long	4144233330
   1221 	.long	3163333716
   1222 	.long	3490863953
   1223 	.long	1071715073
   1224 	.long	960797498
   1225 	.long	3162948880
   1226 	.long	685187902
   1227 	.long	1071712048
   1228 	.long	378731989
   1229 	.long	1014843115
   1230 	.long	2952712987
   1231 	.long	1071709030
   1232 	.long	3293494651
   1233 	.long	3160120301
   1234 	.long	1608493509
   1235 	.long	1071706021
   1236 	.long	3159622171
   1237 	.long	3162807737
   1238 	.long	852742562
   1239 	.long	1071703020
   1240 	.long	667253586
   1241 	.long	1009793559
   1242 	.long	590962156
   1243 	.long	1071700027
   1244 	.long	3829346666
   1245 	.long	3163275597
   1246 	.long	728909815
   1247 	.long	1071697042
   1248 	.long	383930225
   1249 	.long	1015029468
   1250 	.long	1172597893
   1251 	.long	1071694065
   1252 	.long	114433263
   1253 	.long	1015347593
   1254 	.long	1828292879
   1255 	.long	1071691096
   1256 	.long	1255956747
   1257 	.long	1015588398
   1258 	.long	2602514713
   1259 	.long	1071688135
   1260 	.long	2268929336
   1261 	.long	1014354284
   1262 	.long	3402036099
   1263 	.long	1071685182
   1264 	.long	405889334
   1265 	.long	1015105656
   1266 	.long	4133881824
   1267 	.long	1071682237
   1268 	.long	2148155345
   1269 	.long	3162931299
   1270 	.long	410360776
   1271 	.long	1071679301
   1272 	.long	1269990655
   1273 	.long	1011975870
   1274 	.long	728934454
   1275 	.long	1071676372
   1276 	.long	1413842688
   1277 	.long	1014178612
   1278 	.long	702412510
   1279 	.long	1071673451
   1280 	.long	3803266087
   1281 	.long	3162280415
   1282 	.long	238821257
   1283 	.long	1071670538
   1284 	.long	1469694871
   1285 	.long	3162884987
   1286 	.long	3541402996
   1287 	.long	1071667632
   1288 	.long	2759177317
   1289 	.long	1014854626
   1290 	.long	1928746161
   1291 	.long	1071664735
   1292 	.long	983617676
   1293 	.long	1014285177
   1294 	.long	3899555717
   1295 	.long	1071661845
   1296 	.long	427280750
   1297 	.long	3162546972
   1298 	.long	772914124
   1299 	.long	1071658964
   1300 	.long	4004372762
   1301 	.long	1012230161
   1302 	.long	1048019041
   1303 	.long	1071656090
   1304 	.long	1398474845
   1305 	.long	3160510595
   1306 	.long	339411585
   1307 	.long	1071653224
   1308 	.long	264588982
   1309 	.long	3161636657
   1310 	.long	2851812149
   1311 	.long	1071650365
   1312 	.long	2595802551
   1313 	.long	1015767337
   1314 	.long	4200250559
   1315 	.long	1071647514
   1316 	.long	2808127345
   1317 	.long	3161781938
   1318 	.type	T2_neg_f,@object
   1319 	.size	T2_neg_f,4096
   1320 	.space 512, 0x00 	# pad
   1321 	.align 16
   1322 MASK3:
   1323 	.long	0
   1324 	.long	4294967280
   1325 	.long	0
   1326 	.long	4294967280
   1327 	.type	MASK3,@object
   1328 	.size	MASK3,16
   1329 	.align 16
   1330 RMASK:
   1331 	.long	4294705152
   1332 	.long	4294967295
   1333 	.long	4294705152
   1334 	.long	4294967295
   1335 	.type	RMASK,@object
   1336 	.size	RMASK,16
   1337 	.align 16
   1338 pv:
   1339 	.long	236289503
   1340 	.long	1064135997
   1341 	.long	463583772
   1342 	.long	3215696314
   1343 	.long	1441186365
   1344 	.long	3212977891
   1345 	.long	286331153
   1346 	.long	1069617425
   1347 	.long	2284589306
   1348 	.long	1066820852
   1349 	.long	1431655765
   1350 	.long	3218429269
   1351 	.type	pv,@object
   1352 	.size	pv,48
   1353 	.align 4
   1354 HALFMASK:
   1355 	.long	4160749568
   1356 	.long	2147483647
   1357 	.type	HALFMASK,@object
   1358 	.size	HALFMASK,8
   1359 	.align 4
   1360 ONEMASK:
   1361 	.long	0
   1362 	.long	1072693248
   1363 	.type	ONEMASK,@object
   1364 	.size	ONEMASK,8
   1365 	.align 4
   1366 TWOMASK:
   1367 	.long	0
   1368 	.long	1073741824
   1369 	.type	TWOMASK,@object
   1370 	.size	TWOMASK,8
   1371 	.data
   1372 	.section .note.GNU-stack, ""
   1373 // -- Begin DWARF2 SEGMENT .eh_frame
   1374 	.section .eh_frame,"a",@progbits
   1375 .eh_frame_seg:
   1376 	.align 1
   1377 	.4byte 0x00000014
   1378 	.8byte 0x00527a0100000000
   1379 	.8byte 0x08070c1b01107801
   1380 	.4byte 0x00000190
   1381 	.4byte 0x0000001c
   1382 	.4byte 0x0000001c
   1383 	.4byte ..___tag_value_tanh.1-.
   1384 	.4byte ..___tag_value_tanh.5-..___tag_value_tanh.1
   1385 	.2byte 0x0400
   1386 	.4byte ..___tag_value_tanh.3-..___tag_value_tanh.1
   1387 	.2byte 0x100e
   1388 	.byte 0x04
   1389 	.4byte ..___tag_value_tanh.4-..___tag_value_tanh.3
   1390 	.2byte 0x080e
   1391 	.byte 0x00
   1392 # End
   1393