Merge "libm: remove unused x86/x86_64 assembler."

This commit is contained in:
Treehugger Robot 2019-08-27 19:40:14 +00:00 committed by Gerrit Code Review
commit eab2046e35
6 changed files with 0 additions and 11330 deletions

View file

@ -1,576 +0,0 @@
/*
Copyright (c) 2014, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************************************************/
// ALGORITHM DESCRIPTION
// ---------------------
//
// Description:
// Let K = 64 (table size).
// x x/log(2) n
// e = 2 = 2 * T[j] * (1 + P(y))
// where
// x = m*log(2)/K + y, y in [-log(2)/K..log(2)/K]
// m = n*K + j, m,n,j - signed integer, j in [-K/2..K/2]
// j/K
// values of 2 are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
//
// P(y) is a minimax polynomial approximation of exp(x)-1
// on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
//
// To avoid problems with arithmetic overflow and underflow,
// n n1 n2
// value of 2 is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
// where BIAS is a value of exponent bias.
//
// Special cases:
// exp(NaN) = NaN
// exp(+INF) = +INF
// exp(-INF) = 0
// exp(x) = 1 for subnormals
// for finite argument, only exp(0)=1 is exact
// For IEEE double
// if x > 709.782712893383973096 then exp(x) overflow
// if x < -745.133219101941108420 then exp(x) underflow
//
/******************************************************************************/
#include <private/bionic_asm.h>
# -- Begin static_func
.text
.align __bionic_asm_align
.type static_func, @function
static_func:
..B1.1:
call ..L2
..L2:
popl %eax
lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
lea static_const_table@GOTOFF(%eax), %eax
ret
.size static_func,.-static_func
# -- End static_func
# -- Begin exp
ENTRY(exp)
# parameter 1: 8 + %ebp
..B2.1:
..B2.2:
pushl %ebp
movl %esp, %ebp
subl $120, %esp
movl %ebx, 64(%esp)
call static_func
movl %eax, %ebx
movsd 128(%esp), %xmm0
unpcklpd %xmm0, %xmm0
movapd 64(%ebx), %xmm1
movapd 48(%ebx), %xmm6
movapd 80(%ebx), %xmm2
movapd 96(%ebx), %xmm3
pextrw $3, %xmm0, %eax
andl $32767, %eax
movl $16527, %edx
subl %eax, %edx
subl $15504, %eax
orl %eax, %edx
cmpl $-2147483648, %edx
jae .L_2TAG_PACKET_0.0.2
mulpd %xmm0, %xmm1
addpd %xmm6, %xmm1
movapd %xmm1, %xmm7
subpd %xmm6, %xmm1
mulpd %xmm1, %xmm2
movapd 128(%ebx), %xmm4
mulpd %xmm1, %xmm3
movapd 144(%ebx), %xmm5
subpd %xmm2, %xmm0
movd %xmm7, %eax
movl %eax, %ecx
andl $63, %ecx
shll $4, %ecx
sarl $6, %eax
movl %eax, %edx
movdqa 16(%ebx), %xmm6
pand %xmm6, %xmm7
movdqa 32(%ebx), %xmm6
paddq %xmm6, %xmm7
psllq $46, %xmm7
subpd %xmm3, %xmm0
movapd 160(%ebx,%ecx), %xmm2
mulpd %xmm0, %xmm4
movapd %xmm0, %xmm6
movapd %xmm0, %xmm1
mulpd %xmm6, %xmm6
mulpd %xmm6, %xmm0
addpd %xmm4, %xmm5
mulsd %xmm6, %xmm0
mulpd 112(%ebx), %xmm6
addsd %xmm2, %xmm1
unpckhpd %xmm2, %xmm2
mulpd %xmm5, %xmm0
addsd %xmm0, %xmm1
orpd %xmm7, %xmm2
unpckhpd %xmm0, %xmm0
addsd %xmm1, %xmm0
addsd %xmm6, %xmm0
addl $894, %edx
cmpl $1916, %edx
ja .L_2TAG_PACKET_1.0.2
mulsd %xmm2, %xmm0
addsd %xmm2, %xmm0
jmp .L_2TAG_PACKET_2.0.2
.L_2TAG_PACKET_1.0.2:
fstcw 24(%esp)
movzwl 24(%esp), %edx
orl $768, %edx
movw %dx, 28(%esp)
fldcw 28(%esp)
movl %eax, %edx
sarl $1, %eax
subl %eax, %edx
movdqa (%ebx), %xmm6
pandn %xmm2, %xmm6
addl $1023, %eax
movd %eax, %xmm3
psllq $52, %xmm3
orpd %xmm3, %xmm6
addl $1023, %edx
movd %edx, %xmm4
psllq $52, %xmm4
movsd %xmm0, 8(%esp)
fldl 8(%esp)
movsd %xmm6, 16(%esp)
fldl 16(%esp)
fmul %st, %st(1)
faddp %st, %st(1)
movsd %xmm4, 8(%esp)
fldl 8(%esp)
fmulp %st, %st(1)
fstpl 8(%esp)
movsd 8(%esp), %xmm0
fldcw 24(%esp)
pextrw $3, %xmm0, %ecx
andl $32752, %ecx
cmpl $32752, %ecx
jae .L_2TAG_PACKET_3.0.2
cmpl $0, %ecx
je .L_2TAG_PACKET_4.0.2
jmp .L_2TAG_PACKET_2.0.2
cmpl $-2147483648, %ecx
jb .L_2TAG_PACKET_3.0.2
cmpl $-1064950997, %ecx
jb .L_2TAG_PACKET_2.0.2
ja .L_2TAG_PACKET_4.0.2
movl 128(%esp), %edx
cmpl $-17155601, %edx
jb .L_2TAG_PACKET_2.0.2
jmp .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_3.0.2:
movl $14, %edx
jmp .L_2TAG_PACKET_5.0.2
.L_2TAG_PACKET_4.0.2:
movl $15, %edx
.L_2TAG_PACKET_5.0.2:
movsd %xmm0, (%esp)
movsd 128(%esp), %xmm0
fldl (%esp)
jmp .L_2TAG_PACKET_6.0.2
.L_2TAG_PACKET_7.0.2:
cmpl $2146435072, %eax
jae .L_2TAG_PACKET_8.0.2
movl 132(%esp), %eax
cmpl $-2147483648, %eax
jae .L_2TAG_PACKET_9.0.2
movsd 1208(%ebx), %xmm0
mulsd %xmm0, %xmm0
movl $14, %edx
jmp .L_2TAG_PACKET_5.0.2
.L_2TAG_PACKET_9.0.2:
movsd 1216(%ebx), %xmm0
mulsd %xmm0, %xmm0
movl $15, %edx
jmp .L_2TAG_PACKET_5.0.2
.L_2TAG_PACKET_8.0.2:
movl 128(%esp), %edx
cmpl $2146435072, %eax
ja .L_2TAG_PACKET_10.0.2
cmpl $0, %edx
jne .L_2TAG_PACKET_10.0.2
movl 132(%esp), %eax
cmpl $2146435072, %eax
jne .L_2TAG_PACKET_11.0.2
movsd 1192(%ebx), %xmm0
jmp .L_2TAG_PACKET_2.0.2
.L_2TAG_PACKET_11.0.2:
movsd 1200(%ebx), %xmm0
jmp .L_2TAG_PACKET_2.0.2
.L_2TAG_PACKET_10.0.2:
movsd 128(%esp), %xmm0
addsd %xmm0, %xmm0
jmp .L_2TAG_PACKET_2.0.2
.L_2TAG_PACKET_0.0.2:
movl 132(%esp), %eax
andl $2147483647, %eax
cmpl $1083179008, %eax
jae .L_2TAG_PACKET_7.0.2
movsd 128(%esp), %xmm0
addsd 1184(%ebx), %xmm0
jmp .L_2TAG_PACKET_2.0.2
.L_2TAG_PACKET_2.0.2:
movsd %xmm0, 48(%esp)
fldl 48(%esp)
.L_2TAG_PACKET_6.0.2:
movl 64(%esp), %ebx
movl %ebp, %esp
popl %ebp
ret
..B2.3:
END(exp)
# -- End exp
# Start file scope ASM
ALIAS_SYMBOL(expl, exp);
# End file scope ASM
.section .rodata, "a"
.align 16
.align 16
static_const_table:
.long 0
.long 4293918720
.long 0
.long 4293918720
.long 4294967232
.long 0
.long 4294967232
.long 0
.long 65472
.long 0
.long 65472
.long 0
.long 0
.long 1127743488
.long 0
.long 1127743488
.long 1697350398
.long 1079448903
.long 1697350398
.long 1079448903
.long 4277796864
.long 1065758274
.long 4277796864
.long 1065758274
.long 3164486458
.long 1025308570
.long 3164486458
.long 1025308570
.long 4294967294
.long 1071644671
.long 4294967294
.long 1071644671
.long 3811088480
.long 1062650204
.long 1432067621
.long 1067799893
.long 3230715663
.long 1065423125
.long 1431604129
.long 1069897045
.long 0
.long 0
.long 0
.long 0
.long 235107661
.long 1018002367
.long 1048019040
.long 11418
.long 896005651
.long 1015861842
.long 3541402996
.long 22960
.long 1642514529
.long 1012987726
.long 410360776
.long 34629
.long 1568897900
.long 1016568486
.long 1828292879
.long 46424
.long 1882168529
.long 1010744893
.long 852742562
.long 58348
.long 509852888
.long 1017336174
.long 3490863952
.long 70401
.long 653277307
.long 1017431380
.long 2930322911
.long 82586
.long 1649557430
.long 1017729363
.long 1014845818
.long 94904
.long 1058231231
.long 1015777676
.long 3949972341
.long 107355
.long 1044000607
.long 1016786167
.long 828946858
.long 119943
.long 1151779725
.long 1015705409
.long 2288159958
.long 132667
.long 3819481236
.long 1016499965
.long 1853186616
.long 145530
.long 2552227826
.long 1015039787
.long 1709341917
.long 158533
.long 1829350193
.long 1015216097
.long 4112506593
.long 171677
.long 1913391795
.long 1015756674
.long 2799960843
.long 184965
.long 1303423926
.long 1015238005
.long 171030293
.long 198398
.long 1574172746
.long 1016061241
.long 2992903935
.long 211976
.long 3424156969
.long 1017196428
.long 926591434
.long 225703
.long 1938513547
.long 1017631273
.long 887463926
.long 239579
.long 2804567149
.long 1015390024
.long 1276261410
.long 253606
.long 631083525
.long 1017690182
.long 569847337
.long 267786
.long 1623370770
.long 1011049453
.long 1617004845
.long 282120
.long 3667985273
.long 1013894369
.long 3049340112
.long 296610
.long 3145379760
.long 1014403278
.long 3577096743
.long 311258
.long 2603100681
.long 1017152460
.long 1990012070
.long 326066
.long 3249202951
.long 1017448880
.long 1453150081
.long 341035
.long 419288974
.long 1016280325
.long 917841882
.long 356167
.long 3793507337
.long 1016095713
.long 3712504873
.long 371463
.long 728023093
.long 1016345318
.long 363667784
.long 386927
.long 2582678538
.long 1017123460
.long 2956612996
.long 402558
.long 7592966
.long 1016721543
.long 2186617380
.long 418360
.long 228611441
.long 1016696141
.long 1719614412
.long 434334
.long 2261665670
.long 1017457593
.long 1013258798
.long 450482
.long 544148907
.long 1017323666
.long 3907805043
.long 466805
.long 2383914918
.long 1017143586
.long 1447192520
.long 483307
.long 1176412038
.long 1017267372
.long 1944781190
.long 499988
.long 2882956373
.long 1013312481
.long 919555682
.long 516851
.long 3154077648
.long 1016528543
.long 2571947538
.long 533897
.long 348651999
.long 1016405780
.long 2604962540
.long 551129
.long 3253791412
.long 1015920431
.long 1110089947
.long 568549
.long 1509121860
.long 1014756995
.long 2568320822
.long 586158
.long 2617649212
.long 1017340090
.long 2966275556
.long 603959
.long 553214634
.long 1016457425
.long 2682146383
.long 621954
.long 730975783
.long 1014083580
.long 2191782032
.long 640145
.long 1486499517
.long 1016818996
.long 2069751140
.long 658534
.long 2595788928
.long 1016407932
.long 2990417244
.long 677123
.long 1853053619
.long 1015310724
.long 1434058175
.long 695915
.long 2462790535
.long 1015814775
.long 2572866477
.long 714911
.long 3693944214
.long 1017259110
.long 3092190714
.long 734114
.long 2979333550
.long 1017188654
.long 4076559942
.long 753526
.long 174054861
.long 1014300631
.long 2420883922
.long 773150
.long 816778419
.long 1014197934
.long 3716502172
.long 792987
.long 3507050924
.long 1015341199
.long 777507147
.long 813041
.long 1821514088
.long 1013410604
.long 3706687593
.long 833312
.long 920623539
.long 1016295433
.long 1242007931
.long 853805
.long 2789017511
.long 1014276997
.long 3707479175
.long 874520
.long 3586233004
.long 1015962192
.long 64696965
.long 895462
.long 474650514
.long 1016642419
.long 863738718
.long 916631
.long 1614448851
.long 1014281732
.long 3884662774
.long 938030
.long 2450082086
.long 1016164135
.long 2728693977
.long 959663
.long 1101668360
.long 1015989180
.long 3999357479
.long 981531
.long 835814894
.long 1015702697
.long 1533953344
.long 1003638
.long 1301400989
.long 1014466875
.long 2174652632
.long 1025985
.long 0
.long 1072693248
.long 0
.long 2146435072
.long 0
.long 0
.long 4294967295
.long 2146435071
.long 0
.long 1048576
.type static_const_table,@object
.size static_const_table,1224
.data
.section .note.GNU-stack, ""
# End

