From: Simon Josefsson Date: Mon, 1 Sep 2008 11:55:05 +0000 (+0200) Subject: bitrotate: Add 8 bit rotate functions. X-Git-Tag: v0.1~7093 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=e6a0d376a9b44cadd66d06e76d0c9181c20e4102;p=gnulib.git bitrotate: Add 8 bit rotate functions. --- diff --git a/ChangeLog b/ChangeLog index d085060b0..f741e0afe 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2008-09-01 Simon Josefsson + * lib/bitrotate.h (rotl8, rotr8): Add. + * modules/bitrotate (configure.ac): Need AC_REQUIRE([AC_C_INLINE]). (Description): Mention stdint.h. Reported by Bruno Haible diff --git a/lib/bitrotate.h b/lib/bitrotate.h index 8123a5c7f..1ac1cff42 100644 --- a/lib/bitrotate.h +++ b/lib/bitrotate.h @@ -57,4 +57,22 @@ rotr16 (uint16_t x, int n) return ((x >> n) | (x << (16 - n))) & 0xFFFF; } +/* Given an unsigned 8-bit argument X, return the value corresponding + to rotating the bits N steps to the left. N must be between 1 to 7 + inclusive. */ +static inline uint8_t +rotl8 (uint8_t x, int n) +{ + return ((x << n) | (x >> (8 - n))) & 0xFF; +} + +/* Given an unsigned 8-bit argument X, return the value corresponding + to rotating the bits N steps to the right. N must be in 1 to 7 + inclusive. */ +static inline uint8_t +rotr8 (uint8_t x, int n) +{ + return ((x >> n) | (x << (8 - n))) & 0xFF; +} + #endif /* _GL_BITROTATE_H */ diff --git a/modules/bitrotate b/modules/bitrotate index 13bd97e31..63124a89e 100644 --- a/modules/bitrotate +++ b/modules/bitrotate @@ -1,5 +1,5 @@ Description: -Rotate bits in 16 and 32 bit integers. +Rotate bits in unsigned 8, 16, and 32 bit integers. Files: lib/bitrotate.h