diff --git a/sysdeps/x86_64/fpu/e_expf.S b/sysdeps/x86_64/fpu/e_expf.S new file mode 100644 index 0000000..cb509ce --- /dev/null +++ b/sysdeps/x86_64/fpu/e_expf.S @@ -0,0 +1,314 @@ +/* Optimized __ieee754_expf function. + Copyright (C) 2012 Free Software Foundation, Inc. + Contributed by Intel Corporation. + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + + .text +ENTRY(__ieee754_expf) + /* parameter 1: %xmm0 */ +L(label_1_1): + movd %xmm0, %eax + movss %xmm0, -8(%rsp) + movl %eax, %ecx + andl $2147483647, %ecx + cmpl $1118652779, %ecx + jae L(label_1_6) +L(label_1_2): + cmpl $830472192, %ecx + jae L(label_1_4) +L(label_1_3): + movss tablevalue_9(%rip), %xmm1 + addss %xmm1, %xmm0 + movss %xmm0, -16(%rsp) + ret + +L(label_1_4): + cvtss2sd -8(%rsp), %xmm3 + movaps %xmm3, %xmm0 + lea __libm_expf_table_64(%rip), %rcx + movsd tablevalue_5(%rip), %xmm2 + mulsd KLN2(%rip), %xmm0 + addsd tablevalue_1(%rip), %xmm0 + cvtsd2ss %xmm0, %xmm0 + movss %xmm0, -16(%rsp) + movss -16(%rsp), %xmm1 + movsd tablevalue_3(%rip), %xmm0 + movl -16(%rsp), %edx + movl %edx, %eax + shll $26, %eax + subss tablevalue_2(%rip), %xmm1 + cvtss2sd %xmm1, %xmm1 + mulsd NLN2K(%rip), %xmm1 + sarl $26, %eax + addsd %xmm1, %xmm3 + movaps %xmm3, %xmm4 + mulsd %xmm3, %xmm4 + mulsd %xmm4, %xmm0 + movslq %eax, %rax + addsd tablevalue_4(%rip), %xmm0 + mulsd %xmm4, %xmm0 + subl %eax, %edx + mulsd %xmm2, %xmm4 + shrl $6, %edx + addsd tablevalue_6(%rip), %xmm4 + mulsd %xmm3, %xmm4 + shll $23, %edx + addsd %xmm4, %xmm0 + mulsd 256(%rcx, %rax, 8), %xmm0 + addl $1065353216, %edx + movl %edx, -24(%rsp) + cvtss2sd -24(%rsp), %xmm5 + addsd 256(%rcx, %rax, 8), %xmm0 + mulsd %xmm5, %xmm0 + cvtsd2ss %xmm0, %xmm0 +L(label_1_5): + ret + +L(label_1_6): + shrl $31, %eax + lea range(%rip), %rdx + cmpl (%rdx, %rax, 4), %ecx + jbe L(label_1_16) +L(label_1_7): + cmpl $2139095040, %ecx + jae L(label_1_12) +L(label_1_8): + testq %rax, %rax + je L(label_1_10) +L(label_1_9): + movss tablevalue_7(%rip), %xmm0 + mulss %xmm0, %xmm0 + ret + +L(label_1_10): + movss tablevalue_8(%rip), %xmm0 + mulss %xmm0, %xmm0 +L(label_1_11): + ret + +L(label_1_12): + jne L(label_1_14) +L(label_1_13): + lea _inf_zero(%rip), %rdx + movss (%rdx, %rax, 4), %xmm0 + ret + +L(label_1_14): + movss -8(%rsp), %xmm0 + addss %xmm0, %xmm0 +L(label_1_15): + ret + +L(label_1_16): + cvtss2sd -8(%rsp), %xmm4 + movaps %xmm4, %xmm1 + lea __libm_expf_table_64(%rip), %rsi + mulsd KLN2(%rip), %xmm1 + movq $0x3ff0000000000000, %rcx + movsd tablevalue_3(%rip), %xmm0 + movsd tablevalue_5(%rip), %xmm3 + addsd tablevalue_1(%rip), %xmm1 + cvtsd2ss %xmm1, %xmm1 + movss %xmm1, -16(%rsp) + movss -16(%rsp), %xmm2 + movl -16(%rsp), %edx + andl $4194303, %edx + subss tablevalue_2(%rip), %xmm2 + cvtss2sd %xmm2, %xmm2 + mulsd NLN2K(%rip), %xmm2 + movl %edx, %eax + shll $26, %eax + addsd %xmm2, %xmm4 + movaps %xmm4, %xmm5 + mulsd %xmm4, %xmm5 + mulsd %xmm5, %xmm0 + sarl $26, %eax + addsd tablevalue_4(%rip), %xmm0 + mulsd %xmm5, %xmm0 + mulsd %xmm3, %xmm5 + movslq %eax, %rax + addsd tablevalue_6(%rip), %xmm5 + mulsd %xmm4, %xmm5 + subl %eax, %edx + shrl $6, %edx + addsd %xmm5, %xmm0 + mulsd 256(%rsi, %rax, 8), %xmm0 + addsd 256(%rsi, %rax, 8), %xmm0 + shlq $52, %rdx + addq %rcx, %rdx + movq %rdx, -24(%rsp) + mulsd -24(%rsp), %xmm0 + cvtsd2ss %xmm0, %xmm0 + ret +END(__ieee754_expf) + + .section .rodata, "a" + .align ALIGNARG(5) + .align ALIGNARG(5) +__libm_expf_table_64: + .long 0x667f3bcd, 0x3fe6a09e + .long 0x3c651a2f, 0x3fe6dfb2 + .long 0xe8ec5f74, 0x3fe71f75 + .long 0x564267c9, 0x3fe75feb + .long 0x73eb0187, 0x3fe7a114 + .long 0x36cf4e62, 0x3fe7e2f3 + .long 0x994cce13, 0x3fe82589 + .long 0x9b4492ed, 0x3fe868d9 + .long 0x422aa0db, 0x3fe8ace5 + .long 0x99157736, 0x3fe8f1ae + .long 0xb0cdc5e5, 0x3fe93737 + .long 0x9fde4e50, 0x3fe97d82 + .long 0x82a3f090, 0x3fe9c491 + .long 0x7b5de565, 0x3fea0c66 + .long 0xb23e255d, 0x3fea5503 + .long 0x5579fdbf, 0x3fea9e6b + .long 0x995ad3ad, 0x3feae89f + .long 0xb84f15fb, 0x3feb33a2 + .long 0xf2fb5e47, 0x3feb7f76 + .long 0x904bc1d2, 0x3febcc1e + .long 0xdd85529c, 0x3fec199b + .long 0x2e57d14b, 0x3fec67f1 + .long 0xdcef9069, 0x3fecb720 + .long 0x4a07897c, 0x3fed072d + .long 0xdcfba487, 0x3fed5818 + .long 0x03db3285, 0x3feda9e6 + .long 0x337b9b5f, 0x3fedfc97 + .long 0xe78b3ff6, 0x3fee502e + .long 0xa2a490da, 0x3feea4af + .long 0xee615a27, 0x3feefa1b + .long 0x5b6e4540, 0x3fef5076 + .long 0x819e90d8, 0x3fefa7c1 + .long 0x00000000, 0x3ff00000 + .long 0x3e778061, 0x3ff02c9a + .long 0xd3158574, 0x3ff059b0 + .long 0x18759bc8, 0x3ff08745 + .long 0x6cf9890f, 0x3ff0b558 + .long 0x32d3d1a2, 0x3ff0e3ec + .long 0xd0125b51, 0x3ff11301 + .long 0xaea92de0, 0x3ff1429a + .long 0x3c7d517b, 0x3ff172b8 + .long 0xeb6fcb75, 0x3ff1a35b + .long 0x3168b9aa, 0x3ff1d487 + .long 0x88628cd6, 0x3ff2063b + .long 0x6e756238, 0x3ff2387a + .long 0x65e27cdd, 0x3ff26b45 + .long 0xf51fdee1, 0x3ff29e9d + .long 0xa6e4030b, 0x3ff2d285 + .long 0x0a31b715, 0x3ff306fe + .long 0xb26416ff, 0x3ff33c08 + .long 0x373aa9cb, 0x3ff371a7 + .long 0x34e59ff7, 0x3ff3a7db + .long 0x4c123422, 0x3ff3dea6 + .long 0x21f72e2a, 0x3ff4160a + .long 0x6061892d, 0x3ff44e08 + .long 0xb5c13cd0, 0x3ff486a2 + .long 0xd5362a27, 0x3ff4bfda + .long 0x769d2ca7, 0x3ff4f9b2 + .long 0x569d4f82, 0x3ff5342b + .long 0x36b527da, 0x3ff56f47 + .long 0xdd485429, 0x3ff5ab07 + .long 0x15ad2148, 0x3ff5e76f + .long 0xb03a5585, 0x3ff6247e + .long 0x82552225, 0x3ff66238 + .long 0x667f3bcd, 0x3ff6a09e + ASM_TYPE_DIRECTIVE(__libm_expf_table_64, @object) + ASM_SIZE_DIRECTIVE(__libm_expf_table_64) + + .align ALIGNARG(3) +KLN2: + .long 0x652b82fe, 0x40571547 + ASM_TYPE_DIRECTIVE(KLN2, @object) + ASM_SIZE_DIRECTIVE(KLN2) + + .align ALIGNARG(3) +NLN2K: + .long 0xfefa39ef, 0xbf862e42 + ASM_TYPE_DIRECTIVE(NLN2K, @object) + ASM_SIZE_DIRECTIVE(NLN2K) + + .align ALIGNARG(3) +tablevalue_1: + .long 0x00000000, 0x41680000 + ASM_TYPE_DIRECTIVE(tablevalue_1, @object) + ASM_SIZE_DIRECTIVE(tablevalue_1) + + .align ALIGNARG(3) +tablevalue_3: + .long 0xeb78fa85, 0x3fa56420 + ASM_TYPE_DIRECTIVE(tablevalue_3, @object) + ASM_SIZE_DIRECTIVE(tablevalue_3) + + .align ALIGNARG(3) +tablevalue_4: + .long 0x008d6118, 0x3fe00000 + ASM_TYPE_DIRECTIVE(tablevalue_4, @object) + ASM_SIZE_DIRECTIVE(tablevalue_4) + + .align ALIGNARG(3) +tablevalue_5: + .long 0xda752d4f, 0x3fc55550 + ASM_TYPE_DIRECTIVE(tablevalue_5, @object) + ASM_SIZE_DIRECTIVE(tablevalue_5) + + .align ALIGNARG(3) +tablevalue_6: + .long 0xffffe7c6, 0x3fefffff + ASM_TYPE_DIRECTIVE(tablevalue_6, @object) + ASM_SIZE_DIRECTIVE(tablevalue_6) + + .align ALIGNARG(2) +range: + .long 1118925335 + .long 1120924084 + ASM_TYPE_DIRECTIVE(range, @object) + ASM_SIZE_DIRECTIVE(range) + + .align ALIGNARG(2) +_inf_zero: + .long 2139095040 + .long 0 + ASM_TYPE_DIRECTIVE(_inf_zero, @object) + ASM_SIZE_DIRECTIVE(_inf_zero) + + .align ALIGNARG(2) +tablevalue_2: + .long 0x4b400000 + ASM_TYPE_DIRECTIVE(tablevalue_2, @object) + ASM_SIZE_DIRECTIVE(tablevalue_2) + + .align ALIGNARG(2) +tablevalue_7: + .long 0x0d800000 + ASM_TYPE_DIRECTIVE(tablevalue_7, @object) + ASM_SIZE_DIRECTIVE(tablevalue_7) + + .align ALIGNARG(2) +tablevalue_8: + .long 0x71800000 + ASM_TYPE_DIRECTIVE(tablevalue_8, @object) + ASM_SIZE_DIRECTIVE(tablevalue_8) + + .align ALIGNARG(2) +tablevalue_9: + .long 0x3f800000 + ASM_TYPE_DIRECTIVE(tablevalue_9, @object) + ASM_SIZE_DIRECTIVE(tablevalue_9) + +strong_alias (__ieee754_expf, __expf_finite) diff --git a/sysdeps/x86_64/fpu/s_erfcf.S b/sysdeps/x86_64/fpu/s_erfcf.S new file mode 100644 index 0000000..42a33b0 --- /dev/null +++ b/sysdeps/x86_64/fpu/s_erfcf.S @@ -0,0 +1 @@ +/* Not needed. See "s_erff.S" */ diff --git a/sysdeps/x86_64/fpu/s_erff.S b/sysdeps/x86_64/fpu/s_erff.S new file mode 100644 index 0000000..247ddec --- /dev/null +++ b/sysdeps/x86_64/fpu/s_erff.S @@ -0,0 +1,968 @@ +/* Optimized erff and erfcf functions. + Copyright (C) 2012 Free Software Foundation, Inc. + Contributed by Intel Corporation. + 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, write to the Free + Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + 02111-1307 USA. */ + +#include + +ENTRY(__erff) + /* parameter 1: %xmm0 */ + lea -48(%rsp), %rsp + movaps %xmm0, %xmm4 + movd %xmm4, %r9d + movl %r9d, %eax + andl $2147483647, %eax + cmpl $2139095040, %eax + jge L(label_1_23) + cmpl $1062731776, %eax + jge L(label_1_9) + cmpl $830472192, %eax + jge L(label_1_8) + cmpl $67108864, %eax + jge L(label_1_6) + movss tablevalue_22(%rip), %xmm0 + movss efx8(%rip), %xmm1 + mulss %xmm4, %xmm0 + mulss %xmm1, %xmm4 + addss %xmm4, %xmm0 + mulss tablevalue_21(%rip), %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_1_6): + movss efx(%rip), %xmm0 + mulss %xmm4, %xmm0 + addss %xmm4, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_1_8): + movaps %xmm4, %xmm2 + mulss %xmm4, %xmm2 + movss qq5(%rip), %xmm1 + mulss %xmm2, %xmm1 + movss pp4(%rip), %xmm3 + mulss %xmm2, %xmm3 + addss qq4(%rip), %xmm1 + addss pp3(%rip), %xmm3 + mulss %xmm2, %xmm1 + mulss %xmm2, %xmm3 + addss qq3(%rip), %xmm1 + addss pp2(%rip), %xmm3 + mulss %xmm2, %xmm1 + mulss %xmm2, %xmm3 + addss qq2(%rip), %xmm1 + addss pp1(%rip), %xmm3 + mulss %xmm2, %xmm1 + mulss %xmm2, %xmm3 + addss qq1(%rip), %xmm1 + addss pp0(%rip), %xmm3 + mulss %xmm1, %xmm2 + addss one(%rip), %xmm2 + divss %xmm2, %xmm3 + mulss %xmm4, %xmm3 + addss %xmm3, %xmm4 + movaps %xmm4, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_1_9): + cmpl $1067450368, %eax + jge L(label_1_13) + movl %r9d, %eax + andl $2147483647, %eax + movl %eax, (%rsp) + testl %r9d, %r9d + movss (%rsp), %xmm2 + movss pa6(%rip), %xmm0 + movss qa6(%rip), %xmm1 + subss one(%rip), %xmm2 + mulss %xmm2, %xmm0 + mulss %xmm2, %xmm1 + addss pa5(%rip), %xmm0 + addss qa5(%rip), %xmm1 + mulss %xmm2, %xmm0 + mulss %xmm2, %xmm1 + addss pa4(%rip), %xmm0 + addss qa4(%rip), %xmm1 + mulss %xmm2, %xmm0 + mulss %xmm2, %xmm1 + addss pa3(%rip), %xmm0 + addss qa3(%rip), %xmm1 + mulss %xmm2, %xmm0 + mulss %xmm2, %xmm1 + addss pa2(%rip), %xmm0 + addss qa2(%rip), %xmm1 + mulss %xmm2, %xmm0 + mulss %xmm2, %xmm1 + addss pa1(%rip), %xmm0 + addss qa1(%rip), %xmm1 + mulss %xmm2, %xmm0 + mulss %xmm1, %xmm2 + addss pa0(%rip), %xmm0 + addss one(%rip), %xmm2 + jl L(label_1_24) + divss %xmm2, %xmm0 + addss erx(%rip), %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_1_13): + cmpl $1086324736, %eax + jl L(label_1_15) + testl %r9d, %r9d + movss tablevalue_26(%rip), %xmm0 + movss tablevalue_24(%rip), %xmm1 + jge L(label_26) + movaps %xmm1, %xmm0 +L(label_26): + lea 48(%rsp), %rsp + ret + +L(label_1_15): + movl %r9d, %edx + andl $2147483647, %edx + movl %edx, 8(%rsp) + cmpl $1077336942, %eax + movss 8(%rsp), %xmm0 + movss %xmm0, (%rsp) + mulss 8(%rsp), %xmm0 + movss one(%rip), %xmm3 + divss %xmm0, %xmm3 + jge L(label_1_17) + movss sa8(%rip), %xmm1 + mulss %xmm3, %xmm1 + movss ra7(%rip), %xmm0 + mulss %xmm3, %xmm0 + addss sa7(%rip), %xmm1 + addss ra6(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sa6(%rip), %xmm1 + addss ra5(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sa5(%rip), %xmm1 + addss ra4(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sa4(%rip), %xmm1 + addss ra3(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sa3(%rip), %xmm1 + addss ra2(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sa2(%rip), %xmm1 + addss ra1(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sa1(%rip), %xmm1 + addss ra0(%rip), %xmm0 + mulss %xmm1, %xmm3 + movss %xmm0, 16(%rsp) + addss one(%rip), %xmm3 + jmp L(label_1_18) + +L(label_1_17): + movss sb7(%rip), %xmm1 + mulss %xmm3, %xmm1 + movss rb6(%rip), %xmm0 + mulss %xmm3, %xmm0 + addss sb6(%rip), %xmm1 + addss rb5(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sb5(%rip), %xmm1 + addss rb4(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sb4(%rip), %xmm1 + addss rb3(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sb3(%rip), %xmm1 + addss rb2(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sb2(%rip), %xmm1 + addss rb1(%rip), %xmm0 + mulss %xmm3, %xmm1 + mulss %xmm3, %xmm0 + addss sb1(%rip), %xmm1 + addss rb0(%rip), %xmm0 + mulss %xmm1, %xmm3 + movss %xmm0, 16(%rsp) + addss one(%rip), %xmm3 +L(label_1_18): + andl $-4096, %edx + movl %edx, 32(%rsp) + movss 32(%rsp), %xmm0 + movss %xmm0, 8(%rsp) + mulss 32(%rsp), %xmm0 + xorps tablevalue_27(%rip), %xmm0 + movss %xmm3, 24(%rsp) + subss tablevalue_25(%rip), %xmm0 + call __ieee754_expf@PLT + movss 24(%rsp), %xmm3 + movaps %xmm0, %xmm5 + movss 16(%rsp), %xmm4 + divss %xmm3, %xmm4 + movss 8(%rsp), %xmm2 + movss (%rsp), %xmm1 + movaps %xmm2, %xmm0 + movss %xmm5, 24(%rsp) + addss %xmm1, %xmm2 + subss (%rsp), %xmm0 + mulss %xmm2, %xmm0 + addss %xmm4, %xmm0 + call __ieee754_expf@PLT + movss 24(%rsp), %xmm5 + mulss %xmm0, %xmm5 + testl %r9d, %r9d + jl L(label_1_25) + divss (%rsp), %xmm5 + movss one(%rip), %xmm0 + subss %xmm5, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_1_23): + movss one(%rip), %xmm1 + divss %xmm4, %xmm1 + shrl $30, %r9d + andl $-2, %r9d + negl %r9d + incl %r9d + cvtsi2ss %r9d, %xmm0 + addss %xmm1, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_1_24): + divss %xmm2, %xmm0 + movaps %xmm0, %xmm1 + movss tablevalue_23(%rip), %xmm0 + subss %xmm1, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_1_25): + divss (%rsp), %xmm5 + movss one(%rip), %xmm0 + subss %xmm5, %xmm0 + xorps tablevalue_27(%rip), %xmm0 + lea 48(%rsp), %rsp + ret + +END(__erff) + + +ENTRY(__erfcf) + /* parameter 1: %xmm0 */ + lea -48(%rsp), %rsp + movaps %xmm0, %xmm4 + movd %xmm4, %r8d + movl %r8d, %eax + andl $2147483647, %eax + cmpl $2139095040, %eax + jge L(label_2_27) + cmpl $1062731776, %eax + jge L(label_2_9) + cmpl $595591168, %eax + jl L(label_2_8) + movaps %xmm4, %xmm2 + cmpl $1048576000, %r8d + mulss %xmm4, %xmm2 + movss qq5(%rip), %xmm1 + mulss %xmm2, %xmm1 + movss pp4(%rip), %xmm3 + mulss %xmm2, %xmm3 + addss qq4(%rip), %xmm1 + addss pp3(%rip), %xmm3 + mulss %xmm2, %xmm1 + mulss %xmm2, %xmm3 + addss qq3(%rip), %xmm1 + addss pp2(%rip), %xmm3 + mulss %xmm2, %xmm1 + mulss %xmm2, %xmm3 + addss qq2(%rip), %xmm1 + addss pp1(%rip), %xmm3 + mulss %xmm2, %xmm1 + mulss %xmm2, %xmm3 + addss qq1(%rip), %xmm1 + addss pp0(%rip), %xmm3 + mulss %xmm1, %xmm2 + movss one(%rip), %xmm0 + addss one(%rip), %xmm2 + divss %xmm2, %xmm3 + mulss %xmm4, %xmm3 + jge L(label_2_6) + addss %xmm3, %xmm4 + subss %xmm4, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_6): + movss half(%rip), %xmm0 + subss half(%rip), %xmm4 + addss %xmm4, %xmm3 + subss %xmm3, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_8): + movss one(%rip), %xmm0 + subss %xmm4, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_9): + cmpl $1067450368, %eax + jge L(label_2_13) + movl %r8d, %eax + andl $2147483647, %eax + movl %eax, (%rsp) + testl %r8d, %r8d + movss (%rsp), %xmm1 + movss pa6(%rip), %xmm2 + movss qa6(%rip), %xmm0 + subss one(%rip), %xmm1 + mulss %xmm1, %xmm2 + mulss %xmm1, %xmm0 + addss pa5(%rip), %xmm2 + addss qa5(%rip), %xmm0 + mulss %xmm1, %xmm2 + mulss %xmm1, %xmm0 + addss pa4(%rip), %xmm2 + addss qa4(%rip), %xmm0 + mulss %xmm1, %xmm2 + mulss %xmm1, %xmm0 + addss pa3(%rip), %xmm2 + addss qa3(%rip), %xmm0 + mulss %xmm1, %xmm2 + mulss %xmm1, %xmm0 + addss pa2(%rip), %xmm2 + addss qa2(%rip), %xmm0 + mulss %xmm1, %xmm2 + mulss %xmm1, %xmm0 + addss pa1(%rip), %xmm2 + addss qa1(%rip), %xmm0 + mulss %xmm1, %xmm2 + mulss %xmm0, %xmm1 + addss pa0(%rip), %xmm2 + addss one(%rip), %xmm1 + jl L(label_2_28) + divss %xmm1, %xmm2 + movss tablevalue_29(%rip), %xmm0 + subss %xmm2, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_13): + cmpl $1105199104, %eax + jge L(label_2_23) + movl %r8d, %edx + andl $2147483647, %edx + movl %edx, (%rsp) + cmpl $1077336941, %eax + movss (%rsp), %xmm0 + movss %xmm0, 24(%rsp) + mulss (%rsp), %xmm0 + movss one(%rip), %xmm5 + divss %xmm0, %xmm5 + jge L(label_2_16) + movss sa8(%rip), %xmm0 + mulss %xmm5, %xmm0 + movss ra7(%rip), %xmm3 + mulss %xmm5, %xmm3 + addss sa7(%rip), %xmm0 + addss ra6(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sa6(%rip), %xmm0 + addss ra5(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sa5(%rip), %xmm0 + addss ra4(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sa4(%rip), %xmm0 + addss ra3(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sa3(%rip), %xmm0 + addss ra2(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sa2(%rip), %xmm0 + addss ra1(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sa1(%rip), %xmm0 + addss ra0(%rip), %xmm3 + mulss %xmm0, %xmm5 + addss one(%rip), %xmm5 + jmp L(label_2_18) + +L(label_2_16): + testl %r8d, %r8d + jl L(label_2_30) +L(label_2_17): + movss sb7(%rip), %xmm0 + mulss %xmm5, %xmm0 + movss rb6(%rip), %xmm3 + mulss %xmm5, %xmm3 + addss sb6(%rip), %xmm0 + addss rb5(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sb5(%rip), %xmm0 + addss rb4(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sb4(%rip), %xmm0 + addss rb3(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sb3(%rip), %xmm0 + addss rb2(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sb2(%rip), %xmm0 + addss rb1(%rip), %xmm3 + mulss %xmm5, %xmm0 + mulss %xmm5, %xmm3 + addss sb1(%rip), %xmm0 + addss rb0(%rip), %xmm3 + mulss %xmm0, %xmm5 + addss one(%rip), %xmm5 +L(label_2_18): + andl $-4096, %edx + movl %edx, 32(%rsp) + movss 32(%rsp), %xmm0 + movss %xmm0, (%rsp) + mulss 32(%rsp), %xmm0 + xorps tablevalue_32(%rip), %xmm0 + movss %xmm3, 8(%rsp) + movss %xmm5, 16(%rsp) + subss tablevalue_31(%rip), %xmm0 + call __ieee754_expf@PLT + movss 16(%rsp), %xmm5 + movaps %xmm0, %xmm4 + movss 8(%rsp), %xmm3 + divss %xmm5, %xmm3 + movss (%rsp), %xmm2 + movss 24(%rsp), %xmm1 + movaps %xmm2, %xmm0 + movss %xmm4, 8(%rsp) + addss %xmm1, %xmm2 + subss 24(%rsp), %xmm0 + mulss %xmm2, %xmm0 + addss %xmm3, %xmm0 + call __ieee754_expf@PLT + movss 8(%rsp), %xmm4 + mulss %xmm0, %xmm4 + testl %r8d, %r8d + jle L(label_2_29) + divss 24(%rsp), %xmm4 +L(label_2_22): + movaps %xmm4, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_23): + testl %r8d, %r8d + jle L(label_2_25) + movss tiny(%rip), %xmm0 + mulss %xmm0, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_25): + movss tablevalue_30(%rip), %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_27): + movss one(%rip), %xmm1 + divss %xmm4, %xmm1 + shrl $30, %r8d + andl $-2, %r8d + cvtsi2ssq %r8, %xmm0 + addss %xmm1, %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_28): + divss %xmm1, %xmm2 + addss erx(%rip), %xmm2 + movaps %xmm2, %xmm0 + addss one(%rip), %xmm0 + lea 48(%rsp), %rsp + ret + +L(label_2_29): + divss 24(%rsp), %xmm4 + movaps %xmm4, %xmm1 + movss two(%rip), %xmm4 + subss %xmm1, %xmm4 + jmp L(label_2_22) + +L(label_2_30): + cmpl $1086324736, %eax + jl L(label_2_17) + movss tablevalue_30(%rip), %xmm0 + lea 48(%rsp), %rsp + ret + +END(__erfcf) + + .section .rodata, "a" + .align ALIGNARG(4) + + .align ALIGNARG(4) +tablevalue_27: + .long 0x80000000,0x00000000,0x00000000,0x00000000 + ASM_TYPE_DIRECTIVE(tablevalue_27,@object) + ASM_SIZE_DIRECTIVE(tablevalue_27) + + .align ALIGNARG(4) +tablevalue_32: + .long 0x80000000,0x00000000,0x00000000,0x00000000 + ASM_TYPE_DIRECTIVE(tablevalue_32,@object) + ASM_SIZE_DIRECTIVE(tablevalue_32) + + .align ALIGNARG(2) +one: + .long 0x3f800000 + ASM_TYPE_DIRECTIVE(one,@object) + ASM_SIZE_DIRECTIVE(one) + + .align ALIGNARG(2) +efx8: + .long 0x3f8375d4 + ASM_TYPE_DIRECTIVE(efx8,@object) + ASM_SIZE_DIRECTIVE(efx8) + + .align ALIGNARG(2) +efx: + .long 0x3e0375d4 + ASM_TYPE_DIRECTIVE(efx,@object) + ASM_SIZE_DIRECTIVE(efx) + + .align ALIGNARG(2) +pp0: + .long 0x3e0375d4 + ASM_TYPE_DIRECTIVE(pp0,@object) + ASM_SIZE_DIRECTIVE(pp0) + + .align ALIGNARG(2) +pp1: + .long 0xbea66beb + ASM_TYPE_DIRECTIVE(pp1,@object) + ASM_SIZE_DIRECTIVE(pp1) + + .align ALIGNARG(2) +pp2: + .long 0xbce9528f + ASM_TYPE_DIRECTIVE(pp2,@object) + ASM_SIZE_DIRECTIVE(pp2) + + .align ALIGNARG(2) +pp3: + .long 0xbbbd1489 + ASM_TYPE_DIRECTIVE(pp3,@object) + ASM_SIZE_DIRECTIVE(pp3) + + .align ALIGNARG(2) +pp4: + .long 0xb7c756b1 + ASM_TYPE_DIRECTIVE(pp4,@object) + ASM_SIZE_DIRECTIVE(pp4) + + .align ALIGNARG(2) +qq1: + .long 0x3ecbbbce + ASM_TYPE_DIRECTIVE(qq1,@object) + ASM_SIZE_DIRECTIVE(qq1) + + .align ALIGNARG(2) +qq2: + .long 0x3d852a63 + ASM_TYPE_DIRECTIVE(qq2,@object) + ASM_SIZE_DIRECTIVE(qq2) + + .align ALIGNARG(2) +qq3: + .long 0x3ba68116 + ASM_TYPE_DIRECTIVE(qq3,@object) + ASM_SIZE_DIRECTIVE(qq3) + + .align ALIGNARG(2) +qq4: + .long 0x390aee49 + ASM_TYPE_DIRECTIVE(qq4,@object) + ASM_SIZE_DIRECTIVE(qq4) + + .align ALIGNARG(2) +qq5: + .long 0xb684e21a + ASM_TYPE_DIRECTIVE(qq5,@object) + ASM_SIZE_DIRECTIVE(qq5) + + .align ALIGNARG(2) +pa0: + .long 0xbb1acdc6 + ASM_TYPE_DIRECTIVE(pa0,@object) + ASM_SIZE_DIRECTIVE(pa0) + + .align ALIGNARG(2) +pa1: + .long 0x3ed46805 + ASM_TYPE_DIRECTIVE(pa1,@object) + ASM_SIZE_DIRECTIVE(pa1) + + .align ALIGNARG(2) +pa2: + .long 0xbebe9208 + ASM_TYPE_DIRECTIVE(pa2,@object) + ASM_SIZE_DIRECTIVE(pa2) + + .align ALIGNARG(2) +pa3: + .long 0x3ea2fe54 + ASM_TYPE_DIRECTIVE(pa3,@object) + ASM_SIZE_DIRECTIVE(pa3) + + .align ALIGNARG(2) +pa4: + .long 0xbde31cc2 + ASM_TYPE_DIRECTIVE(pa4,@object) + ASM_SIZE_DIRECTIVE(pa4) + + .align ALIGNARG(2) +pa5: + .long 0x3d1151b3 + ASM_TYPE_DIRECTIVE(pa5,@object) + ASM_SIZE_DIRECTIVE(pa5) + + .align ALIGNARG(2) +pa6: + .long 0xbb0df9c0 + ASM_TYPE_DIRECTIVE(pa6,@object) + ASM_SIZE_DIRECTIVE(pa6) + + .align ALIGNARG(2) +qa1: + .long 0x3dd9f331 + ASM_TYPE_DIRECTIVE(qa1,@object) + ASM_SIZE_DIRECTIVE(qa1) + + .align ALIGNARG(2) +qa2: + .long 0x3f0a5785 + ASM_TYPE_DIRECTIVE(qa2,@object) + ASM_SIZE_DIRECTIVE(qa2) + + .align ALIGNARG(2) +qa3: + .long 0x3d931ae7 + ASM_TYPE_DIRECTIVE(qa3,@object) + ASM_SIZE_DIRECTIVE(qa3) + + .align ALIGNARG(2) +qa4: + .long 0x3e013307 + ASM_TYPE_DIRECTIVE(qa4,@object) + ASM_SIZE_DIRECTIVE(qa4) + + .align ALIGNARG(2) +qa5: + .long 0x3c5f6e13 + ASM_TYPE_DIRECTIVE(qa5,@object) + ASM_SIZE_DIRECTIVE(qa5) + + .align ALIGNARG(2) +qa6: + .long 0x3c445aa3 + ASM_TYPE_DIRECTIVE(qa6,@object) + ASM_SIZE_DIRECTIVE(qa6) + + .align ALIGNARG(2) +erx: + .long 0x3f58560b + ASM_TYPE_DIRECTIVE(erx,@object) + ASM_SIZE_DIRECTIVE(erx) + + .align ALIGNARG(2) +rb0: + .long 0xbc21a092 + ASM_TYPE_DIRECTIVE(rb0,@object) + ASM_SIZE_DIRECTIVE(rb0) + + .align ALIGNARG(2) +rb1: + .long 0xbf4c9dd4 + ASM_TYPE_DIRECTIVE(rb1,@object) + ASM_SIZE_DIRECTIVE(rb1) + + .align ALIGNARG(2) +rb2: + .long 0xc18e104b + ASM_TYPE_DIRECTIVE(rb2,@object) + ASM_SIZE_DIRECTIVE(rb2) + + .align ALIGNARG(2) +rb3: + .long 0xc320a2ea + ASM_TYPE_DIRECTIVE(rb3,@object) + ASM_SIZE_DIRECTIVE(rb3) + + .align ALIGNARG(2) +rb4: + .long 0xc41f6441 + ASM_TYPE_DIRECTIVE(rb4,@object) + ASM_SIZE_DIRECTIVE(rb4) + + .align ALIGNARG(2) +rb5: + .long 0xc480230b + ASM_TYPE_DIRECTIVE(rb5,@object) + ASM_SIZE_DIRECTIVE(rb5) + + .align ALIGNARG(2) +rb6: + .long 0xc3f1c275 + ASM_TYPE_DIRECTIVE(rb6,@object) + ASM_SIZE_DIRECTIVE(rb6) + + .align ALIGNARG(2) +sb1: + .long 0x41f2b459 + ASM_TYPE_DIRECTIVE(sb1,@object) + ASM_SIZE_DIRECTIVE(sb1) + + .align ALIGNARG(2) +sb2: + .long 0x43a2e571 + ASM_TYPE_DIRECTIVE(sb2,@object) + ASM_SIZE_DIRECTIVE(sb2) + + .align ALIGNARG(2) +sb3: + .long 0x44c01759 + ASM_TYPE_DIRECTIVE(sb3,@object) + ASM_SIZE_DIRECTIVE(sb3) + + .align ALIGNARG(2) +sb4: + .long 0x4547fdbb + ASM_TYPE_DIRECTIVE(sb4,@object) + ASM_SIZE_DIRECTIVE(sb4) + + .align ALIGNARG(2) +sb5: + .long 0x451f90ce + ASM_TYPE_DIRECTIVE(sb5,@object) + ASM_SIZE_DIRECTIVE(sb5) + + .align ALIGNARG(2) +sb6: + .long 0x43ed43a7 + ASM_TYPE_DIRECTIVE(sb6,@object) + ASM_SIZE_DIRECTIVE(sb6) + + .align ALIGNARG(2) +sb7: + .long 0xc1b38712 + ASM_TYPE_DIRECTIVE(sb7,@object) + ASM_SIZE_DIRECTIVE(sb7) + + .align ALIGNARG(2) +ra0: + .long 0xbc21a093 + ASM_TYPE_DIRECTIVE(ra0,@object) + ASM_SIZE_DIRECTIVE(ra0) + + .align ALIGNARG(2) +ra1: + .long 0xbf31a0b7 + ASM_TYPE_DIRECTIVE(ra1,@object) + ASM_SIZE_DIRECTIVE(ra1) + + .align ALIGNARG(2) +ra2: + .long 0xc128f022 + ASM_TYPE_DIRECTIVE(ra2,@object) + ASM_SIZE_DIRECTIVE(ra2) + + .align ALIGNARG(2) +ra3: + .long 0xc2798057 + ASM_TYPE_DIRECTIVE(ra3,@object) + ASM_SIZE_DIRECTIVE(ra3) + + .align ALIGNARG(2) +ra4: + .long 0xc322658c + ASM_TYPE_DIRECTIVE(ra4,@object) + ASM_SIZE_DIRECTIVE(ra4) + + .align ALIGNARG(2) +ra5: + .long 0xc3389ae7 + ASM_TYPE_DIRECTIVE(ra5,@object) + ASM_SIZE_DIRECTIVE(ra5) + + .align ALIGNARG(2) +ra6: + .long 0xc2a2932b + ASM_TYPE_DIRECTIVE(ra6,@object) + ASM_SIZE_DIRECTIVE(ra6) + + .align ALIGNARG(2) +ra7: + .long 0xc11d077e + ASM_TYPE_DIRECTIVE(ra7,@object) + ASM_SIZE_DIRECTIVE(ra7) + + .align ALIGNARG(2) +sa1: + .long 0x419d35ce + ASM_TYPE_DIRECTIVE(sa1,@object) + ASM_SIZE_DIRECTIVE(sa1) + + .align ALIGNARG(2) +sa2: + .long 0x4309a863 + ASM_TYPE_DIRECTIVE(sa2,@object) + ASM_SIZE_DIRECTIVE(sa2) + + .align ALIGNARG(2) +sa3: + .long 0x43d9486f + ASM_TYPE_DIRECTIVE(sa3,@object) + ASM_SIZE_DIRECTIVE(sa3) + + .align ALIGNARG(2) +sa4: + .long 0x442158c9 + ASM_TYPE_DIRECTIVE(sa4,@object) + ASM_SIZE_DIRECTIVE(sa4) + + .align ALIGNARG(2) +sa5: + .long 0x43d6810b + ASM_TYPE_DIRECTIVE(sa5,@object) + ASM_SIZE_DIRECTIVE(sa5) + + .align ALIGNARG(2) +sa6: + .long 0x42d9451f + ASM_TYPE_DIRECTIVE(sa6,@object) + ASM_SIZE_DIRECTIVE(sa6) + + .align ALIGNARG(2) +sa7: + .long 0x40d23f7c + ASM_TYPE_DIRECTIVE(sa7,@object) + ASM_SIZE_DIRECTIVE(sa7) + + .align ALIGNARG(2) +sa8: + .long 0xbd777f97 + ASM_TYPE_DIRECTIVE(sa8,@object) + ASM_SIZE_DIRECTIVE(sa8) + + .align ALIGNARG(2) +tablevalue_21: + .long 0x3e000000 + ASM_TYPE_DIRECTIVE(tablevalue_21,@object) + ASM_SIZE_DIRECTIVE(tablevalue_21) + + .align ALIGNARG(2) +tablevalue_22: + .long 0x41000000 + ASM_TYPE_DIRECTIVE(tablevalue_22,@object) + ASM_SIZE_DIRECTIVE(tablevalue_22) + + .align ALIGNARG(2) +tablevalue_23: + .long 0xbf58560b + ASM_TYPE_DIRECTIVE(tablevalue_23,@object) + ASM_SIZE_DIRECTIVE(tablevalue_23) + + .align ALIGNARG(2) +tablevalue_24: + .long 0xbf800000 + ASM_TYPE_DIRECTIVE(tablevalue_24,@object) + ASM_SIZE_DIRECTIVE(tablevalue_24) + + .align ALIGNARG(2) +tablevalue_25: + .long 0x3f100000 + ASM_TYPE_DIRECTIVE(tablevalue_25,@object) + ASM_SIZE_DIRECTIVE(tablevalue_25) + + .align ALIGNARG(2) +tablevalue_26: + .long 0x3f800000 + ASM_TYPE_DIRECTIVE(tablevalue_26,@object) + ASM_SIZE_DIRECTIVE(tablevalue_26) + + .align ALIGNARG(2) +half: + .long 0x3f000000 + ASM_TYPE_DIRECTIVE(half,@object) + ASM_SIZE_DIRECTIVE(half) + + .align ALIGNARG(2) +tiny: + .long 0x0da24260 + ASM_TYPE_DIRECTIVE(tiny,@object) + ASM_SIZE_DIRECTIVE(tiny) + + .align ALIGNARG(2) +two: + .long 0x40000000 + ASM_TYPE_DIRECTIVE(two,@object) + ASM_SIZE_DIRECTIVE(two) + + .align ALIGNARG(2) +tablevalue_29: + .long 0x3e1ea7d4 + ASM_TYPE_DIRECTIVE(tablevalue_29,@object) + ASM_SIZE_DIRECTIVE(tablevalue_29) + + .align ALIGNARG(2) +tablevalue_30: + .long 0x40000000 + ASM_TYPE_DIRECTIVE(tablevalue_30,@object) + ASM_SIZE_DIRECTIVE(tablevalue_30) + + .align ALIGNARG(2) +tablevalue_31: + .long 0x3f100000 + ASM_TYPE_DIRECTIVE(tablevalue_31,@object) + ASM_SIZE_DIRECTIVE(tablevalue_31) + +weak_alias(__erfcf, erfcf) +weak_alias(__erff, erff)