Skip to content

Commit

Permalink
[CGP] Make several static functions member functions (NFC)
Browse files Browse the repository at this point in the history
This is extracted from D59696 as suggested in the review. It is
preparation for making the DominatorTree a member variable.

llvm-svn: 356857
  • Loading branch information
teresajohnson committed Mar 24, 2019
1 parent 2725717 commit 4dc8519
Showing 1 changed file with 25 additions and 19 deletions.
44 changes: 25 additions & 19 deletions llvm/lib/CodeGen/CodeGenPrepare.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -374,6 +374,13 @@ class TypePromotionTransaction;
bool simplifyOffsetableRelocate(Instruction &I);

bool tryToSinkFreeOperands(Instruction *I);
bool replaceMathCmpWithIntrinsic(BinaryOperator *BO, CmpInst *Cmp,
Intrinsic::ID IID, DominatorTree &DT);
bool optimizeCmp(CmpInst *Cmp, DominatorTree &DT, bool &ModifiedDT);
bool combineToUSubWithOverflow(CmpInst *Cmp, DominatorTree &DT,
bool &ModifiedDT);
bool combineToUAddWithOverflow(CmpInst *Cmp, DominatorTree &DT,
bool &ModifiedDT);
};

} // end anonymous namespace
Expand Down Expand Up @@ -1157,8 +1164,10 @@ static bool OptimizeNoopCopyExpression(CastInst *CI, const TargetLowering &TLI,
return SinkCast(CI);
}

static bool replaceMathCmpWithIntrinsic(BinaryOperator *BO, CmpInst *Cmp,
Intrinsic::ID IID, DominatorTree &DT) {
bool CodeGenPrepare::replaceMathCmpWithIntrinsic(BinaryOperator *BO,
CmpInst *Cmp,
Intrinsic::ID IID,
DominatorTree &DT) {
// We allow matching the canonical IR (add X, C) back to (usubo X, -C).
Value *Arg0 = BO->getOperand(0);
Value *Arg1 = BO->getOperand(1);
Expand Down Expand Up @@ -1242,17 +1251,16 @@ static bool matchUAddWithOverflowConstantEdgeCases(CmpInst *Cmp,

/// Try to combine the compare into a call to the llvm.uadd.with.overflow
/// intrinsic. Return true if any changes were made.
static bool combineToUAddWithOverflow(CmpInst *Cmp, const TargetLowering &TLI,
const DataLayout &DL, DominatorTree &DT,
bool &ModifiedDT) {
bool CodeGenPrepare::combineToUAddWithOverflow(CmpInst *Cmp, DominatorTree &DT,
bool &ModifiedDT) {
Value *A, *B;
BinaryOperator *Add;
if (!match(Cmp, m_UAddWithOverflow(m_Value(A), m_Value(B), m_BinOp(Add))))
if (!matchUAddWithOverflowConstantEdgeCases(Cmp, Add))
return false;

if (!TLI.shouldFormOverflowOp(ISD::UADDO,
TLI.getValueType(DL, Add->getType())))
if (!TLI->shouldFormOverflowOp(ISD::UADDO,
TLI->getValueType(*DL, Add->getType())))
return false;

// We don't want to move around uses of condition values this late, so we
Expand All @@ -1269,9 +1277,8 @@ static bool combineToUAddWithOverflow(CmpInst *Cmp, const TargetLowering &TLI,
return true;
}

static bool combineToUSubWithOverflow(CmpInst *Cmp, const TargetLowering &TLI,
const DataLayout &DL, DominatorTree &DT,
bool &ModifiedDT) {
bool CodeGenPrepare::combineToUSubWithOverflow(CmpInst *Cmp, DominatorTree &DT,
bool &ModifiedDT) {
// We are not expecting non-canonical/degenerate code. Just bail out.
Value *A = Cmp->getOperand(0), *B = Cmp->getOperand(1);
if (isa<Constant>(A) && isa<Constant>(B))
Expand Down Expand Up @@ -1319,8 +1326,8 @@ static bool combineToUSubWithOverflow(CmpInst *Cmp, const TargetLowering &TLI,
if (!Sub)
return false;

if (!TLI.shouldFormOverflowOp(ISD::USUBO,
TLI.getValueType(DL, Sub->getType())))
if (!TLI->shouldFormOverflowOp(ISD::USUBO,
TLI->getValueType(*DL, Sub->getType())))
return false;

if (!replaceMathCmpWithIntrinsic(Sub, Cmp, Intrinsic::usub_with_overflow, DT))
Expand Down Expand Up @@ -1397,16 +1404,15 @@ static bool sinkCmpExpression(CmpInst *Cmp, const TargetLowering &TLI) {
return MadeChange;
}

static bool optimizeCmp(CmpInst *Cmp, const TargetLowering &TLI,
const DataLayout &DL, DominatorTree &DT,
bool &ModifiedDT) {
if (sinkCmpExpression(Cmp, TLI))
bool CodeGenPrepare::optimizeCmp(CmpInst *Cmp, DominatorTree &DT,
bool &ModifiedDT) {
if (sinkCmpExpression(Cmp, *TLI))
return true;

if (combineToUAddWithOverflow(Cmp, TLI, DL, DT, ModifiedDT))
if (combineToUAddWithOverflow(Cmp, DT, ModifiedDT))
return true;

if (combineToUSubWithOverflow(Cmp, TLI, DL, DT, ModifiedDT))
if (combineToUSubWithOverflow(Cmp, DT, ModifiedDT))
return true;

return false;
Expand Down Expand Up @@ -6926,7 +6932,7 @@ bool CodeGenPrepare::optimizeInst(Instruction *I, DominatorTree &DT,
}

if (auto *Cmp = dyn_cast<CmpInst>(I))
if (TLI && optimizeCmp(Cmp, *TLI, *DL, DT, ModifiedDT))
if (TLI && optimizeCmp(Cmp, DT, ModifiedDT))
return true;

if (LoadInst *LI = dyn_cast<LoadInst>(I)) {
Expand Down

0 comments on commit 4dc8519

Please sign in to comment.