mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-01-01 16:40:15 +00:00
this inline function moved to addsub
llvm-svn: 92705
This commit is contained in:
parent
63747a10a8
commit
e36e3b586d
@ -251,30 +251,6 @@ static inline Value *dyn_castNotVal(Value *V) {
|
||||
|
||||
|
||||
|
||||
// dyn_castFoldableMul - If this value is a multiply that can be folded into
|
||||
// other computations (because it has a constant operand), return the
|
||||
// non-constant operand of the multiply, and set CST to point to the multiplier.
|
||||
// Otherwise, return null.
|
||||
//
|
||||
static inline Value *dyn_castFoldableMul(Value *V, ConstantInt *&CST) {
|
||||
if (V->hasOneUse() && V->getType()->isInteger())
|
||||
if (Instruction *I = dyn_cast<Instruction>(V)) {
|
||||
if (I->getOpcode() == Instruction::Mul)
|
||||
if ((CST = dyn_cast<ConstantInt>(I->getOperand(1))))
|
||||
return I->getOperand(0);
|
||||
if (I->getOpcode() == Instruction::Shl)
|
||||
if ((CST = dyn_cast<ConstantInt>(I->getOperand(1)))) {
|
||||
// The multiplier is really 1 << CST.
|
||||
uint32_t BitWidth = cast<IntegerType>(V->getType())->getBitWidth();
|
||||
uint32_t CSTVal = CST->getLimitedValue(BitWidth);
|
||||
CST = ConstantInt::get(V->getType()->getContext(),
|
||||
APInt(BitWidth, 1).shl(CSTVal));
|
||||
return I->getOperand(0);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/// AddOne - Add one to a ConstantInt.
|
||||
static Constant *AddOne(Constant *C) {
|
||||
return ConstantExpr::getAdd(C, ConstantInt::get(C->getType(), 1));
|
||||
|
Loading…
Reference in New Issue
Block a user