>>> Make some codes more efficient. >>> >>> @@ -5813,7 +5816,6 @@ >>> case 16 : SExtType = Type::Int16Ty; break; >>> case 32 : SExtType = Type::Int32Ty; break; >>> case 64 : SExtType = Type::Int64Ty; break; >>> - case 128: SExtType = IntegerType::get(128); break; >>> default: break; >>> } >>> if (SExtType) { >> >> why did you remove this? > > I asked Sheng to remove it because the back ends cannot deal with 128 > bit integers.
There is partial support already in place, and at some point, it should be extended. See, for example: CodeGen/Generic/i128-arith.ll which works on all targets with the native codegen. >>> @@ -5833,7 +5835,7 @@ >>> BinaryOperator::createShl(X, ConstantInt::get(Ty, >>> ShiftDiff)); >>> InsertNewInstBefore(Shift, I); >>> >>> - APInt Mask(APInt::getAllOnesValue(TypeBits).shl >>> (ShiftAmt2)); >>> + APInt Mask(Ty->getMask().shl(ShiftAmt2)); >> >> You touched many instances of this. Please make a new >> APInt::getHighBits method. > > The method getHiBits already exists and is used to extrat the N hi > bits > from an existing APInt, not construct a new value. I have just > committed > a re-organization of the APInt interface (mostly for documentation > purposes) but while I was at it I added three new functions that > should > address this need: Nice. -Chris > > /// Constructs an APInt value that has a contiguous range of bits > set. > The > /// bits from loBit to hiBit will be set. All other bits will be > zero. > For > /// example, with parameters(32, 15, 0) you would get 0x0000FFFF. If > hiBit is > /// less than loBit then the set bits "wrap". For example, with > /// parameters (32, 3, 28), you would get 0xF000000F. > /// @param numBits the intended bit width of the result > /// @param hiBit the index of the highest bit set. > /// @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); > > /// Constructs an APInt value that has the top hiBitsSet bits set. > /// @param numBits the bitwidth of the result > /// @param hiBitsSet the number of high-order bits set in the > result. > /// @brief Get a value with high bits set > static APInt getHighBitsSet(uint32_t numBits, uint32_t hiBitsSet); > > /// Constructs an APInt value that has the bottom loBitsSet bits > set. > /// @param numBits the bitwidth of the result > /// @param loBitsSet the number of low-order bits set in the result. > /// @brief Get a value with low bits set > static APInt getLowBitsSet(uint32_t numBits, uint32_t loBitsSet); > > Reid. > >> >> -Chris >> _______________________________________________ >> llvm-commits mailing list >> llvm-commits@cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits > _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits