Lines Matching refs:LI

57       if (auto *LI = dyn_cast<LoadInst>(I)) {  in isOnlyCopiedFromConstantMemory()  local
59 if (!LI->isSimple()) return false; in isOnlyCopiedFromConstantMemory()
460 LoadInst *InstCombinerImpl::combineLoadToNewType(LoadInst &LI, Type *NewTy, in combineLoadToNewType() argument
462 assert((!LI.isAtomic() || isSupportedAtomicType(NewTy)) && in combineLoadToNewType()
465 Value *Ptr = LI.getPointerOperand(); in combineLoadToNewType()
466 unsigned AS = LI.getPointerAddressSpace(); in combineLoadToNewType()
474 NewTy, NewPtr, LI.getAlign(), LI.isVolatile(), LI.getName() + Suffix); in combineLoadToNewType()
475 NewLoad->setAtomic(LI.getOrdering(), LI.getSyncScopeID()); in combineLoadToNewType()
476 copyMetadataForLoad(*NewLoad, LI); in combineLoadToNewType()
578 LoadInst &LI) { in combineLoadToOperationType() argument
581 if (!LI.isUnordered()) in combineLoadToOperationType()
584 if (LI.use_empty()) in combineLoadToOperationType()
588 if (LI.getPointerOperand()->isSwiftError()) in combineLoadToOperationType()
596 if (LI.hasOneUse()) { in combineLoadToOperationType()
599 if (auto *BC = dyn_cast<BitCastInst>(LI.user_back())) { in combineLoadToOperationType()
600 assert(!LI.getType()->isX86_AMXTy() && in combineLoadToOperationType()
606 if (auto* CI = dyn_cast<CastInst>(LI.user_back())) in combineLoadToOperationType()
607 if (CI->isNoopCast(DL) && LI.getType()->isPtrOrPtrVectorTy() == in combineLoadToOperationType()
609 if (!LI.isAtomic() || isSupportedAtomicType(CI->getDestTy())) { in combineLoadToOperationType()
610 LoadInst *NewLoad = IC.combineLoadToNewType(LI, CI->getDestTy()); in combineLoadToOperationType()
613 return &LI; in combineLoadToOperationType()
622 static Instruction *unpackLoadToAggregate(InstCombinerImpl &IC, LoadInst &LI) { in unpackLoadToAggregate() argument
625 if (!LI.isSimple()) in unpackLoadToAggregate()
628 Type *T = LI.getType(); in unpackLoadToAggregate()
632 StringRef Name = LI.getName(); in unpackLoadToAggregate()
638 LoadInst *NewLoad = IC.combineLoadToNewType(LI, ST->getTypeAtIndex(0U), in unpackLoadToAggregate()
640 NewLoad->setAAMetadata(LI.getAAMetadata()); in unpackLoadToAggregate()
641 return IC.replaceInstUsesWith(LI, IC.Builder.CreateInsertValue( in unpackLoadToAggregate()
652 const auto Align = LI.getAlign(); in unpackLoadToAggregate()
653 auto *Addr = LI.getPointerOperand(); in unpackLoadToAggregate()
669 L->setAAMetadata(LI.getAAMetadata()); in unpackLoadToAggregate()
674 return IC.replaceInstUsesWith(LI, V); in unpackLoadToAggregate()
681 LoadInst *NewLoad = IC.combineLoadToNewType(LI, ET, ".unpack"); in unpackLoadToAggregate()
682 NewLoad->setAAMetadata(LI.getAAMetadata()); in unpackLoadToAggregate()
683 return IC.replaceInstUsesWith(LI, IC.Builder.CreateInsertValue( in unpackLoadToAggregate()
696 const auto Align = LI.getAlign(); in unpackLoadToAggregate()
698 auto *Addr = LI.getPointerOperand(); in unpackLoadToAggregate()
714 L->setAAMetadata(LI.getAAMetadata()); in unpackLoadToAggregate()
720 return IC.replaceInstUsesWith(LI, V); in unpackLoadToAggregate()
915 static bool canSimplifyNullLoadOrGEP(LoadInst &LI, Value *Op) { in canSimplifyNullLoadOrGEP() argument
919 !NullPointerIsDefined(LI.getFunction(), GEPI->getPointerAddressSpace())) in canSimplifyNullLoadOrGEP()
924 !NullPointerIsDefined(LI.getFunction(), LI.getPointerAddressSpace()))) in canSimplifyNullLoadOrGEP()
929 Instruction *InstCombinerImpl::visitLoadInst(LoadInst &LI) { in visitLoadInst() argument
930 Value *Op = LI.getOperand(0); in visitLoadInst()
933 if (Instruction *Res = combineLoadToOperationType(*this, LI)) in visitLoadInst()
938 Op, DL.getPrefTypeAlign(LI.getType()), DL, &LI, &AC, &DT); in visitLoadInst()
939 if (KnownAlign > LI.getAlign()) in visitLoadInst()
940 LI.setAlignment(KnownAlign); in visitLoadInst()
943 if (Instruction *NewGEPI = replaceGEPIdxWithZero(*this, Op, LI)) { in visitLoadInst()
945 return &LI; in visitLoadInst()
948 if (Instruction *Res = unpackLoadToAggregate(*this, LI)) in visitLoadInst()
955 if (Value *AvailableVal = FindAvailableLoadedValue(&LI, *AA, &IsLoadCSE)) { in visitLoadInst()
957 combineMetadataForCSE(cast<LoadInst>(AvailableVal), &LI, false); in visitLoadInst()
960 LI, Builder.CreateBitOrPointerCast(AvailableVal, LI.getType(), in visitLoadInst()
961 LI.getName() + ".cast")); in visitLoadInst()
966 if (!LI.isUnordered()) return nullptr; in visitLoadInst()
971 if (canSimplifyNullLoadOrGEP(LI, Op)) { in visitLoadInst()
976 StoreInst *SI = new StoreInst(PoisonValue::get(LI.getType()), in visitLoadInst()
977 Constant::getNullValue(Op->getType()), &LI); in visitLoadInst()
978 SI->setDebugLoc(LI.getDebugLoc()); in visitLoadInst()
979 return replaceInstUsesWith(LI, PoisonValue::get(LI.getType())); in visitLoadInst()
995 Align Alignment = LI.getAlign(); in visitLoadInst()
996 if (isSafeToLoadUnconditionally(SI->getOperand(1), LI.getType(), in visitLoadInst()
998 isSafeToLoadUnconditionally(SI->getOperand(2), LI.getType(), in visitLoadInst()
1001 Builder.CreateLoad(LI.getType(), SI->getOperand(1), in visitLoadInst()
1004 Builder.CreateLoad(LI.getType(), SI->getOperand(2), in visitLoadInst()
1006 assert(LI.isUnordered() && "implied by above"); in visitLoadInst()
1008 V1->setAtomic(LI.getOrdering(), LI.getSyncScopeID()); in visitLoadInst()
1010 V2->setAtomic(LI.getOrdering(), LI.getSyncScopeID()); in visitLoadInst()
1017 LI.getPointerAddressSpace())) in visitLoadInst()
1018 return replaceOperand(LI, 0, SI->getOperand(2)); in visitLoadInst()
1023 LI.getPointerAddressSpace())) in visitLoadInst()
1024 return replaceOperand(LI, 0, SI->getOperand(1)); in visitLoadInst()
1288 auto *LI = cast<LoadInst>(SI.getValueOperand()); in removeBitcastsFromLoadStoreOnMinMax() local
1289 if (!LI->getType()->isIntegerTy()) in removeBitcastsFromLoadStoreOnMinMax()
1297 if (LI->getType() == CmpLoadTy) in removeBitcastsFromLoadStoreOnMinMax()
1302 if (DL.getTypeStoreSizeInBits(LI->getType()) != in removeBitcastsFromLoadStoreOnMinMax()
1306 if (!all_of(LI->users(), [LI, LoadAddr](User *U) { in removeBitcastsFromLoadStoreOnMinMax()
1308 return SI && SI->getPointerOperand() != LI && in removeBitcastsFromLoadStoreOnMinMax()
1315 IC.Builder.SetInsertPoint(LI); in removeBitcastsFromLoadStoreOnMinMax()
1316 LoadInst *NewLI = IC.combineLoadToNewType(*LI, CmpLoadTy); in removeBitcastsFromLoadStoreOnMinMax()
1318 for (auto *UI : LI->users()) { in removeBitcastsFromLoadStoreOnMinMax()
1323 IC.replaceInstUsesWith(*LI, PoisonValue::get(LI->getType())); in removeBitcastsFromLoadStoreOnMinMax()
1324 IC.eraseInstFromFunction(*LI); in removeBitcastsFromLoadStoreOnMinMax()
1413 if (LoadInst *LI = dyn_cast<LoadInst>(BBI)) { in visitStoreInst() local
1414 if (LI == Val && equivalentAddressValues(LI->getOperand(0), Ptr)) { in visitStoreInst()