|
From: <sv...@va...> - 2011-09-17 15:51:46
|
Author: florian
Date: 2011-09-17 16:46:59 +0100 (Sat, 17 Sep 2011)
New Revision: 12036
Log:
Dispatcher tweak. Saves ALU operation. Suggested by Julian Seward.
Implemented by Christian Borntraeger (bor...@de...).
See bugzilla #274378
Modified:
trunk/NEWS
trunk/coregrind/m_dispatch/dispatch-s390x-linux.S
Modified: trunk/NEWS
===================================================================
--- trunk/NEWS 2011-09-17 06:24:49 UTC (rev 12035)
+++ trunk/NEWS 2011-09-17 15:46:59 UTC (rev 12036)
@@ -277,7 +277,9 @@
281883 - s390x: Fix system call wrapper for "clone".
+274378 - s390x: Various dispatcher tweaks
+
Release 3.6.1 (16 February 2011)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.6.1 is a bug fix release. It adds support for some SSE4
Modified: trunk/coregrind/m_dispatch/dispatch-s390x-linux.S
===================================================================
--- trunk/coregrind/m_dispatch/dispatch-s390x-linux.S 2011-09-17 06:24:49 UTC (rev 12035)
+++ trunk/coregrind/m_dispatch/dispatch-s390x-linux.S 2011-09-17 15:46:59 UTC (rev 12036)
@@ -154,11 +154,15 @@
and sizeof(FastCacheEntry) == 16
offset = ((addr >> 1) & VG_TT_FAST_MASK) << 4
+ which is
+ offset = ((addr & (VG_TT_FAST_MASK << 1) ) << 3
*/
- lghi %r5,VG_TT_FAST_MASK
- srlg %r7, %r2,1 /* next guest addr >> 1*/
- ngr %r7,%r5
- sllg %r7,%r7,4
+ llill %r5,( VG_TT_FAST_MASK << 1) & 0xffff
+#if ((( VG_TT_FAST_MASK << 1) & 0xffff0000) >> 16 != 0)
+ iilh %r5,(( VG_TT_FAST_MASK << 1) & 0xffff0000) >> 16
+#endif
+ ngr %r5,%r2
+ sllg %r7,%r5,3
/* Set the return address to the beginning of the loop here to
have some instruction between setting r7 and using it as an
@@ -207,11 +211,15 @@
and sizeof(FastCacheEntry) == 16
offset = ((addr >> 1) & VG_TT_FAST_MASK) << 4
+ which is
+ offset = ((addr & (VG_TT_FAST_MASK << 1) ) << 3
*/
- lghi %r5,VG_TT_FAST_MASK
- srlg %r7,%r2,1 /* next guest addr >> 1*/
- ngr %r7,%r5
- sllg %r7,%r7,4
+ llill %r5,( VG_TT_FAST_MASK << 1) & 0xffff
+#if ((( VG_TT_FAST_MASK << 1) & 0xffff0000) >> 16 != 0)
+ iilh %r5,(( VG_TT_FAST_MASK << 1) & 0xffff0000) >> 16
+#endif
+ ngr %r5,%r2
+ sllg %r7,%r5,3
/* Set the return address to the beginning of the loop here to
have some instruction between setting r7 and using it as an
|