From bc9f60b6bbba4d383dad6215f8974f50b76c9781 Mon Sep 17 00:00:00 2001 Message-Id: From: Mark Wooding Date: Thu, 17 Jun 1999 00:12:46 +0000 Subject: [PATCH] Improve portability for shift and rotate macros. Organization: Straylight/Edgeware From: mdw --- bits.h | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/bits.h b/bits.h index 9d7c6d0..4da3026 100644 --- a/bits.h +++ b/bits.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: bits.h,v 1.1 1999/06/01 09:46:19 mdw Exp $ + * $Id: bits.h,v 1.2 1999/06/17 00:12:46 mdw Exp $ * * Portable bit-level manipulation macros * @@ -30,6 +30,9 @@ /*----- Revision history --------------------------------------------------* * * $Log: bits.h,v $ + * Revision 1.2 1999/06/17 00:12:46 mdw + * Improve portability for shift and rotate macros. + * * Revision 1.1 1999/06/01 09:46:19 mdw * New addition: bit manipulation macros. * @@ -93,21 +96,21 @@ typedef unsigned char octet; /* --- Safe shifting macros --- */ -#define LSL8(v, s) (U8(v) << ((s) & 7u)) -#define LSR8(v, s) (U8(v) >> ((s) & 7u)) -#define LSL16(v, s) (U16(v) << ((s) & 15u)) -#define LSR16(v, s) (U16(v) >> ((s) & 15u)) -#define LSL32(v, s) (U32(v) << ((s) & 31u)) -#define LSR32(v, s) (U32(v) >> ((s) & 31u)) +#define LSL8(v, s) U8(U8(v) << ((s) & 7u)) +#define LSR8(v, s) U8(U8(v) >> ((s) & 7u)) +#define LSL16(v, s) U16(U16(v) << ((s) & 15u)) +#define LSR16(v, s) U16(U16(v) >> ((s) & 15u)) +#define LSL32(v, s) U32(U32(v) << ((s) & 31u)) +#define LSR32(v, s) U32(U32(v) >> ((s) & 31u)) /* --- Rotation macros --- */ -#define ROL8(v, s) (LSL8((v), (s)) | (LSR8((v), 8 - (s)))) -#define ROR8(v, s) (LSR8((v), (s)) | (LSL8((v), 8 - (s)))) -#define ROL16(v, s) (LSL16((v), (s)) | (LSR16((v), 16 - (s)))) -#define ROR16(v, s) (LSR16((v), (s)) | (LSL16((v), 16 - (s)))) -#define ROL32(v, s) (LSL32((v), (s)) | (LSR32((v), 32 - (s)))) -#define ROR32(v, s) (LSR32((v), (s)) | (LSL32((v), 32 - (s)))) +#define ROL8(v, s) (LSL8((v), (s)) | (LSR8((v), 8u - (s)))) +#define ROR8(v, s) (LSR8((v), (s)) | (LSL8((v), 8u - (s)))) +#define ROL16(v, s) (LSL16((v), (s)) | (LSR16((v), 16u - (s)))) +#define ROR16(v, s) (LSR16((v), (s)) | (LSL16((v), 16u - (s)))) +#define ROL32(v, s) (LSL32((v), (s)) | (LSR32((v), 32u - (s)))) +#define ROR32(v, s) (LSR32((v), (s)) | (LSL32((v), 32u - (s)))) /* --- Storage and retrieval --- */ -- [mdw]