[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