X-Git-Url: https://git.distorted.org.uk/~mdw/mLib/blobdiff_plain/1dc931965d15b69def7e1fdd44b4397eca01e4c9..5892fd39c789b9207fe799e91080dbef773d30cb:/bits.h diff --git a/bits.h b/bits.h index 175e927..4618589 100644 --- a/bits.h +++ b/bits.h @@ -1,6 +1,6 @@ /* -*-c-*- * - * $Id: bits.h,v 1.10 2004/04/08 01:36:11 mdw Exp $ + * $Id$ * * Portable bit-level manipulation macros * @@ -217,12 +217,15 @@ typedef unsigned char octet; unsigned _s = (s) & 63u; \ uint32 _l = (v).lo, _h = (v).hi; \ kludge64 *_d = &(d); \ - if (_s >= 32) { \ + if (_s > 32) { \ _d->hi = LSL32(_l, _s - 32u) | LSR32(_h, 64u - _s); \ _d->lo = LSL32(_h, _s - 32u) | LSR32(_l, 64u - _s); \ } else if (!_s) { \ _d->lo = _l; \ _d->hi = _h; \ + } else if (_s == 32) { \ + _d->lo = _h; \ + _d->hi = _l; \ } else { \ _d->hi = LSL32(_h, _s) | LSR32(_l, 32u - _s); \ _d->lo = LSL32(_l, _s) | LSR32(_h, 32u - _s); \ @@ -232,12 +235,15 @@ typedef unsigned char octet; unsigned _s = (s) & 63u; \ uint32 _l = (v).lo, _h = (v).hi; \ kludge64 *_d = &(d); \ - if (_s >= 32) { \ + if (_s > 32) { \ _d->hi = LSR32(_l, _s - 32u) | LSL32(_h, 64u - _s); \ _d->lo = LSR32(_h, _s - 32u) | LSL32(_l, 64u - _s); \ } else if (!_s) { \ _d->lo = _l; \ _d->hi = _h; \ + } else if (_s == 32) { \ + _d->lo = _h; \ + _d->hi = _l; \ } else { \ _d->hi = LSR32(_h, _s) | LSL32(_l, 32u - _s); \ _d->lo = LSR32(_l, _s) | LSL32(_h, 32u - _s); \