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

Reply via email to