Lines Matching refs:Op1
892 Value *Op0 = LHS->getOperand(0), *Op1 = LHS->getOperand(1); in FoldAndOfICmps() local
895 return getNewICmpValue(isSigned, Code, Op0, Op1, Builder); in FoldAndOfICmps()
1207 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitAnd() local
1212 if (Value *V = SimplifyAndInst(Op0, Op1, DL, TLI, DT, AC)) in visitAnd()
1227 if (ConstantInt *AndRHS = dyn_cast<ConstantInt>(Op1)) { in visitAnd()
1334 if (Value *Op1NotVal = dyn_castNotVal(Op1)) in visitAnd()
1335 if (Op0->hasOneUse() && Op1->hasOneUse()) { in visitAnd()
1345 match(Op1, m_Not(m_And(m_Value(C), m_Value(D)))) && in visitAnd()
1350 if (match(Op1, m_Or(m_Value(A), m_Value(B))) && in visitAnd()
1358 Value *tmpOp1 = Op1; in visitAnd()
1361 if (A == Op1 || B == Op1 ) { in visitAnd()
1363 tmpOp0 = Op1; in visitAnd()
1383 if (match(Op0, m_Or(m_Not(m_Specific(Op1)), m_Value(A))) || in visitAnd()
1384 match(Op0, m_Or(m_Value(A), m_Not(m_Specific(Op1))))) in visitAnd()
1385 return BinaryOperator::CreateAnd(A, Op1); in visitAnd()
1386 if (match(Op1, m_Or(m_Not(m_Specific(Op0)), m_Value(A))) || in visitAnd()
1387 match(Op1, m_Or(m_Value(A), m_Not(m_Specific(Op0))))) in visitAnd()
1392 if (match(Op1, m_Xor(m_Xor(m_Specific(B), m_Value(C)), m_Specific(A)))) in visitAnd()
1393 if (Op1->hasOneUse() || cast<BinaryOperator>(Op1)->hasOneUse()) in visitAnd()
1398 if (match(Op1, m_Xor(m_Specific(B), m_Specific(A)))) in visitAnd()
1400 return BinaryOperator::CreateAnd(Op1, Builder->CreateNot(C)); in visitAnd()
1404 match(Op1, m_Xor(m_Not(m_Specific(A)), m_Specific(B)))) in visitAnd()
1409 match(Op1, m_Or(m_Specific(A), m_Specific(B)))) in visitAnd()
1415 ICmpInst *RHS = dyn_cast<ICmpInst>(Op1); in visitAnd()
1423 if (LHS && match(Op1, m_OneUse(m_And(m_Value(X), m_Value(Y))))) { in visitAnd()
1450 if (CastInst *Op1C = dyn_cast<CastInst>(Op1)) { in visitAnd()
1484 if (match(Op1, m_SExt(m_Value())) || in visitAnd()
1485 match(Op1, m_Not(m_Value()))) { in visitAnd()
1486 std::swap(Op0, Op1); in visitAnd()
1493 Value *Zero = Constant::getNullValue(Op1->getType()); in visitAnd()
1494 return SelectInst::Create(X, Op1, Zero); in visitAnd()
1501 return SelectInst::Create(X, Zero, Op1); in visitAnd()
1505 std::swap(Op0, Op1); in visitAnd()
1794 Value *Op0 = LHS->getOperand(0), *Op1 = LHS->getOperand(1); in FoldOrOfICmps() local
1797 return getNewICmpValue(isSigned, Code, Op0, Op1, Builder); in FoldOrOfICmps()
2145 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitOr() local
2150 if (Value *V = SimplifyOrInst(Op0, Op1, DL, TLI, DT, AC)) in visitOr()
2165 if (ConstantInt *RHS = dyn_cast<ConstantInt>(Op1)) { in visitOr()
2203 match(Op1, m_Or(m_Value(), m_Value())) || in visitOr()
2205 match(Op1, m_LogicalShift(m_Value(), m_Value())))) { in visitOr()
2213 MaskedValueIsZero(Op1, C1->getValue(), 0, &I)) { in visitOr()
2214 Value *NOr = Builder->CreateOr(A, Op1); in visitOr()
2220 if (Op1->hasOneUse() && in visitOr()
2221 match(Op1, m_Xor(m_Value(A), m_ConstantInt(C1))) && in visitOr()
2230 match(Op1, m_Specific(A))) in visitOr()
2235 match(Op1, m_Not(m_Specific(A)))) in visitOr()
2240 match(Op1, m_Xor(m_Specific(A), m_Specific(B)))) in visitOr()
2245 match(Op1, m_And(m_Specific(A), m_Not(m_Specific(B))))) in visitOr()
2251 match(Op1, m_And(m_Value(B), m_Value(D)))) { in visitOr()
2323 Instruction *Ret = FoldOrWithConstants(I, Op1, V1, B, C); in visitOr()
2335 Instruction *Ret = FoldXorWithConstants(I, Op1, V1, B, C); in visitOr()
2348 if (match(Op1, m_Xor(m_Xor(m_Specific(B), m_Value(C)), m_Specific(A)))) in visitOr()
2349 if (Op1->hasOneUse() || cast<BinaryOperator>(Op1)->hasOneUse()) in visitOr()
2354 if (match(Op1, m_Xor(m_Specific(B), m_Specific(A)))) in visitOr()
2356 return BinaryOperator::CreateOr(Op1, C); in visitOr()
2359 if (match(Op0, m_And(m_Or(m_Specific(Op1), m_Value(C)), m_Value(A)))) in visitOr()
2360 return BinaryOperator::CreateOr(Op1, Builder->CreateAnd(A, C)); in visitOr()
2364 if (Value *Op1NotVal = dyn_castNotVal(Op1)) in visitOr()
2365 if (Op0->hasOneUse() && Op1->hasOneUse()) { in visitOr()
2374 std::swap(Op0, Op1); in visitOr()
2381 if (match(Op1, m_Xor(m_Value(A), m_Value(B)))) { in visitOr()
2389 if (Op1->hasOneUse() && match(A, m_Not(m_Specific(Op0)))) { in visitOr()
2393 if (Op1->hasOneUse() && match(B, m_Not(m_Specific(Op0)))) { in visitOr()
2401 if (match(Op1, m_Not(m_Value(A)))) in visitOr()
2404 Op1->hasOneUse() && (B->getOpcode() == Instruction::Or || in visitOr()
2414 match(Op1, m_Xor(m_Not(m_Specific(A)), m_Specific(B)))) in visitOr()
2419 match(Op1, m_And(m_Specific(A), m_Specific(B)))) in visitOr()
2423 std::swap(Op0, Op1); in visitOr()
2427 ICmpInst *RHS = dyn_cast<ICmpInst>(Op1); in visitOr()
2435 if (LHS && match(Op1, m_OneUse(m_Or(m_Value(X), m_Value(Y))))) { in visitOr()
2461 CastInst *Op1C = dyn_cast<CastInst>(Op1); in visitOr()
2497 return SelectInst::Create(A, ConstantInt::getSigned(I.getType(), -1), Op1); in visitOr()
2498 if (match(Op1, m_SExt(m_Value(A))) && A->getType()->isIntegerTy(1)) in visitOr()
2506 if (Op0->hasOneUse() && !isa<ConstantInt>(Op1) && in visitOr()
2508 Value *Inner = Builder->CreateOr(A, Op1); in visitOr()
2518 if (Op0->hasOneUse() && Op1->hasOneUse() && in visitOr()
2520 match(Op1, m_Select(m_Value(Y), m_Value(C), m_Value(D))) && X == Y) { in visitOr()
2532 Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1); in visitXor() local
2537 if (Value *V = SimplifyXorInst(Op0, Op1, DL, TLI, DT, AC)) in visitXor()
2593 if (Constant *RHS = dyn_cast<Constant>(Op1)) { in visitXor()
2602 if (ConstantInt *RHS = dyn_cast<ConstantInt>(Op1)) { in visitXor()
2692 BinaryOperator *Op1I = dyn_cast<BinaryOperator>(Op1); in visitXor()
2699 std::swap(Op0, Op1); in visitXor()
2702 std::swap(Op0, Op1); in visitXor()
2712 std::swap(Op0, Op1); in visitXor()
2722 if (A == Op1) // (B|A)^B == (A|B)^B in visitXor()
2724 if (B == Op1) // (A|B)^B == A & ~B in visitXor()
2725 return BinaryOperator::CreateAnd(A, Builder->CreateNot(Op1)); in visitXor()
2728 if (A == Op1) // (A&B)^A -> (B&A)^A in visitXor()
2730 if (B == Op1 && // (B&A)^A == ~B & A in visitXor()
2731 !isa<ConstantInt>(Op1)) { // Canonical form is (B&C)^C in visitXor()
2732 return BinaryOperator::CreateAnd(Builder->CreateNot(A), Op1); in visitXor()
2804 match(Op1, m_Not(m_Specific(A)))) in visitXor()
2816 Value *Op0 = LHS->getOperand(0), *Op1 = LHS->getOperand(1); in visitXor() local
2820 getNewICmpValue(isSigned, Code, Op0, Op1, in visitXor()
2827 if (CastInst *Op1C = dyn_cast<CastInst>(Op1)) in visitXor()