Lines Matching defs:BO
137 auto *BO = dyn_cast<BinaryOperator>(Start);
138 if (!BO || (BO->getOpcode() != Instruction::Add &&
139 BO->getOpcode() != Instruction::Or &&
140 BO->getOpcode() != Instruction::Shl &&
141 BO->getOpcode() != Instruction::Mul))
144 if (BO->getOpcode() == Instruction::Or &&
145 !cast<PossiblyDisjointInst>(BO)->isDisjoint())
150 Value *Splat = getSplatValue(BO->getOperand(1));
151 if (!Splat && Instruction::isCommutative(BO->getOpcode())) {
152 Splat = getSplatValue(BO->getOperand(0));
159 std::tie(Start, Stride) = matchStridedStart(BO->getOperand(OtherIndex),
164 Builder.SetInsertPoint(BO);
168 switch (BO->getOpcode()) {
244 auto *BO = dyn_cast<BinaryOperator>(Index);
245 if (!BO)
248 switch (BO->getOpcode()) {
253 if (!cast<PossiblyDisjointInst>(BO)->isDisjoint())
266 if (isa<Instruction>(BO->getOperand(0)) &&
267 L->contains(cast<Instruction>(BO->getOperand(0)))) {
268 Index = cast<Instruction>(BO->getOperand(0));
269 OtherOp = BO->getOperand(1);
270 } else if (isa<Instruction>(BO->getOperand(1)) &&
271 L->contains(cast<Instruction>(BO->getOperand(1))) &&
272 Instruction::isCommutative(BO->getOpcode())) {
273 Index = cast<Instruction>(BO->getOperand(1));
274 OtherOp = BO->getOperand(0);
303 switch (BO->getOpcode()) {