[llvm-commits] CVS: llvm/include/llvm/ADT/APInt.h
Chris Lattner
clattner at apple.com
Sat Mar 24 16:31:24 PDT 2007
> /// @param loBit the index of the lowest bit set.
> /// @returns An APInt value with the requested bits set.
> /// @brief Get a value with a block of bits set.
> - static APInt getBitsSet(uint32_t numBits, uint32_t hiBit,
> uint32_t loBit = 0);
> + static APInt getBitsSet(uint32_t numBits, uint32_t hiBit,
> uint32_t loBit = 0){
> + assert(hiBit < numBits && "hiBit out of range");
> + assert(loBit < numBits && "loBit out of range");
> + if (hiBit < loBit)
Hrm? Why would you allow hiBit < loBit? This seems like something
that should be asserted against.
> + return getLowBitsSet(numBits, hiBit+1) |
> + getHighBitsSet(numBits, numBits-loBit+1);
> + else if (loBit == 0)
> + return getLowBitsSet(numBits, hiBit+1);
Do you need this special case for correctness?
-Chris
> + return getLowBitsSet(numBits, hiBit-loBit+1).shl(loBit);
> + }
>
> /// Constructs an APInt value that has the top hiBitsSet bits set.
> /// @param numBits the bitwidth of the result
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list