From b49d95eaf3389df0b75ff8cb05004d965fdaeef1 Mon Sep 17 00:00:00 2001 From: Danny Robson Date: Mon, 20 Jun 2016 17:59:21 +1000 Subject: [PATCH] bitwise: add pure annotation to rotate functions --- bitwise.hpp | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/bitwise.hpp b/bitwise.hpp index 6be6c2d7..62c052bd 100644 --- a/bitwise.hpp +++ b/bitwise.hpp @@ -31,25 +31,21 @@ const uint8_t BITMASK_7BITS = 0x7F; const uint8_t BITMASK_8BITS = 0xFF; /////////////////////////////////////////////////////////////////////////////// -#define MODT(x) ((x) % (sizeof (T) * 8)) - template constexpr T -rotatel (const T &value, size_t magnitude) { - return (value << MODT (magnitude)) | - (value >> sizeof (value) * 8 - MODT (magnitude)); +rotatel [[gnu::pure]] (const T value, size_t magnitude) +{ + return (value << magnitude) | (value >> sizeof (value) * 8 - magnitude); } template constexpr T -rotater (const T &value, size_t magnitude) { - return (value >> MODT (magnitude)) | - (value << sizeof (value) * 8 - MODT (magnitude)); +rotater [[gnu::pure]] (const T value, size_t magnitude) +{ + return (value >> magnitude) | (value << sizeof (value) * 8 - magnitude); } -#undef MODT - /////////////////////////////////////////////////////////////////////////////// // TODO: make constexpr for C++14