|
|
Message-ID: <FE498902828045B7BE18810130943437@H270>
Date: Sat, 7 Dec 2019 21:15:34 +0100
From: "Stefan Kanthak" <stefan.kanthak@...go.de>
To: <musl@...ts.openwall.com>
Subject: Patches for math subtree
Just some optimisations.
--- -/src/math/i386/remquo.s
+++ +/src/math/i386/remquo.s
@@ -23,23 +23,17 @@
remquo:
mov 20(%esp),%ecx
fldl 12(%esp)
fldl 4(%esp)
mov 19(%esp),%dh
xor 11(%esp),%dh
1: fprem1
fnstsw %ax
sahf
jp 1b
fstp %st(1)
- mov %ah,%dl
- shr %dl
- and $1,%dl
- mov %ah,%al
- shr $5,%al
- and $2,%al
- or %al,%dl
- mov %ah,%al
- shl $2,%al
- and $4,%al
- or %al,%dl
+ setc %dl
+ shl $2,%ah
+ adc %dl,%dl
+ shl $5,%ah
+ adc %dl,%dl
test %dh,%dh
--- -/src/math/ceil.c
+++ +/src/math/ceil.c
@@ -18,10 +18,10 @@
+ /* special case because of non-nearest rounding modes */
+ if (e < 0x3ff) {
+ FORCE_EVAL(y);
+ return u.i >> 63 ? -0.0 : 1.0;
+ }
/* y = int(x) - x, where int(x) is an integer neighbor of x */
if (u.i >> 63)
y = x - toint + toint - x;
else
y = x + toint - toint - x;
- /* special case because of non-nearest rounding modes */
- if (e <= 0x3ff-1) {
- FORCE_EVAL(y);
- return u.i >> 63 ? -0.0 : 1;
- }
--- -/src/math/floor.c
+++ +/src/math/floor.c
@@ -18,10 +18,10 @@
+ /* special case because of non-nearest rounding modes */
+ if (e < 0x3ff) {
+ FORCE_EVAL(y);
+ return u.i >> 63 ? -1.0 : 0.0;
+ }
/* y = int(x) - x, where int(x) is an integer neighbor of x */
if (u.i >> 63)
y = x - toint + toint - x;
else
y = x + toint - toint - x;
- /* special case because of non-nearest rounding modes */
- if (e <= 0x3ff-1) {
- FORCE_EVAL(y);
- return u.i >> 63 ? -1 : 0;
- }
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.