Lines Matching refs:BO

164   auto *BO = dyn_cast<BinaryOperator>(V);  in isReassociableOp()  local
165 if (BO && BO->hasOneUse() && BO->getOpcode() == Opcode) in isReassociableOp()
166 if (!isa<FPMathOperator>(BO) || hasFPAssociativeFlags(BO)) in isReassociableOp()
167 return BO; in isReassociableOp()
173 auto *BO = dyn_cast<BinaryOperator>(V); in isReassociableOp() local
174 if (BO && BO->hasOneUse() && in isReassociableOp()
175 (BO->getOpcode() == Opcode1 || BO->getOpcode() == Opcode2)) in isReassociableOp()
176 if (!isa<FPMathOperator>(BO) || hasFPAssociativeFlags(BO)) in isReassociableOp()
177 return BO; in isReassociableOp()
444 if (BinaryOperator *BO = isReassociableOp(Op, Opcode)) { in LinearizeExprTree() local
447 Worklist.push_back(std::make_pair(BO, Weight)); in LinearizeExprTree()
636 BinaryOperator *BO = isReassociableOp(OldLHS, Opcode); in RewriteExprTree() local
637 if (BO && !NotRewritable.count(BO)) in RewriteExprTree()
638 NodesToRewrite.push_back(BO); in RewriteExprTree()
642 BinaryOperator *BO = isReassociableOp(OldRHS, Opcode); in RewriteExprTree() local
643 if (BO && !NotRewritable.count(BO)) in RewriteExprTree()
644 NodesToRewrite.push_back(BO); in RewriteExprTree()
669 BinaryOperator *BO = isReassociableOp(Op->getOperand(1), Opcode); in RewriteExprTree() local
670 if (BO && !NotRewritable.count(BO)) in RewriteExprTree()
671 NodesToRewrite.push_back(BO); in RewriteExprTree()
685 BinaryOperator *BO = isReassociableOp(Op->getOperand(0), Opcode); in RewriteExprTree() local
686 if (BO && !NotRewritable.count(BO)) { in RewriteExprTree()
687 Op = BO; in RewriteExprTree()
765 for (BinaryOperator *BO : NodesToRewrite) in RewriteExprTree()
766 RedoInsts.insert(BO); in RewriteExprTree()
1101 BinaryOperator *BO = isReassociableOp(V, Instruction::Mul, Instruction::FMul); in RemoveFactorFromExpression() local
1102 if (!BO) in RemoveFactorFromExpression()
1107 MadeChange |= LinearizeExprTree(BO, Tree, RedoInsts, Flags); in RemoveFactorFromExpression()
1148 RewriteExprTree(BO, Factors, Flags); in RemoveFactorFromExpression()
1152 BasicBlock::iterator InsertPt = ++BO->getIterator(); in RemoveFactorFromExpression()
1157 RedoInsts.insert(BO); in RemoveFactorFromExpression()
1160 RewriteExprTree(BO, Factors, Flags); in RemoveFactorFromExpression()
1161 V = BO; in RemoveFactorFromExpression()
1165 V = CreateNeg(V, "neg", InsertPt, BO); in RemoveFactorFromExpression()
1176 BinaryOperator *BO = isReassociableOp(V, Instruction::Mul, Instruction::FMul); in FindSingleUseMultiplyFactors() local
1177 if (!BO) { in FindSingleUseMultiplyFactors()
1183 FindSingleUseMultiplyFactors(BO->getOperand(1), Factors); in FindSingleUseMultiplyFactors()
1184 FindSingleUseMultiplyFactors(BO->getOperand(0), Factors); in FindSingleUseMultiplyFactors()
2255 BinaryOperator *BO = cast<BinaryOperator>(I); in OptimizeInst() local
2259 unsigned Opcode = BO->getOpcode(); in OptimizeInst()
2260 if (BO->hasOneUse() && BO->user_back()->getOpcode() == Opcode) { in OptimizeInst()
2264 if (BO->user_back() != BO && in OptimizeInst()
2265 BO->getParent() == BO->user_back()->getParent()) in OptimizeInst()
2266 RedoInsts.insert(BO->user_back()); in OptimizeInst()
2272 if (BO->hasOneUse() && BO->getOpcode() == Instruction::Add && in OptimizeInst()
2273 cast<Instruction>(BO->user_back())->getOpcode() == Instruction::Sub) in OptimizeInst()
2275 if (BO->hasOneUse() && BO->getOpcode() == Instruction::FAdd && in OptimizeInst()
2276 cast<Instruction>(BO->user_back())->getOpcode() == Instruction::FSub) in OptimizeInst()
2279 ReassociateExpression(BO); in OptimizeInst()