|
From: <sv...@va...> - 2012-05-06 03:35:03
|
florian 2012-05-06 04:34:55 +0100 (Sun, 06 May 2012)
New Revision: 2323
Log:
Add the counter pseudo register to the list of guest registers to
be tracked during insn selection. Saves 0.2% or so of insns depending on
how often insns with implicit loops like MVC are being used.
Modified files:
trunk/priv/host_s390_isel.c
Modified: trunk/priv/host_s390_isel.c (+6 -0)
===================================================================
--- trunk/priv/host_s390_isel.c 2012-05-05 03:55:24 +01:00 (rev 2322)
+++ trunk/priv/host_s390_isel.c 2012-05-06 04:34:55 +01:00 (rev 2323)
@@ -94,6 +94,7 @@
GUEST_CC_DEP2,
GUEST_CC_NDEP,
GUEST_SYSNO,
+ GUEST_COUNTER,
GUEST_UNKNOWN /* must be the last entry */
};
@@ -142,6 +143,7 @@
case S390X_GUEST_OFFSET(guest_CC_DEP2): return GUEST_CC_DEP2;
case S390X_GUEST_OFFSET(guest_CC_NDEP): return GUEST_CC_NDEP;
case S390X_GUEST_OFFSET(guest_SYSNO): return GUEST_SYSNO;
+ case S390X_GUEST_OFFSET(guest_counter): return GUEST_COUNTER;
/* Also make sure there is never a partial write to one of
these registers. That would complicate matters. */
@@ -150,6 +152,10 @@
case S390X_GUEST_OFFSET(guest_CC_DEP1)+1 ... S390X_GUEST_OFFSET(guest_CC_DEP1)+7:
case S390X_GUEST_OFFSET(guest_CC_DEP2)+1 ... S390X_GUEST_OFFSET(guest_CC_DEP2)+7:
case S390X_GUEST_OFFSET(guest_CC_NDEP)+1 ... S390X_GUEST_OFFSET(guest_CC_NDEP)+7:
+ case S390X_GUEST_OFFSET(guest_SYSNO)+1 ... S390X_GUEST_OFFSET(guest_SYSNO)+7:
+ /* counter is used both as 4-byte and as 8-byte entity */
+ case S390X_GUEST_OFFSET(guest_counter)+1 ... S390X_GUEST_OFFSET(guest_counter)+3:
+ case S390X_GUEST_OFFSET(guest_counter)+5 ... S390X_GUEST_OFFSET(guest_counter)+7:
vassert("partial update of this guest state register is not allowed");
break;
|