Gabe Black has submitted this change. ( https://gem5-review.googlesource.com/c/public/gem5/+/48504 )

Change subject: base: Use if constexpr to simplify the reverseBits function.
......................................................................

base: Use if constexpr to simplify the reverseBits function.

Handle the sizeof(T) == 1 special case within the function using if
constexpr, instead of having two functions.

Change-Id: Idce63e18c77d2f7cc59d86c19f42d57ccdbefe5c
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/48504
Reviewed-by: Daniel Carvalho <[email protected]>
Maintainer: Daniel Carvalho <[email protected]>
Tested-by: kokoro <[email protected]>
---
M src/base/bitfield.hh
1 file changed, 12 insertions(+), 15 deletions(-)

Approvals:
  Daniel Carvalho: Looks good to me, approved; Looks good to me, approved
  kokoro: Regressions pass



diff --git a/src/base/bitfield.hh b/src/base/bitfield.hh
index 30cc952..b2f3d63 100644
--- a/src/base/bitfield.hh
+++ b/src/base/bitfield.hh
@@ -232,26 +232,23 @@
  * @ingroup api_bitfield
  */
 template <class T>
-std::enable_if_t<std::is_integral<T>::value && sizeof(T) != 1, T>
+std::enable_if_t<std::is_integral_v<T>, T>
 reverseBits(T val, size_t size=sizeof(T))
 {
     assert(size <= sizeof(T));

-    T output = {};
-    for (size_t byte = 0; byte < size; byte++) {
-        output = (output << 8) | reverseBitsLookUpTable[val & mask(8)];
-        val >>= 8;
+    if constexpr (sizeof(T) == 1) {
+        return reverseBitsLookUpTable[val];
+    } else {
+        T output = {};
+
+        for (size_t byte = 0; byte < size; byte++) {
+            output = (output << 8) | reverseBitsLookUpTable[val & mask(8)];
+            val >>= 8;
+        }
+
+        return output;
     }
-
-    return output;
-}
-
-template <class T>
-std::enable_if_t<std::is_integral<T>::value && sizeof(T) == 1, T>
-reverseBits(T val, size_t size=sizeof(T))
-{
-    assert(size == 1);
-    return reverseBitsLookUpTable[val];
 }

 /**

--
To view, visit https://gem5-review.googlesource.com/c/public/gem5/+/48504
To unsubscribe, or for help writing mail filters, visit https://gem5-review.googlesource.com/settings

Gerrit-Project: public/gem5
Gerrit-Branch: develop
Gerrit-Change-Id: Idce63e18c77d2f7cc59d86c19f42d57ccdbefe5c
Gerrit-Change-Number: 48504
Gerrit-PatchSet: 2
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-Reviewer: Andreas Sandberg <[email protected]>
Gerrit-Reviewer: Bobby R. Bruce <[email protected]>
Gerrit-Reviewer: Daniel Carvalho <[email protected]>
Gerrit-Reviewer: Gabe Black <[email protected]>
Gerrit-Reviewer: Nikos Nikoleris <[email protected]>
Gerrit-Reviewer: kokoro <[email protected]>
Gerrit-MessageType: merged
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s

Reply via email to