|
Message-Id: <20200107130605.7618-1-amonakov@ispras.ru>
Date: Tue, 7 Jan 2020 16:06:05 +0300
From: Alexander Monakov <amonakov@...ras.ru>
To: musl@...ts.openwall.com
Subject: [PATCH] math: move i386 sqrt to C
---
Since union ldshape does not have a dedicated field for 32 least significant
bits of the x87 long double mantissa, keeping the original approach with
ux.i.m -= (fpsr & 0x200) - 0x100;
would lead to a 64-bit subtraction that is not trivial for the compiler to
optimize to 32-bit subtraction as done in the original assembly. Therefore
I have elected to change the approach and use
ux.i.m ^= (fpsr & 0x200) + 0x200;
which is easier to optimize to a 32-bit rather than 64-bit xor.
Thoughts?
src/math/i386/sqrt.c | 15 +++++++++++++++
src/math/i386/sqrt.s | 21 ---------------------
2 files changed, 15 insertions(+), 21 deletions(-)
create mode 100644 src/math/i386/sqrt.c
delete mode 100644 src/math/i386/sqrt.s
View attachment "0005-math-move-i386-sqrt-to-C.patch" of type "text/x-patch" (1104 bytes)
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.