提交 316e024f 编写于 作者: R Rich Felker

optimize x86 feclearexcept

if all exception flags will be cleared, we can avoid the expensive
store/reload of the environment and just use the fnclex instruction.
上级 9cb6878e
2: not %ecx
.global feclearexcept
.type feclearexcept,@function
feclearexcept:
mov 4(%esp),%ecx
not %ecx
test $0x3f,%ecx
jnz 2f
1: fnclex
xor %eax,%eax
ret
2: fnstsw %ax
and %ecx,%eax
jz 1b
sub $32,%esp
fnstenv (%esp)
and %ecx,4(%esp)
or %edx,4(%esp)
mov %al,4(%esp)
fldenv (%esp)
add $32,%esp
ret
.global feclearexcept
.type feclearexcept,@function
feclearexcept:
xor %eax,%eax
mov 4(%esp),%ecx
xor %edx,%edx
test %ecx,%ecx
jnz 2b
ret
.global feraiseexcept
.type feraiseexcept,@function
feraiseexcept:
mov 4(%esp),%eax
sub $32,%esp
fnstenv (%esp)
or %al,4(%esp)
fldenv (%esp)
add $32,%esp
xor %eax,%eax
mov 4(%esp),%edx
xor %ecx,%ecx
test %edx,%edx
jnz 2b
ret
.global fesetround
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册