]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - lib/bitmap.c
lib: bitmap: eliminate branch in __bitmap_shift_left
[mirror_ubuntu-artful-kernel.git] / lib / bitmap.c
index 74bdf3601245f8469f55bfd19f1aa3cab7eeceb8..36e380da00c5943011c2307227918c48ec71c2b4 100644 (file)
@@ -169,15 +169,14 @@ void __bitmap_shift_left(unsigned long *dst, const unsigned long *src,
                 * word below and make them the bottom rem bits of result.
                 */
                if (rem && k > 0)
-                       lower = src[k - 1];
+                       lower = src[k - 1] >> (BITS_PER_LONG - rem);
                else
                        lower = 0;
                upper = src[k];
                if (left && k == lim - 1)
                        upper &= (1UL << left) - 1;
-               dst[k + off] = upper << rem;
-               if (rem)
-                       dst[k + off] |= lower >> (BITS_PER_LONG - rem);
+               upper <<= rem;
+               dst[k + off] = lower | upper;
                if (left && k + off == lim - 1)
                        dst[k + off] &= (1UL << left) - 1;
        }