Home | History | Annotate | Download | only in InstCombine

Lines Matching refs:ICmpInst

73   ICmpInst::Predicate NewPred;
293 ICmpInst::ICMP_SLE:ICmpInst::ICMP_ULE), Lo, Hi))->getZExtValue() &&
302 ICmpInst::Predicate pred = (isSigned ?
303 ICmpInst::ICMP_SLT : ICmpInst::ICMP_ULT);
320 ICmpInst::Predicate pred = (isSigned ?
321 ICmpInst::ICMP_SGT : ICmpInst::ICMP_UGT);
443 ICmpInst::Predicate SCC)
448 bool icmp_eq = (SCC == ICmpInst::ICMP_EQ);
530 static bool decomposeBitTestICmp(const ICmpInst *I, ICmpInst::Predicate &Pred,
539 case ICmpInst::ICMP_SLT:
544 Pred = ICmpInst::ICMP_NE;
546 case ICmpInst::ICMP_SGT:
551 Pred = ICmpInst::ICMP_EQ;
553 case ICmpInst::ICMP_ULT:
558 Pred = ICmpInst::ICMP_EQ;
560 case ICmpInst::ICMP_UGT:
565 Pred = ICmpInst::ICMP_NE;
580 ICmpInst *LHS, ICmpInst *RHS,
581 ICmpInst::Predicate &LHSCC,
582 ICmpInst::Predicate &RHSCC) {
621 if (!ICmpInst::isEquality(LHSCC))
653 if (!ICmpInst::isEquality(RHSCC))
691 static Value *foldLogOpOfMaskedICmps(ICmpInst *LHS, ICmpInst *RHS, bool IsAnd,
694 ICmpInst::Predicate LHSCC = LHS->getPredicate(), RHSCC = RHS->getPredicate();
698 assert(ICmpInst::isEquality(LHSCC) && ICmpInst::isEquality(RHSCC) &&
713 ICmpInst::Predicate NewCC = IsAnd ? ICmpInst::ICMP_EQ : ICmpInst::ICMP_NE;
815 Value *InstCombiner::simplifyRangeCheck(ICmpInst *Cmp0, ICmpInst *Cmp1,
823 ICmpInst::Predicate Pred0 = (Inverted ? Cmp0->getInversePredicate() :
827 if (!((Pred0 == ICmpInst::ICMP_SGT && RangeStart->isMinusOne()) ||
828 (Pred0 == ICmpInst::ICMP_SGE && RangeStart->isZero())))
831 ICmpInst::Predicate Pred1 = (Inverted ? Cmp1->getInversePredicate() :
842 Pred1 = ICmpInst::getSwappedPredicate(Pred1);
848 ICmpInst::Predicate NewPred;
850 case ICmpInst::ICMP_SLT: NewPred = ICmpInst::ICMP_ULT; break;
851 case ICmpInst::ICMP_SLE: NewPred = ICmpInst::ICMP_ULE; break;
862 NewPred = ICmpInst::getInversePredicate(NewPred);
868 Value *InstCombiner::FoldAndOfICmps(ICmpInst *LHS, ICmpInst *RHS) {
869 ICmpInst::Predicate LHSCC = LHS->getPredicate(), RHSCC = RHS->getPredicate();
907 if ((LHSCC == ICmpInst::ICMP_ULT && LHSCst->getValue().isPowerOf2()) ||
908 (LHSCC == ICmpInst::ICMP_EQ && LHSCst->isZero())) {
917 if (LHSCC == ICmpInst::ICMP_EQ && LHSCC == RHSCC &&
954 if (LHSCC == ICmpInst::ICMP_UGE || LHSCC == ICmpInst::ICMP_ULE ||
955 RHSCC == ICmpInst::ICMP_UGE || RHSCC == ICmpInst::ICMP_ULE ||
956 LHSCC == ICmpInst::ICMP_SGE || LHSCC == ICmpInst::ICMP_SLE ||
957 RHSCC == ICmpInst::ICMP_SGE || RHSCC == ICmpInst::ICMP_SLE)
967 (ICmpInst::isEquality(LHSCC) &&
989 case ICmpInst::ICMP_EQ:
992 case ICmpInst::ICMP_NE: // (X == 13 & X != 15) -> X == 13
993 case ICmpInst::ICMP_ULT: // (X == 13 & X < 15) -> X == 13
994 case ICmpInst::ICMP_SLT: // (X == 13 & X < 15) -> X == 13
997 case ICmpInst::ICMP_NE:
1000 case ICmpInst::ICMP_ULT:
1006 case ICmpInst::ICMP_SLT:
1010 case ICmpInst::ICMP_EQ: // (X != 13 & X == 15) -> X == 15
1011 case ICmpInst::ICMP_UGT: // (X != 13 & X u> 15) -> X u> 15
1012 case ICmpInst::ICMP_SGT: // (X != 13 & X s> 15) -> X s> 15
1014 case ICmpInst::ICMP_NE:
1028 case ICmpInst::ICMP_ULT:
1031 case ICmpInst::ICMP_EQ: // (X u< 13 & X == 15) -> false
1032 case ICmpInst::ICMP_UGT: // (X u< 13 & X u> 15) -> false
1034 case ICmpInst::ICMP_SGT: // (X u< 13 & X s> 15) -> no change
1036 case ICmpInst::ICMP_NE: // (X u< 13 & X != 15) -> X u< 13
1037 case ICmpInst::ICMP_ULT: // (X u< 13 & X u< 15) -> X u< 13
1039 case ICmpInst::ICMP_SLT: // (X u< 13 & X s< 15) -> no change
1043 case ICmpInst::ICMP_SLT:
1046 case ICmpInst::ICMP_UGT: // (X s< 13 & X u> 15) -> no change
1048 case ICmpInst::ICMP_NE: // (X s< 13 & X != 15) -> X < 13
1049 case ICmpInst::ICMP_SLT: // (X s< 13 & X s< 15) -> X < 13
1051 case ICmpInst::ICMP_ULT: // (X s< 13 & X u< 15) -> no change
1055 case ICmpInst::ICMP_UGT:
1058 case ICmpInst::ICMP_EQ: // (X u> 13 & X == 15) -> X == 15
1059 case ICmpInst::ICMP_UGT: // (X u> 13 & X u> 15) -> X u> 15
1061 case ICmpInst::ICMP_SGT: // (X u> 13 & X s> 15) -> no change
1063 case ICmpInst::ICMP_NE:
1067 case ICmpInst::ICMP_ULT: // (X u> 13 & X u< 15) -> (X-14) <u 1
1069 case ICmpInst::ICMP_SLT: // (X u> 13 & X s< 15) -> no change
1073 case ICmpInst::ICMP_SGT:
1076 case ICmpInst::ICMP_EQ: // (X s> 13 & X == 15) -> X == 15
1077 case ICmpInst::ICMP_SGT: // (X s> 13 & X s> 15) -> X s> 15
1079 case ICmpInst::ICMP_UGT: // (X s> 13 & X u> 15) -> no change
1081 case ICmpInst::ICMP_NE:
1085 case ICmpInst::ICMP_SLT: // (X s> 13 & X s< 15) -> (X-14) s< 1
1087 case ICmpInst::ICMP_ULT: // (X s> 13 & X u< 15) -> no change
1243 if ((!isa<ICmpInst>(Cast0Src) || !isa<ICmpInst>(Cast1Src)) &&
1257 ICmpInst *ICmp0 = dyn_cast<ICmpInst>(Cast0Src);
1258 ICmpInst *ICmp1 = dyn_cast<ICmpInst>(Cast1Src);
1512 ICmpInst *LHS = dyn_cast<ICmpInst>(Op0);
1513 ICmpInst *RHS = dyn_cast<ICmpInst>(Op1);
1522 if (auto *Cmp = dyn_cast<ICmpInst>(X))
1525 if (auto *Cmp = dyn_cast<ICmpInst>(Y))
1530 if (auto *Cmp = dyn_cast<ICmpInst>(X))
1533 if (auto *Cmp = dyn_cast<ICmpInst>(Y))
1679 Value *InstCombiner::FoldOrOfICmps(ICmpInst *LHS, ICmpInst *RHS,
1681 ICmpInst::Predicate LHSCC = LHS->getPredicate(), RHSCC = RHS->getPredicate();
1688 if (LHS->getPredicate() == ICmpInst::ICMP_EQ && LHSCst && LHSCst->isZero() &&
1689 RHS->getPredicate() == ICmpInst::ICMP_EQ && RHSCst && RHSCst->isZero()) {
1716 return Builder->CreateICmp(ICmpInst::ICMP_NE, Masked, Mask);
1731 if ((LHSCC == ICmpInst::ICMP_ULT || LHSCC == ICmpInst::ICMP_ULE) &&
1799 if (LHSCC == ICmpInst::ICMP_EQ && LHSCst && LHSCst->isZero()) {
1801 if (RHSCC == ICmpInst::ICMP_ULT && Val == RHS->getOperand(1))
1803 else if (RHSCC == ICmpInst::ICMP_UGT && Val == Val2)
1808 else if (RHSCC == ICmpInst::ICMP_EQ && RHSCst && RHSCst->isZero()) {
1810 if (LHSCC == ICmpInst::ICMP_ULT && Val2 == LHS->getOperand(1))
1812 else if (LHSCC == ICmpInst::ICMP_UGT && Val2 == Val)
1817 ICmpInst::ICMP_UGE,
1834 if (LHSCC == ICmpInst::ICMP_NE && LHSCst->isZero()) {
1842 if (LHSCC == ICmpInst::ICMP_ULT && RHSCC == ICmpInst::ICMP_EQ) {
1854 if (LHSCC == ICmpInst::ICMP_UGE || LHSCC == ICmpInst::ICMP_ULE ||
1855 RHSCC == ICmpInst::ICMP_UGE || RHSCC == ICmpInst::ICMP_ULE ||
1856 LHSCC == ICmpInst::ICMP_SGE || LHSCC == ICmpInst::ICMP_SLE ||
1857 RHSCC == ICmpInst::ICMP_SGE || RHSCC == ICmpInst::ICMP_SLE)
1867 (ICmpInst::isEquality(LHSCC) &&
1889 case ICmpInst::ICMP_EQ:
1892 case ICmpInst::ICMP_EQ:
1902 return Builder->CreateICmp(ICmpInst::ICMP_EQ, Or, RHSCst);
1915 case ICmpInst::ICMP_UGT: // (X == 13 | X u> 14) -> no change
1916 case ICmpInst::ICMP_SGT: // (X == 13 | X s> 14) -> no change
1918 case ICmpInst::ICMP_NE: // (X == 13 | X != 15) -> X != 15
1919 case ICmpInst::ICMP_ULT: // (X == 13 | X u< 15) -> X u< 15
1920 case ICmpInst::ICMP_SLT: // (X == 13 | X s< 15) -> X s< 15
1924 case ICmpInst::ICMP_NE:
1927 case ICmpInst::ICMP_EQ: // (X != 13 | X == 15) -> X != 13
1928 case ICmpInst::ICMP_UGT: // (X != 13 | X u> 15) -> X != 13
1929 case ICmpInst::ICMP_SGT: // (X != 13 | X s> 15) -> X != 13
1931 case ICmpInst::ICMP_NE: // (X != 13 | X != 15) -> true
1932 case ICmpInst::ICMP_ULT: // (X != 13 | X u< 15) -> true
1933 case ICmpInst::ICMP_SLT: // (X != 13 | X s< 15) -> true
1936 case ICmpInst::ICMP_ULT:
1939 case ICmpInst::ICMP_EQ: // (X u< 13 | X == 14) -> no change
1941 case ICmpInst::ICMP_UGT: // (X u< 13 | X u> 15) -> (X-13) u> 2
1947 case ICmpInst::ICMP_SGT: // (X u< 13 | X s> 15) -> no change
1949 case ICmpInst::ICMP_NE: // (X u< 13 | X != 15) -> X != 15
1950 case ICmpInst::ICMP_ULT: // (X u< 13 | X u< 15) -> X u< 15
1952 case ICmpInst::ICMP_SLT: // (X u< 13 | X s< 15) -> no change
1956 case ICmpInst::ICMP_SLT:
1959 case ICmpInst::ICMP_EQ: // (X s< 13 | X == 14) -> no change
1961 case ICmpInst::ICMP_SGT: // (X s< 13 | X s> 15) -> (X-13) s> 2
1967 case ICmpInst::ICMP_UGT: // (X s< 13 | X u> 15) -> no change
1969 case ICmpInst::ICMP_NE: // (X s< 13 | X != 15) -> X != 15
1970 case ICmpInst::ICMP_SLT: // (X s< 13 | X s< 15) -> X s< 15
1972 case ICmpInst::ICMP_ULT: // (X s< 13 | X u< 15) -> no change
1976 case ICmpInst::ICMP_UGT:
1979 case ICmpInst::ICMP_EQ: // (X u> 13 | X == 15) -> X u> 13
1980 case ICmpInst::ICMP_UGT: // (X u> 13 | X u> 15) -> X u> 13
1982 case ICmpInst::ICMP_SGT: // (X u> 13 | X s> 15) -> no change
1984 case ICmpInst::ICMP_NE: // (X u> 13 | X != 15) -> true
1985 case ICmpInst::ICMP_ULT: // (X u> 13 | X u< 15) -> true
1987 case ICmpInst::ICMP_SLT: // (X u> 13 | X s< 15) -> no change
1991 case ICmpInst::ICMP_SGT:
1994 case ICmpInst::ICMP_EQ: // (X s> 13 | X == 15) -> X > 13
1995 case ICmpInst::ICMP_SGT: // (X s> 13 | X s> 15) -> X > 13
1997 case ICmpInst::ICMP_UGT: // (X s> 13 | X u> 15) -> no change
1999 case ICmpInst::ICMP_NE: // (X s> 13 | X != 15) -> true
2000 case ICmpInst::ICMP_SLT: // (X s> 13 | X s< 15) -> true
2002 case ICmpInst::ICMP_ULT: // (X s> 13 | X u< 15) -> no change
2402 ICmpInst *LHS = dyn_cast<ICmpInst>(Op0);
2403 ICmpInst *RHS = dyn_cast<ICmpInst>(Op1);
2412 if (auto *Cmp = dyn_cast<ICmpInst>(X))
2415 if (auto *Cmp = dyn_cast<ICmpInst>(Y))
2420 if (auto *Cmp = dyn_cast<ICmpInst>(X))
2423 if (auto *Cmp = dyn_cast<ICmpInst>(Y))
2753 if (ICmpInst *RHS = dyn_cast<ICmpInst>(I.getOperand(1)))
2754 if (ICmpInst *LHS = dyn_cast<ICmpInst>(I.getOperand(0)))