x86_64: Fix svml_s_erfcf4_core_sse4.S code formatting
[glibc.git] / sysdeps / x86_64 / fpu / multiarch / svml_s_erfcf4_core_sse4.S
blob2139f67a70f6e900460171ffb4ec95289471aa9d
1 /* Function erfcf vectorized with SSE4.
2    Copyright (C) 2021-2022 Free Software Foundation, Inc.
3    This file is part of the GNU C Library.
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, see
17    https://www.gnu.org/licenses/.  */
20  * ALGORITHM DESCRIPTION:
21  *
22  *   Approximation formula:
23  *   erfc(x) ~ erfc(x0) - 2/sqrt(pi)*exp(-x0^2)*D * [ 1 + (x0*D)*p1(x0*D) + D^2 * p3(x0*D) ]
24  *     D = x - x0
25  *     erfc(x0) and 2/sqrt(pi)*exp(-x0^2)/(2*x0) are tabulated
26  *
27  *
28  */
30 /* Offsets for data table __svml_serfc_data_internal
31  */
32 #define _erfc_tbl                       0
33 #define _AbsMask                        5168
34 #define _MaxThreshold                   5184
35 #define _SgnMask                        5200
36 #define _SRound                         5216
37 #define _TwoM48                         5232
38 #define _poly1_0                        5248
39 #define _poly1_1                        5264
40 #define _poly3_0                        5280
41 #define _poly3_1                        5296
42 #define _poly1_2                        5312
43 #define _poly1_3                        5328
44 #define _UF_Threshold                   5344
45 #define _TwoP48                         5360
47 /* Lookup bias for data table __svml_serfc_data_internal.  */
48 #define Table_Lookup_Bias               -0x40000000
50 #include <sysdep.h>
52         .section .text.sse4, "ax", @progbits
53 ENTRY(_ZGVbN4v_erfcf_sse4)
54         subq    $72, %rsp
55         cfi_def_cfa_offset(80)
56         movaps  %xmm0, %xmm7
57         movups  _AbsMask+__svml_serfc_data_internal(%rip), %xmm6
59         /* vector gather: erfc_h(x0), (erfc_l(x0), 2/sqrt(pi)*exp(-x0^2)) */
60         lea     Table_Lookup_Bias+__svml_serfc_data_internal(%rip), %rdi
61         andps   %xmm7, %xmm6
63         /*
64          * erfc(10.125) underflows to 0
65          * can compute all results in the main path
66          */
67         minps   _MaxThreshold+__svml_serfc_data_internal(%rip), %xmm6
68         movups  _SRound+__svml_serfc_data_internal(%rip), %xmm9
69         movaps  %xmm9, %xmm13
70         movups  _TwoM48+__svml_serfc_data_internal(%rip), %xmm0
71         addps   %xmm6, %xmm13
72         maxps   %xmm0, %xmm6
73         movaps  %xmm13, %xmm4
74         pslld   $3, %xmm13
76         /* Start polynomial evaluation */
77         movups  _poly1_0+__svml_serfc_data_internal(%rip), %xmm1
78         subps   %xmm9, %xmm4
79         movd    %xmm13, %eax
80         movups  _poly3_0+__svml_serfc_data_internal(%rip), %xmm2
81         subps   %xmm4, %xmm6
82         mulps   %xmm6, %xmm4
84         /* Diff^2 */
85         movaps  %xmm6, %xmm9
86         mulps   %xmm6, %xmm9
87         mulps   %xmm4, %xmm1
88         mulps   %xmm4, %xmm2
89         addps   _poly1_1+__svml_serfc_data_internal(%rip), %xmm1
90         addps   _poly3_1+__svml_serfc_data_internal(%rip), %xmm2
91         mulps   %xmm4, %xmm1
93         /* P3*D2 */
94         mulps   %xmm9, %xmm2
95         addps   _poly1_2+__svml_serfc_data_internal(%rip), %xmm1
96         mulps   %xmm4, %xmm1
97         pshufd  $1, %xmm13, %xmm11
98         addps   _poly1_3+__svml_serfc_data_internal(%rip), %xmm1
99         movd    %xmm11, %edx
100         pshufd  $2, %xmm13, %xmm12
101         pshufd  $3, %xmm13, %xmm14
102         movd    %xmm12, %ecx
103         movd    %xmm14, %esi
104         movups  _SgnMask+__svml_serfc_data_internal(%rip), %xmm10
105         andps   %xmm7, %xmm10
107         /* P1 = P1*T + P3*D2 */
108         mulps   %xmm1, %xmm4
109         movaps  %xmm10, %xmm5
110         movslq  %eax, %rax
112         /* 2^(-64) with sign of input */
113         orps    %xmm10, %xmm0
114         movslq  %edx, %rdx
116         /* Special arguments (for flags only) */
117         movaps  %xmm7, %xmm1
118         movslq  %ecx, %rcx
119         addps   %xmm4, %xmm2
120         cmpltps _UF_Threshold+__svml_serfc_data_internal(%rip), %xmm1
121         movslq  %esi, %rsi
122         movups  _TwoP48+__svml_serfc_data_internal(%rip), %xmm8
123         orps    %xmm8, %xmm5
124         movq    (%rdi, %rax), %xmm3
125         subps   %xmm8, %xmm5
126         movq    (%rdi, %rdx), %xmm15
127         movq    (%rdi, %rcx), %xmm8
128         movq    (%rdi, %rsi), %xmm13
129         unpcklps %xmm15, %xmm3
130         unpcklps %xmm13, %xmm8
131         movaps  %xmm3, %xmm10
132         shufps  $238, %xmm8, %xmm3
134         /* EXP_X0H * (1+P1) */
135         mulps   %xmm3, %xmm2
137         /* combine and get argument value range mask */
138         movmskps %xmm1, %edx
139         movlhps %xmm8, %xmm10
140         addps   %xmm2, %xmm3
142         /* erfc_high(x0) - Diff * (2/sqrt(pi)*exp(-x0^2))*(1+P1) */
143         mulps   %xmm3, %xmm6
144         notl    %edx
145         subps   %xmm6, %xmm10
146         addps   %xmm10, %xmm5
147         mulps   %xmm5, %xmm0
148         andl    $15, %edx
150         /* Go to special inputs processing branch */
151         jne     L(SPECIAL_VALUES_BRANCH)
152         # LOE rbx rbp r12 r13 r14 r15 edx xmm0 xmm7
154         /* Restore registers
155          * and exit the function
156          */
158 L(EXIT):
159         addq    $72, %rsp
160         cfi_def_cfa_offset(8)
161         ret
162         cfi_def_cfa_offset(80)
164         /* Branch to process
165          * special inputs
166          */
168 L(SPECIAL_VALUES_BRANCH):
169         movups  %xmm7, 32(%rsp)
170         movups  %xmm0, 48(%rsp)
171         # LOE rbx rbp r12 r13 r14 r15 edx xmm0
173         xorl    %eax, %eax
174         movq    %r12, 16(%rsp)
175         cfi_offset(12, -64)
176         movl    %eax, %r12d
177         movq    %r13, 8(%rsp)
178         cfi_offset(13, -72)
179         movl    %edx, %r13d
180         movq    %r14, (%rsp)
181         cfi_offset(14, -80)
182         # LOE rbx rbp r15 r12d r13d
184         /* Range mask
185          * bits check
186          */
188 L(RANGEMASK_CHECK):
189         btl     %r12d, %r13d
191         /* Call scalar math function */
192         jc      L(SCALAR_MATH_CALL)
193         # LOE rbx rbp r15 r12d r13d
195         /* Special inputs
196          * processing loop
197          */
199 L(SPECIAL_VALUES_LOOP):
200         incl    %r12d
201         cmpl    $4, %r12d
203         /* Check bits in range mask */
204         jl      L(RANGEMASK_CHECK)
205         # LOE rbx rbp r15 r12d r13d
207         movq    16(%rsp), %r12
208         cfi_restore(12)
209         movq    8(%rsp), %r13
210         cfi_restore(13)
211         movq    (%rsp), %r14
212         cfi_restore(14)
213         movups  48(%rsp), %xmm0
215         /* Go to exit */
216         jmp     L(EXIT)
217         cfi_offset(12, -64)
218         cfi_offset(13, -72)
219         cfi_offset(14, -80)
220         # LOE rbx rbp r12 r13 r14 r15 xmm0
222         /* Scalar math fucntion call
223          * to process special input
224          */
226 L(SCALAR_MATH_CALL):
227         movl    %r12d, %r14d
228         movss   32(%rsp, %r14, 4), %xmm0
229         call    erfcf@PLT
230         # LOE rbx rbp r14 r15 r12d r13d xmm0
232         movss   %xmm0, 48(%rsp, %r14, 4)
234         /* Process special inputs in loop */
235         jmp     L(SPECIAL_VALUES_LOOP)
236         # LOE rbx rbp r15 r12d r13d
237 END(_ZGVbN4v_erfcf_sse4)
239         .section .rodata, "a"
240         .align  16
242 #ifdef __svml_serfc_data_internal_typedef
243 typedef unsigned int VUINT32;
244 typedef struct {
245         __declspec(align(16)) VUINT32 _erfc_tbl[645*2][1];
246         __declspec(align(16)) VUINT32 _AbsMask[4][1];
247         __declspec(align(16)) VUINT32 _MaxThreshold[4][1];
248         __declspec(align(16)) VUINT32 _SgnMask[4][1];
249         __declspec(align(16)) VUINT32 _SRound[4][1];
250         __declspec(align(16)) VUINT32 _TwoM48[4][1];
251         __declspec(align(16)) VUINT32 _poly1_0[4][1];
252         __declspec(align(16)) VUINT32 _poly1_1[4][1];
253         __declspec(align(16)) VUINT32 _poly3_0[4][1];
254         __declspec(align(16)) VUINT32 _poly3_1[4][1];
255         __declspec(align(16)) VUINT32 _poly1_2[4][1];
256         __declspec(align(16)) VUINT32 _poly1_3[4][1];
257         __declspec(align(16)) VUINT32 _UF_Threshold[4][1];
258         __declspec(align(16)) VUINT32 _TwoP48[4][1];
259 } __svml_serfc_data_internal;
260 #endif
261 __svml_serfc_data_internal:
262         /* _erfc_tbl */
263         .long   0x57800000, 0x57906ebb
264         .long   0x577b7ca2, 0x579065b4
265         .long   0x5776f9d5, 0x57904aa3
266         .long   0x57727828, 0x57901d93
267         .long   0x576df82b, 0x578fde94
268         .long   0x57697a6e, 0x578f8dbd
269         .long   0x5764ff7f, 0x578f2b2e
270         .long   0x576087ea, 0x578eb70a
271         .long   0x575c143d, 0x578e317d
272         .long   0x5757a500, 0x578d9ab9
273         .long   0x57533abf, 0x578cf2f5
274         .long   0x574ed5fe, 0x578c3a6f
275         .long   0x574a7744, 0x578b716c
276         .long   0x57461f12, 0x578a9834
277         .long   0x5741cdeb, 0x5789af18
278         .long   0x573d844a, 0x5788b66c
279         .long   0x573942ac, 0x5787ae8b
280         .long   0x57350989, 0x578697d3
281         .long   0x5730d956, 0x578572a8
282         .long   0x572cb284, 0x57843f72
283         .long   0x57289583, 0x5782fe9f
284         .long   0x572482bd, 0x5781b0a0
285         .long   0x57207a9b, 0x578055e8
286         .long   0x571c7d80, 0x577ddddf
287         .long   0x57188bcb, 0x577af867
288         .long   0x5714a5da, 0x5777fc62
289         .long   0x5710cc05, 0x5774ead4
290         .long   0x570cfe9f, 0x5771c4c4
291         .long   0x57093df9, 0x576e8b3e
292         .long   0x57058a5e, 0x576b3f51
293         .long   0x5701e415, 0x5767e20f
294         .long   0x56fc96c6, 0x5764748e
295         .long   0x56f5810a, 0x5760f7e5
296         .long   0x56ee876d, 0x575d6d2d
297         .long   0x56e7aa5a, 0x5759d57e
298         .long   0x56e0ea35, 0x575631f4
299         .long   0x56da4757, 0x575283a7
300         .long   0x56d3c214, 0x574ecbb1
301         .long   0x56cd5ab3, 0x574b0b28
302         .long   0x56c71175, 0x57474323
303         .long   0x56c0e692, 0x574374b5
304         .long   0x56bada38, 0x573fa0ee
305         .long   0x56b4ec8f, 0x573bc8dc
306         .long   0x56af1db3, 0x5737ed89
307         .long   0x56a96dbc, 0x57340ff9
308         .long   0x56a3dcb7, 0x5730312e
309         .long   0x569e6aaa, 0x572c5223
310         .long   0x56991793, 0x572873cf
311         .long   0x5693e369, 0x57249721
312         .long   0x568ece1a, 0x5720bd06
313         .long   0x5689d78f, 0x571ce661
314         .long   0x5684ffa8, 0x5719140f
315         .long   0x56804640, 0x571546e7
316         .long   0x56775654, 0x57117fb9
317         .long   0x566e5c65, 0x570dbf4c
318         .long   0x56659e43, 0x570a0662
319         .long   0x565d1b6d, 0x570655b1
320         .long   0x5654d35d, 0x5702adeb
321         .long   0x564cc57d, 0x56fe1f73
322         .long   0x5644f12f, 0x56f6f777
323         .long   0x563d55cc, 0x56efe513
324         .long   0x5635f2a1, 0x56e8e968
325         .long   0x562ec6f6, 0x56e20584
326         .long   0x5627d207, 0x56db3a64
327         .long   0x5621130b, 0x56d488f8
328         .long   0x561a8931, 0x56cdf21c
329         .long   0x561433a0, 0x56c7769b
330         .long   0x560e117c, 0x56c11733
331         .long   0x560821e1, 0x56bad48d
332         .long   0x560263e5, 0x56b4af46
333         .long   0x55f9ad39, 0x56aea7ea
334         .long   0x55eef22b, 0x56a8bef3
335         .long   0x55e494b6, 0x56a2f4ce
336         .long   0x55da92eb, 0x569d49d9
337         .long   0x55d0ead3, 0x5697be62
338         .long   0x55c79a75, 0x569252aa
339         .long   0x55be9fd3, 0x568d06e3
340         .long   0x55b5f8ee, 0x5687db31
341         .long   0x55ada3c2, 0x5682cfad
342         .long   0x55a59e4c, 0x567bc8c2
343         .long   0x559de68a, 0x56723298
344         .long   0x55967a77, 0x5668dcc1
345         .long   0x558f5812, 0x565fc70e
346         .long   0x55887d5c, 0x5656f136
347         .long   0x5581e856, 0x564e5adf
348         .long   0x55772e0c, 0x56460399
349         .long   0x556b0eeb, 0x563deae4
350         .long   0x555f6f64, 0x5636102b
351         .long   0x55544b9e, 0x562e72cb
352         .long   0x55499fc8, 0x5627120f
353         .long   0x553f681d, 0x561fed36
354         .long   0x5535a0e6, 0x5619036e
355         .long   0x552c4679, 0x561253dc
356         .long   0x55235539, 0x560bdd96
357         .long   0x551ac999, 0x56059fa9
358         .long   0x5512a01c, 0x55ff3230
359         .long   0x550ad554, 0x55f391b9
360         .long   0x550365e5, 0x55e85bd0
361         .long   0x54f89d02, 0x55dd8e4c
362         .long   0x54eb17df, 0x55d326f3
363         .long   0x54de360f, 0x55c92385
364         .long   0x54d1f166, 0x55bf81b6
365         .long   0x54c643dc, 0x55b63f32
366         .long   0x54bb2790, 0x55ad59a1
367         .long   0x54b096c5, 0x55a4cea4
368         .long   0x54a68be5, 0x559c9bd9
369         .long   0x549d0180, 0x5594bedd
370         .long   0x5493f24c, 0x558d354b
371         .long   0x548b5926, 0x5585fcbf
372         .long   0x54833111, 0x557e25af
373         .long   0x5476ea69, 0x5570ea68
374         .long   0x546841c1, 0x556442f0
375         .long   0x545a5f10, 0x55582a98
376         .long   0x544d398b, 0x554c9cbd
377         .long   0x5440c8ae, 0x554194c7
378         .long   0x54350440, 0x55370e2c
379         .long   0x5429e44f, 0x552d0474
380         .long   0x541f612f, 0x55237336
381         .long   0x5415737d, 0x551a561b
382         .long   0x540c1417, 0x5511a8e1
383         .long   0x54033c22, 0x5509675a
384         .long   0x53f5ca07, 0x55018d6b
385         .long   0x53e610c3, 0x54f42e22
386         .long   0x53d74046, 0x54e600c0
387         .long   0x53c94cd8, 0x54d88b05
388         .long   0x53bc2b3a, 0x54cbc574
389         .long   0x53afd0a5, 0x54bfa8c4
390         .long   0x53a432c3, 0x54b42ddb
391         .long   0x539947af, 0x54a94dcf
392         .long   0x538f05f3, 0x549f01ec
393         .long   0x5385647e, 0x549543ae
394         .long   0x5378b557, 0x548c0cc2
395         .long   0x5367c06a, 0x5483570a
396         .long   0x5357da71, 0x54763931
397         .long   0x5348f45f, 0x5466af65
398         .long   0x533affda, 0x5458059c
399         .long   0x532def39, 0x544a3127
400         .long   0x5321b57a, 0x543d27b5
401         .long   0x5316463d, 0x5430df57
402         .long   0x530b95bd, 0x54254e7b
403         .long   0x530198cc, 0x541a6bee
404         .long   0x52f08999, 0x54102ed6
405         .long   0x52df1f58, 0x54068eb5
406         .long   0x52cedfb9, 0x53fb06c5
407         .long   0x52bfb8a0, 0x53ea0a1d
408         .long   0x52b198e5, 0x53da1876
409         .long   0x52a4704e, 0x53cb237a
410         .long   0x52982f7c, 0x53bd1d6f
411         .long   0x528cc7eb, 0x53aff93b
412         .long   0x52822be3, 0x53a3aa56
413         .long   0x52709cde, 0x539824ce
414         .long   0x525e46a9, 0x538d5d3c
415         .long   0x524d3e18, 0x538348c6
416         .long   0x523d6d6f, 0x5373ba24
417         .long   0x522ec035, 0x53622096
418         .long   0x52212321, 0x5351b22a
419         .long   0x52148413, 0x53425d18
420         .long   0x5208d1fc, 0x53341080
421         .long   0x51fbf9ac, 0x5326bc5e
422         .long   0x51e7eb29, 0x531a5183
423         .long   0x51d55c2d, 0x530ec18c
424         .long   0x51c43238, 0x5303feda
425         .long   0x51b45472, 0x52f3f919
426         .long   0x51a5ab93, 0x52e15ce8
427         .long   0x519821ce, 0x52d0121b
428         .long   0x518ba2bc, 0x52c002f8
429         .long   0x51801b49, 0x52b11afe
430         .long   0x516af33c, 0x52a346d7
431         .long   0x51575a21, 0x5296744c
432         .long   0x51454c24, 0x528a9237
433         .long   0x5134ac3b, 0x527f20e7
434         .long   0x51255f51, 0x526abfa9
435         .long   0x51174c27, 0x5257e42f
436         .long   0x510a5b3b, 0x524673af
437         .long   0x50fced50, 0x52365507
438         .long   0x50e7141d, 0x522770a1
439         .long   0x50d304fc, 0x5219b066
440         .long   0x50c09cb5, 0x520cffa3
441         .long   0x50afba92, 0x52014af8
442         .long   0x50a04037, 0x51ed0088
443         .long   0x50921177, 0x51d91d2d
444         .long   0x50851430, 0x51c6cc35
445         .long   0x50726058, 0x51b5f011
446         .long   0x505c9dfa, 0x51a66d2a
447         .long   0x5048b7be, 0x519829c8
448         .long   0x50368738, 0x518b0df2
449         .long   0x5025e8e0, 0x517e06ab
450         .long   0x5016bbdf, 0x5167ea53
451         .long   0x5008e1df, 0x5153a034
452         .long   0x4ff87dc3, 0x5141045e
453         .long   0x4fe1721f, 0x512ff56d
454         .long   0x4fcc712a, 0x51205461
455         .long   0x4fb94efb, 0x51120475
456         .long   0x4fa7e31e, 0x5104eafc
457         .long   0x4f980855, 0x50f1de7a
458         .long   0x4f899c5c, 0x50dbf4a3
459         .long   0x4f78ff60, 0x50c7ee0e
460         .long   0x4f612ab5, 0x50b5a381
461         .long   0x4f4b8583, 0x50a4f0bc
462         .long   0x4f37deef, 0x5095b43b
463         .long   0x4f260a27, 0x5087cf0e
464         .long   0x4f15de0f, 0x5076494d
465         .long   0x4f0734f9, 0x505f355e
466         .long   0x4ef3d8c4, 0x504a31bf
467         .long   0x4edbc95e, 0x503711b4
468         .long   0x4ec601e9, 0x5025ac0e
469         .long   0x4eb24d81, 0x5015dae6
470         .long   0x4ea07bca, 0x50077b62
471         .long   0x4e906098, 0x4ff4daf4
472         .long   0x4e81d395, 0x4fdd2782
473         .long   0x4e695fe3, 0x4fc7a666
474         .long   0x4e51a834, 0x4fb42611
475         .long   0x4e3c42e7, 0x4fa2790f
476         .long   0x4e28f835, 0x4f9275b9
477         .long   0x4e179555, 0x4f83f5e9
478         .long   0x4e07ec0b, 0x4f6dad68
479         .long   0x4df3a498, 0x4f55f04f
480         .long   0x4dda43ba, 0x4f407a1d
481         .long   0x4dc37003, 0x4f2d1570
482         .long   0x4daeea58, 0x4f1b9188
483         .long   0x4d9c7974, 0x4f0bc1e7
484         .long   0x4d8be963, 0x4efafbec
485         .long   0x4d7a160c, 0x4ee14167
486         .long   0x4d5f6759, 0x4eca10ce
487         .long   0x4d477955, 0x4eb52cb9
488         .long   0x4d3205fb, 0x4ea25d43
489         .long   0x4d1ecdf3, 0x4e916f95
490         .long   0x4d0d97f2, 0x4e823575
491         .long   0x4cfc6061, 0x4e6909cc
492         .long   0x4ce0cfd4, 0x4e506f88
493         .long   0x4cc829c6, 0x4e3a56e4
494         .long   0x4cb221ff, 0x4e268119
495         .long   0x4c9e73c2, 0x4e14b538
496         .long   0x4c8ce119, 0x4e04bfb1
497         .long   0x4c7a6462, 0x4dece39b
498         .long   0x4c5e6987, 0x4dd34296
499         .long   0x4c457726, 0x4dbc4fdc
500         .long   0x4c2f3bdb, 0x4da7c64b
501         .long   0x4c1b6e79, 0x4d956771
502         .long   0x4c09cd3e, 0x4d84fae8
503         .long   0x4bf43a38, 0x4d6c9b8f
504         .long   0x4bd85225, 0x4d52644f
505         .long   0x4bbf8325, 0x4d3afd47
506         .long   0x4ba977f0, 0x4d261be0
507         .long   0x4b95e415, 0x4d137cf0
508         .long   0x4b848320, 0x4d02e402
509         .long   0x4b6a2f8b, 0x4ce8356b
510         .long   0x4b4ed659, 0x4ccde050
511         .long   0x4b369893, 0x4cb670d5
512         .long   0x4b211e8a, 0x4ca19816
513         .long   0x4b0e19e7, 0x4c8f0f43
514         .long   0x4afa896f, 0x4c7d2da8
515         .long   0x4adcc11e, 0x4c5febab
516         .long   0x4ac26b7f, 0x4c45f27c
517         .long   0x4aab2549, 0x4c2ee6b3
518         .long   0x4a969605, 0x4c1a767c
519         .long   0x4a846ee9, 0x4c0858a4
520         .long   0x4a68d3a8, 0x4bf09770
521         .long   0x4a4c90c6, 0x4bd42a75
522         .long   0x4a33a635, 0x4bbb01dd
523         .long   0x4a1db15b, 0x4ba4c066
524         .long   0x4a0a5aa0, 0x4b9112d9
525         .long   0x49f2a881, 0x4b7f5e08
526         .long   0x49d4b277, 0x4b60a591
527         .long   0x49ba58bd, 0x4b45867e
528         .long   0x49a32ed5, 0x4b2d97f3
529         .long   0x498ed4a2, 0x4b187c9e
530         .long   0x4979ea08, 0x4b05e186
531         .long   0x495a8951, 0x4aeaf9d4
532         .long   0x493f01d9, 0x4ace1a8c
533         .long   0x4926ddcc, 0x4ab4b0dc
534         .long   0x4911b50d, 0x4a9e558a
535         .long   0x48fe574a, 0x4a8aad05
536         .long   0x48dde0d0, 0x4a72cc48
537         .long   0x48c1776e, 0x4a547203
538         .long   0x48a89cd3, 0x4a39cbe3
539         .long   0x4892e1aa, 0x4a226937
540         .long   0x487fc7c2, 0x4a0de652
541         .long   0x485e9a3a, 0x49f7d629
542         .long   0x4841a2c3, 0x49d85345
543         .long   0x48285bae, 0x49bcba74
544         .long   0x48124f79, 0x49a49254
545         .long   0x47fe2dc4, 0x498f6fd2
546         .long   0x47dcae77, 0x4979e90c
547         .long   0x47bf81dd, 0x49599a7d
548         .long   0x47a61c4e, 0x493d616c
549         .long   0x47900357, 0x4924bcd6
550         .long   0x47799750, 0x490f3b3e
551         .long   0x47582e7f, 0x48f8f1a9
552         .long   0x473b27a3, 0x48d83bc6
553         .long   0x4721f2b6, 0x48bbbab7
554         .long   0x470c11c0, 0x48a2e733
555         .long   0x46f22d4c, 0x488d4a80
556         .long   0x46d14266, 0x4874f900
557         .long   0x46b4bacb, 0x485443df
558         .long   0x469c03d6, 0x4837d5b2
559         .long   0x46869d9b, 0x481f2272
560         .long   0x46683120, 0x4809af94
561         .long   0x46482706, 0x47ee23cf
562         .long   0x462c7395, 0x47cdd76a
563         .long   0x46148366, 0x47b1d636
564         .long   0x45ffac6d, 0x4799912d
565         .long   0x45dbf8fa, 0x47848b78
566         .long   0x45bd2a88, 0x4764b060
567         .long   0x45a298a1, 0x474530ba
568         .long   0x458bb0fc, 0x4729f27c
569         .long   0x456fe94b, 0x47126579
570         .long   0x454deaf8, 0x46fc1860
571         .long   0x4530a808, 0x46d8f2d6
572         .long   0x45177b00, 0x46ba9c63
573         .long   0x4501d48c, 0x46a06fec
574         .long   0x44de7135, 0x4689de04
575         .long   0x44be77a1, 0x466cd440
576         .long   0x44a302b0, 0x464b505a
577         .long   0x448b71e5, 0x462e74d6
578         .long   0x446e7534, 0x46159f2a
579         .long   0x444bca2d, 0x46004280
580         .long   0x442e1414, 0x45dbc9bf
581         .long   0x4414a0a8, 0x45bc396d
582         .long   0x43fdac7d, 0x45a11d60
583         .long   0x43d860d4, 0x4589d7a8
584         .long   0x43b87a3a, 0x456bbf86
585         .long   0x439d3454, 0x45497f9a
586         .long   0x4385e630, 0x452c23f7
587         .long   0x4363fd06, 0x4512fcf7
588         .long   0x434200db, 0x44fae63c
589         .long   0x4325014d, 0x44d607b0
590         .long   0x430c4623, 0x44b67d4e
591         .long   0x42ee627d, 0x449b855c
592         .long   0x42ca7603, 0x44847920
593         .long   0x42abde4b, 0x44619261
594         .long   0x4291d40d, 0x443ff482
595         .long   0x4277593c, 0x442344bf
596         .long   0x4251abca, 0x440acd1c
597         .long   0x4231a5c0, 0x43ebe2ca
598         .long   0x42167152, 0x43c85727
599         .long   0x41feaf84, 0x43aa1178
600         .long   0x41d779e7, 0x43904cc0
601         .long   0x41b63731, 0x4374c081
602         .long   0x419a03db, 0x434f7703
603         .long   0x41821dd0, 0x432fc5c4
604         .long   0x415bbf2e, 0x4314d94a
605         .long   0x41397862, 0x42fbf99c
606         .long   0x411c770c, 0x42d52bb9
607         .long   0x4103eeb4, 0x42b4411f
608         .long   0x40de62c7, 0x429858a7
609         .long   0x40bb5652, 0x4280b23e
610         .long   0x409dbc89, 0x4259543f
611         .long   0x4084bfc1, 0x42376979
612         .long   0x405f551f, 0x421ab66b
613         .long   0x403bc5f1, 0x420270af
614         .long   0x401dccc2, 0x41dbd820
615         .long   0x40048c16, 0x41b92c31
616         .long   0x3fde907e, 0x419be496
617         .long   0x3fbac490, 0x41832dcb
618         .long   0x3f9ca73d, 0x415ca86a
619         .long   0x3f8354cb, 0x41397eca
620         .long   0x3f5c1947, 0x411bdc1e
621         .long   0x3f3857fa, 0x4102e528
622         .long   0x3f1a529e, 0x40dbc03f
623         .long   0x3f0120ef, 0x40b85f58
624         .long   0x3ed7fdc8, 0x409a9d36
625         .long   0x3eb48e3e, 0x40819878
626         .long   0x3e96dc65, 0x4059250b
627         .long   0x3e7bfa7c, 0x4035d48d
628         .long   0x3e5255b2, 0x40182f4c
629         .long   0x3e2f7d27, 0x3ffe9ef1
630         .long   0x3e12586c, 0x3fd4e64a
631         .long   0x3df3f750, 0x3fb1ed7c
632         .long   0x3dcb4137, 0x3f94a0bb
633         .long   0x3da94169, 0x3f782f41
634         .long   0x3d8ce028, 0x3f4f1cee
635         .long   0x3d6a654e, 0x3f2cc100
636         .long   0x3d42e7d6, 0x3f100645
637         .long   0x3d21fd99, 0x3ef00749
638         .long   0x3d0691c1, 0x3ec7ea70
639         .long   0x3cdf78d9, 0x3ea66ce0
640         .long   0x3cb976f2, 0x3e8a7a45
641         .long   0x3c99d8e5, 0x3e665575
642         .long   0x3c7f1de8, 0x3e3f778a
643         .long   0x3c536be9, 0x3e1f14b2
644         .long   0x3c2f2031, 0x3e041bb4
645         .long   0x3c10fdbd, 0x3ddb4f88
646         .long   0x3beff7df, 0x3db5f2ba
647         .long   0x3bc67c0b, 0x3d96e08d
648         .long   0x3ba417d4, 0x3d7a1a1e
649         .long   0x3b879862, 0x3d4f30a7
650         .long   0x3b5ffc37, 0x3d2b8e9a
651         .long   0x3b38e85b, 0x3d0dfba1
652         .long   0x3b1892fb, 0x3ceae636
653         .long   0x3afbaaf5, 0x3cc2374f
654         .long   0x3acf75d5, 0x3ca08024
655         .long   0x3aaaef8c, 0x3c8492c0
656         .long   0x3a8cc60c, 0x3c5ae75b
657         .long   0x3a67c170, 0x3c34a340
658         .long   0x3a3ead7b, 0x3c14fcf4
659         .long   0x3a1cce14, 0x3bf5a5cf
660         .long   0x3a00e32d, 0x3bca68ef
661         .long   0x39d3c741, 0x3ba6b383
662         .long   0x39ade7c9, 0x3b8939a3
663         .long   0x398ebc8e, 0x3b61cfd0
664         .long   0x396a31ee, 0x3b39b3ce
665         .long   0x394008fe, 0x3b18a48b
666         .long   0x391d638e, 0x3afad08d
667         .long   0x3900ee61, 0x3acdf654
668         .long   0x38d322ce, 0x3aa90c4d
669         .long   0x38accb15, 0x3a8aaea4
670         .long   0x388d5872, 0x3a636e45
671         .long   0x3867216f, 0x3a3a6544
672         .long   0x383ce218, 0x3a18b095
673         .long   0x381a4894, 0x39fa092d
674         .long   0x37fbec07, 0x39cc9f41
675         .long   0x37cd9386, 0x39a76003
676         .long   0x37a7acfd, 0x3988d758
677         .long   0x3788b256, 0x395fa559
678         .long   0x375ec64b, 0x3936ab0f
679         .long   0x373570b9, 0x39152037
680         .long   0x3713b43a, 0x38f35dd3
681         .long   0x36f05d69, 0x38c67c0a
682         .long   0x36c37bc4, 0x38a1ccfc
683         .long   0x369ee7d7, 0x3883d518
684         .long   0x36811c14, 0x3856b981
685         .long   0x3651b337, 0x382ec87a
686         .long   0x362a371c, 0x380e33a7
687         .long   0x360a1932, 0x37e74660
688         .long   0x35dff98b, 0x37bbfab1
689         .long   0x35b589f6, 0x3798b6d4
690         .long   0x3593127a, 0x37780230
691         .long   0x356e2ef2, 0x37494905
692         .long   0x3540c69d, 0x372348d9
693         .long   0x351bf310, 0x370464b5
694         .long   0x34fc31bf, 0x36d69685
695         .long   0x34cbd1ee, 0x36add231
696         .long   0x34a4a520, 0x368cbaf0
697         .long   0x3484ef72, 0x3663c449
698         .long   0x34568fd0, 0x363839e2
699         .long   0x342d122f, 0x3614efa4
700         .long   0x340b893c, 0x35f0b1df
701         .long   0x33e0e3a6, 0x35c265d8
702         .long   0x33b5237a, 0x359cede7
703         .long   0x3391d42c, 0x357d3dc9
704         .long   0x336ab0cb, 0x354c3b50
705         .long   0x333cc25b, 0x3524a05e
706         .long   0x3317be62, 0x3504a304
707         .long   0x32f3db16, 0x34d59f46
708         .long   0x32c3d8af, 0x34abf19f
709         .long   0x329d3680, 0x348a545b
710         .long   0x327c475d, 0x345e76f3
711         .long   0x324a5141, 0x3432cc8c
712         .long   0x32222c05, 0x340fa24c
713         .long   0x3201edfc, 0x33e6a843
714         .long   0x31d01833, 0x33b91cba
715         .long   0x31a68f97, 0x33947ce5
716         .long   0x318540a5, 0x336e1a5b
717         .long   0x31551b65, 0x333eced8
718         .long   0x312a535b, 0x3318d52b
719         .long   0x31081119, 0x32f4b613
720         .long   0x30d94acf, 0x32c3d10c
721         .long   0x30ad6b36, 0x329c9d69
722         .long   0x308a563f, 0x327a666d
723         .long   0x305c98dc, 0x32481354
724         .long   0x302fcd12, 0x321fc975
725         .long   0x300c08aa, 0x31ff1904
726         .long   0x2fdefaaf, 0x31cb87d8
727         .long   0x2fb17113, 0x31a24ef3
728         .long   0x2f8d22bb, 0x31815f38
729         .long   0x2f60685f, 0x314e2339
730         .long   0x2f3251c3, 0x3124258f
731         .long   0x2f0da0c6, 0x3102a54d
732         .long   0x2ee0dd25, 0x30cfdcca
733         .long   0x2eb26c30, 0x30a54727
734         .long   0x2e8d8121, 0x30835a7f
735         .long   0x2e605773, 0x3050aec3
736         .long   0x2e31bffd, 0x3025afef
737         .long   0x2e0cc431, 0x30037c6d
738         .long   0x2dded902, 0x2fd09664
739         .long   0x2db04f61, 0x2fa55e85
740         .long   0x2d8b6c69, 0x2f830aa5
741         .long   0x2d5c66c4, 0x2f4f93fd
742         .long   0x2d2e1f21, 0x2f2453fe
743         .long   0x2d097e36, 0x2f0206a5
744         .long   0x2cd908c8, 0x2ecdaaf4
745         .long   0x2cab3670, 0x2ea293d6
746         .long   0x2c86fff0, 0x2e8073d6
747         .long   0x2c54ca13, 0x2e4ae1ac
748         .long   0x2c279ec9, 0x2e2023e7
749         .long   0x2c03f9af, 0x2dfcaee7
750         .long   0x2bcfb860, 0x2dc74167
751         .long   0x2ba363bd, 0x2d9d0c41
752         .long   0x2b807524, 0x2d7770ea
753         .long   0x2b49e3d6, 0x2d42d60c
754         .long   0x2b1e92b5, 0x2d195702
755         .long   0x2af8fac8, 0x2cf13ec4
756         .long   0x2ac35eb5, 0x2cbdaded
757         .long   0x2a993aaa, 0x2c95101b
758         .long   0x2a703d5a, 0x2c6a2c50
759         .long   0x2a3c3cf6, 0x2c37d975
760         .long   0x2a136bd8, 0x2c104516
761         .long   0x29e6cc51, 0x2be24fc5
762         .long   0x29b493e1, 0x2bb16ad5
763         .long   0x298d376b, 0x2b8b04c7
764         .long   0x295cc356, 0x2b59c147
765         .long   0x292c79ad, 0x2b2a759f
766         .long   0x2906af30, 0x2b055f07
767         .long   0x28d23edb, 0x2ad09a6a
768         .long   0x28a4050c, 0x2aa30e6d
769         .long   0x287fca72, 0x2a7ec8c1
770         .long   0x28475b9c, 0x2a46f5b1
771         .long   0x281b4cca, 0x2a1b4a74
772         .long   0x27f1d725, 0x29f24b83
773         .long   0x27bc361f, 0x29bcee14
774         .long   0x27926764, 0x29933f23
775         .long   0x2763a7e2, 0x29656858
776         .long   0x2730ea36, 0x29329e84
777         .long   0x27096aae, 0x290b01c6
778         .long   0x26d55ed6, 0x28d840d5
779         .long   0x26a59297, 0x28a82171
780         .long   0x26806b7c, 0x2882a722
781         .long   0x26471c70, 0x284af596
782         .long   0x261a4874, 0x281d9063
783         .long   0x25eefab5, 0x27f4865b
784         .long   0x25b8fef0, 0x27bda5bb
785         .long   0x258f232d, 0x27930395
786         .long   0x255d6497, 0x2763d176
787         .long   0x252b220e, 0x27306e78
788         .long   0x25043806, 0x270891a3
789         .long   0x24cc3533, 0x26d35285
790         .long   0x249d9eab, 0x26a36ab9
791         .long   0x247333ed, 0x267c9e87
792         .long   0x243b895c, 0x2643294f
793         .long   0x24108aa2, 0x2616b2d7
794         .long   0x23deb305, 0x25e89e19
795         .long   0x23ab79f7, 0x25b3722d
796         .long   0x2383f8a5, 0x258a5c5b
797         .long   0x234b094e, 0x255542a6
798         .long   0x231c1be0, 0x252445ca
799         .long   0x22eff061, 0x24fcf3b9
800         .long   0x22b84dad, 0x24c2a818
801         .long   0x228d7fe9, 0x2495b90c
802         .long   0x22592b20, 0x246635db
803         .long   0x222691fd, 0x2430e58d
804         .long   0x21ff65e8, 0x2407dd07
805         .long   0x21c3b3ec, 0x23d09839
806         .long   0x2195e33f, 0x23a00d5e
807         .long   0x21657c23, 0x23757e16
808         .long   0x212f973d, 0x233c2e00
809         .long   0x210649d6, 0x23102d3f
810         .long   0x20cd4d83, 0x22dcd18d
811         .long   0x209cdbfe, 0x22a904b4
812         .long   0x206f93bd, 0x22814e73
813         .long   0x2036de68, 0x2245c0eb
814         .long   0x200b8405, 0x22172479
815         .long   0x1fd4c713, 0x21e6ec36
816         .long   0x1fa22d35, 0x21b0523d
817         .long   0x1f771927, 0x21869086
818         .long   0x1f3c2718, 0x214d4b0f
819         .long   0x1f0f32ff, 0x211c85ba
820         .long   0x1ed9ddc3, 0x20ee8f29
821         .long   0x1ea5a71b, 0x20b5b53d
822         .long   0x1e7bc87b, 0x208a5661
823         .long   0x1e3f4167, 0x205288d5
824         .long   0x1e11353d, 0x2020208a
825         .long   0x1ddc631a, 0x1ff3754b
826         .long   0x1da729d6, 0x1fb8fcbd
827         .long   0x1d7d76ae, 0x1f8c7d97
828         .long   0x1d4010bf, 0x1f554a3f
829         .long   0x1d117833, 0x1f21d3cb
830         .long   0x1cdc3fc3, 0x1ef57178
831         .long   0x1ca6a764, 0x1eba0a73
832         .long   0x1c7c141f, 0x1e8cf23a
833         .long   0x1c3e8d91, 0x1e5575bf
834         .long   0x1c0ff968, 0x1e218fb3
835         .long   0x1bd974f4, 0x1df47139
836         .long   0x1ba4246f, 0x1db8d48f
837         .long   0x1b77ad8b, 0x1d8bb00a
838         .long   0x1b3ac5c9, 0x1d5309be
839         .long   0x1b0cc6a1, 0x1d1f56ba
840         .long   0x1ad41c58, 0x1cf07de1
841         .long   0x1a9fb806, 0x1cb56657
842         .long   0x1a706b47, 0x1c88c2bc
843         .long   0x1a34dbfa, 0x1c4e1cba
844         .long   0x1a07fd09, 0x1c1b3d7d
845         .long   0x19cc668e, 0x1be9bbfd
846         .long   0x19998a40, 0x1bafdf73
847         .long   0x19668edd, 0x1b844540
848         .long   0x192d054e, 0x1b46dbe6
849         .long   0x1901c77a, 0x1b156976
850         .long   0x18c29845, 0x1ae0691f
851         .long   0x1891d1e0, 0x1aa8720d
852         .long   0x185a6f34, 0x1a7cc054
853         .long   0x18238672, 0x1a3d887f
854         .long   0x17f4b806, 0x1a0e0ecc
855         .long   0x17b70648, 0x19d4d840
856         .long   0x1788d12d, 0x199f5fda
857         .long   0x174c739d, 0x196e8e9b
858         .long   0x1718afac, 0x193273f8
859         .long   0x16e3f1ae, 0x19056d4a
860         .long   0x16aa10bb, 0x18c76cf4
861         .long   0x167da48f, 0x1894f659
862         .long   0x163d0e1a, 0x185e6d9a
863         .long   0x160cd879, 0x1825fb65
864         .long   0x15d1c1e5, 0x17f7998c
865         .long   0x159c1df9, 0x17b895e1
866         .long   0x1568466d, 0x17898a88
867         .long   0x152cb568, 0x174cdf9b
868         .long   0x15005b01, 0x1718826b
869         .long   0x14beb151, 0x16e2f29a
870         .long   0x148d955e, 0x16a8c6d9
871         .long   0x14522407, 0x167ae8e3
872         .long   0x141bdf21, 0x163a6a2d
873         .long   0x13e71f72, 0x160a6e25
874         .long   0x13ab44c3, 0x15cd7e87
875         .long   0x137db4e3, 0x15987319
876         .long   0x133bd23f, 0x156215a4
877         .long   0x130afa70, 0x15278fa9
878         .long   0x12cd92ee, 0x14f840ab
879         .long   0x1297f777, 0x14b7cfb1
880         .long   0x1260915e, 0x148807fd
881         .long   0x1225d8aa, 0x14493e73
882         .long   0x11f4d72b, 0x1414c97a
883         .long   0x11b4a474, 0x13dbe665
884         .long   0x11853669, 0x13a26be2
885         .long   0x11446065, 0x136fd110
886         .long   0x1110acc4, 0x1330f593
887         .long   0x10d51115, 0x13028371
888         .long   0x109cd187, 0x12c06c14
889         .long   0x1066ba07, 0x128dc782
890         .long   0x1029a6c1, 0x1250d3f6
891         .long   0x0ff95d83, 0x1219b798
892         .long   0x0fb72d9a, 0x11e230b9
893         .long   0x0f867e41, 0x11a655c1
894         .long   0x0f456641, 0x117484a6
895         .long   0x0f10cb43, 0x1133a328
896         .long   0x0ed44fd3, 0x1103e85c
897         .long   0x0e9b94c1, 0x10c19ffd
898         .long   0x0e63e84a, 0x108e0a3d
899         .long   0x0e26d8e4, 0x10504b66
900         .long   0x0df42c6c, 0x1018a6f6
901         .long   0x0db294f0, 0x0fdfa367
902         .long   0x0d828bdd, 0x0fa3bcb5
903         .long   0x0d3ec540, 0x0f6fa4d1
904         .long   0x0d0b5230, 0x0f2f48cc
905         .long   0x0ccb653b, 0x0f00259a
906         .long   0x0c946596, 0x0ebb479f
907         .long   0x00000000, 0x00000000
908         .align  16
909         .long   0x7fffffff, 0x7fffffff, 0x7fffffff, 0x7fffffff /* _AbsMask */
910         .align  16
911         .long   0x41210000, 0x41210000, 0x41210000, 0x41210000 /* _MaxThreshold=644.0/64.0 */
912         .align  16
913         .long   0x80000000, 0x80000000, 0x80000000, 0x80000000 /* sign mask */
914         .align  16
915         .long   0x48000000, 0x48000000, 0x48000000, 0x48000000 /* SRound */
916         .align  16
917         .long   0x27800000, 0x27800000, 0x27800000, 0x27800000 /* _TwoM48 */
918         // polynomial coefficients
919         .align  16
920         .long   0x3e08a7ca, 0x3e08a7ca, 0x3e08a7ca, 0x3e08a7ca // poly1[0]
921         .align  16
922         .long   0xbeaacf22, 0xbeaacf22, 0xbeaacf22, 0xbeaacf22 // poly1[1]
923         .align  16
924         .long   0x3f005b36, 0x3f005b36, 0x3f005b36, 0x3f005b36 // poly3[0]
925         .align  16
926         .long   0xbeab4edb, 0xbeab4edb, 0xbeab4edb, 0xbeab4edb // poly3[1]
927         .align  16
928         .long   0x3f2aaaa6, 0x3f2aaaa6, 0x3f2aaaa6, 0x3f2aaaa6 // poly1[2]
929         .align  16
930         .long   0xbf7ffffc, 0xbf7ffffc, 0xbf7ffffc, 0xbf7ffffc // poly1[3]
931         .align  16
932         .long   0x4120DDFB, 0x4120DDFB, 0x4120DDFB, 0x4120DDFB /* UF_Threshold */
933         .align  16
934         .long   0x57800000, 0x57800000, 0x57800000, 0x57800000 /* 2^48 */
935         .align  16
936         .type   __svml_serfc_data_internal, @object
937         .size   __svml_serfc_data_internal, .-__svml_serfc_data_internal