Nikos Nikoleris has submitted this change. (
https://gem5-review.googlesource.com/c/public/gem5/+/23663 )
Change subject: base: Fix AddrRange::isSubset() check
......................................................................
base: Fix AddrRange::isSubset() check
Making _end non-inclusive, introduced a bug in isSubset() which was
checking if _end is included in the input address range. This CL
changes the behavior and now we test if _end - 1 is in the range.
Change-Id: Ib8822472b7c266e10d55f3d5cf22a46aa45c1fc7
Signed-off-by: Nikos Nikoleris <nikos.nikole...@arm.com>
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/23663
Reviewed-by: Bobby R. Bruce <bbr...@ucdavis.edu>
Reviewed-by: Jason Lowe-Power <ja...@lowepower.com>
Maintainer: Bobby R. Bruce <bbr...@ucdavis.edu>
Tested-by: kokoro <noreply+kok...@google.com>
---
M src/base/addr_range.hh
M src/base/addr_range.test.cc
2 files changed, 26 insertions(+), 2 deletions(-)
Approvals:
Jason Lowe-Power: Looks good to me, approved
Bobby R. Bruce: Looks good to me, approved; Looks good to me, approved
kokoro: Regressions pass
diff --git a/src/base/addr_range.hh b/src/base/addr_range.hh
index 2a18551..f53c08b 100644
--- a/src/base/addr_range.hh
+++ b/src/base/addr_range.hh
@@ -390,7 +390,7 @@
// whether it would fit in a continuous segment of the input
// addr range.
if (r.interleaved()) {
- return r.contains(_start) && r.contains(_end) &&
+ return r.contains(_start) && r.contains(_end - 1) &&
size() <= r.granularity();
} else {
return _start >= r._start && _end <= r._end;
diff --git a/src/base/addr_range.test.cc b/src/base/addr_range.test.cc
index 4ab4ae4..890fb4f 100644
--- a/src/base/addr_range.test.cc
+++ b/src/base/addr_range.test.cc
@@ -261,6 +261,30 @@
EXPECT_FALSE(r2.isSubset(r1));
}
+TEST(AddrRangeTest, isSubsetInterleavedCompleteOverlap)
+{
+ AddrRange r1(0x00, 0x100, {0x40}, 0);
+ AddrRange r2(0x00, 0x40);
+
+ EXPECT_TRUE(r2.isSubset(r1));
+}
+
+TEST(AddrRangeTest, isSubsetInterleavedNoOverlap)
+{
+ AddrRange r1(0x00, 0x100, {0x40}, 1);
+ AddrRange r2(0x00, 0x40);
+
+ EXPECT_FALSE(r2.isSubset(r1));
+}
+
+TEST(AddrRangeTest, isSubsetInterleavedPartialOverlap)
+{
+ AddrRange r1(0x00, 0x100, {0x40}, 0);
+ AddrRange r2(0x10, 0x50);
+
+ EXPECT_FALSE(r2.isSubset(r1));
+}
+
TEST(AddrRangeTest, Contains)
{
AddrRange r(0xF0, 0xF5);
@@ -1038,4 +1062,4 @@
AddrRange r = RangeSize(0x5, 5);
EXPECT_EQ(0x5, r.start());
EXPECT_EQ(0xA, r.end());
-}
\ No newline at end of file
+}
--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/23663
To unsubscribe, or for help writing mail filters, visit
https://gem5-review.googlesource.com/settings
Gerrit-Project: public/gem5
Gerrit-Branch: master
Gerrit-Change-Id: Ib8822472b7c266e10d55f3d5cf22a46aa45c1fc7
Gerrit-Change-Number: 23663
Gerrit-PatchSet: 3
Gerrit-Owner: Nikos Nikoleris <nikos.nikole...@arm.com>
Gerrit-Assignee: Bobby R. Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Bobby R. Bruce <bbr...@ucdavis.edu>
Gerrit-Reviewer: Jason Lowe-Power <ja...@lowepower.com>
Gerrit-Reviewer: Nikos Nikoleris <nikos.nikole...@arm.com>
Gerrit-Reviewer: kokoro <noreply+kok...@google.com>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list
gem5-dev@gem5.org
http://m5sim.org/mailman/listinfo/gem5-dev