Lines Matching refs:BO
157 auto *BO = dyn_cast<BinaryOperator>(V); in isReassociableOp() local
158 if (BO && BO->hasOneUse() && BO->getOpcode() == Opcode) in isReassociableOp()
159 if (!isa<FPMathOperator>(BO) || hasFPAssociativeFlags(BO)) in isReassociableOp()
160 return BO; in isReassociableOp()
166 auto *BO = dyn_cast<BinaryOperator>(V); in isReassociableOp() local
167 if (BO && BO->hasOneUse() && in isReassociableOp()
168 (BO->getOpcode() == Opcode1 || BO->getOpcode() == Opcode2)) in isReassociableOp()
169 if (!isa<FPMathOperator>(BO) || hasFPAssociativeFlags(BO)) in isReassociableOp()
170 return BO; in isReassociableOp()
519 if (BinaryOperator *BO = isReassociableOp(Op, Opcode)) { in LinearizeExprTree() local
522 Worklist.push_back(std::make_pair(BO, Weight)); in LinearizeExprTree()
560 if (BinaryOperator *BO = isReassociableOp(Op, Opcode)) { in LinearizeExprTree()
562 Worklist.push_back(std::make_pair(BO, It->second)); in LinearizeExprTree()
718 BinaryOperator *BO = isReassociableOp(OldLHS, Opcode); in RewriteExprTree() local
719 if (BO && !NotRewritable.count(BO)) in RewriteExprTree()
720 NodesToRewrite.push_back(BO); in RewriteExprTree()
724 BinaryOperator *BO = isReassociableOp(OldRHS, Opcode); in RewriteExprTree() local
725 if (BO && !NotRewritable.count(BO)) in RewriteExprTree()
726 NodesToRewrite.push_back(BO); in RewriteExprTree()
749 BinaryOperator *BO = isReassociableOp(Op->getOperand(1), Opcode); in RewriteExprTree() local
750 if (BO && !NotRewritable.count(BO)) in RewriteExprTree()
751 NodesToRewrite.push_back(BO); in RewriteExprTree()
763 BinaryOperator *BO = isReassociableOp(Op->getOperand(0), Opcode); in RewriteExprTree() local
764 if (BO && !NotRewritable.count(BO)) { in RewriteExprTree()
765 Op = BO; in RewriteExprTree()
1158 BinaryOperator *BO = isReassociableOp(V, Instruction::Mul, Instruction::FMul); in RemoveFactorFromExpression() local
1159 if (!BO) in RemoveFactorFromExpression()
1163 MadeChange |= LinearizeExprTree(BO, Tree, RedoInsts); in RemoveFactorFromExpression()
1205 RewriteExprTree(BO, Factors); in RemoveFactorFromExpression()
1209 BasicBlock::iterator InsertPt = ++BO->getIterator(); in RemoveFactorFromExpression()
1214 RedoInsts.insert(BO); in RemoveFactorFromExpression()
1217 RewriteExprTree(BO, Factors); in RemoveFactorFromExpression()
1218 V = BO; in RemoveFactorFromExpression()
1222 V = CreateNeg(V, "neg", &*InsertPt, BO); in RemoveFactorFromExpression()
1233 BinaryOperator *BO = isReassociableOp(V, Instruction::Mul, Instruction::FMul); in FindSingleUseMultiplyFactors() local
1234 if (!BO) { in FindSingleUseMultiplyFactors()
1240 FindSingleUseMultiplyFactors(BO->getOperand(1), Factors); in FindSingleUseMultiplyFactors()
1241 FindSingleUseMultiplyFactors(BO->getOperand(0), Factors); in FindSingleUseMultiplyFactors()
2312 BinaryOperator *BO = cast<BinaryOperator>(I); in OptimizeInst() local
2316 unsigned Opcode = BO->getOpcode(); in OptimizeInst()
2317 if (BO->hasOneUse() && BO->user_back()->getOpcode() == Opcode) { in OptimizeInst()
2321 if (BO->user_back() != BO && in OptimizeInst()
2322 BO->getParent() == BO->user_back()->getParent()) in OptimizeInst()
2323 RedoInsts.insert(BO->user_back()); in OptimizeInst()
2329 if (BO->hasOneUse() && BO->getOpcode() == Instruction::Add && in OptimizeInst()
2330 cast<Instruction>(BO->user_back())->getOpcode() == Instruction::Sub) in OptimizeInst()
2332 if (BO->hasOneUse() && BO->getOpcode() == Instruction::FAdd && in OptimizeInst()
2333 cast<Instruction>(BO->user_back())->getOpcode() == Instruction::FSub) in OptimizeInst()
2336 ReassociateExpression(BO); in OptimizeInst()