Gabe Black has uploaded this change for review. (
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
---
M src/base/bitfield.hh
1 file changed, 12 insertions(+), 15 deletions(-)
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: 1
Gerrit-Owner: Gabe Black <[email protected]>
Gerrit-MessageType: newchange
_______________________________________________
gem5-dev mailing list -- [email protected]
To unsubscribe send an email to [email protected]
%(web_page_url)slistinfo%(cgiext)s/%(_internal_name)s