Lines Matching defs:BO
166 if (auto *BO = dyn_cast<BinaryOperator>(Op)) {
167 if (BO->getParent() == Mul->getParent() &&
168 IsFreeTruncation(BO->getOperand(0)) &&
169 IsFreeTruncation(BO->getOperand(1)) &&
360 const auto *BO = dyn_cast<BinaryOperator>(EE.getVectorOperand());
361 if (!BO || BO->getOpcode() != Instruction::Add || !BO->hasOneUse())
363 if (EE.getParent() != BO->getParent())
366 unsigned NumElems = cast<FixedVectorType>(BO->getType())->getNumElements();
371 const Value *Op = BO;
374 const auto *BO = dyn_cast<BinaryOperator>(Op);
375 if (!BO || BO->getOpcode() != Instruction::Add)
377 if (EE.getParent() != BO->getParent())
382 if (i != 0 && !BO->hasNUses(2))
385 Value *LHS = BO->getOperand(0);
386 Value *RHS = BO->getOperand(1);
411 // See if this BO is reachable from this Phi by walking forward through single
414 static bool isReachableFromPHI(PHINode *Phi, BinaryOperator *BO) {
420 if (U == BO)
423 while (U->hasOneUse() && U->getOpcode() == BO->getOpcode())
426 return U == BO;
455 if (auto *BO = dyn_cast<BinaryOperator>(V)) {
456 if (BO->getOpcode() == Instruction::Add) {
458 if (BO->hasNUses(BO == Root ? 2 : 1)) {
459 append_range(Worklist, BO->operands());
465 if (BO->hasNUses(BO == Root ? 3 : 2)) {
467 for (auto *U : BO->users())
478 if (!isReachableFromPHI(PN, BO))
482 append_range(Worklist, BO->operands());