View file

@ -1,780 +0,0 @@
/*
Copyright (c) 2014, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************************************************/
// ALGORITHM DESCRIPTION
// ---------------------
//
// x=2^k * mx, mx in [1,2)
//
// Get B~1/mx based on the output of rcpss instruction (B0)
// B = int((B0*2^7+0.5))/2^7
//
// Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
//
// Result: k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6) and
// p(r) is a degree 7 polynomial
// -log(B) read from data table (high, low parts)
// Result is formed from high and low parts
//
// Special cases:
// log(NaN) = quiet NaN, and raise invalid exception
// log(+INF) = that INF
// log(0) = -INF with divide-by-zero exception raised
// log(1) = +0
// log(x) = NaN with invalid exception raised if x < -0, including -INF
//
/******************************************************************************/
#include <private/bionic_asm.h>
# -- Begin static_func
.text
.align __bionic_asm_align
.type static_func, @function
static_func:
..B1.1:
call ..L2
..L2:
popl %eax
lea _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax
lea static_const_table@GOTOFF(%eax), %eax
ret
.size static_func,.-static_func
# -- End static_func
# -- Begin log
ENTRY(log)
# parameter 1: 8 + %ebp
..B2.1:
..B2.2:
pushl %ebp
movl %esp, %ebp
subl $104, %esp
movl %ebx, 40(%esp)
call static_func
movl %eax, %ebx
xorpd %xmm2, %xmm2
movl $16368, %eax
pinsrw $3, %eax, %xmm2
xorpd %xmm3, %xmm3
movl $30704, %edx
pinsrw $3, %edx, %xmm3
movsd 112(%esp), %xmm0
movapd %xmm0, %xmm1
movl $32768, %ecx
movd %ecx, %xmm4
movsd 2128(%ebx), %xmm5
pextrw $3, %xmm0, %eax
orpd %xmm2, %xmm0
psllq $5, %xmm0
movl $16352, %ecx
psrlq $34, %xmm0
rcpss %xmm0, %xmm0
psllq $12, %xmm1
pshufd $228, %xmm5, %xmm6
psrlq $12, %xmm1
subl $16, %eax
cmpl $32736, %eax
jae .L_2TAG_PACKET_0.0.2
.L_2TAG_PACKET_1.0.2:
paddd %xmm4, %xmm0
orpd %xmm3, %xmm1
movd %xmm0, %edx
psllq $29, %xmm0
andpd %xmm1, %xmm5
andpd %xmm6, %xmm0
subsd %xmm5, %xmm1
mulpd %xmm0, %xmm5
andl $32752, %eax
subl %ecx, %eax
cvtsi2sdl %eax, %xmm7
mulsd %xmm0, %xmm1
movsd 2064(%ebx), %xmm6
movapd 2080(%ebx), %xmm3
subsd %xmm2, %xmm5
andl $16711680, %edx
shrl $12, %edx
movapd (%ebx,%edx), %xmm0
movapd 2096(%ebx), %xmm4
addsd %xmm5, %xmm1
movapd 2112(%ebx), %xmm2
mulsd %xmm7, %xmm6
pshufd $68, %xmm1, %xmm5
mulsd 2072(%ebx), %xmm7
mulsd %xmm1, %xmm3
addsd %xmm6, %xmm0
mulpd %xmm5, %xmm4
mulpd %xmm5, %xmm5
pshufd $228, %xmm0, %xmm6
addsd %xmm1, %xmm0
addpd %xmm2, %xmm4
mulpd %xmm5, %xmm3
subsd %xmm0, %xmm6
mulsd %xmm1, %xmm4
pshufd $238, %xmm0, %xmm2
addsd %xmm6, %xmm1
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm7
addpd %xmm3, %xmm4
addsd %xmm7, %xmm1
mulpd %xmm5, %xmm4
addsd %xmm4, %xmm1
pshufd $238, %xmm4, %xmm5
addsd %xmm5, %xmm1
addsd %xmm1, %xmm0
jmp .L_2TAG_PACKET_2.0.2
.L_2TAG_PACKET_0.0.2:
movsd 112(%esp), %xmm0
movapd %xmm0, %xmm1
addl $16, %eax
cmpl $32768, %eax
jae .L_2TAG_PACKET_3.0.2
cmpl $16, %eax
jb .L_2TAG_PACKET_4.0.2
.L_2TAG_PACKET_5.0.2:
addsd %xmm0, %xmm0
jmp .L_2TAG_PACKET_2.0.2
.L_2TAG_PACKET_6.0.2:
ja .L_2TAG_PACKET_5.0.2
cmpl $0, %edx
ja .L_2TAG_PACKET_5.0.2
jmp .L_2TAG_PACKET_7.0.2
.L_2TAG_PACKET_3.0.2:
movd %xmm1, %edx
psrlq $32, %xmm1
movd %xmm1, %ecx
addl %ecx, %ecx
cmpl $-2097152, %ecx
jae .L_2TAG_PACKET_6.0.2
orl %ecx, %edx
cmpl $0, %edx
je .L_2TAG_PACKET_8.0.2
.L_2TAG_PACKET_7.0.2:
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
movl $32752, %eax
pinsrw $3, %eax, %xmm1
movl $3, %edx
mulsd %xmm1, %xmm0
.L_2TAG_PACKET_9.0.2:
movsd %xmm0, (%esp)
movsd 112(%esp), %xmm0
fldl (%esp)
jmp .L_2TAG_PACKET_10.0.2
.L_2TAG_PACKET_8.0.2:
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
movl $49136, %eax
pinsrw $3, %eax, %xmm0
divsd %xmm1, %xmm0
movl $2, %edx
jmp .L_2TAG_PACKET_9.0.2
.L_2TAG_PACKET_4.0.2:
movd %xmm1, %edx
psrlq $32, %xmm1
movd %xmm1, %ecx
orl %ecx, %edx
cmpl $0, %edx
je .L_2TAG_PACKET_8.0.2
xorpd %xmm1, %xmm1
movl $18416, %eax
pinsrw $3, %eax, %xmm1
mulsd %xmm1, %xmm0
movapd %xmm0, %xmm1
pextrw $3, %xmm0, %eax
orpd %xmm2, %xmm0
psllq $5, %xmm0
movl $18416, %ecx
psrlq $34, %xmm0
rcpss %xmm0, %xmm0
psllq $12, %xmm1
pshufd $228, %xmm5, %xmm6
psrlq $12, %xmm1
jmp .L_2TAG_PACKET_1.0.2
.L_2TAG_PACKET_2.0.2:
movsd %xmm0, 24(%esp)
fldl 24(%esp)
.L_2TAG_PACKET_10.0.2:
movl 40(%esp), %ebx
movl %ebp, %esp
popl %ebp
ret
..B2.3:
END(log)
# -- End log
# Start file scope ASM
ALIAS_SYMBOL(logl, log);
# End file scope ASM
.section .rodata, "a"
.align 16
.align 16
static_const_table:
.long 4277811200
.long 1072049730
.long 2479318832
.long 1026487127
.long 2854492160
.long 1072033410
.long 215631550
.long 1025638968
.long 1547061248
.long 1072017216
.long 2886781435
.long 1026423395
.long 649825280
.long 1072001146
.long 4281533405
.long 1024038923
.long 646346752
.long 1071985198
.long 1562735921
.long 1023790276
.long 2203734016
.long 1071969370
.long 1838397691
.long 3173936209
.long 1872169984
.long 1071953661
.long 3981202460
.long 1022325013
.long 669557760
.long 1071938069
.long 4182597802
.long 3173174122
.long 4076413952
.long 1071922591
.long 1209029111
.long 3170736207
.long 556125184
.long 1071907228
.long 821086028
.long 3173437049
.long 204914688
.long 1071891976
.long 2097025986
.long 3171071798
.long 387545088
.long 1071876834
.long 3142936996
.long 3173092218
.long 2912783360
.long 1071861800
.long 2502420140
.long 1024505919
.long 1144260608
.long 1071846874
.long 3315658140
.long 3173469843
.long 1471209472
.long 1071832053
.long 129621009
.long 3172443877
.long 1829683200
.long 1071817336
.long 3885467693
.long 1025535275
.long 288676864
.long 1071802722
.long 86139472
.long 3171639793
.long 3636378624
.long 1071788208
.long 1850238587
.long 1024654342
.long 1606817792
.long 1071773795
.long 3388899795
.long 3173675586
.long 1236164608
.long 1071759480
.long 3983599207
.long 1020046558
.long 1089616896
.long 1071745262
.long 4171974224
.long 1024773198
.long 4143093760
.long 1071731139
.long 2727587401
.long 3173965207
.long 600267776
.long 1071717112
.long 3147685042
.long 3173353031
.long 2249313280
.long 1071703177
.long 125835074
.long 1025255832
.long 3805303808
.long 1071689334
.long 2289991207
.long 1025460331
.long 87278592
.long 1071675583
.long 1106114045
.long 1025933602
.long 3195405312
.long 1071661920
.long 3885316576
.long 3171206239
.long 3853649920
.long 1071648346
.long 2977069852
.long 3171236771
.long 2944026624
.long 1071625048
.long 1008093493
.long 1023444474
.long 3993180160
.long 1071598247
.long 1862355595
.long 1024642533
.long 1454641152
.long 1071571617
.long 1514603089
.long 1026500596
.long 3286085632
.long 1071545154
.long 1400028424
.long 3173279056
.long 438773760
.long 1071518858
.long 120727864
.long 3172148914
.long 1212979200
.long 1071492725
.long 1625055594
.long 3172901933
.long 1189017600
.long 1071466754
.long 3920062376
.long 1025727407
.long 403064832
.long 1071440943
.long 1053271728
.long 3171391427
.long 3343210496
.long 1071415289
.long 3243395502
.long 3173627613
.long 1765777408
.long 1071389792
.long 2145968512
.long 1026354304
.long 461430784
.long 1071364449
.long 4094322285
.long 1026021467
.long 71706624
.long 1071339258
.long 763632021
.long 1024496933
.long 1380503552
.long 1071314217
.long 1383547992
.long 3173088453
.long 1015732224
.long 1071289325
.long 3198646877
.long 1025390322
.long 35977216
.long 1071264580
.long 2141026805
.long 1025754693
.long 3927306240
.long 1071239979
.long 282116272
.long 3173394334
.long 1125341184
.long 1071215523
.long 2768427504
.long 3172279059
.long 1666971648
.long 1071191208
.long 786837629
.long 3172427445
.long 2827694080
.long 1071167033
.long 3857122416
.long 3173014241
.long 2003683328
.long 1071142997
.long 859010954
.long 1026545007
.long 1004017664
.long 1071119098
.long 3356644970
.long 3173458064
.long 1753020416
.long 1071095334
.long 788338552
.long 1026157693
.long 1992718336
.long 1071071704
.long 1239179443
.long 1026394889
.long 3870234624
.long 1071048206
.long 2082614663
.long 1024926053
.long 1050437632
.long 1071024840
.long 660007840
.long 1025548499
.long 188395520
.long 1071001603
.long 3878792704
.long 3173889571
.long 3747176448
.long 1070978493
.long 144991708
.long 3171552042
.long 1405669376
.long 1070955511
.long 3999088879
.long 1025486317
.long 121151488
.long 1070932654
.long 2170865497
.long 1026473584
.long 2652319744
.long 1070909920
.long 453695652
.long 3173916809
.long 3262236672
.long 1070887309
.long 157800053
.long 3173984206
.long 601221120
.long 1070864820
.long 3968917661
.long 1023992886
.long 1999843328
.long 1070842450
.long 3053895004
.long 1024998228
.long 1992167424
.long 1070820199
.long 2968614856
.long 1024552653
.long 3788726272
.long 1070798065
.long 3542170808
.long 3173573242
.long 2094829568
.long 1070776048
.long 1246758132
.long 1026202874
.long 288675840
.long 1070754146
.long 3747328950
.long 1026331585
.long 1829681152
.long 1070732357
.long 3125197546
.long 1024100318
.long 1666869248
.long 1070710681
.long 1363656119
.long 1026336493
.long 3417110528
.long 1070689116
.long 4154791553
.long 1026267853
.long 2183653376
.long 1070667662
.long 1671819292
.long 3173785870
.long 1734434816
.long 1070646317
.long 373091049
.long 1025972363
.long 1615681536
.long 1070625080
.long 384650897
.long 1022926043
.long 1445382144
.long 1070603950
.long 344320330
.long 3172397196
.long 1823715328
.long 1070569756
.long 3389841200
.long 1025231852
.long 3839688704
.long 1070527917
.long 1706790417
.long 3167363349
.long 4293332992
.long 1070486286
.long 1614935088
.long 1019351591
.long 2966720512
.long 1070444861
.long 4145393717
.long 3173711658
.long 4066729984
.long 1070403639
.long 1974925028
.long 3171437182
.long 3337621504
.long 1070362619
.long 3314953170
.long 3169971314
.long 943448064
.long 1070321799
.long 1498682038
.long 3173862340
.long 1465634816
.long 1070281176
.long 1319952810
.long 3171693965
.long 1015734272
.long 1070240749
.long 1347821929
.long 3173544515
.long 118001664
.long 1070200516
.long 1751482746
.long 1026134093
.long 3707174912
.long 1070160474
.long 1486946159
.long 1023930920
.long 3946381312
.long 1070120623
.long 2867408081
.long 3171368276
.long 1699848192
.long 1070080961
.long 2590187139
.long 1025379803
.long 2235846656
.long 1070041485
.long 1888568069
.long 3172754960
.long 2339729408
.long 1070002194
.long 3852214753
.long 3173323149
.long 3196850176
.long 1069963086
.long 742141560
.long 1025101707
.long 1800683520
.long 1069924160
.long 3949500444
.long 3172102179
.long 3835801600
.long 1069885413
.long 3848895943
.long 1025913832
.long 2201202688
.long 1069846845
.long 1425913464
.long 1025868665
.long 2778279936
.long 1069808453
.long 2120889677
.long 3173831128
.long 2954203136
.long 1069770236
.long 592147081
.long 1019621288
.long 210141184
.long 1069732193
.long 3414275233
.long 1023647084
.long 709476352
.long 1069694321
.long 2413027164
.long 1024462115
.long 2116284416
.long 1069656619
.long 1144559924
.long 1026336654
.long 2183651328
.long 1069619086
.long 3459057650
.long 1025634168
.long 3047047168
.long 1069581720
.long 1879674924
.long 3173508573
.long 970711040
.long 1069541521
.long 1335954173
.long 3173332182
.long 2198478848
.long 1069467449
.long 2951103968
.long 3173892200
.long 1669611520
.long 1069393703
.long 531044147
.long 1025149248
.long 29114368
.long 1069320280
.long 3327831251
.long 1025918673
.long 2376949760
.long 1069247176
.long 737634533
.long 3172176000
.long 1085390848
.long 1069174390
.long 3108243400
.long 3171828406
.long 1566130176
.long 1069101918
.long 985483226
.long 1025708380
.long 792780800
.long 1069029758
.long 4184866295
.long 1024426204
.long 183156736
.long 1068957907
.long 2845699378
.long 1022107277
.long 1301782528
.long 1068886362
.long 1012735262
.long 3173804294
.long 1562411008
.long 1068815121
.long 2197086703
.long 3170187813
.long 2815549440
.long 1068744181
.long 2782613207
.long 1026345054
.long 2756124672
.long 1068673540
.long 2929486205
.long 3173037800
.long 3511050240
.long 1068603195
.long 1443733147
.long 3173331549
.long 3047047168
.long 1068533144
.long 1879674924
.long 3172459997
.long 3221667840
.long 1068427825
.long 1338588027
.long 3171815742
.long 3453861888
.long 1068288883
.long 1205348359
.long 3172624626
.long 3506110464
.long 1068150514
.long 893105198
.long 1025571866
.long 346013696
.long 1068012714
.long 3495569021
.long 3172563349
.long 4074029056
.long 1067875476
.long 3961106338
.long 3171065595
.long 3559784448
.long 1067738798
.long 1975385384
.long 3173783155
.long 797769728
.long 1067602675
.long 3760305787
.long 1026047642
.long 2313633792
.long 1067467101
.long 1559353171
.long 1023480256
.long 3960766464
.long 1067213778
.long 1067365107
.long 1025865926
.long 684261376
.long 1066944805
.long 844762164
.long 3173687482
.long 630718464
.long 1066676905
.long 2458269694
.long 1024033081
.long 1486061568
.long 1066410070
.long 115537874
.long 3173243995
.long 2743664640
.long 1065886792
.long 3665098304
.long 3173471607
.long 1971912704
.long 1065357333
.long 2577214440
.long 3171993451
.long 1498939392
.long 1064306693
.long 3409036923
.long 1025599151
.long 0
.long 0
.long 0
.long 2147483648
.long 4277811200
.long 1067855426
.long 2479318832
.long 1022292823
.long 2454267026
.long 1069697316
.long 0
.long 3218079744
.long 1030730101
.long 3217380702
.long 1431655765
.long 1070945621
.long 2576980378
.long 1070176665
.long 0
.long 3219128320
.long 0
.long 4294959104
.long 0
.long 4294959104
.type static_const_table,@object
.size static_const_table,2144
.data
.section .note.GNU-stack, ""
# End

