Lines Matching refs:Cmp
121 static Value *foldSelectICmpAnd(SelectInst &Sel, ICmpInst *Cmp, in foldSelectICmpAnd() argument
130 if (SelType->isVectorTy() != Cmp->getType()->isVectorTy()) in foldSelectICmpAnd()
136 ICmpInst::Predicate Pred = Cmp->getPredicate(); in foldSelectICmpAnd()
138 if (!match(Cmp->getOperand(1), m_Zero())) in foldSelectICmpAnd()
141 V = Cmp->getOperand(0); in foldSelectICmpAnd()
147 } else if (decomposeBitTestICmp(Cmp->getOperand(0), Cmp->getOperand(1), in foldSelectICmpAnd()
173 if (!Cmp->hasOneUse()) in foldSelectICmpAnd()
570 static Instruction *foldSelectICmpAndAnd(Type *SelType, const ICmpInst *Cmp, in foldSelectICmpAndAnd() argument
573 if (!(Cmp->hasOneUse() && Cmp->getOperand(0)->hasOneUse() && in foldSelectICmpAndAnd()
574 Cmp->getPredicate() == ICmpInst::ICMP_EQ && in foldSelectICmpAndAnd()
575 match(Cmp->getOperand(1), m_Zero()) && match(FVal, m_One()))) in foldSelectICmpAndAnd()
600 if (!match(Cmp->getOperand(0), m_c_And(m_Specific(X), m_Value(Y)))) in foldSelectICmpAndAnd()
618 static Value *foldSelectICmpAndZeroShl(const ICmpInst *Cmp, Value *TVal, in foldSelectICmpAndZeroShl() argument
623 if (!match(Cmp, m_ICmp(Pred, m_Value(AndVal), m_Zero()))) in foldSelectICmpAndZeroShl()
954 static Value *canonicalizeSaturatedAdd(ICmpInst *Cmp, Value *TVal, Value *FVal, in canonicalizeSaturatedAdd() argument
956 if (!Cmp->hasOneUse()) in canonicalizeSaturatedAdd()
960 Value *Cmp0 = Cmp->getOperand(0); in canonicalizeSaturatedAdd()
961 Value *Cmp1 = Cmp->getOperand(1); in canonicalizeSaturatedAdd()
962 ICmpInst::Predicate Pred = Cmp->getPredicate(); in canonicalizeSaturatedAdd()
1025 static Value *foldAbsDiff(ICmpInst *Cmp, Value *TVal, Value *FVal, in foldAbsDiff() argument
1033 ICmpInst::Predicate Pred = Cmp->getStrictPredicate(); in foldAbsDiff()
1034 Value *A = Cmp->getOperand(0); in foldAbsDiff()
1035 Value *B = Cmp->getOperand(1); in foldAbsDiff()
1174 static Value *canonicalizeSPF(ICmpInst &Cmp, Value *TrueVal, Value *FalseVal, in canonicalizeSPF() argument
1182 matchDecomposedSelectPattern(&Cmp, TrueVal, FalseVal, LHS, RHS).Flavor; in canonicalizeSPF()
1185 if (!Cmp.hasOneUse() && !RHS->hasOneUse()) in canonicalizeSPF()
1192 ConstantInt::get(Type::getInt1Ty(Cmp.getContext()), IntMinIsPoison); in canonicalizeSPF()
1265 ICmpInst &Cmp) { in foldSelectValueEquivalence() argument
1266 if (!Cmp.isEquality()) in foldSelectValueEquivalence()
1272 if (Cmp.getPredicate() == ICmpInst::ICMP_NE) { in foldSelectValueEquivalence()
1282 Value *CmpLHS = Cmp.getOperand(0), *CmpRHS = Cmp.getOperand(1); in foldSelectValueEquivalence()
1301 !Cmp.getType()->isVectorTy()) in foldSelectValueEquivalence()
1534 tryToReuseConstantFromSelectInComparison(SelectInst &Sel, ICmpInst &Cmp, in tryToReuseConstantFromSelectInComparison() argument
1539 if (!match(&Cmp, m_OneUse(m_ICmp( in tryToReuseConstantFromSelectInComparison()
1598 Cmp.getName() + ".inv"); in tryToReuseConstantFromSelectInComparison()
1606 static Instruction *foldSelectZeroOrOnes(ICmpInst *Cmp, Value *TVal, in foldSelectZeroOrOnes() argument
1609 if (!Cmp->hasOneUse()) in foldSelectZeroOrOnes()
1613 if (!match(Cmp->getOperand(1), m_APIntAllowUndef(CmpC))) in foldSelectZeroOrOnes()
1617 Value *X = Cmp->getOperand(0); in foldSelectZeroOrOnes()
1618 if (Cmp->getPredicate() == ICmpInst::ICMP_ULT && *CmpC == 2 && in foldSelectZeroOrOnes()
1623 if (Cmp->getPredicate() == ICmpInst::ICMP_UGT && *CmpC == 1 && in foldSelectZeroOrOnes()
2089 auto *Cmp = dyn_cast<CmpInst>(Cond); in foldSelectExtConst() local
2091 (!Cmp || Cmp->getOperand(0)->getType() != SmallType)) in foldSelectExtConst()
3602 Value *Cmp; in visitSelectInst() local
3604 Cmp = Builder.CreateICmp(MinMaxPred, LHS, RHS); in visitSelectInst()
3610 Cmp = Builder.CreateFCmp(MinMaxPred, LHS, RHS); in visitSelectInst()
3613 Value *NewSI = Builder.CreateSelect(Cmp, LHS, RHS, SI.getName(), &SI); in visitSelectInst()
3825 if (ICmpInst *Cmp = dyn_cast<ICmpInst>(B)) in visitSelectInst() local
3826 if (Value *V = canonicalizeSPF(*Cmp, TrueVal, FalseVal, *this)) in visitSelectInst()