From 5412b20b47fa05849adfe80ffdeb9e63a817da7b Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Fri, 23 Jul 2021 21:29:25 -0700 Subject: [PATCH] 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 Maintainer: Daniel Carvalho Tested-by: kokoro --- src/base/bitfield.hh | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/base/bitfield.hh b/src/base/bitfield.hh index 30cc952d09..b2f3d6327b 100644 --- a/src/base/bitfield.hh +++ b/src/base/bitfield.hh @@ -232,26 +232,23 @@ replaceBits(T& val, unsigned bit, B bit_val) * @ingroup api_bitfield */ template -std::enable_if_t::value && sizeof(T) != 1, T> +std::enable_if_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 -std::enable_if_t::value && sizeof(T) == 1, T> -reverseBits(T val, size_t size=sizeof(T)) -{ - assert(size == 1); - return reverseBitsLookUpTable[val]; } /**