mirror of https://git.musl-libc.org/git/musl
1 changed files with 88 additions and 0 deletions
@ -0,0 +1,88 @@ |
|||
2: not %edi |
|||
sub $32,%rsp |
|||
fnstenv (%rsp) |
|||
and %edi,4(%rsp) |
|||
or %esi,4(%rsp) |
|||
fldenv (%rsp) |
|||
stmxcsr (%rsp) |
|||
and %edi,(%rsp) |
|||
ldmxcsr (%rsp) |
|||
add $32,%rsp |
|||
ret |
|||
|
|||
.global feclearexcept |
|||
feclearexcept: |
|||
xor %eax,%eax |
|||
xor %esi,%esi |
|||
test %edi,%edi |
|||
jnz 2b |
|||
ret |
|||
|
|||
.global feraiseexcept |
|||
feraiseexcept: |
|||
xor %eax,%eax |
|||
mov %edi,%esi |
|||
xor %edi,%edi |
|||
test %esi,%esi |
|||
jnz 2b |
|||
ret |
|||
|
|||
.global fesetround |
|||
fesetround: |
|||
xor %eax,%eax |
|||
sub $32,%rsp |
|||
fnstenv (%rsp) |
|||
andb $0xf3,1(%rsp) |
|||
or %edi,(%rsp) |
|||
fldenv (%rsp) |
|||
stmxcsr (%rsp) |
|||
shl $3,%edi |
|||
andb $0x9f,1(%rsp) |
|||
or %edi,(%rsp) |
|||
ldmxcsr (%rsp) |
|||
add $32,%rsp |
|||
ret |
|||
|
|||
.global fegetround |
|||
fegetround: |
|||
push %rax |
|||
stmxcsr (%rsp) |
|||
pop %rax |
|||
shr $3,%eax |
|||
and $0xc,%ah |
|||
ret |
|||
|
|||
.global fegetenv |
|||
fegetenv: |
|||
xor %eax,%eax |
|||
fnstenv (%rdi) |
|||
stmxcsr 28(%rdi) |
|||
ret |
|||
|
|||
.global fesetenv |
|||
fesetenv: |
|||
xor %eax,%eax |
|||
inc %rdi |
|||
jz 1f |
|||
fldenv -1(%rdi) |
|||
ldmxcsr 27(%rdi) |
|||
ret |
|||
1: push %rax |
|||
push %rax |
|||
push %rax |
|||
pushq $0x37f |
|||
fldenv (%rsp) |
|||
pushq $0x1f80 |
|||
ldmxcsr (%rsp) |
|||
add $40,%rsp |
|||
ret |
|||
|
|||
.global fetestexcept |
|||
fetestexcept: |
|||
push %rax |
|||
stmxcsr (%rsp) |
|||
pop %rsi |
|||
fnstsw %ax |
|||
or %esi,%eax |
|||
and %edi,%eax |
|||
ret |
|||
Loading…
Reference in new issue