Lines Matching refs:GEPLHS

790 static Instruction *transformToIndexedCompare(GEPOperator *GEPLHS, Value *RHS,  in transformToIndexedCompare()  argument
794 if (GEPLHS->getType()->isVectorTy()) in transformToIndexedCompare()
797 if (!GEPLHS->hasAllConstantIndices()) in transformToIndexedCompare()
800 Type *ElemTy = GEPLHS->getSourceElementType(); in transformToIndexedCompare()
802 std::tie(PtrBase, Index) = getAsConstantIndexedAddress(ElemTy, GEPLHS, DL); in transformToIndexedCompare()
827 Instruction *InstCombinerImpl::foldGEPICmp(GEPOperator *GEPLHS, Value *RHS, in foldGEPICmp() argument
843 Value *PtrBase = GEPLHS->getOperand(0); in foldGEPICmp()
845 if (PtrBase == RHS && GEPLHS->isInBounds() && in foldGEPICmp()
846 !GEPLHS->getType()->isVectorTy()) { in foldGEPICmp()
851 Value *Offset = evaluateGEPOffsetExpression(GEPLHS, *this, DL); in foldGEPICmp()
855 Offset = EmitGEPOffset(GEPLHS); in foldGEPICmp()
860 if (GEPLHS->isInBounds() && ICmpInst::isEquality(Cond) && in foldGEPICmp()
881 auto *Base = GEPLHS->getPointerOperand(); in foldGEPICmp()
882 if (GEPLHS->getType()->isVectorTy() && Base->getType()->isPointerTy()) { in foldGEPICmp()
883 auto EC = cast<VectorType>(GEPLHS->getType())->getElementCount(); in foldGEPICmp()
894 GEPLHS->getNumOperands() == GEPRHS->getNumOperands() && in foldGEPICmp()
895 GEPLHS->getPointerOperand()->getType() == in foldGEPICmp()
897 GEPLHS->getSourceElementType() == GEPRHS->getSourceElementType(); in foldGEPICmp()
899 for (unsigned i = 1, e = GEPLHS->getNumOperands(); i != e; ++i) in foldGEPICmp()
900 if (GEPLHS->getOperand(i) != GEPRHS->getOperand(i)) { in foldGEPICmp()
906 Type *BaseType = GEPLHS->getOperand(0)->getType(); in foldGEPICmp()
908 return new ICmpInst(Cond, GEPLHS->getOperand(0), GEPRHS->getOperand(0)); in foldGEPICmp()
914 if (GEPLHS->isInBounds() && GEPRHS->isInBounds() && in foldGEPICmp()
915 (GEPLHS->hasAllConstantIndices() || GEPLHS->hasOneUse()) && in foldGEPICmp()
919 !GEPLHS->getType()->isVectorTy()) { in foldGEPICmp()
920 Value *LOffset = EmitGEPOffset(GEPLHS); in foldGEPICmp()
944 return transformToIndexedCompare(GEPLHS, RHS, Cond, DL); in foldGEPICmp()
949 if (!GEPLHS->getType()->isVectorTy() && GEPLHS->hasAllZeroIndices()) in foldGEPICmp()
950 return foldGEPICmp(GEPRHS, GEPLHS->getOperand(0), in foldGEPICmp()
956 return foldGEPICmp(GEPLHS, GEPRHS->getOperand(0), Cond, I); in foldGEPICmp()
958 bool GEPsInBounds = GEPLHS->isInBounds() && GEPRHS->isInBounds(); in foldGEPICmp()
959 if (GEPLHS->getNumOperands() == GEPRHS->getNumOperands() && in foldGEPICmp()
960 GEPLHS->getSourceElementType() == GEPRHS->getSourceElementType()) { in foldGEPICmp()
965 if (GEPLHS->getOperand(i) != GEPRHS->getOperand(i)) { in foldGEPICmp()
966 Type *LHSType = GEPLHS->getOperand(i)->getType(); in foldGEPICmp()
971 (GEPLHS->getType()->isVectorTy() && in foldGEPICmp()
987 Value *LHSV = GEPLHS->getOperand(DiffOperand); in foldGEPICmp()
996 if (GEPsInBounds && (isa<ConstantExpr>(GEPLHS) || GEPLHS->hasOneUse()) && in foldGEPICmp()
999 Value *L = EmitGEPOffset(GEPLHS); in foldGEPICmp()
1007 return transformToIndexedCompare(GEPLHS, RHS, Cond, DL); in foldGEPICmp()