Home | History | Annotate | Download | only in InstCombine

Lines Matching refs:TrueVal

229 Instruction *InstCombiner::FoldSelectIntoOp(SelectInst &SI, Value *TrueVal,
233 if (Instruction *TVI = dyn_cast<Instruction>(TrueVal)) {
265 !isa<Constant>(TrueVal)) {
268 if ((SFO & 1) && TrueVal == FVI->getOperand(0)) {
270 } else if ((SFO & 2) && TrueVal == FVI->getOperand(1)) {
284 TrueVal, NewSel);
309 static Value *foldSelectICmpAndOr(const SelectInst &SI, Value *TrueVal,
329 bool OrOnFalseVal = match(FalseVal, m_Or(m_Specific(TrueVal), m_Power2(C2)));
331 OrOnTrueVal = match(TrueVal, m_Or(m_Specific(FalseVal), m_Power2(C2)));
337 Value *Y = OrOnFalseVal ? TrueVal : FalseVal;
370 static Value *foldSelectCttzCtlz(ICmpInst *ICI, Value *TrueVal, Value *FalseVal,
381 Value *ValueOnZero = TrueVal;
421 Value *TrueVal = SI.getTrueValue();
448 if ((CmpLHS == TrueVal && AdjustedRHS == FalseVal) ||
449 (CmpLHS == FalseVal && AdjustedRHS == TrueVal))
463 if (match(TrueVal, m_SExt(m_Specific(CmpLHS))) &&
465 CmpLHS = TrueVal;
468 sextRHS == TrueVal) {
477 if (match(TrueVal, m_ZExt(m_Specific(CmpLHS))) &&
479 CmpLHS = TrueVal;
482 zextRHS == TrueVal) {
494 std::swap(FalseVal, TrueVal);
498 SI.setOperand(1, TrueVal);
517 if (TrueVal->getType() == Ty) {
521 C1 = dyn_cast<ConstantInt>(TrueVal);
525 C2 = dyn_cast<ConstantInt>(TrueVal);
545 if (CmpLHS == TrueVal && Pred == ICmpInst::ICMP_EQ) {
557 unsigned BitWidth = DL.getTypeSizeInBits(TrueVal->getType());
582 if (TrueWhenUnset && TrueVal == X &&
587 match(TrueVal, m_Xor(m_Specific(X), m_APInt(C))) && *Y == *C)
591 match(TrueVal, m_Xor(m_Specific(X), m_APInt(C))) && *Y == *C)
594 else if (!TrueWhenUnset && TrueVal == X &&
603 if (Value *V = foldSelectICmpAndOr(SI, TrueVal, FalseVal, Builder))
606 if (Value *V = foldSelectCttzCtlz(ICI, TrueVal, FalseVal, Builder))
769 static Value *foldSelectICmpAnd(const SelectInst &SI, ConstantInt *TrueVal,
788 if (!TrueVal->isZero() && !FalseVal->isZero()) {
789 if ((TrueVal->getValue() - FalseVal->getValue()).isPowerOf2())
791 else if ((FalseVal->getValue() - TrueVal->getValue()).isPowerOf2())
792 Offset = TrueVal;
796 // Adjust TrueVal and FalseVal to the offset.
797 TrueVal = ConstantInt::get(Builder->getContext(),
798 TrueVal->getValue() - Offset->getValue());
805 (!TrueVal->getValue().isPowerOf2() &&
811 ConstantInt *ValC = !TrueVal->isZero() ? TrueVal : FalseVal;
829 bool ShouldNotVal = !TrueVal->isZero();
845 Value *TrueVal = SI.getTrueValue();
847 auto *TI = dyn_cast<Instruction>(TrueVal);
914 Value *TrueVal = SI.getTrueValue();
919 SimplifySelectInst(CondVal, TrueVal, FalseVal, DL, TLI, DT, AC))
923 TrueVal->getType() == CondVal->getType()) {
924 if (match(TrueVal, m_One())) {
928 if (match(TrueVal, m_Zero())) {
935 return BinaryOperator::CreateAnd(CondVal, TrueVal);
940 return BinaryOperator::CreateOr(NotCond, TrueVal);
945 if (CondVal == TrueVal)
948 return BinaryOperator::CreateAnd(CondVal, TrueVal);
952 if (match(TrueVal, m_Not(m_Specific(CondVal))))
953 return BinaryOperator::CreateAnd(TrueVal, FalseVal);
955 return BinaryOperator::CreateOr(TrueVal, FalseVal);
966 if (match(TrueVal, m_One()) && match(FalseVal, m_Zero()))
970 if (match(TrueVal, m_AllOnes()) && match(FalseVal, m_Zero()))
974 if (match(TrueVal, m_Zero()) && match(FalseVal, m_One())) {
980 if (match(TrueVal, m_Zero()) && match(FalseVal, m_AllOnes())) {
986 if (ConstantInt *TrueValC = dyn_cast<ConstantInt>(TrueVal))
993 if (FCI->getOperand(0) == TrueVal && FCI->getOperand(1) == FalseVal) {
1000 if (((CFPt = dyn_cast<ConstantFP>(TrueVal)) &&
1012 if (((CFPt = dyn_cast<ConstantFP>(TrueVal)) &&
1016 return replaceInstUsesWith(SI, TrueVal);
1028 Value *NewCond = Builder->CreateFCmp(InvPred, TrueVal, FalseVal,
1031 return SelectInst::Create(NewCond, FalseVal, TrueVal,
1036 } else if (FCI->getOperand(0) == FalseVal && FCI->getOperand(1) == TrueVal){
1043 if (((CFPt = dyn_cast<ConstantFP>(TrueVal)) &&
1055 if (((CFPt = dyn_cast<ConstantFP>(TrueVal)) &&
1059 return replaceInstUsesWith(SI, TrueVal);
1071 Value *NewCond = Builder->CreateFCmp(InvPred, FalseVal, TrueVal,
1074 return SelectInst::Create(NewCond, FalseVal, TrueVal,
1092 auto *TI = dyn_cast<Instruction>(TrueVal);
1100 if (Instruction *FoldI = FoldSelectIntoOp(SI, TrueVal, FalseVal))
1182 if (CanSelectOperandBeMappingIntoPredBlock(TrueVal, SI) &&
1187 if (SelectInst *TrueSI = dyn_cast<SelectInst>(TrueVal)) {
1217 if (FalseSI->getTrueValue() == TrueVal && FalseSI->hasOneUse()) {
1229 SI.setOperand(2, TrueVal);
1260 Value *V = *Implication ? TrueVal : FalseVal;