Lines Matching defs:TrueVal

4502 static Value *simplifySelectBitTest(Value *TrueVal, Value *FalseVal, Value *X,
4508 if (FalseVal == X && match(TrueVal, m_And(m_Specific(X), m_APInt(C))) &&
4510 return TrueWhenUnset ? FalseVal : TrueVal;
4514 if (TrueVal == X && match(FalseVal, m_And(m_Specific(X), m_APInt(C))) &&
4516 return TrueWhenUnset ? FalseVal : TrueVal;
4521 if (FalseVal == X && match(TrueVal, m_Or(m_Specific(X), m_APInt(C))) &&
4524 if (TrueWhenUnset && cast<PossiblyDisjointInst>(TrueVal)->isDisjoint())
4526 return TrueWhenUnset ? TrueVal : FalseVal;
4531 if (TrueVal == X && match(FalseVal, m_Or(m_Specific(X), m_APInt(C))) &&
4536 return TrueWhenUnset ? TrueVal : FalseVal;
4618 CmpPredicate Pred, Value *TrueVal,
4621 return simplifySelectBitTest(TrueVal, FalseVal, Res->X, &Res->Mask,
4630 ArrayRef<std::pair<Value *, Value *>> Replacements, Value *TrueVal,
4640 simplifyWithOpsReplaced(TrueVal, Replacements, Q,
4644 SimplifiedTrueVal = TrueVal;
4654 static Value *simplifySelectWithICmpCond(Value *CondVal, Value *TrueVal,
4663 if (Value *V = simplifyCmpSelOfMaxMin(CmpLHS, CmpRHS, Pred, TrueVal, FalseVal))
4669 std::swap(TrueVal, FalseVal);
4675 if (TrueVal->getType()->isIntOrIntVectorTy()) {
4678 matchDecomposedSelectPattern(cast<ICmpInst>(CondVal), TrueVal, FalseVal,
4693 if (Value *V = simplifySelectBitTest(TrueVal, FalseVal, X, Y,
4703 if (match(TrueVal, isFsh) && FalseVal == X && CmpLHS == ShAmt)
4716 if (match(FalseVal, isRotate) && TrueVal == X && CmpLHS == ShAmt &&
4722 if (match(TrueVal, m_Intrinsic<Intrinsic::abs>(m_Specific(CmpLHS))) &&
4725 if (match(TrueVal,
4733 simplifySelectWithFakeICmpEq(CmpLHS, CmpRHS, Pred, TrueVal, FalseVal))
4740 if (Value *V = simplifySelectWithEquivalence({{CmpLHS, CmpRHS}}, TrueVal,
4743 if (Value *V = simplifySelectWithEquivalence({{CmpRHS, CmpLHS}}, TrueVal,
4754 {{X, CmpRHS}, {Y, CmpRHS}}, TrueVal, FalseVal, Q, MaxRecurse))
4763 {{X, CmpRHS}, {Y, CmpRHS}}, TrueVal, FalseVal, Q, MaxRecurse))
4823 static Value *simplifySelectInst(Value *Cond, Value *TrueVal, Value *FalseVal,
4826 if (auto *TrueC = dyn_cast<Constant>(TrueVal))
4833 return PoisonValue::get(TrueVal->getType());
4837 return isa<Constant>(FalseVal) ? FalseVal : TrueVal;
4844 return TrueVal;
4851 assert(TrueVal->getType() == FalseVal->getType() &&
4854 if (Cond->getType() == TrueVal->getType()) {
4856 if (match(TrueVal, m_One()) && match(FalseVal, m_ZeroInt()))
4860 if (match(Cond, m_c_LogicalAnd(m_Specific(TrueVal), m_Specific(FalseVal))))
4864 if (match(Cond, m_c_LogicalOr(m_Specific(TrueVal), m_Specific(FalseVal))))
4865 return TrueVal;
4869 match(TrueVal, m_ZeroInt()))
4875 if (match(Cond, m_Not(m_c_LogicalOr(m_Specific(TrueVal), m_Value()))))
4878 if (match(TrueVal, m_Not(m_c_LogicalOr(m_Specific(Cond), m_Value()))))
4882 if (match(Cond, m_c_LogicalOr(m_Specific(TrueVal), m_Value())))
4883 return TrueVal;
4885 if (match(TrueVal, m_c_LogicalOr(m_Specific(Cond), m_Value())))
4891 match(TrueVal, m_c_LogicalOr(m_Specific(X), m_Specific(Y))))
4893 if (match(TrueVal, m_c_LogicalOr(m_Value(X), m_Not(m_Value(Y)))) &&
4899 if (match(TrueVal, m_One())) {
4917 if (TrueVal == FalseVal)
4918 return TrueVal;
4920 if (Cond == TrueVal) {
4930 if (match(TrueVal, m_One()))
4933 if (match(TrueVal, m_ZeroInt()))
4942 if (isa<PoisonValue>(TrueVal) ||
4943 (Q.isUndefValue(TrueVal) && impliesPoison(FalseVal, Cond)))
4948 (Q.isUndefValue(FalseVal) && impliesPoison(TrueVal, Cond)))
4949 return TrueVal;
4953 if (isa<FixedVectorType>(TrueVal->getType()) &&
4954 match(TrueVal, m_Constant(TrueC)) &&
4984 simplifySelectWithICmpCond(Cond, TrueVal, FalseVal, Q, MaxRecurse))
4987 if (Value *V = simplifySelectWithFCmp(Cond, TrueVal, FalseVal, Q, MaxRecurse))
4992 return *Imp ? TrueVal : FalseVal;
4997 Value *llvm::simplifySelectInst(Value *Cond, Value *TrueVal, Value *FalseVal,
4999 return ::simplifySelectInst(Cond, TrueVal, FalseVal, Q, RecursionLimit);