PATCH: Support inline SSE/SSE2
H. J. Lu
hjl@lucon.org
Tue Nov 25 20:35:00 GMT 2003
On Mon, Nov 24, 2003 at 04:00:33PM -0800, Ulrich Drepper wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> H. J. Lu wrote:
> > SSE/SSE2 has float/double sqrt instructions. This patch uses them if
> > SSE/SSE2 is enabled.
>
> What are the advantages? Show some code we can time.
>
It turns out gcc 3.3 and above can inline sqrt for SSE2 quite well.
This is what I got with gcc 3.3-redhat on a 3GHz P4:
./sse2.sse2
Float: stop TSC (1777098976323730) - start TSC (1777098507396722): 468927008
Double: stop TSC (1777099649963698) - start TSC (1777098976323730): 673639968
Long double: stop TSC (1777101100976106) - start TSC (1777099649963698):
1451012408
./sse2.x87
Float: stop TSC (1777101880069514) - start TSC (1777101102742358): 777327156
Double: stop TSC (1777102598562830) - start TSC (1777101880069514): 718493316
Long double: stop TSC (1777104226940382) - start TSC (1777102598562830):
1628377552
./x87.sse2
Float: stop TSC (1777104871565354) - start TSC (1777104228718874): 642846480
Double: stop TSC (1777105263228530) - start TSC (1777104871565354): 391663176
Long double: stop TSC (1777106161090282) - start TSC (1777105263228530):
897861752
./x87.x87
Float: stop TSC (1777106835277334) - start TSC (1777106163172098): 672105236
Double: stop TSC (1777107221980882) - start TSC (1777106835277334): 386703548
Long double: stop TSC (1777108143253162) - start TSC (1777107221980882):
921272280
H.J.
----
2003-11-25 H.J. Lu <hongjiu.lu@intel.com>
* sysdeps/i386/fpu/bits/mathinline.h (sqrt): Don't inline
sqrt for gcc 3.3 and above if SSE2 is enabled
--- bits/mathinline.h.orig 2003-11-24 16:13:44.000000000 -0800
+++ bits/mathinline.h 2003-11-25 12:05:14.000000000 -0800
@@ -439,8 +439,10 @@ __inline_mathcodeNP2 (fmod, __x, __y, \
#ifdef __FAST_MATH__
+# if !__GNUC_PREREQ (3,3) || !defined __SSE2__
__inline_mathopNP (sqrt, "fsqrt")
__inline_mathopNP_ (long double, __sqrtl, "fsqrt")
+# endif
#endif
#if __GNUC_PREREQ (2, 8)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: test.tar.gz
Type: application/x-gzip
Size: 6285 bytes
Desc: not available
URL: <http://sourceware.org/pipermail/libc-alpha/attachments/20031125/7a95819e/attachment.bin>
More information about the Libc-alpha
mailing list