diff --git a/misc.h b/misc.h index 5ff4105c..5120b96c 100644 --- a/misc.h +++ b/misc.h @@ -1292,32 +1292,6 @@ CRYPTOPP_DLL void CRYPTOPP_API UnalignedDeallocate(void *ptr); // ************** rotate functions *************** -//! \brief Performs a left rotate -//! \tparam T the word type -//! \tparam Y the number of bit positions to rotate the value -//! \param x the value to rotate -//! \details This is a portable C/C++ implementation which attempts to take advantage of the -//! constexpr-ness of a template parameter in hopes of achieving better code -//! generation under Clang and VC++. If a specialization is not available, then -//! rotlImmediate simply calls rotlFixed. -template inline T rotlImmediate(T x) -{ - return rotlFixed(x, Y); -} - -//! \brief Performs a right rotate -//! \tparam T the word type -//! \tparam Y the number of bit positions to rotate the value -//! \param x the value to rotate -//! \details This is a portable C/C++ implementation which attempts to take advantage of the -//! constexpr-ness of a template parameter in hopes of achieving better code -//! generation under Clang and VC++. If a specialization is not available, then -//! rotrImmediate simply calls rotlFixed. -template inline T rotrFixed(T x) -{ - return rotrFixed(x, Y); -} - //! \brief Performs a left rotate //! \tparam T the word type //! \param x the value to rotate @@ -1426,35 +1400,6 @@ template inline T rotrMod(T x, unsigned int y) return T((x>>(y&MASK))|(x<<(-y&MASK))); } -#if defined(__GNUC__) && (CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X86 || CRYPTOPP_BOOL_X32) && 0 -template -inline word32 rotlImmediate(word32 x) -{ - __asm__ ("roll %1, %0" : "+mq" (x) : "I" ((unsigned char)Y)); - return x; -} -template -inline T rotlImmediate(word32 x) -{ - __asm__ ("rorl %1, %0" : "+mq" (x) : "I" ((unsigned char)Y)); - return x; -} -# if (CRYPTOPP_BOOL_X64 || CRYPTOPP_BOOL_X32) -template <> -inline word64 rotlImmediate(word64 x) -{ - __asm__ ("rolq %1, %0" : "+mq" (x) : "J" ((unsigned char)Y)); - return x; -} -template <> -inline T rotlImmediate(word64 x) -{ - __asm__ ("rorq %1, %0" : "+mq" (x) : "J" ((unsigned char)Y)); - return x; -} -# endif -#endif - #ifdef _MSC_VER //! \brief Performs a left rotate