From fc528bb0c0d2c6fe1ae55e9aa5be8652cc3fd456 Mon Sep 17 00:00:00 2001 From: "Daniel R. Carvalho" Date: Wed, 29 May 2019 21:15:06 +0200 Subject: base: Add function to saturate SatCounter Create a saturation function for the SatCounter that makes its internal counter reach its maximum value. Change-Id: Ibd30fa27c4ae2714dd48e3eba85addd035fb737c Signed-off-by: Daniel R. Carvalho Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/20451 Reviewed-by: Andreas Sandberg Maintainer: Andreas Sandberg Tested-by: kokoro --- src/base/sat_counter.test.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/base/sat_counter.test.cc') diff --git a/src/base/sat_counter.test.cc b/src/base/sat_counter.test.cc index dbdaf0ae6..817f2c7ac 100644 --- a/src/base/sat_counter.test.cc +++ b/src/base/sat_counter.test.cc @@ -96,6 +96,23 @@ TEST(SatCounterTest, SaturationPercentile) ASSERT_TRUE(counter.isSaturated()); } +/** + * Test abrupt saturation. + */ +TEST(SatCounterTest, Saturate) +{ + const unsigned bits = 3; + const unsigned max_value = (1 << bits) - 1; + SatCounter counter(bits); + counter++; + ASSERT_FALSE(counter.isSaturated()); + + // Make sure the value added is what was missing to saturate + const unsigned diff = counter.saturate(); + ASSERT_EQ(diff, max_value - 1); + ASSERT_TRUE(counter.isSaturated()); +} + /** * Test back and forth against an int. */ -- cgit v1.2.3