>> + /// getSignBit - Return a uint64_t with just the most >> significant bit set (the >> + /// sign bit, if the value is treated as a signed number). >> + uint64_t getSignBit() const { >> + return 1ULL << (getBitWidth()-1); >> + } >> + > > I'm trying to get rid of such functions and you're adding more of > them :)
The thought occurred to me :). However, this is used in InstCombiner::SimplifyDemandedBits, which will require significant work to APInt'ify. Using a function like this (instead of localized bit-twiddling) will at least help distill the intention out of the code. > Please note that in many places (like the place you intend to use > getSignBit), it may be necessary to use APInt::getSignedMinValue() for > this value to enable it to work with > 64 bits. The exception to > this is > GEP indexing which are known to be 32/64 bit indices. If your use is > similar, I suppose this is fine. If not, please note that when > InstructionCombining is done (Sheng's working on it), I intend to pass > through LLVM and get rid of calls to both of these functions, if > appropriate. I strongly encourage Sheng to do instcombine one piece at a time: say visitAND, then visitOR (etc) and submit them as separate patches. Blasting me with one huge patch is not going to earn brownie points, and if/when it breaks something, it won't be easy to track down what part of the huge change did it. -Chris _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits