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// 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
81ENTRY(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:
256END(tanh)
257# -- End  tanh
258	.section .rodata, "a"
259	.align 16
260	.align 16
261L2E:
262	.long	1610612736
263	.long	1082594631
264	.long	4166901572
265	.long	1055174155
266	.type	L2E,@object
267	.size	L2E,16
268	.align 16
269Shifter:
270	.long	0
271	.long	1127743488
272	.long	0
273	.long	3275227136
274	.type	Shifter,@object
275	.size	Shifter,16
276	.align 16
277cv:
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
293T2_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
1322MASK3:
1323	.long	0
1324	.long	4294967280
1325	.long	0
1326	.long	4294967280
1327	.type	MASK3,@object
1328	.size	MASK3,16
1329	.align 16
1330RMASK:
1331	.long	4294705152
1332	.long	4294967295
1333	.long	4294705152
1334	.long	4294967295
1335	.type	RMASK,@object
1336	.size	RMASK,16
1337	.align 16
1338pv:
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
1354HALFMASK:
1355	.long	4160749568
1356	.long	2147483647
1357	.type	HALFMASK,@object
1358	.size	HALFMASK,8
1359	.align 4
1360ONEMASK:
1361	.long	0
1362	.long	1072693248
1363	.type	ONEMASK,@object
1364	.size	ONEMASK,8
1365	.align 4
1366TWOMASK:
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