File diff suppressed because it is too large Load diff

View file

@ -1,636 +0,0 @@
/*
Copyright (c) 2014, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************************************************/
// ALGORITHM DESCRIPTION
// ---------------------
//
// Description:
// Let K = 64 (table size).
// x x/log(2) n
// e = 2 = 2 * T[j] * (1 + P(y))
// where
// x = m*log(2)/K + y, y in [-log(2)/K..log(2)/K]
// m = n*K + j, m,n,j - signed integer, j in [-K/2..K/2]
// j/K
// values of 2 are tabulated as T[j] = T_hi[j] ( 1 + T_lo[j]).
//
// P(y) is a minimax polynomial approximation of exp(x)-1
// on small interval [-log(2)/K..log(2)/K] (were calculated by Maple V).
//
// To avoid problems with arithmetic overflow and underflow,
// n n1 n2
// value of 2 is safely computed as 2 * 2 where n1 in [-BIAS/2..BIAS/2]
// where BIAS is a value of exponent bias.
//
// Special cases:
// exp(NaN) = NaN
// exp(+INF) = +INF
// exp(-INF) = 0
// exp(x) = 1 for subnormals
// for finite argument, only exp(0)=1 is exact
// For IEEE double
// if x > 709.782712893383973096 then exp(x) overflow
// if x < -745.133219101941108420 then exp(x) underflow
//
/******************************************************************************/
#include <private/bionic_asm.h>
# -- Begin exp
ENTRY(exp)
# parameter 1: %xmm0
..B1.1:
..___tag_value_exp.1:
subq $24, %rsp
..___tag_value_exp.3:
movsd %xmm0, 8(%rsp)
..B1.2:
unpcklpd %xmm0, %xmm0
movapd cv(%rip), %xmm1
movapd Shifter(%rip), %xmm6
movapd 16+cv(%rip), %xmm2
movapd 32+cv(%rip), %xmm3
pextrw $3, %xmm0, %eax
andl $32767, %eax
movl $16527, %edx
subl %eax, %edx
subl $15504, %eax
orl %eax, %edx
cmpl $-2147483648, %edx
jae .L_2TAG_PACKET_0.0.2
mulpd %xmm0, %xmm1
addpd %xmm6, %xmm1
movapd %xmm1, %xmm7
subpd %xmm6, %xmm1
mulpd %xmm1, %xmm2
movapd 64+cv(%rip), %xmm4
mulpd %xmm1, %xmm3
movapd 80+cv(%rip), %xmm5
subpd %xmm2, %xmm0
movd %xmm7, %eax
movl %eax, %ecx
andl $63, %ecx
shll $4, %ecx
sarl $6, %eax
movl %eax, %edx
movdqa mmask(%rip), %xmm6
pand %xmm6, %xmm7
movdqa bias(%rip), %xmm6
paddq %xmm6, %xmm7
psllq $46, %xmm7
subpd %xmm3, %xmm0
lea Tbl_addr(%rip), %r8
movapd (%rcx,%r8), %xmm2
mulpd %xmm0, %xmm4
movapd %xmm0, %xmm6
movapd %xmm0, %xmm1
mulpd %xmm6, %xmm6
mulpd %xmm6, %xmm0
addpd %xmm4, %xmm5
mulsd %xmm6, %xmm0
mulpd 48+cv(%rip), %xmm6
addsd %xmm2, %xmm1
unpckhpd %xmm2, %xmm2
mulpd %xmm5, %xmm0
addsd %xmm0, %xmm1
orpd %xmm7, %xmm2
unpckhpd %xmm0, %xmm0
addsd %xmm1, %xmm0
addsd %xmm6, %xmm0
addl $894, %edx
cmpl $1916, %edx
ja .L_2TAG_PACKET_1.0.2
mulsd %xmm2, %xmm0
addsd %xmm2, %xmm0
jmp ..B1.5
.L_2TAG_PACKET_1.0.2:
xorpd %xmm3, %xmm3
movapd ALLONES(%rip), %xmm4
movl $-1022, %edx
subl %eax, %edx
movd %edx, %xmm5
psllq %xmm5, %xmm4
movl %eax, %ecx
sarl $1, %eax
pinsrw $3, %eax, %xmm3
movapd ebias(%rip), %xmm6
psllq $4, %xmm3
psubd %xmm3, %xmm2
mulsd %xmm2, %xmm0
cmpl $52, %edx
jg .L_2TAG_PACKET_2.0.2
andpd %xmm2, %xmm4
paddd %xmm6, %xmm3
subsd %xmm4, %xmm2
addsd %xmm2, %xmm0
cmpl $1023, %ecx
jge .L_2TAG_PACKET_3.0.2
pextrw $3, %xmm0, %ecx
andl $32768, %ecx
orl %ecx, %edx
cmpl $0, %edx
je .L_2TAG_PACKET_4.0.2
movapd %xmm0, %xmm6
addsd %xmm4, %xmm0
mulsd %xmm3, %xmm0
pextrw $3, %xmm0, %ecx
andl $32752, %ecx
cmpl $0, %ecx
je .L_2TAG_PACKET_5.0.2
jmp ..B1.5
.L_2TAG_PACKET_5.0.2:
mulsd %xmm3, %xmm6
mulsd %xmm3, %xmm4
movq %xmm6, %xmm0
pxor %xmm4, %xmm6
psrad $31, %xmm6
pshufd $85, %xmm6, %xmm6
psllq $1, %xmm0
psrlq $1, %xmm0
pxor %xmm6, %xmm0
psrlq $63, %xmm6
paddq %xmm6, %xmm0
paddq %xmm4, %xmm0
movl $15, (%rsp)
jmp .L_2TAG_PACKET_6.0.2
.L_2TAG_PACKET_4.0.2:
addsd %xmm4, %xmm0
mulsd %xmm3, %xmm0
jmp ..B1.5
.L_2TAG_PACKET_3.0.2:
addsd %xmm4, %xmm0
mulsd %xmm3, %xmm0
pextrw $3, %xmm0, %ecx
andl $32752, %ecx
cmpl $32752, %ecx
jnb .L_2TAG_PACKET_7.0.2
jmp ..B1.5
.L_2TAG_PACKET_2.0.2:
paddd %xmm6, %xmm3
addpd %xmm2, %xmm0
mulsd %xmm3, %xmm0
movl $15, (%rsp)
jmp .L_2TAG_PACKET_6.0.2
.L_2TAG_PACKET_8.0.2:
cmpl $2146435072, %eax
jae .L_2TAG_PACKET_9.0.2
movl 12(%rsp), %eax
cmpl $-2147483648, %eax
jae .L_2TAG_PACKET_10.0.2
movsd XMAX(%rip), %xmm0
mulsd %xmm0, %xmm0
.L_2TAG_PACKET_7.0.2:
movl $14, (%rsp)
jmp .L_2TAG_PACKET_6.0.2
.L_2TAG_PACKET_10.0.2:
movsd XMIN(%rip), %xmm0
mulsd %xmm0, %xmm0
movl $15, (%rsp)
jmp .L_2TAG_PACKET_6.0.2
.L_2TAG_PACKET_9.0.2:
movl 8(%rsp), %edx
cmpl $2146435072, %eax
ja .L_2TAG_PACKET_11.0.2
cmpl $0, %edx
jne .L_2TAG_PACKET_11.0.2
movl 12(%rsp), %eax
cmpl $2146435072, %eax
jne .L_2TAG_PACKET_12.0.2
movsd INF(%rip), %xmm0
jmp ..B1.5
.L_2TAG_PACKET_12.0.2:
movsd ZERO(%rip), %xmm0
jmp ..B1.5
.L_2TAG_PACKET_11.0.2:
movsd 8(%rsp), %xmm0
addsd %xmm0, %xmm0
jmp ..B1.5
.L_2TAG_PACKET_0.0.2:
movl 12(%rsp), %eax
andl $2147483647, %eax
cmpl $1083179008, %eax
jae .L_2TAG_PACKET_8.0.2
movsd 8(%rsp), %xmm0
addsd ONE_val(%rip), %xmm0
jmp ..B1.5
.L_2TAG_PACKET_6.0.2:
movq %xmm0, 16(%rsp)
..B1.3:
movq 16(%rsp), %xmm0
.L_2TAG_PACKET_13.0.2:
..B1.5:
addq $24, %rsp
..___tag_value_exp.4:
ret
..___tag_value_exp.5:
END(exp)
# -- End exp
.section .rodata, "a"
.align 16
.align 16
cv:
.long 1697350398
.long 1079448903
.long 1697350398
.long 1079448903
.long 4277796864
.long 1065758274
.long 4277796864
.long 1065758274
.long 3164486458
.long 1025308570
.long 3164486458
.long 1025308570
.long 4294967294
.long 1071644671
.long 4294967294
.long 1071644671
.long 3811088480
.long 1062650204
.long 1432067621
.long 1067799893
.long 3230715663
.long 1065423125
.long 1431604129
.long 1069897045
.type cv,@object
.size cv,96
.align 16
Shifter:
.long 0
.long 1127743488
.long 0
.long 1127743488
.type Shifter,@object
.size Shifter,16
.align 16
mmask:
.long 4294967232
.long 0
.long 4294967232
.long 0
.type mmask,@object
.size mmask,16
.align 16
bias:
.long 65472
.long 0
.long 65472
.long 0
.type bias,@object
.size bias,16
.align 16
Tbl_addr:
.long 0
.long 0
.long 0
.long 0
.long 235107661
.long 1018002367
.long 1048019040
.long 11418
.long 896005651
.long 1015861842
.long 3541402996
.long 22960
.long 1642514529
.long 1012987726
.long 410360776
.long 34629
.long 1568897900
.long 1016568486
.long 1828292879
.long 46424
.long 1882168529
.long 1010744893
.long 852742562
.long 58348
.long 509852888
.long 1017336174
.long 3490863952
.long 70401
.long 653277307
.long 1017431380
.long 2930322911
.long 82586
.long 1649557430
.long 1017729363
.long 1014845818
.long 94904
.long 1058231231
.long 1015777676
.long 3949972341
.long 107355
.long 1044000607
.long 1016786167
.long 828946858
.long 119943
.long 1151779725
.long 1015705409
.long 2288159958
.long 132667
.long 3819481236
.long 1016499965
.long 1853186616
.long 145530
.long 2552227826
.long 1015039787
.long 1709341917
.long 158533
.long 1829350193
.long 1015216097
.long 4112506593
.long 171677
.long 1913391795
.long 1015756674
.long 2799960843
.long 184965
.long 1303423926
.long 1015238005
.long 171030293
.long 198398
.long 1574172746
.long 1016061241
.long 2992903935
.long 211976
.long 3424156969
.long 1017196428
.long 926591434
.long 225703
.long 1938513547
.long 1017631273
.long 887463926
.long 239579
.long 2804567149
.long 1015390024
.long 1276261410
.long 253606
.long 631083525
.long 1017690182
.long 569847337
.long 267786
.long 1623370770
.long 1011049453
.long 1617004845
.long 282120
.long 3667985273
.long 1013894369
.long 3049340112
.long 296610
.long 3145379760
.long 1014403278
.long 3577096743
.long 311258
.long 2603100681
.long 1017152460
.long 1990012070
.long 326066
.long 3249202951
.long 1017448880
.long 1453150081
.long 341035
.long 419288974
.long 1016280325
.long 917841882
.long 356167
.long 3793507337
.long 1016095713
.long 3712504873
.long 371463
.long 728023093
.long 1016345318
.long 363667784
.long 386927
.long 2582678538
.long 1017123460
.long 2956612996
.long 402558
.long 7592966
.long 1016721543
.long 2186617380
.long 418360
.long 228611441
.long 1016696141
.long 1719614412
.long 434334
.long 2261665670
.long 1017457593
.long 1013258798
.long 450482
.long 544148907
.long 1017323666
.long 3907805043
.long 466805
.long 2383914918
.long 1017143586
.long 1447192520
.long 483307
.long 1176412038
.long 1017267372
.long 1944781190
.long 499988
.long 2882956373
.long 1013312481
.long 919555682
.long 516851
.long 3154077648
.long 1016528543
.long 2571947538
.long 533897
.long 348651999
.long 1016405780
.long 2604962540
.long 551129
.long 3253791412
.long 1015920431
.long 1110089947
.long 568549
.long 1509121860
.long 1014756995
.long 2568320822
.long 586158
.long 2617649212
.long 1017340090
.long 2966275556
.long 603959
.long 553214634
.long 1016457425
.long 2682146383
.long 621954
.long 730975783
.long 1014083580
.long 2191782032
.long 640145
.long 1486499517
.long 1016818996
.long 2069751140
.long 658534
.long 2595788928
.long 1016407932
.long 2990417244
.long 677123
.long 1853053619
.long 1015310724
.long 1434058175
.long 695915
.long 2462790535
.long 1015814775
.long 2572866477
.long 714911
.long 3693944214
.long 1017259110
.long 3092190714
.long 734114
.long 2979333550
.long 1017188654
.long 4076559942
.long 753526
.long 174054861
.long 1014300631
.long 2420883922
.long 773150
.long 816778419
.long 1014197934
.long 3716502172
.long 792987
.long 3507050924
.long 1015341199
.long 777507147
.long 813041
.long 1821514088
.long 1013410604
.long 3706687593
.long 833312
.long 920623539
.long 1016295433
.long 1242007931
.long 853805
.long 2789017511
.long 1014276997
.long 3707479175
.long 874520
.long 3586233004
.long 1015962192
.long 64696965
.long 895462
.long 474650514
.long 1016642419
.long 863738718
.long 916631
.long 1614448851
.long 1014281732
.long 3884662774
.long 938030
.long 2450082086
.long 1016164135
.long 2728693977
.long 959663
.long 1101668360
.long 1015989180
.long 3999357479
.long 981531
.long 835814894
.long 1015702697
.long 1533953344
.long 1003638
.long 1301400989
.long 1014466875
.long 2174652632
.long 1025985
.type Tbl_addr,@object
.size Tbl_addr,1024
.align 16
ALLONES:
.long 4294967295
.long 4294967295
.long 4294967295
.long 4294967295
.type ALLONES,@object
.size ALLONES,16
.align 16
ebias:
.long 0
.long 1072693248
.long 0
.long 1072693248
.type ebias,@object
.size ebias,16
.align 4
XMAX:
.long 4294967295
.long 2146435071
.type XMAX,@object
.size XMAX,8
.align 4
XMIN:
.long 0
.long 1048576
.type XMIN,@object
.size XMIN,8
.align 4
INF:
.long 0
.long 2146435072
.type INF,@object
.size INF,8
.align 4
ZERO:
.long 0
.long 0
.type ZERO,@object
.size ZERO,8
.align 4
ONE_val:
.long 0
.long 1072693248
.type ONE_val,@object
.size ONE_val,8
.data
.section .note.GNU-stack, ""
// -- Begin DWARF2 SEGMENT .eh_frame
.section .eh_frame,"a",@progbits
.eh_frame_seg:
.align 1
.4byte 0x00000014
.8byte 0x00527a0100000000
.8byte 0x08070c1b01107801
.4byte 0x00000190
.4byte 0x0000001c
.4byte 0x0000001c
.4byte ..___tag_value_exp.1-.
.4byte ..___tag_value_exp.5-..___tag_value_exp.1
.2byte 0x0400
.4byte ..___tag_value_exp.3-..___tag_value_exp.1
.2byte 0x200e
.byte 0x04
.4byte ..___tag_value_exp.4-..___tag_value_exp.3
.2byte 0x080e
.byte 0x00
# End

