Lines Matching refs:GEPLHS

625 static Instruction *transformToIndexedCompare(GEPOperator *GEPLHS, Value *RHS,  in transformToIndexedCompare()  argument
630 if (GEPLHS->getType()->isVectorTy()) in transformToIndexedCompare()
633 if (!GEPLHS->hasAllConstantIndices()) in transformToIndexedCompare()
636 APInt Offset(DL.getIndexTypeSizeInBits(GEPLHS->getType()), 0); in transformToIndexedCompare()
638 GEPLHS->stripAndAccumulateConstantOffsets(DL, Offset, in transformToIndexedCompare()
642 if (PtrBase->getType() != GEPLHS->getType()) in transformToIndexedCompare()
669 Instruction *InstCombinerImpl::foldGEPICmp(GEPOperator *GEPLHS, Value *RHS, in foldGEPICmp() argument
685 Value *PtrBase = GEPLHS->getOperand(0); in foldGEPICmp()
686 if (PtrBase == RHS && (GEPLHS->isInBounds() || ICmpInst::isEquality(Cond))) { in foldGEPICmp()
688 Value *Offset = EmitGEPOffset(GEPLHS); in foldGEPICmp()
693 if (GEPLHS->isInBounds() && ICmpInst::isEquality(Cond) && in foldGEPICmp()
714 auto *Base = GEPLHS->getPointerOperand(); in foldGEPICmp()
715 if (GEPLHS->getType()->isVectorTy() && Base->getType()->isPointerTy()) { in foldGEPICmp()
716 auto EC = cast<VectorType>(GEPLHS->getType())->getElementCount(); in foldGEPICmp()
727 GEPLHS->getNumOperands() == GEPRHS->getNumOperands() && in foldGEPICmp()
728 GEPLHS->getPointerOperand()->getType() == in foldGEPICmp()
730 GEPLHS->getSourceElementType() == GEPRHS->getSourceElementType(); in foldGEPICmp()
732 for (unsigned i = 1, e = GEPLHS->getNumOperands(); i != e; ++i) in foldGEPICmp()
733 if (GEPLHS->getOperand(i) != GEPRHS->getOperand(i)) { in foldGEPICmp()
739 Type *BaseType = GEPLHS->getOperand(0)->getType(); in foldGEPICmp()
741 return new ICmpInst(Cond, GEPLHS->getOperand(0), GEPRHS->getOperand(0)); in foldGEPICmp()
747 if (GEPLHS->isInBounds() && GEPRHS->isInBounds() && in foldGEPICmp()
748 (GEPLHS->hasAllConstantIndices() || GEPLHS->hasOneUse()) && in foldGEPICmp()
752 !GEPLHS->getType()->isVectorTy()) { in foldGEPICmp()
753 Value *LOffset = EmitGEPOffset(GEPLHS); in foldGEPICmp()
777 return transformToIndexedCompare(GEPLHS, RHS, Cond, DL, *this); in foldGEPICmp()
780 bool GEPsInBounds = GEPLHS->isInBounds() && GEPRHS->isInBounds(); in foldGEPICmp()
781 if (GEPLHS->getNumOperands() == GEPRHS->getNumOperands() && in foldGEPICmp()
782 GEPLHS->getSourceElementType() == GEPRHS->getSourceElementType()) { in foldGEPICmp()
787 if (GEPLHS->getOperand(i) != GEPRHS->getOperand(i)) { in foldGEPICmp()
788 Type *LHSType = GEPLHS->getOperand(i)->getType(); in foldGEPICmp()
793 (GEPLHS->getType()->isVectorTy() && in foldGEPICmp()
809 Value *LHSV = GEPLHS->getOperand(DiffOperand); in foldGEPICmp()
819 (GEPLHS->hasAllConstantIndices() || GEPLHS->hasOneUse()) && in foldGEPICmp()
822 Value *L = EmitGEPOffset(GEPLHS); in foldGEPICmp()
830 return transformToIndexedCompare(GEPLHS, RHS, Cond, DL, *this); in foldGEPICmp()