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//  cosh(x)=(exp(x)+exp(-x))/2
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^7=int(xH*L2EH*2^7),
42//                              f=0.b1 b2 ... b7, k integer
43//  2^f is approximated as Tp[f]+Dp[f], and 2^{-f} as Tn[f]+Dn[f]
44//  Tp stores higher 53 bits, Dp stores (2^f-Tp[f]) rounded to double precision
45//
46//  e^|x|=2^{k+f}*2^r, r=r`+xL*L2EH+|x|*L2EL, |r|<2^{-8}+2^{-14},
47//                       for |x| in [1/8,3*2^8)
48//  e^{-|x|}=2^{-k-f}*2^{-r}
49//
50//  e^|x| is approximated as 2^k*Tp+2^k*Tp*c1*r(1+c2*r+..+c5*r^4)+2^k*Dp=
51//                           =2^k*Tp+2^k*Tp*P15+2^k*Dp
52//  e^{-|x|} approximated as 2^{-k}*Tn-2^{-k}*Tn*c1*r(1-c2*r+..+c5*r^4)
53//
54//  For |x| in [1/8, 3*2^7), cosh(x) is formed as
55//   RN(2^k*Tp+2^{-k}*Tn)+2^k*Tp*P15+2^{-k}*Tn*P`15+2^{-k}*TnL+2^{-k}*Dn+2^k*Dp
56//
57//  For |x| in [3*2^7, 3*2^8), (e^|x|)/2 is returned, and
58//  the result is checked for overflow.
59//
60//  For |x|<1/8, a Taylor polynomial expansion is used (degree 10)
61//  (error bound for polynomial expansion is below 0.501 ulp)
62//
63// Special cases:
64//  cosh(NaN) = quiet NaN, and raise invalid exception
65//  cosh(INF) = that INF
66//  cosh(0)=1
67//  for finite argument, only cosh(0)=1 is exact
68//  For IEEE double
69//  cosh(x) overflows
70//  for x > 710.47586007394386342639336362481117248535156250 = MAXLOG+log(2)
71//
72/******************************************************************************/
73
74#include <private/bionic_asm.h>
75
76# -- Begin  cosh
77ENTRY(cosh)
78# parameter 1: %xmm0
79..B1.1:
80..___tag_value_cosh.1:
81        pushq     %rsi
82..___tag_value_cosh.3:
83..B1.2:
84        movsd     HALFMASK(%rip), %xmm3
85        xorpd     %xmm4, %xmm4
86        movsd     L2E(%rip), %xmm1
87        movsd     8+L2E(%rip), %xmm2
88        movl      $32768, %eax
89        pinsrw    $3, %eax, %xmm4
90        movsd     Shifter(%rip), %xmm6
91        pextrw    $3, %xmm0, %ecx
92        andpd     %xmm0, %xmm3
93        andnpd    %xmm0, %xmm4
94        pshufd    $68, %xmm4, %xmm5
95        andl      $32767, %ecx
96        subl      $16320, %ecx
97        cmpl      $200, %ecx
98        jae       .L_2TAG_PACKET_0.0.2
99        subsd     %xmm3, %xmm4
100        mulsd     %xmm1, %xmm3
101        mulsd     %xmm5, %xmm2
102        cvtsd2si  %xmm3, %eax
103        movq      %xmm3, %xmm7
104        addsd     %xmm6, %xmm3
105        mulsd     %xmm4, %xmm1
106        xorpd     %xmm5, %xmm5
107        subsd     %xmm6, %xmm3
108        movapd    cv(%rip), %xmm4
109        addsd     %xmm1, %xmm2
110        movapd    16+cv(%rip), %xmm6
111        subsd     %xmm3, %xmm7
112        movl      $32704, %edx
113        pinsrw    $3, %edx, %xmm5
114        movapd    32+cv(%rip), %xmm1
115        addsd     %xmm7, %xmm2
116        movl      $127, %edx
117        andl      %eax, %edx
118        addl      %edx, %edx
119        shrl      $3, %eax
120        andl      $65520, %eax
121        addl      $16352, %eax
122        xorpd     %xmm0, %xmm0
123        cmpl      $184, %ecx
124        jae       .L_2TAG_PACKET_1.0.2
125        pshufd    $68, %xmm5, %xmm5
126        pinsrw    $3, %eax, %xmm0
127        pshufd    $68, %xmm0, %xmm0
128        psubw     %xmm0, %xmm5
129        lea       T2f(%rip), %r8
130        mulpd     (%r8,%rdx,8), %xmm0
131        lea       T2_neg_f(%rip), %r8
132        mulpd     (%r8,%rdx,8), %xmm5
133        pshufd    $68, %xmm2, %xmm3
134        movapd    48+cv(%rip), %xmm7
135        pshufd    $68, %xmm2, %xmm2
136        mulpd     %xmm3, %xmm3
137        mulpd     %xmm2, %xmm4
138        mulpd     %xmm2, %xmm6
139        mulpd     64+cv(%rip), %xmm2
140        mulpd     %xmm3, %xmm1
141        mulpd     %xmm3, %xmm7
142        mulpd     %xmm3, %xmm4
143        mulpd     %xmm3, %xmm1
144        addpd     %xmm7, %xmm6
145        movq      %xmm0, %xmm7
146        addpd     %xmm1, %xmm4
147        shufpd    $0, %xmm5, %xmm7
148        addpd     %xmm5, %xmm0
149        mulpd     %xmm7, %xmm2
150        addpd     %xmm6, %xmm4
151        subsd     %xmm0, %xmm7
152        mulpd     %xmm2, %xmm4
153        pshufd    $238, %xmm0, %xmm6
154        addsd     %xmm5, %xmm7
155        addpd     %xmm2, %xmm4
156        addsd     %xmm6, %xmm7
157        pshufd    $238, %xmm4, %xmm2
158        addsd     %xmm7, %xmm2
159        addsd     %xmm4, %xmm2
160        addsd     %xmm2, %xmm0
161        jmp       ..B1.5
162.L_2TAG_PACKET_0.0.2:
163        addl      $16320, %ecx
164        cmpl      $16320, %ecx
165        ja        .L_2TAG_PACKET_2.0.2
166        cmpl      $15952, %ecx
167        jae       .L_2TAG_PACKET_3.0.2
168        addsd     %xmm2, %xmm6
169        movq      ONEMASK(%rip), %xmm0
170        jmp       ..B1.5
171.L_2TAG_PACKET_1.0.2:
172        subl      $16352, %eax
173        movl      %eax, %ecx
174        andl      $32752, %eax
175        shrl      $1, %eax
176        andl      $65520, %eax
177        subl      %eax, %ecx
178        addl      $16352, %eax
179        pinsrw    $3, %eax, %xmm0
180        pshufd    $68, %xmm0, %xmm0
181        lea       T2f(%rip), %r8
182        mulpd     (%r8,%rdx,8), %xmm0
183        pshufd    $68, %xmm2, %xmm3
184        movsd     48+cv(%rip), %xmm7
185        mulsd     %xmm3, %xmm3
186        mulsd     %xmm2, %xmm4
187        mulsd     %xmm2, %xmm6
188        mulsd     64+cv(%rip), %xmm2
189        mulsd     %xmm3, %xmm1
190        mulsd     %xmm3, %xmm7
191        mulsd     %xmm3, %xmm4
192        addl      $16368, %ecx
193        pinsrw    $3, %ecx, %xmm5
194        mulsd     %xmm3, %xmm1
195        addsd     %xmm7, %xmm6
196        addsd     %xmm1, %xmm4
197        mulsd     %xmm0, %xmm2
198        addsd     %xmm6, %xmm4
199        mulsd     %xmm2, %xmm4
200        pshufd    $238, %xmm0, %xmm6
201        addsd     %xmm6, %xmm4
202        addsd     %xmm4, %xmm2
203        addsd     %xmm2, %xmm0
204        mulsd     %xmm5, %xmm0
205        pextrw    $3, %xmm0, %eax
206        andl      $32752, %eax
207        cmpl      $32752, %eax
208        je        .L_2TAG_PACKET_4.0.2
209        jmp       ..B1.5
210.L_2TAG_PACKET_3.0.2:
211        movapd    pv(%rip), %xmm1
212        mulpd     %xmm5, %xmm5
213        movapd    16+pv(%rip), %xmm2
214        xorpd     %xmm3, %xmm3
215        movq      %xmm5, %xmm0
216        mulpd     %xmm5, %xmm1
217        movsd     ONEMASK(%rip), %xmm6
218        mulpd     %xmm5, %xmm5
219        movl      $16352, %eax
220        pinsrw    $3, %eax, %xmm3
221        addpd     %xmm2, %xmm1
222        mulpd     %xmm5, %xmm1
223        pshufd    $238, %xmm1, %xmm2
224        mulsd     %xmm1, %xmm5
225        mulsd     %xmm3, %xmm0
226        addsd     %xmm5, %xmm2
227        addsd     %xmm2, %xmm0
228        addsd     %xmm6, %xmm0
229        jmp       ..B1.5
230.L_2TAG_PACKET_2.0.2:
231        cmpl      $32752, %ecx
232        jae       .L_2TAG_PACKET_5.0.2
233        xorpd     %xmm0, %xmm0
234        movl      $32736, %eax
235        pinsrw    $3, %eax, %xmm0
236        mulsd     %xmm0, %xmm0
237        jmp       .L_2TAG_PACKET_4.0.2
238.L_2TAG_PACKET_5.0.2:
239        mulsd     %xmm0, %xmm0
240        jmp       ..B1.5
241.L_2TAG_PACKET_4.0.2:
242        movq      %xmm0, (%rsp)
243..B1.3:
244        movq      (%rsp), %xmm0
245.L_2TAG_PACKET_6.0.2:
246..B1.5:
247        popq      %rcx
248..___tag_value_cosh.4:
249        ret
250..___tag_value_cosh.5:
251END(cosh)
252# -- End  cosh
253	.section .rodata, "a"
254	.align 16
255	.align 16
256L2E:
257	.long	1610612736
258	.long	1080497479
259	.long	4166901572
260	.long	1053077003
261	.type	L2E,@object
262	.size	L2E,16
263	.align 16
264Shifter:
265	.long	0
266	.long	1127743488
267	.long	0
268	.long	3275227136
269	.type	Shifter,@object
270	.size	Shifter,16
271	.align 16
272cv:
273	.long	3607404736
274	.long	1044146952
275	.long	3607404736
276	.long	3191630600
277	.long	4277811695
278	.long	1063661122
279	.long	4277811695
280	.long	3211144770
281	.long	2140175755
282	.long	1033864261
283	.long	2140175755
284	.long	1033864261
285	.long	4289495988
286	.long	1054113747
287	.long	4289495988
288	.long	1054113747
289	.long	4277811695
290	.long	1064709698
291	.long	4277811695
292	.long	3212193346
293	.type	cv,@object
294	.size	cv,80
295	.align 16
296T2f:
297	.long	0
298	.long	1072693248
299	.long	0
300	.long	0
301	.long	2851812149
302	.long	1072698941
303	.long	2595802551
304	.long	1016815913
305	.long	1048019041
306	.long	1072704666
307	.long	1398474845
308	.long	3161559171
309	.long	3899555717
310	.long	1072710421
311	.long	427280750
312	.long	3163595548
313	.long	3541402996
314	.long	1072716208
315	.long	2759177317
316	.long	1015903202
317	.long	702412510
318	.long	1072722027
319	.long	3803266087
320	.long	3163328991
321	.long	410360776
322	.long	1072727877
323	.long	1269990655
324	.long	1013024446
325	.long	3402036099
326	.long	1072733758
327	.long	405889334
328	.long	1016154232
329	.long	1828292879
330	.long	1072739672
331	.long	1255956747
332	.long	1016636974
333	.long	728909815
334	.long	1072745618
335	.long	383930225
336	.long	1016078044
337	.long	852742562
338	.long	1072751596
339	.long	667253586
340	.long	1010842135
341	.long	2952712987
342	.long	1072757606
343	.long	3293494651
344	.long	3161168877
345	.long	3490863953
346	.long	1072763649
347	.long	960797498
348	.long	3163997456
349	.long	3228316108
350	.long	1072769725
351	.long	3010241991
352	.long	3159471380
353	.long	2930322912
354	.long	1072775834
355	.long	2599499422
356	.long	3163762623
357	.long	3366293073
358	.long	1072781976
359	.long	3119426314
360	.long	1015169130
361	.long	1014845819
362	.long	1072788152
363	.long	3117910646
364	.long	3162607681
365	.long	948735466
366	.long	1072794361
367	.long	3516338028
368	.long	3163623459
369	.long	3949972341
370	.long	1072800603
371	.long	2068408548
372	.long	1015962444
373	.long	2214878420
374	.long	1072806880
375	.long	892270087
376	.long	3164164998
377	.long	828946858
378	.long	1072813191
379	.long	10642492
380	.long	1016988014
381	.long	586995997
382	.long	1072819536
383	.long	41662348
384	.long	3163676568
385	.long	2288159958
386	.long	1072825915
387	.long	2169144469
388	.long	1015924597
389	.long	2440944790
390	.long	1072832329
391	.long	2492769774
392	.long	1015196030
393	.long	1853186616
394	.long	1072838778
395	.long	3066496371
396	.long	1016705150
397	.long	1337108031
398	.long	1072845262
399	.long	3203724452
400	.long	1015726421
401	.long	1709341917
402	.long	1072851781
403	.long	2571168217
404	.long	1015201075
405	.long	3790955393
406	.long	1072858335
407	.long	2352942462
408	.long	3164228666
409	.long	4112506593
410	.long	1072864925
411	.long	2947355221
412	.long	1015419624
413	.long	3504003472
414	.long	1072871551
415	.long	3594001060
416	.long	3158379228
417	.long	2799960843
418	.long	1072878213
419	.long	1423655381
420	.long	1016070727
421	.long	2839424854
422	.long	1072884911
423	.long	1171596163
424	.long	1014090255
425	.long	171030293
426	.long	1072891646
427	.long	3526460132
428	.long	1015477354
429	.long	4232894513
430	.long	1072898416
431	.long	2383938684
432	.long	1015717095
433	.long	2992903935
434	.long	1072905224
435	.long	2218154406
436	.long	1016276769
437	.long	1603444721
438	.long	1072912069
439	.long	1548633640
440	.long	3163249902
441	.long	926591435
442	.long	1072918951
443	.long	3208833762
444	.long	3163962090
445	.long	1829099622
446	.long	1072925870
447	.long	1016661181
448	.long	3164509581
449	.long	887463927
450	.long	1072932827
451	.long	3596744163
452	.long	3161842742
453	.long	3272845541
454	.long	1072939821
455	.long	928852419
456	.long	3164536824
457	.long	1276261410
458	.long	1072946854
459	.long	300981948
460	.long	1015732745
461	.long	78413852
462	.long	1072953925
463	.long	4183226867
464	.long	3164065827
465	.long	569847338
466	.long	1072961034
467	.long	472945272
468	.long	3160339305
469	.long	3645941911
470	.long	1072968181
471	.long	3814685081
472	.long	3162621917
473	.long	1617004845
474	.long	1072975368
475	.long	82804944
476	.long	1011391354
477	.long	3978100823
478	.long	1072982593
479	.long	3513027190
480	.long	1016894539
481	.long	3049340112
482	.long	1072989858
483	.long	3062915824
484	.long	1014219171
485	.long	4040676318
486	.long	1072997162
487	.long	4090609238
488	.long	1016712034
489	.long	3577096743
490	.long	1073004506
491	.long	2951496418
492	.long	1014842263
493	.long	2583551245
494	.long	1073011890
495	.long	3161094195
496	.long	1016655067
497	.long	1990012071
498	.long	1073019314
499	.long	3529070563
500	.long	3163861769
501	.long	2731501122
502	.long	1073026778
503	.long	1774031855
504	.long	3163518597
505	.long	1453150082
506	.long	1073034283
507	.long	498154669
508	.long	3162536638
509	.long	3395129871
510	.long	1073041828
511	.long	4025345435
512	.long	3163383964
513	.long	917841882
514	.long	1073049415
515	.long	18715565
516	.long	1016707884
517	.long	3566716925
518	.long	1073057042
519	.long	1536826856
520	.long	1015191009
521	.long	3712504873
522	.long	1073064711
523	.long	88491949
524	.long	1016476236
525	.long	2321106615
526	.long	1073072422
527	.long	2171176610
528	.long	1010584347
529	.long	363667784
530	.long	1073080175
531	.long	813753950
532	.long	1016833785
533	.long	3111574537
534	.long	1073087969
535	.long	2606161479
536	.long	3163808322
537	.long	2956612997
538	.long	1073095806
539	.long	2118169751
540	.long	3163784129
541	.long	885834528
542	.long	1073103686
543	.long	1973258547
544	.long	3163310140
545	.long	2186617381
546	.long	1073111608
547	.long	2270764084
548	.long	3164321289
549	.long	3561793907
550	.long	1073119573
551	.long	1157054053
552	.long	1012938926
553	.long	1719614413
554	.long	1073127582
555	.long	330458198
556	.long	3164331316
557	.long	1963711167
558	.long	1073135634
559	.long	1744767757
560	.long	3161622870
561	.long	1013258799
562	.long	1073143730
563	.long	1748797611
564	.long	3161177658
565	.long	4182873220
566	.long	1073151869
567	.long	629542646
568	.long	3163044879
569	.long	3907805044
570	.long	1073160053
571	.long	2257091225
572	.long	3162598983
573	.long	1218806132
574	.long	1073168282
575	.long	1818613052
576	.long	3163597017
577	.long	1447192521
578	.long	1073176555
579	.long	1462857171
580	.long	3163563097
581	.long	1339972927
582	.long	1073184873
583	.long	167908909
584	.long	1016620728
585	.long	1944781191
586	.long	1073193236
587	.long	3993278767
588	.long	3162772855
589	.long	19972402
590	.long	1073201645
591	.long	3507899862
592	.long	1017057868
593	.long	919555682
594	.long	1073210099
595	.long	3121969534
596	.long	1013996802
597	.long	1413356050
598	.long	1073218599
599	.long	1651349291
600	.long	3163716742
601	.long	2571947539
602	.long	1073227145
603	.long	3558159064
604	.long	3164425245
605	.long	1176749997
606	.long	1073235738
607	.long	2738998779
608	.long	3163084420
609	.long	2604962541
610	.long	1073244377
611	.long	2614425274
612	.long	3164587768
613	.long	3649726105
614	.long	1073253063
615	.long	4085036346
616	.long	1016698050
617	.long	1110089947
618	.long	1073261797
619	.long	1451641639
620	.long	1016523249
621	.long	380978316
622	.long	1073270578
623	.long	854188970
624	.long	3161511262
625	.long	2568320822
626	.long	1073279406
627	.long	2732824428
628	.long	1015401491
629	.long	194117574
630	.long	1073288283
631	.long	777528612
632	.long	3164460665
633	.long	2966275557
634	.long	1073297207
635	.long	2176155324
636	.long	3160891335
637	.long	3418903055
638	.long	1073306180
639	.long	2527457337
640	.long	3161869180
641	.long	2682146384
642	.long	1073315202
643	.long	2082178513
644	.long	3164411995
645	.long	1892288442
646	.long	1073324273
647	.long	2446255666
648	.long	3163648957
649	.long	2191782032
650	.long	1073333393
651	.long	2960257726
652	.long	1014791238
653	.long	434316067
654	.long	1073342563
655	.long	2028358766
656	.long	1014506698
657	.long	2069751141
658	.long	1073351782
659	.long	1562170675
660	.long	3163773257
661	.long	3964284211
662	.long	1073361051
663	.long	2111583915
664	.long	1016475740
665	.long	2990417245
666	.long	1073370371
667	.long	3683467745
668	.long	3164417902
669	.long	321958744
670	.long	1073379742
671	.long	3401933767
672	.long	1016843134
673	.long	1434058175
674	.long	1073389163
675	.long	251133233
676	.long	1016134345
677	.long	3218338682
678	.long	1073398635
679	.long	3404164304
680	.long	3163525684
681	.long	2572866477
682	.long	1073408159
683	.long	878562433
684	.long	1016570317
685	.long	697153126
686	.long	1073417735
687	.long	1283515429
688	.long	3164331765
689	.long	3092190715
690	.long	1073427362
691	.long	814012168
692	.long	3160571998
693	.long	2380618042
694	.long	1073437042
695	.long	3149557219
696	.long	3164369375
697	.long	4076559943
698	.long	1073446774
699	.long	2119478331
700	.long	3161806927
701	.long	815859274
702	.long	1073456560
703	.long	240396590
704	.long	3164536019
705	.long	2420883922
706	.long	1073466398
707	.long	2049810052
708	.long	1015168464
709	.long	1540824585
710	.long	1073476290
711	.long	1064017011
712	.long	3164536266
713	.long	3716502172
714	.long	1073486235
715	.long	2303740125
716	.long	1015091301
717	.long	1610600570
718	.long	1073496235
719	.long	3766732298
720	.long	1016808759
721	.long	777507147
722	.long	1073506289
723	.long	4282924205
724	.long	1016236109
725	.long	2483480501
726	.long	1073516397
727	.long	1216371780
728	.long	1014082748
729	.long	3706687593
730	.long	1073526560
731	.long	3521726940
732	.long	1014301643
733	.long	1432208378
734	.long	1073536779
735	.long	1401068914
736	.long	3163412539
737	.long	1242007932
738	.long	1073547053
739	.long	1132034716
740	.long	3164388407
741	.long	135105010
742	.long	1073557383
743	.long	1906148728
744	.long	3164424315
745	.long	3707479175
746	.long	1073567768
747	.long	3613079303
748	.long	1015213314
749	.long	382305176
750	.long	1073578211
751	.long	2347622376
752	.long	3163627201
753	.long	64696965
754	.long	1073588710
755	.long	1768797490
756	.long	1016865536
757	.long	4076975200
758	.long	1073599265
759	.long	2029000899
760	.long	1016257111
761	.long	863738719
762	.long	1073609879
763	.long	1326992220
764	.long	3163661773
765	.long	351641897
766	.long	1073620550
767	.long	2172261526
768	.long	3164059175
769	.long	3884662774
770	.long	1073631278
771	.long	2158611599
772	.long	1015258761
773	.long	4224142467
774	.long	1073642065
775	.long	3389820386
776	.long	1016255778
777	.long	2728693978
778	.long	1073652911
779	.long	396109971
780	.long	3164511267
781	.long	764307441
782	.long	1073663816
783	.long	3021057420
784	.long	3164378099
785	.long	3999357479
786	.long	1073674779
787	.long	2258941616
788	.long	1016973300
789	.long	929806999
790	.long	1073685803
791	.long	3205336643
792	.long	1016308133
793	.long	1533953344
794	.long	1073696886
795	.long	769171851
796	.long	1016714209
797	.long	2912730644
798	.long	1073708029
799	.long	3490067722
800	.long	3164453650
801	.long	2174652632
802	.long	1073719233
803	.long	4087714590
804	.long	1015498835
805	.long	730821105
806	.long	1073730498
807	.long	2523232743
808	.long	1013115764
809	.type	T2f,@object
810	.size	T2f,2048
811	.align 16
812T2_neg_f:
813	.long	0
814	.long	1072693248
815	.long	0
816	.long	0
817	.long	730821105
818	.long	1072681922
819	.long	2523232743
820	.long	1012067188
821	.long	2174652632
822	.long	1072670657
823	.long	4087714590
824	.long	1014450259
825	.long	2912730644
826	.long	1072659453
827	.long	3490067722
828	.long	3163405074
829	.long	1533953344
830	.long	1072648310
831	.long	769171851
832	.long	1015665633
833	.long	929806999
834	.long	1072637227
835	.long	3205336643
836	.long	1015259557
837	.long	3999357479
838	.long	1072626203
839	.long	2258941616
840	.long	1015924724
841	.long	764307441
842	.long	1072615240
843	.long	3021057420
844	.long	3163329523
845	.long	2728693978
846	.long	1072604335
847	.long	396109971
848	.long	3163462691
849	.long	4224142467
850	.long	1072593489
851	.long	3389820386
852	.long	1015207202
853	.long	3884662774
854	.long	1072582702
855	.long	2158611599
856	.long	1014210185
857	.long	351641897
858	.long	1072571974
859	.long	2172261526
860	.long	3163010599
861	.long	863738719
862	.long	1072561303
863	.long	1326992220
864	.long	3162613197
865	.long	4076975200
866	.long	1072550689
867	.long	2029000899
868	.long	1015208535
869	.long	64696965
870	.long	1072540134
871	.long	1768797490
872	.long	1015816960
873	.long	382305176
874	.long	1072529635
875	.long	2347622376
876	.long	3162578625
877	.long	3707479175
878	.long	1072519192
879	.long	3613079303
880	.long	1014164738
881	.long	135105010
882	.long	1072508807
883	.long	1906148728
884	.long	3163375739
885	.long	1242007932
886	.long	1072498477
887	.long	1132034716
888	.long	3163339831
889	.long	1432208378
890	.long	1072488203
891	.long	1401068914
892	.long	3162363963
893	.long	3706687593
894	.long	1072477984
895	.long	3521726940
896	.long	1013253067
897	.long	2483480501
898	.long	1072467821
899	.long	1216371780
900	.long	1013034172
901	.long	777507147
902	.long	1072457713
903	.long	4282924205
904	.long	1015187533
905	.long	1610600570
906	.long	1072447659
907	.long	3766732298
908	.long	1015760183
909	.long	3716502172
910	.long	1072437659
911	.long	2303740125
912	.long	1014042725
913	.long	1540824585
914	.long	1072427714
915	.long	1064017011
916	.long	3163487690
917	.long	2420883922
918	.long	1072417822
919	.long	2049810052
920	.long	1014119888
921	.long	815859274
922	.long	1072407984
923	.long	240396590
924	.long	3163487443
925	.long	4076559943
926	.long	1072398198
927	.long	2119478331
928	.long	3160758351
929	.long	2380618042
930	.long	1072388466
931	.long	3149557219
932	.long	3163320799
933	.long	3092190715
934	.long	1072378786
935	.long	814012168
936	.long	3159523422
937	.long	697153126
938	.long	1072369159
939	.long	1283515429
940	.long	3163283189
941	.long	2572866477
942	.long	1072359583
943	.long	878562433
944	.long	1015521741
945	.long	3218338682
946	.long	1072350059
947	.long	3404164304
948	.long	3162477108
949	.long	1434058175
950	.long	1072340587
951	.long	251133233
952	.long	1015085769
953	.long	321958744
954	.long	1072331166
955	.long	3401933767
956	.long	1015794558
957	.long	2990417245
958	.long	1072321795
959	.long	3683467745
960	.long	3163369326
961	.long	3964284211
962	.long	1072312475
963	.long	2111583915
964	.long	1015427164
965	.long	2069751141
966	.long	1072303206
967	.long	1562170675
968	.long	3162724681
969	.long	434316067
970	.long	1072293987
971	.long	2028358766
972	.long	1013458122
973	.long	2191782032
974	.long	1072284817
975	.long	2960257726
976	.long	1013742662
977	.long	1892288442
978	.long	1072275697
979	.long	2446255666
980	.long	3162600381
981	.long	2682146384
982	.long	1072266626
983	.long	2082178513
984	.long	3163363419
985	.long	3418903055
986	.long	1072257604
987	.long	2527457337
988	.long	3160820604
989	.long	2966275557
990	.long	1072248631
991	.long	2176155324
992	.long	3159842759
993	.long	194117574
994	.long	1072239707
995	.long	777528612
996	.long	3163412089
997	.long	2568320822
998	.long	1072230830
999	.long	2732824428
1000	.long	1014352915
1001	.long	380978316
1002	.long	1072222002
1003	.long	854188970
1004	.long	3160462686
1005	.long	1110089947
1006	.long	1072213221
1007	.long	1451641639
1008	.long	1015474673
1009	.long	3649726105
1010	.long	1072204487
1011	.long	4085036346
1012	.long	1015649474
1013	.long	2604962541
1014	.long	1072195801
1015	.long	2614425274
1016	.long	3163539192
1017	.long	1176749997
1018	.long	1072187162
1019	.long	2738998779
1020	.long	3162035844
1021	.long	2571947539
1022	.long	1072178569
1023	.long	3558159064
1024	.long	3163376669
1025	.long	1413356050
1026	.long	1072170023
1027	.long	1651349291
1028	.long	3162668166
1029	.long	919555682
1030	.long	1072161523
1031	.long	3121969534
1032	.long	1012948226
1033	.long	19972402
1034	.long	1072153069
1035	.long	3507899862
1036	.long	1016009292
1037	.long	1944781191
1038	.long	1072144660
1039	.long	3993278767
1040	.long	3161724279
1041	.long	1339972927
1042	.long	1072136297
1043	.long	167908909
1044	.long	1015572152
1045	.long	1447192521
1046	.long	1072127979
1047	.long	1462857171
1048	.long	3162514521
1049	.long	1218806132
1050	.long	1072119706
1051	.long	1818613052
1052	.long	3162548441
1053	.long	3907805044
1054	.long	1072111477
1055	.long	2257091225
1056	.long	3161550407
1057	.long	4182873220
1058	.long	1072103293
1059	.long	629542646
1060	.long	3161996303
1061	.long	1013258799
1062	.long	1072095154
1063	.long	1748797611
1064	.long	3160129082
1065	.long	1963711167
1066	.long	1072087058
1067	.long	1744767757
1068	.long	3160574294
1069	.long	1719614413
1070	.long	1072079006
1071	.long	330458198
1072	.long	3163282740
1073	.long	3561793907
1074	.long	1072070997
1075	.long	1157054053
1076	.long	1011890350
1077	.long	2186617381
1078	.long	1072063032
1079	.long	2270764084
1080	.long	3163272713
1081	.long	885834528
1082	.long	1072055110
1083	.long	1973258547
1084	.long	3162261564
1085	.long	2956612997
1086	.long	1072047230
1087	.long	2118169751
1088	.long	3162735553
1089	.long	3111574537
1090	.long	1072039393
1091	.long	2606161479
1092	.long	3162759746
1093	.long	363667784
1094	.long	1072031599
1095	.long	813753950
1096	.long	1015785209
1097	.long	2321106615
1098	.long	1072023846
1099	.long	2171176610
1100	.long	1009535771
1101	.long	3712504873
1102	.long	1072016135
1103	.long	88491949
1104	.long	1015427660
1105	.long	3566716925
1106	.long	1072008466
1107	.long	1536826856
1108	.long	1014142433
1109	.long	917841882
1110	.long	1072000839
1111	.long	18715565
1112	.long	1015659308
1113	.long	3395129871
1114	.long	1071993252
1115	.long	4025345435
1116	.long	3162335388
1117	.long	1453150082
1118	.long	1071985707
1119	.long	498154669
1120	.long	3161488062
1121	.long	2731501122
1122	.long	1071978202
1123	.long	1774031855
1124	.long	3162470021
1125	.long	1990012071
1126	.long	1071970738
1127	.long	3529070563
1128	.long	3162813193
1129	.long	2583551245
1130	.long	1071963314
1131	.long	3161094195
1132	.long	1015606491
1133	.long	3577096743
1134	.long	1071955930
1135	.long	2951496418
1136	.long	1013793687
1137	.long	4040676318
1138	.long	1071948586
1139	.long	4090609238
1140	.long	1015663458
1141	.long	3049340112
1142	.long	1071941282
1143	.long	3062915824
1144	.long	1013170595
1145	.long	3978100823
1146	.long	1071934017
1147	.long	3513027190
1148	.long	1015845963
1149	.long	1617004845
1150	.long	1071926792
1151	.long	82804944
1152	.long	1010342778
1153	.long	3645941911
1154	.long	1071919605
1155	.long	3814685081
1156	.long	3161573341
1157	.long	569847338
1158	.long	1071912458
1159	.long	472945272
1160	.long	3159290729
1161	.long	78413852
1162	.long	1071905349
1163	.long	4183226867
1164	.long	3163017251
1165	.long	1276261410
1166	.long	1071898278
1167	.long	300981948
1168	.long	1014684169
1169	.long	3272845541
1170	.long	1071891245
1171	.long	928852419
1172	.long	3163488248
1173	.long	887463927
1174	.long	1071884251
1175	.long	3596744163
1176	.long	3160794166
1177	.long	1829099622
1178	.long	1071877294
1179	.long	1016661181
1180	.long	3163461005
1181	.long	926591435
1182	.long	1071870375
1183	.long	3208833762
1184	.long	3162913514
1185	.long	1603444721
1186	.long	1071863493
1187	.long	1548633640
1188	.long	3162201326
1189	.long	2992903935
1190	.long	1071856648
1191	.long	2218154406
1192	.long	1015228193
1193	.long	4232894513
1194	.long	1071849840
1195	.long	2383938684
1196	.long	1014668519
1197	.long	171030293
1198	.long	1071843070
1199	.long	3526460132
1200	.long	1014428778
1201	.long	2839424854
1202	.long	1071836335
1203	.long	1171596163
1204	.long	1013041679
1205	.long	2799960843
1206	.long	1071829637
1207	.long	1423655381
1208	.long	1015022151
1209	.long	3504003472
1210	.long	1071822975
1211	.long	3594001060
1212	.long	3157330652
1213	.long	4112506593
1214	.long	1071816349
1215	.long	2947355221
1216	.long	1014371048
1217	.long	3790955393
1218	.long	1071809759
1219	.long	2352942462
1220	.long	3163180090
1221	.long	1709341917
1222	.long	1071803205
1223	.long	2571168217
1224	.long	1014152499
1225	.long	1337108031
1226	.long	1071796686
1227	.long	3203724452
1228	.long	1014677845
1229	.long	1853186616
1230	.long	1071790202
1231	.long	3066496371
1232	.long	1015656574
1233	.long	2440944790
1234	.long	1071783753
1235	.long	2492769774
1236	.long	1014147454
1237	.long	2288159958
1238	.long	1071777339
1239	.long	2169144469
1240	.long	1014876021
1241	.long	586995997
1242	.long	1071770960
1243	.long	41662348
1244	.long	3162627992
1245	.long	828946858
1246	.long	1071764615
1247	.long	10642492
1248	.long	1015939438
1249	.long	2214878420
1250	.long	1071758304
1251	.long	892270087
1252	.long	3163116422
1253	.long	3949972341
1254	.long	1071752027
1255	.long	2068408548
1256	.long	1014913868
1257	.long	948735466
1258	.long	1071745785
1259	.long	3516338028
1260	.long	3162574883
1261	.long	1014845819
1262	.long	1071739576
1263	.long	3117910646
1264	.long	3161559105
1265	.long	3366293073
1266	.long	1071733400
1267	.long	3119426314
1268	.long	1014120554
1269	.long	2930322912
1270	.long	1071727258
1271	.long	2599499422
1272	.long	3162714047
1273	.long	3228316108
1274	.long	1071721149
1275	.long	3010241991
1276	.long	3158422804
1277	.long	3490863953
1278	.long	1071715073
1279	.long	960797498
1280	.long	3162948880
1281	.long	2952712987
1282	.long	1071709030
1283	.long	3293494651
1284	.long	3160120301
1285	.long	852742562
1286	.long	1071703020
1287	.long	667253586
1288	.long	1009793559
1289	.long	728909815
1290	.long	1071697042
1291	.long	383930225
1292	.long	1015029468
1293	.long	1828292879
1294	.long	1071691096
1295	.long	1255956747
1296	.long	1015588398
1297	.long	3402036099
1298	.long	1071685182
1299	.long	405889334
1300	.long	1015105656
1301	.long	410360776
1302	.long	1071679301
1303	.long	1269990655
1304	.long	1011975870
1305	.long	702412510
1306	.long	1071673451
1307	.long	3803266087
1308	.long	3162280415
1309	.long	3541402996
1310	.long	1071667632
1311	.long	2759177317
1312	.long	1014854626
1313	.long	3899555717
1314	.long	1071661845
1315	.long	427280750
1316	.long	3162546972
1317	.long	1048019041
1318	.long	1071656090
1319	.long	1398474845
1320	.long	3160510595
1321	.long	2851812149
1322	.long	1071650365
1323	.long	2595802551
1324	.long	1015767337
1325	.type	T2_neg_f,@object
1326	.size	T2_neg_f,2048
1327	.align 16
1328pv:
1329	.long	3078135644
1330	.long	1049787983
1331	.long	381774870
1332	.long	1062650220
1333	.long	436314137
1334	.long	1056571808
1335	.long	1431655765
1336	.long	1067799893
1337	.type	pv,@object
1338	.size	pv,32
1339	.align 4
1340HALFMASK:
1341	.long	4160749568
1342	.long	2147483647
1343	.type	HALFMASK,@object
1344	.size	HALFMASK,8
1345	.align 4
1346ONEMASK:
1347	.long	0
1348	.long	1072693248
1349	.type	ONEMASK,@object
1350	.size	ONEMASK,8
1351	.data
1352	.section .note.GNU-stack, ""
1353// -- Begin DWARF2 SEGMENT .eh_frame
1354	.section .eh_frame,"a",@progbits
1355.eh_frame_seg:
1356	.align 1
1357	.4byte 0x00000014
1358	.8byte 0x00527a0100000000
1359	.8byte 0x08070c1b01107801
1360	.4byte 0x00000190
1361	.4byte 0x0000001c
1362	.4byte 0x0000001c
1363	.4byte ..___tag_value_cosh.1-.
1364	.4byte ..___tag_value_cosh.5-..___tag_value_cosh.1
1365	.2byte 0x0400
1366	.4byte ..___tag_value_cosh.3-..___tag_value_cosh.1
1367	.2byte 0x100e
1368	.byte 0x04
1369	.4byte ..___tag_value_cosh.4-..___tag_value_cosh.3
1370	.2byte 0x080e
1371	.byte 0x00
1372# End
1373