View file

@ -1,779 +0,0 @@
/*
Copyright (c) 2014, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************************************************/
// ALGORITHM DESCRIPTION
// ---------------------
//
// x=2^k * mx, mx in [1,2)
//
// Get B~1/mx based on the output of rcpss instruction (B0)
// B = int((B0*2^7+0.5))/2^7
//
// Reduced argument: r=B*mx-1.0 (computed accurately in high and low parts)
//
// Result: k*log(2) - log(B) + p(r) if |x-1| >= small value (2^-6) and
// p(r) is a degree 7 polynomial
// -log(B) read from data table (high, low parts)
// Result is formed from high and low parts
//
// Special cases:
// log(NaN) = quiet NaN, and raise invalid exception
// log(+INF) = that INF
// log(0) = -INF with divide-by-zero exception raised
// log(1) = +0
// log(x) = NaN with invalid exception raised if x < -0, including -INF
//
/******************************************************************************/
#include <private/bionic_asm.h>
# -- Begin log
ENTRY(log)
# parameter 1: %xmm0
..B1.1:
..___tag_value_log.1:
subq $24, %rsp
..___tag_value_log.3:
movsd %xmm0, (%rsp)
..B1.2:
movq $0x3ff0000000000000, %rax
movd %rax, %xmm2
movq $0x77f0000000000000, %rdx
movd %rdx, %xmm3
movl $32768, %ecx
movd %rcx, %xmm4
movq $0xffffe00000000000, %r8
movd %r8, %xmm5
movq %xmm0, %xmm1
pextrw $3, %xmm0, %eax
orpd %xmm2, %xmm0
movl $16352, %ecx
psrlq $27, %xmm0
lea L_tbl(%rip), %r11
psrld $2, %xmm0
rcpps %xmm0, %xmm0
psllq $12, %xmm1
pshufd $228, %xmm5, %xmm6
psrlq $12, %xmm1
subl $16, %eax
cmpl $32736, %eax
jae .L_2TAG_PACKET_0.0.2
.L_2TAG_PACKET_1.0.2:
paddd %xmm4, %xmm0
orpd %xmm3, %xmm1
movd %xmm0, %edx
psllq $29, %xmm0
andpd %xmm1, %xmm5
andpd %xmm6, %xmm0
subsd %xmm5, %xmm1
mulpd %xmm0, %xmm5
andl $32752, %eax
subl %ecx, %eax
cvtsi2sd %eax, %xmm7
mulsd %xmm0, %xmm1
movq log2(%rip), %xmm6
movapd coeff(%rip), %xmm3
subsd %xmm2, %xmm5
andl $16711680, %edx
shrl $12, %edx
movapd (%r11,%rdx), %xmm0
movapd 16+coeff(%rip), %xmm4
addsd %xmm5, %xmm1
movapd 32+coeff(%rip), %xmm2
mulsd %xmm7, %xmm6
movddup %xmm1, %xmm5
mulsd 8+log2(%rip), %xmm7
mulsd %xmm1, %xmm3
addsd %xmm6, %xmm0
mulpd %xmm5, %xmm4
mulpd %xmm5, %xmm5
movddup %xmm0, %xmm6
addsd %xmm1, %xmm0
addpd %xmm2, %xmm4
mulpd %xmm5, %xmm3
subsd %xmm0, %xmm6
mulsd %xmm1, %xmm4
pshufd $238, %xmm0, %xmm2
addsd %xmm6, %xmm1
mulsd %xmm5, %xmm5
addsd %xmm2, %xmm7
addpd %xmm3, %xmm4
addsd %xmm7, %xmm1
mulpd %xmm5, %xmm4
addsd %xmm4, %xmm1
pshufd $238, %xmm4, %xmm5
addsd %xmm5, %xmm1
addsd %xmm1, %xmm0
jmp ..B1.5
.L_2TAG_PACKET_0.0.2:
movq (%rsp), %xmm0
movq (%rsp), %xmm1
addl $16, %eax
cmpl $32768, %eax
jae .L_2TAG_PACKET_2.0.2
cmpl $16, %eax
jb .L_2TAG_PACKET_3.0.2
.L_2TAG_PACKET_4.0.2:
addsd %xmm0, %xmm0
jmp ..B1.5
.L_2TAG_PACKET_5.0.2:
ja .L_2TAG_PACKET_4.0.2
cmpl $0, %edx
ja .L_2TAG_PACKET_4.0.2
jmp .L_2TAG_PACKET_6.0.2
.L_2TAG_PACKET_3.0.2:
xorpd %xmm1, %xmm1
addsd %xmm0, %xmm1
movd %xmm1, %edx
psrlq $32, %xmm1
movd %xmm1, %ecx
orl %ecx, %edx
cmpl $0, %edx
je .L_2TAG_PACKET_7.0.2
xorpd %xmm1, %xmm1
movl $18416, %eax
pinsrw $3, %eax, %xmm1
mulsd %xmm1, %xmm0
movq %xmm0, %xmm1
pextrw $3, %xmm0, %eax
orpd %xmm2, %xmm0
psrlq $27, %xmm0
movl $18416, %ecx
psrld $2, %xmm0
rcpps %xmm0, %xmm0
psllq $12, %xmm1
pshufd $228, %xmm5, %xmm6
psrlq $12, %xmm1
jmp .L_2TAG_PACKET_1.0.2
.L_2TAG_PACKET_2.0.2:
movd %xmm1, %edx
psrlq $32, %xmm1
movd %xmm1, %ecx
addl %ecx, %ecx
cmpl $-2097152, %ecx
jae .L_2TAG_PACKET_5.0.2
orl %ecx, %edx
cmpl $0, %edx
je .L_2TAG_PACKET_7.0.2
.L_2TAG_PACKET_6.0.2:
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
movl $32752, %eax
pinsrw $3, %eax, %xmm1
mulsd %xmm1, %xmm0
movl $3, 16(%rsp)
jmp .L_2TAG_PACKET_8.0.2
.L_2TAG_PACKET_7.0.2:
xorpd %xmm1, %xmm1
xorpd %xmm0, %xmm0
movl $49136, %eax
pinsrw $3, %eax, %xmm0
divsd %xmm1, %xmm0
movl $2, 16(%rsp)
.L_2TAG_PACKET_8.0.2:
movq %xmm0, 8(%rsp)
..B1.3:
movq 8(%rsp), %xmm0
.L_2TAG_PACKET_9.0.2:
..B1.5:
addq $24, %rsp
..___tag_value_log.4:
ret
..___tag_value_log.5:
END(log)
# -- End log
.section .rodata, "a"
.align 16
.align 16
L_tbl:
.long 4277811200
.long 1072049730
.long 2479318832
.long 1026487127
.long 2854492160
.long 1072033410
.long 215631550
.long 1025638968
.long 1547061248
.long 1072017216
.long 2886781435
.long 1026423395
.long 649825280
.long 1072001146
.long 4281533405
.long 1024038923
.long 646346752
.long 1071985198
.long 1562735921
.long 1023790276
.long 2203734016
.long 1071969370
.long 1838397691
.long 3173936209
.long 1872169984
.long 1071953661
.long 3981202460
.long 1022325013
.long 669557760
.long 1071938069
.long 4182597802
.long 3173174122
.long 4076413952
.long 1071922591
.long 1209029111
.long 3170736207
.long 556125184
.long 1071907228
.long 821086028
.long 3173437049
.long 204914688
.long 1071891976
.long 2097025986
.long 3171071798
.long 387545088
.long 1071876834
.long 3142936996
.long 3173092218
.long 2912783360
.long 1071861800
.long 2502420140
.long 1024505919
.long 1144260608
.long 1071846874
.long 3315658140
.long 3173469843
.long 1471209472
.long 1071832053
.long 129621009
.long 3172443877
.long 1829683200
.long 1071817336
.long 3885467693
.long 1025535275
.long 288676864
.long 1071802722
.long 86139472
.long 3171639793
.long 3636378624
.long 1071788208
.long 1850238587
.long 1024654342
.long 1606817792
.long 1071773795
.long 3388899795
.long 3173675586
.long 1236164608
.long 1071759480
.long 3983599207
.long 1020046558
.long 1089616896
.long 1071745262
.long 4171974224
.long 1024773198
.long 4143093760
.long 1071731139
.long 2727587401
.long 3173965207
.long 600267776
.long 1071717112
.long 3147685042
.long 3173353031
.long 2249313280
.long 1071703177
.long 125835074
.long 1025255832
.long 3805303808
.long 1071689334
.long 2289991207
.long 1025460331
.long 87278592
.long 1071675583
.long 1106114045
.long 1025933602
.long 3195405312
.long 1071661920
.long 3885316576
.long 3171206239
.long 3853649920
.long 1071648346
.long 2977069852
.long 3171236771
.long 2944026624
.long 1071625048
.long 1008093493
.long 1023444474
.long 3993180160
.long 1071598247
.long 1862355595
.long 1024642533
.long 1454641152
.long 1071571617
.long 1514603089
.long 1026500596
.long 3286085632
.long 1071545154
.long 1400028424
.long 3173279056
.long 438773760
.long 1071518858
.long 120727864
.long 3172148914
.long 1212979200
.long 1071492725
.long 1625055594
.long 3172901933
.long 1189017600
.long 1071466754
.long 3920062376
.long 1025727407
.long 403064832
.long 1071440943
.long 1053271728
.long 3171391427
.long 3343210496
.long 1071415289
.long 3243395502
.long 3173627613
.long 1765777408
.long 1071389792
.long 2145968512
.long 1026354304
.long 461430784
.long 1071364449
.long 4094322285
.long 1026021467
.long 71706624
.long 1071339258
.long 763632021
.long 1024496933
.long 1380503552
.long 1071314217
.long 1383547992
.long 3173088453
.long 1015732224
.long 1071289325
.long 3198646877
.long 1025390322
.long 35977216
.long 1071264580
.long 2141026805
.long 1025754693
.long 3927306240
.long 1071239979
.long 282116272
.long 3173394334
.long 1125341184
.long 1071215523
.long 2768427504
.long 3172279059
.long 1666971648
.long 1071191208
.long 786837629
.long 3172427445
.long 2827694080
.long 1071167033
.long 3857122416
.long 3173014241
.long 2003683328
.long 1071142997
.long 859010954
.long 1026545007
.long 1004017664
.long 1071119098
.long 3356644970
.long 3173458064
.long 1753020416
.long 1071095334
.long 788338552
.long 1026157693
.long 1992718336
.long 1071071704
.long 1239179443
.long 1026394889
.long 3870234624
.long 1071048206
.long 2082614663
.long 1024926053
.long 1050437632
.long 1071024840
.long 660007840
.long 1025548499
.long 188395520
.long 1071001603
.long 3878792704
.long 3173889571
.long 3747176448
.long 1070978493
.long 144991708
.long 3171552042
.long 1405669376
.long 1070955511
.long 3999088879
.long 1025486317
.long 121151488
.long 1070932654
.long 2170865497
.long 1026473584
.long 2652319744
.long 1070909920
.long 453695652
.long 3173916809
.long 3262236672
.long 1070887309
.long 157800053
.long 3173984206
.long 601221120
.long 1070864820
.long 3968917661
.long 1023992886
.long 1999843328
.long 1070842450
.long 3053895004
.long 1024998228
.long 1992167424
.long 1070820199
.long 2968614856
.long 1024552653
.long 3788726272
.long 1070798065
.long 3542170808
.long 3173573242
.long 2094829568
.long 1070776048
.long 1246758132
.long 1026202874
.long 288675840
.long 1070754146
.long 3747328950
.long 1026331585
.long 1829681152
.long 1070732357
.long 3125197546
.long 1024100318
.long 1666869248
.long 1070710681
.long 1363656119
.long 1026336493
.long 3417110528
.long 1070689116
.long 4154791553
.long 1026267853
.long 2183653376
.long 1070667662
.long 1671819292
.long 3173785870
.long 1734434816
.long 1070646317
.long 373091049
.long 1025972363
.long 1615681536
.long 1070625080
.long 384650897
.long 1022926043
.long 1445382144
.long 1070603950
.long 344320330
.long 3172397196
.long 1823715328
.long 1070569756
.long 3389841200
.long 1025231852
.long 3839688704
.long 1070527917
.long 1706790417
.long 3167363349
.long 4293332992
.long 1070486286
.long 1614935088
.long 1019351591
.long 2966720512
.long 1070444861
.long 4145393717
.long 3173711658
.long 4066729984
.long 1070403639
.long 1974925028
.long 3171437182
.long 3337621504
.long 1070362619
.long 3314953170
.long 3169971314
.long 943448064
.long 1070321799
.long 1498682038
.long 3173862340
.long 1465634816
.long 1070281176
.long 1319952810
.long 3171693965
.long 1015734272
.long 1070240749
.long 1347821929
.long 3173544515
.long 118001664
.long 1070200516
.long 1751482746
.long 1026134093
.long 3707174912
.long 1070160474
.long 1486946159
.long 1023930920
.long 3946381312
.long 1070120623
.long 2867408081
.long 3171368276
.long 1699848192
.long 1070080961
.long 2590187139
.long 1025379803
.long 2235846656
.long 1070041485
.long 1888568069
.long 3172754960
.long 2339729408
.long 1070002194
.long 3852214753
.long 3173323149
.long 3196850176
.long 1069963086
.long 742141560
.long 1025101707
.long 1800683520
.long 1069924160
.long 3949500444
.long 3172102179
.long 3835801600
.long 1069885413
.long 3848895943
.long 1025913832
.long 2201202688
.long 1069846845
.long 1425913464
.long 1025868665
.long 2778279936
.long 1069808453
.long 2120889677
.long 3173831128
.long 2954203136
.long 1069770236
.long 592147081
.long 1019621288
.long 210141184
.long 1069732193
.long 3414275233
.long 1023647084
.long 709476352
.long 1069694321
.long 2413027164
.long 1024462115
.long 2116284416
.long 1069656619
.long 1144559924
.long 1026336654
.long 2183651328
.long 1069619086
.long 3459057650
.long 1025634168
.long 3047047168
.long 1069581720
.long 1879674924
.long 3173508573
.long 970711040
.long 1069541521
.long 1335954173
.long 3173332182
.long 2198478848
.long 1069467449
.long 2951103968
.long 3173892200
.long 1669611520
.long 1069393703
.long 531044147
.long 1025149248
.long 29114368
.long 1069320280
.long 3327831251
.long 1025918673
.long 2376949760
.long 1069247176
.long 737634533
.long 3172176000
.long 1085390848
.long 1069174390
.long 3108243400
.long 3171828406
.long 1566130176
.long 1069101918
.long 985483226
.long 1025708380
.long 792780800
.long 1069029758
.long 4184866295
.long 1024426204
.long 183156736
.long 1068957907
.long 2845699378
.long 1022107277
.long 1301782528
.long 1068886362
.long 1012735262
.long 3173804294
.long 1562411008
.long 1068815121
.long 2197086703
.long 3170187813
.long 2815549440
.long 1068744181
.long 2782613207
.long 1026345054
.long 2756124672
.long 1068673540
.long 2929486205
.long 3173037800
.long 3511050240
.long 1068603195
.long 1443733147
.long 3173331549
.long 3047047168
.long 1068533144
.long 1879674924
.long 3172459997
.long 3221667840
.long 1068427825
.long 1338588027
.long 3171815742
.long 3453861888
.long 1068288883
.long 1205348359
.long 3172624626
.long 3506110464
.long 1068150514
.long 893105198
.long 1025571866
.long 346013696
.long 1068012714
.long 3495569021
.long 3172563349
.long 4074029056
.long 1067875476
.long 3961106338
.long 3171065595
.long 3559784448
.long 1067738798
.long 1975385384
.long 3173783155
.long 797769728
.long 1067602675
.long 3760305787
.long 1026047642
.long 2313633792
.long 1067467101
.long 1559353171
.long 1023480256
.long 3960766464
.long 1067213778
.long 1067365107
.long 1025865926
.long 684261376
.long 1066944805
.long 844762164
.long 3173687482
.long 630718464
.long 1066676905
.long 2458269694
.long 1024033081
.long 1486061568
.long 1066410070
.long 115537874
.long 3173243995
.long 2743664640
.long 1065886792
.long 3665098304
.long 3173471607
.long 1971912704
.long 1065357333
.long 2577214440
.long 3171993451
.long 1498939392
.long 1064306693
.long 3409036923
.long 1025599151
.long 0
.long 0
.long 0
.long 2147483648
.type L_tbl,@object
.size L_tbl,2064
.align 16
log2:
.long 4277811200
.long 1067855426
.long 2479318832
.long 1022292823
.type log2,@object
.size log2,16
.align 16
coeff:
.long 2454267026
.long 1069697316
.long 0
.long 3218079744
.long 1030730101
.long 3217380702
.long 1431655765
.long 1070945621
.long 2576980378
.long 1070176665
.long 0
.long 3219128320
.type coeff,@object
.size coeff,48
.data
.section .note.GNU-stack, ""
// -- Begin DWARF2 SEGMENT .eh_frame
.section .eh_frame,"a",@progbits
.eh_frame_seg:
.align 1
.4byte 0x00000014
.8byte 0x00527a0100000000
.8byte 0x08070c1b01107801
.4byte 0x00000190
.4byte 0x0000001c
.4byte 0x0000001c
.4byte ..___tag_value_log.1-.
.4byte ..___tag_value_log.5-..___tag_value_log.1
.2byte 0x0400
.4byte ..___tag_value_log.3-..___tag_value_log.1
.2byte 0x200e
.byte 0x04
.4byte ..___tag_value_log.4-..___tag_value_log.3
.2byte 0x080e
.byte 0x00
# End

File diff suppressed because it is too large Load diff