about summary refs log tree commit diff
path: root/sysdeps/x86_64/fpu/multiarch/svml_s_erff8_core_avx2.S
blob: 33d227f17e1ee2aa5890c39b78979e0bb3dfd5c5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
/* Function erff vectorized with AVX2.
   Copyright (C) 2021-2022 Free Software Foundation, Inc.
   This file is part of the GNU C Library.

   The GNU C Library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Lesser General Public
   License as published by the Free Software Foundation; either
   version 2.1 of the License, or (at your option) any later version.

   The GNU C Library is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   Lesser General Public License for more details.

   You should have received a copy of the GNU Lesser General Public
   License along with the GNU C Library; if not, see
   https://www.gnu.org/licenses/.  */

/*
 * ALGORITHM DESCRIPTION:
 *
 *   Basic formula is
 *    erf(x) ~ erf(x0) +
 *              + exp(-x0*x0)*D*(1+c0+T*P1(T)+D^2*P3(T)+D^4*p5)
 *   where D=x-x0, T=x0*D
 *   x0 is x rounded to a specified number of fractional bits (in this case 8),
 *    except that x0=0 for |x|<3.5/256.0 (using x0=0 for first 4 table entries)
 *
 *   Data table packs both erf(x0)_high and a few bits of erf(x0)_low in one
 *   entry (in place of redundant exponent bits)
 *
 */

/* Offsets for data table __svml_serf_data_internal
 */
#define _erf_tbl                      	0
#define _AbsMask                      	4032
#define _MaxThreshold                 	4064
#define _SRound                       	4096
#define _U2Threshold                  	4128
#define _poly3_0                      	4160

/* Lookup bias for data table __svml_serf_data_internal.  */
#define Table_Lookup_Bias               -0x3c000000

#include <sysdep.h>

        .text
	.section .text.avx2,"ax",@progbits
ENTRY(_ZGVdN8v_erff_avx2)
        lea       Table_Lookup_Bias+__svml_serf_data_internal(%rip), %rax

/*
 * vector gather:
 * erf(x0), exp(-x0*x0)*2.0/sqrt(pi)
 */
        vmovups   _SRound+__svml_serf_data_internal(%rip), %ymm7
        vandps    _AbsMask+__svml_serf_data_internal(%rip), %ymm0, %ymm6

/*
 * erf(x) rounds to 1.0 for x>_MaxThreshold (3.9375)
 * can compute all results in the main path
 */
        vminps    _MaxThreshold+__svml_serf_data_internal(%rip), %ymm6, %ymm8
        vaddps    %ymm7, %ymm8, %ymm10
        vcmpgt_oqps _U2Threshold+__svml_serf_data_internal(%rip), %ymm8, %ymm9
        vpslld    $3, %ymm10, %ymm11
        vsubps    %ymm7, %ymm10, %ymm4
        vsubps    %ymm4, %ymm8, %ymm3
        vandps    %ymm9, %ymm3, %ymm2

/* NaN fixup */
        vminps    %ymm6, %ymm3, %ymm3

/* D2 = Diff^2 */
        vmulps    %ymm2, %ymm2, %ymm2

/* save sign */
        vxorps    %ymm0, %ymm6, %ymm5
        vmovd     %xmm11, %edx
        vextractf128 $1, %ymm11, %xmm12
        vpextrd   $2, %xmm11, %esi
        movslq    %edx, %rdx
        movslq    %esi, %rsi
        vmovd     %xmm12, %r8d
        vmovq     (%rax,%rdx), %xmm13
        vmovq     (%rax,%rsi), %xmm14
        vunpcklps %xmm14, %xmm13, %xmm10
        vmovups   _poly3_0+__svml_serf_data_internal(%rip), %ymm14
        vpextrd   $1, %xmm11, %ecx
        vpextrd   $3, %xmm11, %edi
        vpextrd   $1, %xmm12, %r9d
        vpextrd   $2, %xmm12, %r10d
        vpextrd   $3, %xmm12, %r11d

/*
 * Start polynomial evaluation
 * P1
 */
        vfmsub231ps %ymm14, %ymm3, %ymm4
        movslq    %ecx, %rcx
        movslq    %edi, %rdi
        movslq    %r8d, %r8
        movslq    %r9d, %r9
        movslq    %r10d, %r10
        movslq    %r11d, %r11
        vmovq     (%rax,%rcx), %xmm1
        vmovq     (%rax,%rdi), %xmm15

