From 1429d2124406440946fbe80a6e9dfe1148f3af91 Mon Sep 17 00:00:00 2001 From: Joel Hestness Date: Sat, 19 Jan 2013 15:14:54 -0600 Subject: O3 IEW: Make incrWb and decrWb clearer Move the increment/decrement of wbOutstanding outside of the comparison in incrWb and decrWb in the IEW. This also fixes a compiler bug with gcc 4.4.7, which incorrectly optimizes "-- ==" as "-=". --- src/cpu/o3/iew.hh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/cpu/o3/iew.hh') diff --git a/src/cpu/o3/iew.hh b/src/cpu/o3/iew.hh index 5adf32752..1213cf12b 100644 --- a/src/cpu/o3/iew.hh +++ b/src/cpu/o3/iew.hh @@ -213,7 +213,8 @@ class DefaultIEW void incrWb(InstSeqNum &sn) { - if (++wbOutstanding == wbMax) + ++wbOutstanding; + if (wbOutstanding == wbMax) ableToIssue = false; DPRINTF(IEW, "wbOutstanding: %i [sn:%lli]\n", wbOutstanding, sn); assert(wbOutstanding <= wbMax); @@ -224,8 +225,9 @@ class DefaultIEW void decrWb(InstSeqNum &sn) { - if (wbOutstanding-- == wbMax) + if (wbOutstanding == wbMax) ableToIssue = true; + wbOutstanding--; DPRINTF(IEW, "wbOutstanding: %i [sn:%lli]\n", wbOutstanding, sn); assert(wbOutstanding >= 0); #ifdef DEBUG -- cgit v1.2.3