Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenHarmony
Third Party Musl
提交
1b3973fb
T
Third Party Musl
项目概览
OpenHarmony
/
Third Party Musl
1 年多 前同步成功
通知
37
Star
125
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
Third Party Musl
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
1b3973fb
编写于
8月 15, 2013
作者:
S
Szabolcs Nagy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
math: fix x86 expl.s to raise underflow and clean up special case handling
上级
c599f4f4
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
31 addition
and
45 deletion
+31
-45
src/math/i386/expl.s
src/math/i386/expl.s
+16
-23
src/math/x86_64/expl.s
src/math/x86_64/expl.s
+15
-22
未找到文件。
src/math/i386/expl.s
浏览文件 @
1b3973fb
...
...
@@ -8,34 +8,27 @@
expl
:
fldt
4
(%
esp
)
#
special
cases
:
2
*
x
is
+-
inf
,
nan
or
|x|
<
0x1p-32
#
check
(
exponent
|
0x8000
)+
2
<
0xbfff
+
2
-
32
movw
12
(%
esp
),
%
ax
movw
%
ax
,
%
dx
orw
$
0x8000
,
%
dx
addw
$
2
,
%
dx
cmpw
$
0xbfff
-
30
,
%
dx
jnb
3
f
cmpw
$
1
,
%
dx
jbe
1
f
# if |x|<0x1p-32 return 1+x
#
interesting
case
:
0x1p-32
<=
|x|
<
16384
#
check
if
(
exponent
|
0x8000
)
is
in
[
0xbfff
-
32
,
0xbfff
+
13
]
mov
12
(%
esp
),
%
ax
or
$
0x8000
,
%
ax
sub
$
0xbfdf
,
%
ax
cmp
$
45
,
%
ax
jbe
2
f
test
%
ax
,
%
ax
fld1
jmp
2
f
1
:
testw
%
ax
,
%
ax
jns
1
f
# if 2*x == -inf,-nan return -0/x
fldz
fchs
fdivp
js
1
f
# if |x|>=0x1p14 or nan return 2^trunc(x)
fscale
fstp
%
st
(
1
)
ret
# if 2*x == inf,nan return 2*x
1
:
fld
%
st
(
0
)
2
:
faddp
# if |x|<0x1p-32 return 1+x
1
:
faddp
ret
#
should
be
0x1
.71547652
b82fe178p0
==
0x3fff
b8aa3b29
5
c17f0bc
#
should
be
0x1
.71547652
b82fe178p0
L
==
0x3fff
b8aa3b29
5
c17f0bc
#
it
will
be
wrong
on
non
-
nearest
rounding
mode
3
:
fldl2e
2
:
fldl2e
subl
$
44
,
%
esp
#
hi
=
log2e_hi
*
x
#
2
^
hi
=
exp2l
(
hi
)
...
...
src/math/x86_64/expl.s
浏览文件 @
1b3973fb
...
...
@@ -8,32 +8,25 @@
expl
:
fldt
8
(%
rsp
)
#
special
cases
:
2
*
x
is
+-
inf
,
nan
or
|x|
<
0x1p-32
#
check
(
exponent
|
0x8000
)+
2
<
0xbfff
+
2
-
32
movw
16
(%
rsp
),
%
ax
movw
%
ax
,
%
dx
orw
$
0x8000
,
%
dx
addw
$
2
,
%
dx
cmpw
$
0xbfff
-
30
,
%
dx
jnb
3
f
cmpw
$
1
,
%
dx
jbe
1
f
# if |x|<0x1p-32 return 1+x
#
interesting
case
:
0x1p-32
<=
|x|
<
16384
#
check
if
(
exponent
|
0x8000
)
is
in
[
0xbfff
-
32
,
0xbfff
+
13
]
mov
16
(%
rsp
),
%
ax
or
$
0x8000
,
%
ax
sub
$
0xbfdf
,
%
ax
cmp
$
45
,
%
ax
jbe
2
f
test
%
ax
,
%
ax
fld1
jmp
2
f
1
:
testw
%
ax
,
%
ax
jns
1
f
# if 2*x == -inf,-nan return -0/x
fldz
fchs
fdivp
js
1
f
# if |x|>=0x1p14 or nan return 2^trunc(x)
fscale
fstp
%
st
(
1
)
ret
# if 2*x == inf,nan return 2*x
1
:
fld
%
st
(
0
)
2
:
faddp
# if |x|<0x1p-32 return 1+x
1
:
faddp
ret
#
should
be
0x1
.71547652
b82fe178p0
==
0x3fff
b8aa3b29
5
c17f0bc
#
should
be
0x1
.71547652
b82fe178p0
L
==
0x3fff
b8aa3b29
5
c17f0bc
#
it
will
be
wrong
on
non
-
nearest
rounding
mode
3
:
fldl2e
subq
$
48
,
%
rsp
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录