diff options
Diffstat (limited to 'sysdeps/i386')
-rw-r--r-- | sysdeps/i386/fpu/s_nearbyint.S | 23 | ||||
-rw-r--r-- | sysdeps/i386/fpu/s_nearbyintf.S | 23 | ||||
-rw-r--r-- | sysdeps/i386/fpu/s_nearbyintl.S | 26 |
3 files changed, 30 insertions, 42 deletions
diff --git a/sysdeps/i386/fpu/s_nearbyint.S b/sysdeps/i386/fpu/s_nearbyint.S index 52909139a9..8da8ae9792 100644 --- a/sysdeps/i386/fpu/s_nearbyint.S +++ b/sysdeps/i386/fpu/s_nearbyint.S @@ -8,22 +8,17 @@ ENTRY(__nearbyint) fldl 4(%esp) - pushl %eax - cfi_adjust_cfa_offset (4) - pushl %ecx - cfi_adjust_cfa_offset (4) - fnstcw (%esp) - movl (%esp), %eax + subl $32, %esp + cfi_adjust_cfa_offset (32) + fnstenv 4(%esp) + movl 4(%esp), %eax orl $0x20, %eax - movl %eax, 4(%esp) - fldcw 4(%esp) - frndint - fclex + movl %eax, (%esp) fldcw (%esp) - popl %ecx - cfi_adjust_cfa_offset (-4) - popl %eax - cfi_adjust_cfa_offset (-4) + frndint + fldenv 4(%esp) + addl $32, %esp + cfi_adjust_cfa_offset (-32) ret END (__nearbyint) weak_alias (__nearbyint, nearbyint) diff --git a/sysdeps/i386/fpu/s_nearbyintf.S b/sysdeps/i386/fpu/s_nearbyintf.S index 6a6b1d6c2b..0c51f72364 100644 --- a/sysdeps/i386/fpu/s_nearbyintf.S +++ b/sysdeps/i386/fpu/s_nearbyintf.S @@ -8,22 +8,17 @@ ENTRY(__nearbyintf) flds 4(%esp) - pushl %eax - cfi_adjust_cfa_offset (4) - pushl %ecx - cfi_adjust_cfa_offset (4) - fnstcw (%esp) - movl (%esp), %eax + subl $32, %esp + cfi_adjust_cfa_offset (32) + fnstenv 4(%esp) + movl 4(%esp), %eax orl $0x20, %eax - movl %eax, 4(%esp) - fldcw 4(%esp) - frndint - fclex + movl %eax, (%esp) fldcw (%esp) - popl %ecx - cfi_adjust_cfa_offset (-4) - popl %eax - cfi_adjust_cfa_offset (-4) + frndint + fldenv 4(%esp) + addl $32, %esp + cfi_adjust_cfa_offset (-32) ret END (__nearbyintf) weak_alias (__nearbyintf, nearbyintf) diff --git a/sysdeps/i386/fpu/s_nearbyintl.S b/sysdeps/i386/fpu/s_nearbyintl.S index 819af63a8d..b260ab5914 100644 --- a/sysdeps/i386/fpu/s_nearbyintl.S +++ b/sysdeps/i386/fpu/s_nearbyintl.S @@ -8,22 +8,20 @@ ENTRY(__nearbyintl) fldt 4(%esp) - pushl %eax - cfi_adjust_cfa_offset (4) - pushl %ecx - cfi_adjust_cfa_offset (4) - fnstcw (%esp) - movl (%esp), %eax + subl $32, %esp + cfi_adjust_cfa_offset (32) + fnstenv 4(%esp) + movl 4(%esp), %eax orl $0x20, %eax - movl %eax, 4(%esp) - fldcw 4(%esp) - frndint - fclex + movl %eax, (%esp) fldcw (%esp) - popl %ecx - cfi_adjust_cfa_offset (-4) - popl %eax - cfi_adjust_cfa_offset (-4) + frndint + fnstsw + andl $0x1, %eax + orl %eax, 8(%esp) + fldenv 4(%esp) + addl $32, %esp + cfi_adjust_cfa_offset (-32) ret END (__nearbyintl) weak_alias (__nearbyintl, nearbyintl) |