reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
 1724   if (Value *V = SimplifyAndInst(I.getOperand(0), I.getOperand(1),
 1724   if (Value *V = SimplifyAndInst(I.getOperand(0), I.getOperand(1),
 1725                                  SQ.getWithInstruction(&I)))
 1726     return replaceInstUsesWith(I, V);
 1728   if (SimplifyAssociativeOrCommutative(I))
 1729     return &I;
 1731   if (Instruction *X = foldVectorBinop(I))
 1736   if (SimplifyDemandedInstructionBits(I))
 1737     return &I;
 1740   if (Instruction *Xor = foldAndToXor(I, Builder))
 1744   if (Value *V = SimplifyUsingDistributiveLaws(I))
 1745     return replaceInstUsesWith(I, V);
 1747   if (Value *V = SimplifyBSwap(I, Builder))
 1748     return replaceInstUsesWith(I, V);
 1750   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
 1750   Value *Op0 = I.getOperand(0), *Op1 = I.getOperand(1);
 1758       Value *IsZero = Builder.CreateICmpEQ(X, ConstantInt::get(I.getType(), 0));
 1759       return new ZExtInst(IsZero, I.getType());
 1765       Constant *NewC = ConstantInt::get(I.getType(), *C & *XorC);
 1780       Value *And = Builder.CreateAnd(X, ConstantInt::get(I.getType(),
 1783       return BinaryOperator::CreateOr(And, ConstantInt::get(I.getType(),
 1792       if (MaskedValueIsZero(X, NotAndMask, 0, &I)) {
 1798       if (!isa<Constant>(Y) && MaskedValueIsZero(Y, NotAndMask, 0, &I)) {
 1840             return new ZExtInst(And, I.getType());
 1846         if (Instruction *Res = OptAndOp(Op0I, Op0CI, AndRHS, I))
 1859         Value *NewCast = Builder.CreateTrunc(X, I.getType(), "and.shrunk");
 1860         Constant *C3 = ConstantExpr::getTrunc(YC, I.getType());
 1867   if (Instruction *Z = narrowMaskedBinOp(I))
 1870   if (Instruction *FoldedLogic = foldBinOpIntoSelectOrPhi(I))
 1873   if (Instruction *DeMorgan = matchDeMorgansLaws(I, Builder))
 1918       if (Value *Res = foldAndOfICmps(LHS, RHS, I))
 1919         return replaceInstUsesWith(I, Res);
 1926         if (Value *Res = foldAndOfICmps(LHS, Cmp, I))
 1927           return replaceInstUsesWith(I, Builder.CreateAnd(Res, Y));
 1929         if (Value *Res = foldAndOfICmps(LHS, Cmp, I))
 1930           return replaceInstUsesWith(I, Builder.CreateAnd(Res, X));
 1934         if (Value *Res = foldAndOfICmps(Cmp, RHS, I))
 1935           return replaceInstUsesWith(I, Builder.CreateAnd(Res, Y));
 1937         if (Value *Res = foldAndOfICmps(Cmp, RHS, I))
 1938           return replaceInstUsesWith(I, Builder.CreateAnd(Res, X));
 1942   if (FCmpInst *LHS = dyn_cast<FCmpInst>(I.getOperand(0)))
 1943     if (FCmpInst *RHS = dyn_cast<FCmpInst>(I.getOperand(1)))
 1945         return replaceInstUsesWith(I, Res);
 1947   if (Instruction *FoldedFCmps = reassociateFCmps(I, Builder))
 1950   if (Instruction *CastedAnd = foldCastedBitwiseLogic(I))
 1957     return SelectInst::Create(A, Op1, Constant::getNullValue(I.getType()));
 1960     return SelectInst::Create(A, Op0, Constant::getNullValue(I.getType()));
 1966     Type *Ty = I.getType();
 1967     if (match(&I, m_c_And(m_OneUse(m_AShr(m_NSWSub(m_Value(Y), m_Value(X)),