1/* Function erfcf vectorized with SSE4.
2 Copyright (C) 2021-2024 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
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.
9
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.
14
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/. */
18
19/*
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 */
29
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
46
47/* Lookup bias for data table __svml_serfc_data_internal. */
48#define Table_Lookup_Bias -0x40000000
49
50#include <sysdep.h>
51
52 .section .text.sse4, "ax", @progbits
53ENTRY(_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
58
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
62
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
75
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
83
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
92
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
106
107 /* P1 = P1*T + P3*D2 */
108 mulps %xmm1, %xmm4
109 movaps %xmm10, %xmm5
110 movslq %eax, %rax
111
112 /* 2^(-64) with sign of input */
113 orps %xmm10, %xmm0
114 movslq %edx, %rdx
115
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
133
134 /* EXP_X0H * (1+P1) */
135 mulps %xmm3, %xmm2
136
137 /* combine and get argument value range mask */
138 movmskps %xmm1, %edx
139 movlhps %xmm8, %xmm10
140 addps %xmm2, %xmm3
141
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
149
150 /* Go to special inputs processing branch */
151 jne L(SPECIAL_VALUES_BRANCH)
152 # LOE rbx rbp r12 r13 r14 r15 edx xmm0 xmm7
153
154 /* Restore registers
155 * and exit the function
156 */
157
158L(EXIT):
159 addq $72, %rsp
160 cfi_def_cfa_offset(8)
161 ret
162 cfi_def_cfa_offset(80)
163
164 /* Branch to process
165 * special inputs
166 */
167
168L(SPECIAL_VALUES_BRANCH):
169 movups %xmm7, 32(%rsp)
170 movups %xmm0, 48(%rsp)
171 # LOE rbx rbp r12 r13 r14 r15 edx xmm0
172
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
183
184 /* Range mask
185 * bits check
186 */
187
188L(RANGEMASK_CHECK):
189 btl %r12d, %r13d
190
191 /* Call scalar math function */
192 jc L(SCALAR_MATH_CALL)
193 # LOE rbx rbp r15 r12d r13d
194
195 /* Special inputs
196 * processing loop
197 */
198
199L(SPECIAL_VALUES_LOOP):
200 incl %r12d
201 cmpl $4, %r12d
202
203 /* Check bits in range mask */
204 jl L(RANGEMASK_CHECK)
205 # LOE rbx rbp r15 r12d r13d
206
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
214
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
221
222 /* Scalar math function call
223 * to process special input
224 */
225
226L(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
231
232 movss %xmm0, 48(%rsp, %r14, 4)
233
234 /* Process special inputs in loop */
235 jmp L(SPECIAL_VALUES_LOOP)
236 # LOE rbx rbp r15 r12d r13d
237END(_ZGVbN4v_erfcf_sse4)
238
239 .section .rodata, "a"
240 .align 16
241
242#ifdef __svml_serfc_data_internal_typedef
243typedef unsigned int VUINT32;
244typedef 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
938

source code of glibc/sysdeps/x86_64/fpu/multiarch/svml_s_erfcf4_core_sse4.S