mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-02 22:23:10 +00:00
Remove an unnecessary if statement and adjust indentation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@34939 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -2407,31 +2407,29 @@ Instruction *InstCombiner::visitUDiv(BinaryOperator &I) {
|
|||||||
|
|
||||||
// udiv X, (Select Cond, C1, C2) --> Select Cond, (shr X, C1), (shr X, C2)
|
// udiv X, (Select Cond, C1, C2) --> Select Cond, (shr X, C1), (shr X, C2)
|
||||||
// where C1&C2 are powers of two.
|
// where C1&C2 are powers of two.
|
||||||
if (SelectInst *SI = dyn_cast<SelectInst>(Op1)) {
|
if (SelectInst *SI = dyn_cast<SelectInst>(Op1))
|
||||||
if (ConstantInt *STO = dyn_cast<ConstantInt>(SI->getOperand(1)))
|
if (ConstantInt *STO = dyn_cast<ConstantInt>(SI->getOperand(1)))
|
||||||
if (ConstantInt *SFO = dyn_cast<ConstantInt>(SI->getOperand(2)))
|
if (ConstantInt *SFO = dyn_cast<ConstantInt>(SI->getOperand(2))) {
|
||||||
if (!STO->isNullValue() && !STO->isNullValue()) {
|
uint64_t TVA = STO->getZExtValue(), FVA = SFO->getZExtValue();
|
||||||
uint64_t TVA = STO->getZExtValue(), FVA = SFO->getZExtValue();
|
if (isPowerOf2_64(TVA) && isPowerOf2_64(FVA)) {
|
||||||
if (isPowerOf2_64(TVA) && isPowerOf2_64(FVA)) {
|
// Compute the shift amounts
|
||||||
// Compute the shift amounts
|
unsigned TSA = Log2_64(TVA), FSA = Log2_64(FVA);
|
||||||
unsigned TSA = Log2_64(TVA), FSA = Log2_64(FVA);
|
// Construct the "on true" case of the select
|
||||||
// Construct the "on true" case of the select
|
Constant *TC = ConstantInt::get(Op0->getType(), TSA);
|
||||||
Constant *TC = ConstantInt::get(Op0->getType(), TSA);
|
Instruction *TSI = BinaryOperator::createLShr(
|
||||||
Instruction *TSI = BinaryOperator::createLShr(
|
Op0, TC, SI->getName()+".t");
|
||||||
Op0, TC, SI->getName()+".t");
|
TSI = InsertNewInstBefore(TSI, I);
|
||||||
TSI = InsertNewInstBefore(TSI, I);
|
|
||||||
|
// Construct the "on false" case of the select
|
||||||
// Construct the "on false" case of the select
|
Constant *FC = ConstantInt::get(Op0->getType(), FSA);
|
||||||
Constant *FC = ConstantInt::get(Op0->getType(), FSA);
|
Instruction *FSI = BinaryOperator::createLShr(
|
||||||
Instruction *FSI = BinaryOperator::createLShr(
|
Op0, FC, SI->getName()+".f");
|
||||||
Op0, FC, SI->getName()+".f");
|
FSI = InsertNewInstBefore(FSI, I);
|
||||||
FSI = InsertNewInstBefore(FSI, I);
|
|
||||||
|
|
||||||
// construct the select instruction and return it.
|
// construct the select instruction and return it.
|
||||||
return new SelectInst(SI->getOperand(0), TSI, FSI, SI->getName());
|
return new SelectInst(SI->getOperand(0), TSI, FSI, SI->getName());
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user