[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