Home | History | Annotate | Download | only in InstCombine

Lines Matching full:trueval

37   Value *TrueVal = SI->getTrueValue();
44 if (TrueVal == CmpLHS && FalseVal == CmpRHS) {
59 if (TrueVal == CmpRHS && FalseVal == CmpLHS) {
74 if ((CmpLHS == TrueVal && match(FalseVal, m_Neg(m_Specific(CmpLHS)))) ||
75 (CmpLHS == FalseVal && match(TrueVal, m_Neg(m_Specific(CmpLHS))))) {
80 return (CmpLHS == TrueVal) ? SPF_ABS : SPF_NABS;
235 Instruction *InstCombiner::FoldSelectIntoOp(SelectInst &SI, Value *TrueVal,
239 if (Instruction *TVI = dyn_cast<Instruction>(TrueVal)) {
276 !isa<Constant>(TrueVal)) {
279 if ((SFO & 1) && TrueVal == FVI->getOperand(0)) {
281 } else if ((SFO & 2) && TrueVal == FVI->getOperand(1)) {
295 TrueVal, NewSel);
398 static Value *foldSelectICmpAndOr(SelectInst &SI, Value *TrueVal,
417 if (match(TrueVal, m_Specific(X))) {
426 if (match(TrueVal, m_Xor(m_Specific(X), m_APInt(C2))) && C1 == C2)
429 if (match(TrueVal, m_And(m_Specific(X), m_APInt(C2))) && *C1 == ~(*C2))
432 if (match(TrueVal, m_Or(m_Specific(X), m_APInt(C2))) && C1 == C2)
433 return TrueVal;
437 bool OrOnFalseVal = match(FalseVal, m_Or(m_Specific(TrueVal), m_Power2(C2)));
439 OrOnTrueVal = match(TrueVal, m_Or(m_Specific(FalseVal), m_Power2(C2)));
445 Value *Y = OrOnFalseVal ? TrueVal : FalseVal;
475 Value *TrueVal = SI.getTrueValue();
510 if ((CmpLHS == TrueVal && AdjustedRHS == FalseVal) ||
511 (CmpLHS == FalseVal && AdjustedRHS == TrueVal))
525 if (match(TrueVal, m_SExt(m_Specific(CmpLHS))) &&
527 CmpLHS = TrueVal;
530 sextRHS == TrueVal) {
539 if (match(TrueVal, m_ZExt(m_Specific(CmpLHS))) &&
541 CmpLHS = TrueVal;
544 zextRHS == TrueVal) {
556 std::swap(FalseVal, TrueVal);
560 SI.setOperand(1, TrueVal);
579 if (TrueVal->getType() == Ty) {
583 C1 = dyn_cast<ConstantInt>(TrueVal);
587 C2 = dyn_cast<ConstantInt>(TrueVal);
608 if (SimplifyWithOpReplaced(FalseVal, CmpLHS, CmpRHS, DL, TLI) == TrueVal ||
609 SimplifyWithOpReplaced(FalseVal, CmpRHS, CmpLHS, DL, TLI) == TrueVal)
611 if (SimplifyWithOpReplaced(TrueVal, CmpLHS, CmpRHS, DL, TLI) == FalseVal ||
612 SimplifyWithOpReplaced(TrueVal, CmpRHS, CmpLHS, DL, TLI) == FalseVal)
615 if (SimplifyWithOpReplaced(TrueVal, CmpLHS, CmpRHS, DL, TLI) == FalseVal ||
616 SimplifyWithOpReplaced(TrueVal, CmpRHS, CmpLHS, DL, TLI) == FalseVal)
617 return ReplaceInstUsesWith(SI, TrueVal);
618 if (SimplifyWithOpReplaced(FalseVal, CmpLHS, CmpRHS, DL, TLI) == TrueVal ||
619 SimplifyWithOpReplaced(FalseVal, CmpRHS, CmpLHS, DL, TLI) == TrueVal)
620 return ReplaceInstUsesWith(SI, TrueVal);
626 if (CmpLHS == TrueVal && Pred == ICmpInst::ICMP_EQ) {
637 if (Value *V = foldSelectICmpAndOr(SI, TrueVal, FalseVal, Builder))
752 static Value *foldSelectICmpAnd(const SelectInst &SI, ConstantInt *TrueVal,
771 if (!TrueVal->isZero() && !FalseVal->isZero()) {
772 if ((TrueVal->getValue() - FalseVal->getValue()).isPowerOf2())
774 else if ((FalseVal->getValue() - TrueVal->getValue()).isPowerOf2())
775 Offset = TrueVal;
779 // Adjust TrueVal and FalseVal to the offset.
780 TrueVal = ConstantInt::get(Builder->getContext(),
781 TrueVal->getValue() - Offset->getValue());
788 (!TrueVal->getValue().isPowerOf2() &&
794 ConstantInt *ValC = !TrueVal->isZero() ? TrueVal : FalseVal;
812 bool ShouldNotVal = !TrueVal->isZero();
825 Value *TrueVal = SI.getTrueValue();
828 if (Value *V = SimplifySelectInst(CondVal, TrueVal, FalseVal, DL))
832 if (ConstantInt *C = dyn_cast<ConstantInt>(TrueVal)) {
844 return BinaryOperator::CreateAnd(CondVal, TrueVal);
848 return BinaryOperator::CreateOr(NotCond, TrueVal);
853 if (CondVal == TrueVal)
856 return BinaryOperator::CreateAnd(CondVal, TrueVal);
860 if (match(TrueVal, m_Not(m_Specific(CondVal))))
861 return BinaryOperator::CreateAnd(TrueVal
863 return BinaryOperator::CreateOr(TrueVal, FalseVal);
867 if (ConstantInt *TrueValC = dyn_cast<ConstantInt>(TrueVal))
895 if (FCI->getOperand(0) == TrueVal && FCI->getOperand(1) == FalseVal) {
902 if (((CFPt = dyn_cast<ConstantFP>(TrueVal)) &&
914 if (((CFPt = dyn_cast<ConstantFP>(TrueVal)) &&
918 return ReplaceInstUsesWith(SI, TrueVal);
922 } else if (FCI->getOperand(0) == FalseVal && FCI->getOperand(1) == TrueVal){
929 if (((CFPt = dyn_cast<ConstantFP>(TrueVal)) &&
941 if (((CFPt = dyn_cast<ConstantFP>(TrueVal)) &&
945 return ReplaceInstUsesWith(SI, TrueVal);
957 if (Instruction *TI = dyn_cast<Instruction>(TrueVal))
1028 if (Instruction *FoldI = FoldSelectIntoOp(SI, TrueVal, FalseVal))
1054 if (CanSelectOperandBeMappingIntoPredBlock(TrueVal, SI) &&
1059 if (SelectInst *TrueSI = dyn_cast<SelectInst>(TrueVal)) {
1079 SI.setOperand(2, TrueVal);