Lines Matching defs:And
209 Elt = ConstantFoldBinaryOpOperands(Instruction::And, Elt, AndCst, DL);
1458 Value *And = Builder.CreateAnd(X, Mask);
1460 return new ICmpInst(Pred, And, WideC);
1658 BinaryOperator *And,
1661 BinaryOperator *Shift = dyn_cast<BinaryOperator>(And->getOperand(0));
1718 Shift->getOperand(0), ConstantInt::get(And->getType(), NewAndCst));
1720 NewAnd, ConstantInt::get(And->getType(), NewCmpCst));
1731 IsShl ? Builder.CreateLShr(And->getOperand(1), Shift->getOperand(1))
1732 : Builder.CreateShl(And->getOperand(1), Shift->getOperand(1));
1744 BinaryOperator *And,
1752 match(And->getOperand(1), m_One()))
1753 return new TruncInst(And->getOperand(0), Cmp.getType());
1757 if (!match(And, m_And(m_Value(X), m_APInt(C2))))
1761 if (!And->hasOneUse())
1774 KnownBits Know = computeKnownBits(And->getOperand(0), 0, And);
1782 Constant *NegBOC = ConstantInt::get(And->getType(), -NewC2);
1797 if (match(And->getOperand(0), m_OneUse(m_Trunc(m_Value(W)))) &&
1807 Value *NewAnd = Builder.CreateAnd(W, ZextC2, And->getName());
1812 if (Instruction *I = foldICmpAndShift(Cmp, And, C1, *C2))
1819 if (!Cmp.isSigned() && C1.isZero() && And->getOperand(0)->hasOneUse() &&
1820 match(And->getOperand(1), m_One())) {
1821 Constant *One = cast<Constant>(And->getOperand(1));
1822 Value *Or = And->getOperand(0);
1827 if (And->hasOneUse())
1841 Value *NewAnd = Builder.CreateAnd(A, NewOr, And->getName());
1874 BinaryOperator *And,
1876 if (Instruction *I = foldICmpAndConstConst(Cmp, And, C))
1885 if (match(And->getOperand(0), m_Add(m_Value(X), m_AllOnes())) &&
1886 match(And->getOperand(1), m_Not(m_Specific(X)))) {
1892 if (match(And, m_c_And(m_Neg(m_Value(X)), m_Deferred(X)))) {
1904 Value *X = And->getOperand(0);
1905 Value *Y = And->getOperand(1);
1935 if (C.isZero() && (Pred == CmpInst::ICMP_EQ || And->hasOneUse())) {
1954 if (match(And, m_OneUse(m_c_And(m_OneUse(m_ZExt(m_Value(X))), m_Value(Y)))) &&
1958 Value *And = Builder.CreateAnd(TruncY, X);
1959 return BinaryOperator::CreateNot(And);
1969 match(And, m_OneUse(m_c_And(m_OneUse(m_Shl(m_AllOnes(), m_Value(X))),
2025 auto BOpc = Pred == CmpInst::ICMP_EQ ? Instruction::And : Instruction::Or;
2076 Value *And = Builder.CreateAnd(OrOp0, ~(*MaskC));
2078 return new ICmpInst(Pred, And, NewC);
2128 auto BOpc = Pred == CmpInst::ICMP_EQ ? Instruction::And : Instruction::Or;
2375 Value *And = Builder.CreateAnd(X, Mask, Shl->getName() + ".mask");
2377 return new ICmpInst(Pred, And, LShrC);
2387 Value *And = Builder.CreateAnd(X, Mask, Shl->getName() + ".mask");
2389 And, Constant::getNullValue(ShType));
2397 Value *And = Builder.CreateAnd(X, (~C).lshr(ShiftAmt->getZExtValue()));
2400 And, Constant::getNullValue(ShType));
2405 Value *And =
2409 And, Constant::getNullValue(ShType));
2612 Value *And = Builder.CreateAnd(X, Mask, Shr->getName() + ".mask");
2613 return new ICmpInst(Pred, And, ConstantInt::get(ShrTy, C << ShAmtVal));
2652 Value *And = Builder.CreateAnd(SRem->getOperand(0), MaskC);
2655 return new ICmpInst(Pred, And, ConstantInt::get(Ty, C));
2661 return new ICmpInst(ICmpInst::ICMP_SGT, And, ConstantInt::getNullValue(Ty));
2666 return new ICmpInst(ICmpInst::ICMP_UGT, And, ConstantInt::get(Ty, SignMask));
2724 auto Logic = Pred == ICmpInst::ICMP_EQ ? Instruction::And : Instruction::Or;
3205 // And kind-of perform the result swap.
3529 Value *And = Builder.CreateAnd(BOp0, NotBOC);
3530 return new ICmpInst(Pred, And, NotBOC);
3594 Value *And = Builder.CreateAnd(
3600 And, Constant::getNullValue(Op->getType()));
3802 case Instruction::And:
3913 SatValCheck ? Instruction::BinaryOps::Or : Instruction::BinaryOps::And;
3918 else /* CombiningOp == Instruction::BinaryOps::And */
4202 case Instruction::And:
4761 Value *And = Builder.CreateAnd(X, MaxSignedVal);
4763 return CmpInst::Create(Instruction::ICmp, Pred, And, Zero);
5663 Value *And = Builder.CreateAnd(Xor, ConstantExpr::getNot(C));
5664 return new ICmpInst(Pred, And, Constant::getNullValue(And->getType()));
5707 Value *And = Builder.CreateAnd(Xor, Builder.getInt(AndVal),
5709 return new ICmpInst(Pred, And, Constant::getNullValue(Cst1->getType()));
5836 Value *And = Builder.CreateAnd(X, Mask);
5838 return new ICmpInst(Pred, And, Zero);
5846 Value *And = Builder.CreateAnd(X, MaskC);
5847 return new ICmpInst(ICmpInst::ICMP_NE, And, MaskC);
5854 Value *And = Builder.CreateAnd(X, MaskC);
5855 return new ICmpInst(ICmpInst::ICMP_EQ, And, MaskC);
6192 if (BO->getOpcode() != Instruction::And)
6265 assert(BO->getOpcode() == Instruction::And);
6727 Pred1 == ICmpInst::ICMP_EQ ? Instruction::Or : Instruction::And,
6893 // And, adapt users.
7364 // and CodeGen. And in this case, at least one of the comparison
8127 // and CodeGen. And in this case, at least one of the comparison