Lines Matching refs:LI
76 if (auto *LI = dyn_cast<LoadInst>(I)) { in isOnlyCopiedFromConstantMemory() local
78 if (!LI->isSimple()) return false; in isOnlyCopiedFromConstantMemory()
563 LoadInst *InstCombinerImpl::combineLoadToNewType(LoadInst &LI, Type *NewTy, in combineLoadToNewType() argument
565 assert((!LI.isAtomic() || isSupportedAtomicType(NewTy)) && in combineLoadToNewType()
569 Builder.CreateAlignedLoad(NewTy, LI.getPointerOperand(), LI.getAlign(), in combineLoadToNewType()
570 LI.isVolatile(), LI.getName() + Suffix); in combineLoadToNewType()
571 NewLoad->setAtomic(LI.getOrdering(), LI.getSyncScopeID()); in combineLoadToNewType()
572 copyMetadataForLoad(*NewLoad, LI); in combineLoadToNewType()
694 static Instruction *unpackLoadToAggregate(InstCombinerImpl &IC, LoadInst &LI) { in unpackLoadToAggregate() argument
697 if (!LI.isSimple()) in unpackLoadToAggregate()
700 Type *T = LI.getType(); in unpackLoadToAggregate()
704 StringRef Name = LI.getName(); in unpackLoadToAggregate()
710 LoadInst *NewLoad = IC.combineLoadToNewType(LI, ST->getTypeAtIndex(0U), in unpackLoadToAggregate()
712 NewLoad->setAAMetadata(LI.getAAMetadata()); in unpackLoadToAggregate()
713 return IC.replaceInstUsesWith(LI, IC.Builder.CreateInsertValue( in unpackLoadToAggregate()
729 const auto Align = LI.getAlign(); in unpackLoadToAggregate()
730 auto *Addr = LI.getPointerOperand(); in unpackLoadToAggregate()
746 L->setAAMetadata(LI.getAAMetadata()); in unpackLoadToAggregate()
751 return IC.replaceInstUsesWith(LI, V); in unpackLoadToAggregate()
758 LoadInst *NewLoad = IC.combineLoadToNewType(LI, ET, ".unpack"); in unpackLoadToAggregate()
759 NewLoad->setAAMetadata(LI.getAAMetadata()); in unpackLoadToAggregate()
760 return IC.replaceInstUsesWith(LI, IC.Builder.CreateInsertValue( in unpackLoadToAggregate()
773 const auto Align = LI.getAlign(); in unpackLoadToAggregate()
775 auto *Addr = LI.getPointerOperand(); in unpackLoadToAggregate()
791 L->setAAMetadata(LI.getAAMetadata()); in unpackLoadToAggregate()
797 return IC.replaceInstUsesWith(LI, V); in unpackLoadToAggregate()
993 static bool canSimplifyNullLoadOrGEP(LoadInst &LI, Value *Op) { in canSimplifyNullLoadOrGEP() argument
997 !NullPointerIsDefined(LI.getFunction(), GEPI->getPointerAddressSpace())) in canSimplifyNullLoadOrGEP()
1002 !NullPointerIsDefined(LI.getFunction(), LI.getPointerAddressSpace()))) in canSimplifyNullLoadOrGEP()
1007 Instruction *InstCombinerImpl::visitLoadInst(LoadInst &LI) { in visitLoadInst() argument
1008 Value *Op = LI.getOperand(0); in visitLoadInst()
1009 if (Value *Res = simplifyLoadInst(&LI, Op, SQ.getWithInstruction(&LI))) in visitLoadInst()
1010 return replaceInstUsesWith(LI, Res); in visitLoadInst()
1013 if (Instruction *Res = combineLoadToOperationType(*this, LI)) in visitLoadInst()
1019 Op, DL.getPrefTypeAlign(LI.getType()), DL, &LI, &AC, &DT); in visitLoadInst()
1020 if (KnownAlign > LI.getAlign()) in visitLoadInst()
1021 LI.setAlignment(KnownAlign); in visitLoadInst()
1025 if (Instruction *NewGEPI = replaceGEPIdxWithZero(*this, Op, LI)) in visitLoadInst()
1026 return replaceOperand(LI, 0, NewGEPI); in visitLoadInst()
1028 if (Instruction *Res = unpackLoadToAggregate(*this, LI)) in visitLoadInst()
1036 if (Value *AvailableVal = FindAvailableLoadedValue(&LI, BatchAA, &IsLoadCSE)) { in visitLoadInst()
1038 combineMetadataForCSE(cast<LoadInst>(AvailableVal), &LI, false); in visitLoadInst()
1041 LI, Builder.CreateBitOrPointerCast(AvailableVal, LI.getType(), in visitLoadInst()
1042 LI.getName() + ".cast")); in visitLoadInst()
1047 if (!LI.isUnordered()) return nullptr; in visitLoadInst()
1052 if (canSimplifyNullLoadOrGEP(LI, Op)) { in visitLoadInst()
1053 CreateNonTerminatorUnreachable(&LI); in visitLoadInst()
1054 return replaceInstUsesWith(LI, PoisonValue::get(LI.getType())); in visitLoadInst()
1070 Align Alignment = LI.getAlign(); in visitLoadInst()
1071 if (isSafeToLoadUnconditionally(SI->getOperand(1), LI.getType(), in visitLoadInst()
1073 isSafeToLoadUnconditionally(SI->getOperand(2), LI.getType(), in visitLoadInst()
1076 Builder.CreateLoad(LI.getType(), SI->getOperand(1), in visitLoadInst()
1079 Builder.CreateLoad(LI.getType(), SI->getOperand(2), in visitLoadInst()
1081 assert(LI.isUnordered() && "implied by above"); in visitLoadInst()
1083 V1->setAtomic(LI.getOrdering(), LI.getSyncScopeID()); in visitLoadInst()
1085 V2->setAtomic(LI.getOrdering(), LI.getSyncScopeID()); in visitLoadInst()
1092 LI.getPointerAddressSpace())) in visitLoadInst()
1093 return replaceOperand(LI, 0, SI->getOperand(2)); in visitLoadInst()
1098 LI.getPointerAddressSpace())) in visitLoadInst()
1099 return replaceOperand(LI, 0, SI->getOperand(1)); in visitLoadInst()
1437 if (LoadInst *LI = dyn_cast<LoadInst>(BBI)) { in visitStoreInst() local
1438 if (LI == Val && equivalentAddressValues(LI->getOperand(0), Ptr)) { in visitStoreInst()