Lines Matching defs:ICI
903 static Value *canonicalizeSaturatedSubtract(const ICmpInst *ICI,
907 ICmpInst::Predicate Pred = ICI->getPredicate();
908 Value *A = ICI->getOperand(0);
909 Value *B = ICI->getOperand(1);
959 if (IsNegative && !TrueVal->hasOneUse() && !ICI->hasOneUse())
1091 static Instruction *foldSelectCtlzToCttz(ICmpInst *ICI, Value *TrueVal,
1095 if (!ICI->isEquality() || !match(ICI->getOperand(1), m_Zero()))
1098 if (ICI->getPredicate() == ICmpInst::ICMP_NE)
1112 Value *X = ICI->getOperand(0);
1134 static Value *foldSelectCttzCtlz(ICmpInst *ICI, Value *TrueVal, Value *FalseVal,
1136 ICmpInst::Predicate Pred = ICI->getPredicate();
1137 Value *CmpLHS = ICI->getOperand(0);
1138 Value *CmpRHS = ICI->getOperand(1);
1141 if (!ICI->isEquality())
1668 static Value *foldSelectInstWithICmpConst(SelectInst &SI, ICmpInst *ICI,
1673 if (!match(ICI, m_ICmp(Pred, m_Value(V), m_APInt(CmpC))))
1697 if (match(&SI, m_Select(m_Specific(ICI), m_APInt(C), m_BinOp(BO))))
1698 CPred = ICI->getPredicate();
1699 else if (match(&SI, m_Select(m_Specific(ICI), m_BinOp(BO), m_APInt(C))))
1700 CPred = ICI->getInversePredicate();
1717 static Instruction *foldSelectICmpEq(SelectInst &SI, ICmpInst *ICI,
1719 ICmpInst::Predicate Pred = ICI->getPredicate();
1725 Value *CmpLHS = ICI->getOperand(0);
1726 Value *CmpRHS = ICI->getOperand(1);
1822 ICmpInst *ICI) {
1823 if (Instruction *NewSel = foldSelectValueEquivalence(SI, *ICI))
1827 canonicalizeSPF(*ICI, SI.getTrueValue(), SI.getFalseValue(), *this))
1830 if (Value *V = foldSelectInstWithICmpConst(SI, ICI, Builder))
1833 if (Value *V = canonicalizeClampLike(SI, *ICI, Builder, *this))
1837 tryToReuseConstantFromSelectInComparison(SI, *ICI, *this))
1840 if (Value *V = foldSelectICmpAnd(SI, ICI, Builder))
1847 ICmpInst::Predicate Pred = ICI->getPredicate();
1848 Value *CmpLHS = ICI->getOperand(0);
1849 Value *CmpRHS = ICI->getOperand(1);
1862 if (Instruction *NewSel = foldSelectICmpEq(SI, ICI, *this))
1871 ICI->hasOneUse()) {
1874 Value *IsNeg = Builder.CreateIsNeg(CmpLHS, ICI->getName());
1932 foldSelectICmpAndAnd(SI.getType(), ICI, TrueVal, FalseVal, Builder))
1935 if (Value *V = foldSelectICmpAndZeroShl(ICI, TrueVal, FalseVal, Builder))
1938 if (Instruction *V = foldSelectCtlzToCttz(ICI, TrueVal, FalseVal, Builder))
1941 if (Instruction *V = foldSelectZeroOrOnes(ICI, TrueVal, FalseVal, Builder))
1944 if (Value *V = foldSelectICmpAndBinOp(ICI, TrueVal, FalseVal, Builder))
1947 if (Value *V = foldSelectICmpLshrAshr(ICI, TrueVal, FalseVal, Builder))
1950 if (Value *V = foldSelectCttzCtlz(ICI, TrueVal, FalseVal, *this))
1953 if (Value *V = canonicalizeSaturatedSubtract(ICI, TrueVal, FalseVal, Builder))
1956 if (Value *V = canonicalizeSaturatedAdd(ICI, TrueVal, FalseVal, Builder))
1959 if (Value *V = foldAbsDiff(ICI, TrueVal, FalseVal, Builder))
3733 if (ICmpInst *ICI = dyn_cast<ICmpInst>(CondVal))
3734 if (Instruction *Result = foldSelectInstWithICmp(SI, ICI))