/*
 * branch-free
 * (exp_h(x0) * Diff) * (poly + 1.0)
 */
        vfmadd213ps %ymm3, %ymm2, %ymm4
        vmovq     (%rax,%r8), %xmm7
        vmovq     (%rax,%r9), %xmm0
        vmovq     (%rax,%r10), %xmm8
        vmovq     (%rax,%r11), %xmm9
        vunpcklps %xmm15, %xmm1, %xmm11
        vunpcklps %xmm8, %xmm7, %xmm1
        vunpcklps %xmm9, %xmm0, %xmm0
        vinsertf128 $1, %xmm1, %ymm10, %ymm12
        vinsertf128 $1, %xmm0, %ymm11, %ymm13
        vunpcklps %ymm13, %ymm12, %ymm0
        vunpckhps %ymm13, %ymm12, %ymm15

/* Final result */
        vfmadd213ps %ymm0, %ymm15, %ymm4

/* set sign */
        vorps     %ymm5, %ymm4, %ymm0
        ret

END(_ZGVdN8v_erff_avx2)

        .section .rodata, "a"
        .align 32

#ifdef __svml_serf_data_internal_typedef
typedef unsigned int VUINT32;
typedef struct
{
        __declspec(align(32)) VUINT32 _erf_tbl[1008][1];
        __declspec(align(32)) VUINT32 _AbsMask[8][1];
        __declspec(align(32)) VUINT32 _MaxThreshold[8][1];
        __declspec(align(32)) VUINT32 _SRound[8][1];
        __declspec(align(32)) VUINT32 _U2Threshold[8][1];
        __declspec(align(32)) VUINT32 _poly3_0[8][1];
} __svml_serf_data_internal;
#endif
__svml_serf_data_internal:
        /*== _erf_tbl ==*/
        .long 0x00000000, 0x3f906ebb
        .long 0x3c106dfa, 0x3f906c79
        .long 0x3c906bb8, 0x3f9065b4
        .long 0x3cd89bf0, 0x3f905a6c
        .long 0x3d1062b2, 0x3f904aa3
        .long 0x3d3472ea, 0x3f90365a
        .long 0x3d587d7f, 0x3f901d93
        .long 0x3d7c8154, 0x3f900050
        .long 0x3d903ea4, 0x3f8fde94
        .long 0x3da2381f, 0x3f8fb862
        .long 0x3db42c8d, 0x3f8f8dbd
        .long 0x3dc61b5f, 0x3f8f5eab
        .long 0x3dd80409, 0x3f8f2b2e
        .long 0x3de9e5fc, 0x3f8ef34c
        .long 0x3dfbc0ad, 0x3f8eb70a
        .long 0x3e06c9c8, 0x3f8e766e
        .long 0x3e0faf0d, 0x3f8e317d
        .long 0x3e188fe1, 0x3f8de83e
        .long 0x3e216bfe, 0x3f8d9ab9
        .long 0x3e2a4321, 0x3f8d48f3
        .long 0x3e331506, 0x3f8cf2f5
        .long 0x3e3be169, 0x3f8c98c6
        .long 0x3e44a808, 0x3f8c3a6f
        .long 0x3e4d68a1, 0x3f8bd7f8
        .long 0x3e5622f2, 0x3f8b716c
        .long 0x3e5ed6b9, 0x3f8b06d2
        .long 0x3e6783b7, 0x3f8a9834
        .long 0x3e7029aa, 0x3f8a259e
        .long 0x3e78c855, 0x3f89af18
        .long 0x3e80afbc, 0x3f8934af
        .long 0x3e84f76b, 0x3f88b66c
        .long 0x3e893b19, 0x3f88345d
        .long 0x3e8d7aa7, 0x3f87ae8b
        .long 0x3e91b5f8, 0x3f872504
        .long 0x3e95ecee, 0x3f8697d3
        .long 0x3e9a1f6b, 0x3f860705
        .long 0x3e9e4d54, 0x3f8572a8
        .long 0x3ea2768c, 0x3f84dac8
        .long 0x3ea69af8, 0x3f843f72
        .long 0x3eaaba7a, 0x3f83a0b6
        .long 0x3eaed4fa, 0x3f82fe9f
        .long 0x3eb2ea5c, 0x3f82593e
        .long 0x3eb6fa85, 0x3f81b0a0
        .long 0x3ebb055d, 0x3f8104d3
        .long 0x3ebf0aca, 0x3f8055e8
        .long 0x3ec30ab3, 0x3f7f47d8
        .long 0x3ec70501, 0x3f7ddddf
        .long 0x3ecaf99b, 0x3f7c6e05
        .long 0x3ecee869, 0x3f7af867
        .long 0x3ed2d156, 0x3f797d26
        .long 0x3ed6b44b, 0x3f77fc62
        .long 0x3eda9132, 0x3f76763c
        .long 0x3ede67f6, 0x3f74ead4
        .long 0x3ee23882, 0x3f735a4c
        .long 0x3ee602c2, 0x3f71c4c4
        .long 0x3ee9c6a2, 0x3f702a5f
        .long 0x3eed840e, 0x3f6e8b3e
        .long 0x3ef13af5, 0x3f6ce783
        .long 0x3ef4eb45, 0x3f6b3f51
        .long 0x3ef894ea, 0x3f6992c9
        .long 0x3efc37d5, 0x3f67e20f
        .long 0x3effd3f5, 0x3f662d45
        .long 0x3f01b49d, 0x3f64748e
        .long 0x3f037bca, 0x3f62b80d
        .long 0x3f053f7b, 0x3f60f7e5
        .long 0x3f06ffa8, 0x3f5f3439
        .long 0x3f08bc4a, 0x3f5d6d2d
        .long 0x3f0a755a, 0x3f5ba2e3
        .long 0x3f0c2ad3, 0x3f59d57e
        .long 0x3f0ddcae, 0x3f580523
        .long 0x3f0f8ae6, 0x3f5631f4
        .long 0x3f113574, 0x3f545c14
        .long 0x3f12dc54, 0x3f5283a7
        .long 0x3f147f81, 0x3f50a8cf
        .long 0x3f161ef6, 0x3f4ecbb1
        .long 0x3f17baae, 0x3f4cec6d
        .long 0x3f1952a6, 0x3f4b0b28
        .long 0x3f1ae6da, 0x3f492804
        .long 0x3f1c7745, 0x3f474323
        .long 0x3f1e03e5, 0x3f455ca8
        .long 0x3f1f8cb7, 0x3f4374b5
        .long 0x3f2111b7, 0x3f418b6b
        .long 0x3f2292e4, 0x3f3fa0ee
        .long 0x3f24103a, 0x3f3db55e
        .long 0x3f2589b9, 0x3f3bc8dc
        .long 0x3f26ff5d, 0x3f39db8a
        .long 0x3f287126, 0x3f37ed89
        .long 0x3f29df13, 0x3f35fef8
        .long 0x3f2b4922, 0x3f340ff9
        .long 0x3f2caf53, 0x3f3220ab
        .long 0x3f2e11a4, 0x3f30312e
        .long 0x3f2f7017, 0x3f2e41a1
        .long 0x3f30caab, 0x3f2c5223
        .long 0x3f322160, 0x3f2a62d3
        .long 0x3f337437, 0x3f2873cf
        .long 0x3f34c32f, 0x3f268534
        .long 0x3f360e4c, 0x3f249721
        .long 0x3f37558c, 0x3f22a9b3
        .long 0x3f3898f3, 0x3f20bd06
        .long 0x3f39d881, 0x3f1ed137
        .long 0x3f3b1438, 0x3f1ce661
        .long 0x3f3c4c1b, 0x3f1afca0
        .long 0x3f3d802c, 0x3f19140f
        .long 0x3f3eb06c, 0x3f172cc9
        .long 0x3f3fdce0, 0x3f1546e7
        .long 0x3f410589, 0x3f136284
        .long 0x3f422a6b, 0x3f117fb9
        .long 0x3f434b89, 0x3f0f9e9e
        .long 0x3f4468e7, 0x3f0dbf4c
        .long 0x3f458287, 0x3f0be1db
        .long 0x3f46986f, 0x3f0a0662
        .long 0x3f47aaa2, 0x3f082cf7
        .long 0x3f48b925, 0x3f0655b1
        .long 0x3f49c3fb, 0x3f0480a6
        .long 0x3f4acb29, 0x3f02adeb
        .long 0x3f4bceb4, 0x3f00dd96
        .long 0x3f4ccea1, 0x3efe1f73
        .long 0x3f4dcaf4, 0x3efa88d5
        .long 0x3f4ec3b4, 0x3ef6f777
        .long 0x3f4fb8e5, 0x3ef36b80
        .long 0x3f50aa8d, 0x3eefe513
        .long 0x3f5198b1, 0x3eec6455
        .long 0x3f528358, 0x3ee8e968
        .long 0x3f536a86, 0x3ee5746d
        .long 0x3f544e43, 0x3ee20584
        .long 0x3f552e93, 0x3ede9ccc
        .long 0x3f560b7e, 0x3edb3a64
        .long 0x3f56e50a, 0x3ed7de6a
        .long 0x3f57bb3d, 0x3ed488f8
        .long 0x3f588e1e, 0x3ed13a2b
        .long 0x3f595db4, 0x3ecdf21c
        .long 0x3f5a2a05, 0x3ecab0e4
        .long 0x3f5af318, 0x3ec7769b
        .long 0x3f5bb8f4, 0x3ec44359
        .long 0x3f5c7ba1, 0x3ec11733
        .long 0x3f5d3b25, 0x3ebdf23d
        .long 0x3f5df788, 0x3ebad48d
        .long 0x3f5eb0d1, 0x3eb7be35
        .long 0x3f5f6707, 0x3eb4af46
        .long 0x3f601a32, 0x3eb1a7d3
        .long 0x3f60ca59, 0x3eaea7ea
        .long 0x3f617784, 0x3eabaf9a
        .long 0x3f6221bb, 0x3ea8bef3
        .long 0x3f62c905, 0x3ea5d600
        .long 0x3f636d69, 0x3ea2f4ce
        .long 0x3f640ef1, 0x3ea01b68
        .long 0x3f64ada3, 0x3e9d49d9
        .long 0x3f654987, 0x3e9a8029
        .long 0x3f65e2a6, 0x3e97be62
        .long 0x3f667906, 0x3e95048b
        .long 0x3f670cb1, 0x3e9252aa
        .long 0x3f679dae, 0x3e8fa8c5
        .long 0x3f682c06, 0x3e8d06e3
        .long 0x3f68b7bf, 0x3e8a6d05
        .long 0x3f6940e2, 0x3e87db31
        .long 0x3f69c778, 0x3e855168
        .long 0x3f6a4b88, 0x3e82cfad
        .long 0x3f6acd1a, 0x3e805600
        .long 0x3f6b4c36, 0x3e7bc8c2
        .long 0x3f6bc8e5, 0x3e76f5a0
        .long 0x3f6c432f, 0x3e723298
        .long 0x3f6cbb1b, 0x3e6d7fa5
        .long 0x3f6d30b1, 0x3e68dcc1
        .long 0x3f6da3fa, 0x3e6449e7
        .long 0x3f6e14fe, 0x3e5fc70e
        .long 0x3f6e83c4, 0x3e5b542b
        .long 0x3f6ef055, 0x3e56f136
        .long 0x3f6f5ab8, 0x3e529e21
        .long 0x3f6fc2f5, 0x3e4e5adf
        .long 0x3f702915, 0x3e4a2761
        .long 0x3f708d1f, 0x3e460399
        .long 0x3f70ef1b, 0x3e41ef75
        .long 0x3f714f11, 0x3e3deae4
        .long 0x3f71ad09, 0x3e39f5d2
        .long 0x3f72090a, 0x3e36102b
        .long 0x3f72631c, 0x3e3239db
        .long 0x3f72bb46, 0x3e2e72cb
        .long 0x3f731191, 0x3e2abae4
        .long 0x3f736604, 0x3e27120f
        .long 0x3f73b8a5, 0x3e237833
        .long 0x3f74097e, 0x3e1fed36
        .long 0x3f745895, 0x3e1c70fd
        .long 0x3f74a5f2, 0x3e19036e
        .long 0x3f74f19b, 0x3e15a46d
        .long 0x3f753b98, 0x3e1253dc
        .long 0x3f7583f1, 0x3e0f119f
        .long 0x3f75caac, 0x3e0bdd96
        .long 0x3f760fd1, 0x3e08b7a4
        .long 0x3f765366, 0x3e059fa9
        .long 0x3f769573, 0x3e029586
        .long 0x3f76d5fe, 0x3dff3230
        .long 0x3f77150f, 0x3df95481
        .long 0x3f7752ab, 0x3df391b9
        .long 0x3f778eda, 0x3dede995
        .long 0x3f77c9a2, 0x3de85bd0
        .long 0x3f78030a, 0x3de2e825
        .long 0x3f783b18, 0x3ddd8e4c
        .long 0x3f7871d3, 0x3dd84dfe
        .long 0x3f78a741, 0x3dd326f3
        .long 0x3f78db68, 0x3dce18e3
        .long 0x3f790e50, 0x3dc92385
        .long 0x3f793ffc, 0x3dc4468f
        .long 0x3f797075, 0x3dbf81b6
        .long 0x3f799fbf, 0x3dbad4b0
        .long 0x3f79cde1, 0x3db63f32
        .long 0x3f79fae1, 0x3db1c0f1
        .long 0x3f7a26c4, 0x3dad59a1
        .long 0x3f7a518f, 0x3da908f6
        .long 0x3f7a7b4a, 0x3da4cea4
        .long 0x3f7aa3f9, 0x3da0aa5e
        .long 0x3f7acba1, 0x3d9c9bd9
        .long 0x3f7af248, 0x3d98a2c7
        .long 0x3f7b17f4, 0x3d94bedd
        .long 0x3f7b3ca9, 0x3d90efcd
        .long 0x3f7b606e, 0x3d8d354b
        .long 0x3f7b8346, 0x3d898f0a
        .long 0x3f7ba537, 0x3d85fcbf
        .long 0x3f7bc646, 0x3d827e1d
        .long 0x3f7be677, 0x3d7e25af
        .long 0x3f7c05d1, 0x3d777546
        .long 0x3f7c2456, 0x3d70ea68
        .long 0x3f7c420d, 0x3d6a847d
        .long 0x3f7c5ef9, 0x3d6442f0
        .long 0x3f7c7b1f, 0x3d5e252a
        .long 0x3f7c9684, 0x3d582a98
        .long 0x3f7cb12b, 0x3d5252a5
        .long 0x3f7ccb1a, 0x3d4c9cbd
        .long 0x3f7ce454, 0x3d47084e
        .long 0x3f7cfcdd, 0x3d4194c7
        .long 0x3f7d14ba, 0x3d3c4196
        .long 0x3f7d2bef, 0x3d370e2c
        .long 0x3f7d427f, 0x3d31f9fb
        .long 0x3f7d586f, 0x3d2d0474
        .long 0x3f7d6dc2, 0x3d282d0c
        .long 0x3f7d827b, 0x3d237336
        .long 0x3f7d96a0, 0x3d1ed669
        .long 0x3f7daa32, 0x3d1a561b
        .long 0x3f7dbd36, 0x3d15f1c6
        .long 0x3f7dcfb0, 0x3d11a8e1
        .long 0x3f7de1a2, 0x3d0d7ae9
        .long 0x3f7df30f, 0x3d09675a
        .long 0x3f7e03fd, 0x3d056db0
        .long 0x3f7e146c, 0x3d018d6b
        .long 0x3f7e2461, 0x3cfb8c15
        .long 0x3f7e33de, 0x3cf42e22
        .long 0x3f7e42e8, 0x3ced0003
        .long 0x3f7e517f, 0x3ce600c0
        .long 0x3f7e5fa9, 0x3cdf2f67
        .long 0x3f7e6d66, 0x3cd88b05
        .long 0x3f7e7abb, 0x3cd212ad
        .long 0x3f7e87aa, 0x3ccbc574
        .long 0x3f7e9435, 0x3cc5a273
        .long 0x3f7ea05f, 0x3cbfa8c4
        .long 0x3f7eac2b, 0x3cb9d786
        .long 0x3f7eb79a, 0x3cb42ddb
        .long 0x3f7ec2b1, 0x3caeaae6
        .long 0x3f7ecd71, 0x3ca94dcf
        .long 0x3f7ed7dc, 0x3ca415c2
        .long 0x3f7ee1f4, 0x3c9f01ec
        .long 0x3f7eebbd, 0x3c9a117f
        .long 0x3f7ef537, 0x3c9543ae
        .long 0x3f7efe66, 0x3c9097b1
        .long 0x3f7f074b, 0x3c8c0cc2
        .long 0x3f7f0fe8, 0x3c87a21f
        .long 0x3f7f1840, 0x3c83570a
        .long 0x3f7f2053, 0x3c7e558a
        .long 0x3f7f2826, 0x3c763931
        .long 0x3f7f2fb8, 0x3c6e579b
        .long 0x3f7f370c, 0x3c66af65
        .long 0x3f7f3e23, 0x3c5f3f2d
        .long 0x3f7f4500, 0x3c58059c
        .long 0x3f7f4ba4, 0x3c51015f
        .long 0x3f7f5211, 0x3c4a3127
        .long 0x3f7f5848, 0x3c4393af
        .long 0x3f7f5e4b, 0x3c3d27b5
        .long 0x3f7f641b, 0x3c36ebff
        .long 0x3f7f69ba, 0x3c30df57
        .long 0x3f7f6f29, 0x3c2b008e
        .long 0x3f7f746a, 0x3c254e7b
        .long 0x3f7f797f, 0x3c1fc7fb
        .long 0x3f7f7e67, 0x3c1a6bee
        .long 0x3f7f8326, 0x3c15393d
        .long 0x3f7f87bb, 0x3c102ed6
        .long 0x3f7f8c29, 0x3c0b4bab
        .long 0x3f7f9070, 0x3c068eb5
        .long 0x3f7f9492, 0x3c01f6f1
        .long 0x3f7f9890, 0x3bfb06c5
        .long 0x3f7f9c6b, 0x3bf26625
        .long 0x3f7fa024, 0x3bea0a1d
        .long 0x3f7fa3bc, 0x3be1f0d3
        .long 0x3f7fa734, 0x3bda1876
        .long 0x3f7faa8d, 0x3bd27f42
        .long 0x3f7fadc8, 0x3bcb237a
        .long 0x3f7fb0e6, 0x3bc4036c
        .long 0x3f7fb3e8, 0x3bbd1d6f
        .long 0x3f7fb6cf, 0x3bb66fe6
        .long 0x3f7fb99c, 0x3baff93b
        .long 0x3f7fbc4f, 0x3ba9b7e1
        .long 0x3f7fbeea, 0x3ba3aa56
        .long 0x3f7fc16d, 0x3b9dcf20
        .long 0x3f7fc3d9, 0x3b9824ce
        .long 0x3f7fc62e, 0x3b92a9f7
        .long 0x3f7fc86e, 0x3b8d5d3c
        .long 0x3f7fca99, 0x3b883d46
        .long 0x3f7fccb0, 0x3b8348c6
        .long 0x3f7fceb4, 0x3b7cfce8
        .long 0x3f7fd0a5, 0x3b73ba24
        .long 0x3f7fd283, 0x3b6ac6d3
        .long 0x3f7fd450, 0x3b622096
        .long 0x3f7fd60c, 0x3b59c51d
        .long 0x3f7fd7b7, 0x3b51b22a
        .long 0x3f7fd953, 0x3b49e589
        .long 0x3f7fdadf, 0x3b425d18
        .long 0x3f7fdc5c, 0x3b3b16c2
        .long 0x3f7fddcc, 0x3b341080
        .long 0x3f7fdf2d, 0x3b2d4858
        .long 0x3f7fe081, 0x3b26bc5e
        .long 0x3f7fe1c8, 0x3b206ab2
        .long 0x3f7fe303, 0x3b1a5183
        .long 0x3f7fe431, 0x3b146f09
        .long 0x3f7fe554, 0x3b0ec18c
        .long 0x3f7fe66c, 0x3b09475d
        .long 0x3f7fe77a, 0x3b03feda
        .long 0x3f7fe87d, 0x3afdccdc
        .long 0x3f7fe975, 0x3af3f919
        .long 0x3f7fea65, 0x3aea7f6c
        .long 0x3f7feb4b, 0x3ae15ce8
        .long 0x3f7fec27, 0x3ad88eb8
        .long 0x3f7fecfc, 0x3ad0121b
        .long 0x3f7fedc8, 0x3ac7e464
        .long 0x3f7fee8c, 0x3ac002f8
        .long 0x3f7fef48, 0x3ab86b52
        .long 0x3f7feffd, 0x3ab11afe
        .long 0x3f7ff0aa, 0x3aaa0f9a
        .long 0x3f7ff151, 0x3aa346d7
        .long 0x3f7ff1f1, 0x3a9cbe77
        .long 0x3f7ff28a, 0x3a96744c
        .long 0x3f7ff31e, 0x3a90663b
        .long 0x3f7ff3ab, 0x3a8a9237
        .long 0x3f7ff433, 0x3a84f643
        .long 0x3f7ff4b5, 0x3a7f20e7
        .long 0x3f7ff532, 0x3a74bdd2
        .long 0x3f7ff5aa, 0x3a6abfa9
        .long 0x3f7ff61d, 0x3a6122ea
        .long 0x3f7ff68b, 0x3a57e42f
        .long 0x3f7ff6f5, 0x3a4f002c
        .long 0x3f7ff75a, 0x3a4673af
        .long 0x3f7ff7bb, 0x3a3e3ba2
        .long 0x3f7ff819, 0x3a365507
        .long 0x3f7ff872, 0x3a2ebcf6
        .long 0x3f7ff8c7, 0x3a2770a1
        .long 0x3f7ff919, 0x3a206d52
        .long 0x3f7ff968, 0x3a19b066
        .long 0x3f7ff9b3, 0x3a133754
        .long 0x3f7ff9fb, 0x3a0cffa3
        .long 0x3f7ffa40, 0x3a0706f4
        .long 0x3f7ffa82, 0x3a014af8
        .long 0x3f7ffac1, 0x39f792ea
        .long 0x3f7ffafe, 0x39ed0088
        .long 0x3f7ffb38, 0x39e2daa1
        .long 0x3f7ffb6f, 0x39d91d2d
        .long 0x3f7ffba5, 0x39cfc44a
        .long 0x3f7ffbd7, 0x39c6cc35
        .long 0x3f7ffc08, 0x39be314d
        .long 0x3f7ffc36, 0x39b5f011
        .long 0x3f7ffc63, 0x39ae051c
        .long 0x3f7ffc8e, 0x39a66d2a
        .long 0x3f7ffcb6, 0x399f2512
        .long 0x3f7ffcdd, 0x399829c8
        .long 0x3f7ffd02, 0x3991785a
        .long 0x3f7ffd26, 0x398b0df2
        .long 0x3f7ffd48, 0x3984e7d2
        .long 0x3f7ffd68, 0x397e06ab
        .long 0x3f7ffd87, 0x3972bbde
        .long 0x3f7ffda5, 0x3967ea53
        .long 0x3f7ffdc1, 0x395d8d4b
        .long 0x3f7ffddc, 0x3953a034
        .long 0x3f7ffdf6, 0x394a1ea5
        .long 0x3f7ffe0f, 0x3941045e
        .long 0x3f7ffe27, 0x39384d47
        .long 0x3f7ffe3d, 0x392ff56d
        .long 0x3f7ffe53, 0x3927f904
        .long 0x3f7ffe67, 0x39205461
        .long 0x3f7ffe7b, 0x391903fe
        .long 0x3f7ffe8d, 0x39120475
        .long 0x3f7ffe9f, 0x390b5281
        .long 0x3f7ffeb0, 0x3904eafc
        .long 0x3f7ffec0, 0x38fd95bd
        .long 0x3f7ffed0, 0x38f1de7a
        .long 0x3f7ffedf, 0x38e6aa94
        .long 0x3f7ffeed, 0x38dbf4a3
        .long 0x3f7ffefa, 0x38d1b776
        .long 0x3f7fff07, 0x38c7ee0e
        .long 0x3f7fff13, 0x38be939c
        .long 0x3f7fff1f, 0x38b5a381
        .long 0x3f7fff2a, 0x38ad194e
        .long 0x3f7fff34, 0x38a4f0bc
        .long 0x3f7fff3f, 0x389d25b0
        .long 0x3f7fff48, 0x3895b43b
        .long 0x3f7fff51, 0x388e9890
        .long 0x3f7fff5a, 0x3887cf0e
        .long 0x3f7fff62, 0x38815434
        .long 0x3f7fff6a, 0x3876494d
        .long 0x3f7fff72, 0x386a7a5a
        .long 0x3f7fff79, 0x385f355e
        .long 0x3f7fff80, 0x38547466
        .long 0x3f7fff86, 0x384a31bf
        .long 0x3f7fff8c, 0x384067ee
        .long 0x3f7fff92, 0x383711b4
        .long 0x3f7fff98, 0x382e2a06
        .long 0x3f7fff9d, 0x3825ac0e
        .long 0x3f7fffa2, 0x381d9329
        .long 0x3f7fffa7, 0x3815dae6
        .long 0x3f7fffab, 0x380e7f01
        .long 0x3f7fffb0, 0x38077b62
        .long 0x3f7fffb4, 0x3800cc21
        .long 0x3f7fffb8, 0x37f4daf4
        .long 0x3f7fffbc, 0x37e8b7ac
        .long 0x3f7fffbf, 0x37dd2782
        .long 0x3f7fffc2, 0x37d223dc
        .long 0x3f7fffc6, 0x37c7a666
        .long 0x3f7fffc9, 0x37bda912
        .long 0x3f7fffcc, 0x37b42611
        .long 0x3f7fffce, 0x37ab17d6
        .long 0x3f7fffd1, 0x37a2790f
        .long 0x3f7fffd3, 0x379a44a5
        .long 0x3f7fffd6, 0x379275b9
        .long 0x3f7fffd8, 0x378b07a2
        .long 0x3f7fffda, 0x3783f5e9
        .long 0x3f7fffdc, 0x377a7897
        .long 0x3f7fffde, 0x376dad68
        .long 0x3f7fffe0, 0x37618278
        .long 0x3f7fffe2, 0x3755f04f
        .long 0x3f7fffe3, 0x374aefcc
        .long 0x3f7fffe5, 0x37407a1d
        .long 0x3f7fffe6, 0x373688bc
        .long 0x3f7fffe8, 0x372d1570
        .long 0x3f7fffe9, 0x37241a44
        .long 0x3f7fffea, 0x371b9188
        .long 0x3f7fffeb, 0x371375cf
        .long 0x3f7fffec, 0x370bc1e7
        .long 0x3f7fffee, 0x370470dd
        .long 0x3f7fffef, 0x36fafbec
        .long 0x3f7fffef, 0x36edc95b
        .long 0x3f7ffff0, 0x36e14167
        .long 0x3f7ffff1, 0x36d55bd6
        .long 0x3f7ffff2, 0x36ca10ce
        .long 0x3f7ffff3, 0x36bf58d1
        .long 0x3f7ffff4, 0x36b52cb9
        .long 0x3f7ffff4, 0x36ab85b5
        .long 0x3f7ffff5, 0x36a25d43
        .long 0x3f7ffff5, 0x3699ad31
        .long 0x3f7ffff6, 0x36916f95
        .long 0x3f7ffff7, 0x36899ecb
        .long 0x3f7ffff7, 0x36823575
        .long 0x3f7ffff8, 0x36765ce8
        .long 0x3f7ffff8, 0x366909cc
        .long 0x3f7ffff9, 0x365c684a
        .long 0x3f7ffff9, 0x36506f88
        .long 0x3f7ffff9, 0x36451713
        .long 0x3f7ffffa, 0x363a56e4
        .long 0x3f7ffffa, 0x36302754
        .long 0x3f7ffffa, 0x36268119
        .long 0x3f7ffffb, 0x361d5d43
        .long 0x3f7ffffb, 0x3614b538
        .long 0x3f7ffffb, 0x360c82b1
        .long 0x3f7ffffc, 0x3604bfb1
        .long 0x3f7ffffc, 0x35facd10
        .long 0x3f7ffffc, 0x35ece39b
        .long 0x3f7ffffc, 0x35dfb8b6
        .long 0x3f7ffffd, 0x35d34296
        .long 0x3f7ffffd, 0x35c777ec
        .long 0x3f7ffffd, 0x35bc4fdc
        .long 0x3f7ffffd, 0x35b1c1fc
        .long 0x3f7ffffd, 0x35a7c64b
        .long 0x3f7ffffd, 0x359e5531
        .long 0x3f7ffffe, 0x35956771
        .long 0x3f7ffffe, 0x358cf630
        .long 0x3f7ffffe, 0x3584fae8
        .long 0x3f7ffffe, 0x357adecb
        .long 0x3f7ffffe, 0x356c9b8f
        .long 0x3f7ffffe, 0x355f20ef
        .long 0x3f7ffffe, 0x3552644f
        .long 0x3f7ffffe, 0x35465b9c
        .long 0x3f7fffff, 0x353afd47
        .long 0x3f7fffff, 0x3530403c
        .long 0x3f7fffff, 0x35261be0
        .long 0x3f7fffff, 0x351c8807
        .long 0x3f7fffff, 0x35137cf0
        .long 0x3f7fffff, 0x350af341
        .long 0x3f7fffff, 0x3502e402
        .long 0x3f7fffff, 0x34f6912a
        .long 0x3f7fffff, 0x34e8356b
        .long 0x3f7fffff, 0x34daa8e4
        .long 0x3f7fffff, 0x34cde050
        .long 0x3f7fffff, 0x34c1d100
        .long 0x3f7fffff, 0x34b670d5
        .long 0x3f7fffff, 0x34abb639
        .long 0x3f7fffff, 0x34a19816
        .long 0x3f7fffff, 0x34980dd1
        .long 0x3f7fffff, 0x348f0f43
        .long 0x3f7fffff, 0x348694b3
        .long 0x3f800000, 0x347d2da8
        .long 0x3f800000, 0x346e1d72
        .align 32
        .long 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff  /* _AbsMask */
        .align 32
        .long 0x407b8000, 0x407b8000, 0x407b8000, 0x407b8000, 0x407b8000, 0x407b8000, 0x407b8000, 0x407b8000  /* _MaxThreshold */
        .align 32
        .long 0x47800000, 0x47800000, 0x47800000, 0x47800000, 0x47800000, 0x47800000, 0x47800000, 0x47800000  /* _SRound */
        .align 32
        .long 0x2f800000, 0x2f800000, 0x2f800000, 0x2f800000, 0x2f800000, 0x2f800000, 0x2f800000, 0x2f800000  /* _U2THreshold  */
        .align 32
        .long 0xbeaaaade, 0xbeaaaade, 0xbeaaaade, 0xbeaaaade, 0xbeaaaade, 0xbeaaaade, 0xbeaaaade, 0xbeaaaade  /* _poly_3_0 */
        .align 32
        .type	__svml_serf_data_internal,@object
        .size	__svml_serf_data_internal,.-__svml_serf_data_internal