| Index: fusl/src/fenv/i386/fenv.s
|
| diff --git a/fusl/src/fenv/i386/fenv.s b/fusl/src/fenv/i386/fenv.s
|
| deleted file mode 100644
|
| index a189ca2e36cd1a3ea433ad3ec905440ddeadac4e..0000000000000000000000000000000000000000
|
| --- a/fusl/src/fenv/i386/fenv.s
|
| +++ /dev/null
|
| @@ -1,163 +0,0 @@
|
| -.hidden __hwcap
|
| -
|
| -.global feclearexcept
|
| -.type feclearexcept,@function
|
| -feclearexcept:
|
| - mov 4(%esp),%ecx
|
| - and $0x3f,%ecx
|
| - fnstsw %ax
|
| - # consider sse fenv as well if the cpu has XMM capability
|
| - call 1f
|
| -1: addl $__hwcap-1b,(%esp)
|
| - pop %edx
|
| - testl $0x02000000,(%edx)
|
| - jz 2f
|
| - # maintain exceptions in the sse mxcsr, clear x87 exceptions
|
| - test %eax,%ecx
|
| - jz 1f
|
| - fnclex
|
| -1: push %edx
|
| - stmxcsr (%esp)
|
| - pop %edx
|
| - and $0x3f,%eax
|
| - or %eax,%edx
|
| - test %edx,%ecx
|
| - jz 1f
|
| - not %ecx
|
| - and %ecx,%edx
|
| - push %edx
|
| - ldmxcsr (%esp)
|
| - pop %edx
|
| -1: xor %eax,%eax
|
| - ret
|
| - # only do the expensive x87 fenv load/store when needed
|
| -2: test %eax,%ecx
|
| - jz 1b
|
| - not %ecx
|
| - and %ecx,%eax
|
| - test $0x3f,%eax
|
| - jz 1f
|
| - fnclex
|
| - jmp 1b
|
| -1: sub $32,%esp
|
| - fnstenv (%esp)
|
| - mov %al,4(%esp)
|
| - fldenv (%esp)
|
| - add $32,%esp
|
| - xor %eax,%eax
|
| - ret
|
| -
|
| -.global feraiseexcept
|
| -.type feraiseexcept,@function
|
| -feraiseexcept:
|
| - mov 4(%esp),%eax
|
| - and $0x3f,%eax
|
| - sub $32,%esp
|
| - fnstenv (%esp)
|
| - or %al,4(%esp)
|
| - fldenv (%esp)
|
| - add $32,%esp
|
| - xor %eax,%eax
|
| - ret
|
| -
|
| -.global __fesetround
|
| -.type __fesetround,@function
|
| -__fesetround:
|
| - mov 4(%esp),%ecx
|
| - push %eax
|
| - xor %eax,%eax
|
| - fnstcw (%esp)
|
| - andb $0xf3,1(%esp)
|
| - or %ch,1(%esp)
|
| - fldcw (%esp)
|
| - # consider sse fenv as well if the cpu has XMM capability
|
| - call 1f
|
| -1: addl $__hwcap-1b,(%esp)
|
| - pop %edx
|
| - testl $0x02000000,(%edx)
|
| - jz 1f
|
| - stmxcsr (%esp)
|
| - shl $3,%ch
|
| - andb $0x9f,1(%esp)
|
| - or %ch,1(%esp)
|
| - ldmxcsr (%esp)
|
| -1: pop %ecx
|
| - ret
|
| -
|
| -.global fegetround
|
| -.type fegetround,@function
|
| -fegetround:
|
| - push %eax
|
| - fnstcw (%esp)
|
| - pop %eax
|
| - and $0xc00,%eax
|
| - ret
|
| -
|
| -.global fegetenv
|
| -.type fegetenv,@function
|
| -fegetenv:
|
| - mov 4(%esp),%ecx
|
| - xor %eax,%eax
|
| - fnstenv (%ecx)
|
| - # consider sse fenv as well if the cpu has XMM capability
|
| - call 1f
|
| -1: addl $__hwcap-1b,(%esp)
|
| - pop %edx
|
| - testl $0x02000000,(%edx)
|
| - jz 1f
|
| - push %eax
|
| - stmxcsr (%esp)
|
| - pop %edx
|
| - and $0x3f,%edx
|
| - or %edx,4(%ecx)
|
| -1: ret
|
| -
|
| -.global fesetenv
|
| -.type fesetenv,@function
|
| -fesetenv:
|
| - mov 4(%esp),%ecx
|
| - xor %eax,%eax
|
| - inc %ecx
|
| - jz 1f
|
| - fldenv -1(%ecx)
|
| - movl -1(%ecx),%ecx
|
| - jmp 2f
|
| -1: push %eax
|
| - push %eax
|
| - push %eax
|
| - push %eax
|
| - pushl $0xffff
|
| - push %eax
|
| - pushl $0x37f
|
| - fldenv (%esp)
|
| - add $28,%esp
|
| - # consider sse fenv as well if the cpu has XMM capability
|
| -2: call 1f
|
| -1: addl $__hwcap-1b,(%esp)
|
| - pop %edx
|
| - testl $0x02000000,(%edx)
|
| - jz 1f
|
| - # mxcsr := same rounding mode, cleared exceptions, default mask
|
| - and $0xc00,%ecx
|
| - shl $3,%ecx
|
| - or $0x1f80,%ecx
|
| - mov %ecx,4(%esp)
|
| - ldmxcsr 4(%esp)
|
| -1: ret
|
| -
|
| -.global fetestexcept
|
| -.type fetestexcept,@function
|
| -fetestexcept:
|
| - mov 4(%esp),%ecx
|
| - and $0x3f,%ecx
|
| - fnstsw %ax
|
| - # consider sse fenv as well if the cpu has XMM capability
|
| - call 1f
|
| -1: addl $__hwcap-1b,(%esp)
|
| - pop %edx
|
| - testl $0x02000000,(%edx)
|
| - jz 1f
|
| - stmxcsr 4(%esp)
|
| - or 4(%esp),%eax
|
| -1: and %ecx,%eax
|
| - ret
|
|
|