Lines Matching refs:Builder

82   insertRMWLLSCLoop(IRBuilderBase &Builder, Type *ResultTy, Value *Addr,
98 IRBuilderBase &Builder, Type *ResultType, Value *Addr, Align AddrAlign,
323 IRBuilder Builder(I); in run() local
325 TLI->emitTrailingFence(Builder, I, FenceOrdering)) { in run()
379 ReplacementIRBuilder Builder(I, *DL); in bracketInstWithFences() local
381 auto LeadingFence = TLI->emitLeadingFence(Builder, I, Order); in bracketInstWithFences()
383 auto TrailingFence = TLI->emitTrailingFence(Builder, I, Order); in bracketInstWithFences()
408 ReplacementIRBuilder Builder(LI, *DL); in convertAtomicLoadToIntegerType() local
412 auto *NewLI = Builder.CreateLoad(NewTy, Addr); in convertAtomicLoadToIntegerType()
418 Value *NewVal = Builder.CreateBitCast(NewLI, LI->getType()); in convertAtomicLoadToIntegerType()
430 ReplacementIRBuilder Builder(RMWI, *DL); in convertAtomicXchgToIntegerType() local
435 ? Builder.CreatePtrToInt(Val, NewTy) in convertAtomicXchgToIntegerType()
436 : Builder.CreateBitCast(Val, NewTy); in convertAtomicXchgToIntegerType()
438 auto *NewRMWI = Builder.CreateAtomicRMW(AtomicRMWInst::Xchg, Addr, NewVal, in convertAtomicXchgToIntegerType()
445 ? Builder.CreateIntToPtr(NewRMWI, RMWI->getType()) in convertAtomicXchgToIntegerType()
446 : Builder.CreateBitCast(NewRMWI, RMWI->getType()); in convertAtomicXchgToIntegerType()
460 [](IRBuilderBase &Builder, Value *Loaded) { return Loaded; }); in tryExpandAtomicLoad() argument
490 ReplacementIRBuilder Builder(LI, *DL); in expandAtomicLoadToLL() local
495 Value *Val = TLI->emitLoadLinked(Builder, LI->getType(), in expandAtomicLoadToLL()
497 TLI->emitAtomicCmpXchgNoStoreLLBalance(Builder); in expandAtomicLoadToLL()
506 ReplacementIRBuilder Builder(LI, *DL); in expandAtomicLoadToCmpXchg() local
515 Value *Pair = Builder.CreateAtomicCmpXchg( in expandAtomicLoadToCmpXchg()
518 Value *Loaded = Builder.CreateExtractValue(Pair, 0, "loaded"); in expandAtomicLoadToCmpXchg()
535 ReplacementIRBuilder Builder(SI, *DL); in convertAtomicStoreToIntegerType() local
539 Value *NewVal = Builder.CreateBitCast(SI->getValueOperand(), NewTy); in convertAtomicStoreToIntegerType()
543 StoreInst *NewSI = Builder.CreateStore(NewVal, Addr); in convertAtomicStoreToIntegerType()
559 ReplacementIRBuilder Builder(SI, *DL); in expandAtomicStore() local
565 AtomicRMWInst *AI = Builder.CreateAtomicRMW( in expandAtomicStore()
574 static void createCmpXchgInstFun(IRBuilderBase &Builder, Value *Addr, in createCmpXchgInstFun() argument
584 IntegerType *IntTy = Builder.getIntNTy(OrigTy->getPrimitiveSizeInBits()); in createCmpXchgInstFun()
585 NewVal = Builder.CreateBitCast(NewVal, IntTy); in createCmpXchgInstFun()
586 Loaded = Builder.CreateBitCast(Loaded, IntTy); in createCmpXchgInstFun()
589 Value *Pair = Builder.CreateAtomicCmpXchg( in createCmpXchgInstFun()
592 Success = Builder.CreateExtractValue(Pair, 1, "success"); in createCmpXchgInstFun()
593 NewLoaded = Builder.CreateExtractValue(Pair, 0, "newloaded"); in createCmpXchgInstFun()
596 NewLoaded = Builder.CreateBitCast(NewLoaded, OrigTy); in createCmpXchgInstFun()
612 auto PerformOp = [&](IRBuilderBase &Builder, Value *Loaded) { in tryExpandAtomicRMW() argument
613 return buildAtomicRMWValue(AI->getOperation(), Builder, Loaded, in tryExpandAtomicRMW()
737 static PartwordMaskValues createMaskInstrs(IRBuilderBase &Builder, in createMaskInstrs() argument
772 PMV.AlignedAddr = Builder.CreateIntrinsic( in createMaskInstrs()
777 Value *AddrInt = Builder.CreatePtrToInt(Addr, IntTy); in createMaskInstrs()
778 PtrLSB = Builder.CreateAnd(AddrInt, MinWordSize - 1, "PtrLSB"); in createMaskInstrs()
787 PMV.ShiftAmt = Builder.CreateShl(PtrLSB, 3); in createMaskInstrs()
790 PMV.ShiftAmt = Builder.CreateShl( in createMaskInstrs()
791 Builder.CreateXor(PtrLSB, MinWordSize - ValueSize), 3); in createMaskInstrs()
794 PMV.ShiftAmt = Builder.CreateTrunc(PMV.ShiftAmt, PMV.WordType, "ShiftAmt"); in createMaskInstrs()
795 PMV.Mask = Builder.CreateShl( in createMaskInstrs()
799 PMV.Inv_Mask = Builder.CreateNot(PMV.Mask, "Inv_Mask"); in createMaskInstrs()
804 static Value *extractMaskedValue(IRBuilderBase &Builder, Value *WideWord, in extractMaskedValue() argument
810 Value *Shift = Builder.CreateLShr(WideWord, PMV.ShiftAmt, "shifted"); in extractMaskedValue()
811 Value *Trunc = Builder.CreateTrunc(Shift, PMV.IntValueType, "extracted"); in extractMaskedValue()
812 return Builder.CreateBitCast(Trunc, PMV.ValueType); in extractMaskedValue()
815 static Value *insertMaskedValue(IRBuilderBase &Builder, Value *WideWord, in insertMaskedValue() argument
822 Updated = Builder.CreateBitCast(Updated, PMV.IntValueType); in insertMaskedValue()
824 Value *ZExt = Builder.CreateZExt(Updated, PMV.WordType, "extended"); in insertMaskedValue()
826 Builder.CreateShl(ZExt, PMV.ShiftAmt, "shifted", /*HasNUW*/ true); in insertMaskedValue()
827 Value *And = Builder.CreateAnd(WideWord, PMV.Inv_Mask, "unmasked"); in insertMaskedValue()
828 Value *Or = Builder.CreateOr(And, Shift, "inserted"); in insertMaskedValue()
836 IRBuilderBase &Builder, Value *Loaded, in performMaskedAtomicOp() argument
844 Value *Loaded_MaskOut = Builder.CreateAnd(Loaded, PMV.Inv_Mask); in performMaskedAtomicOp()
845 Value *FinalVal = Builder.CreateOr(Loaded_MaskOut, Shifted_Inc); in performMaskedAtomicOp()
856 Value *NewVal = buildAtomicRMWValue(Op, Builder, Loaded, Shifted_Inc); in performMaskedAtomicOp()
857 Value *NewVal_Masked = Builder.CreateAnd(NewVal, PMV.Mask); in performMaskedAtomicOp()
858 Value *Loaded_MaskOut = Builder.CreateAnd(Loaded, PMV.Inv_Mask); in performMaskedAtomicOp()
859 Value *FinalVal = Builder.CreateOr(Loaded_MaskOut, NewVal_Masked); in performMaskedAtomicOp()
875 Value *Loaded_Extract = extractMaskedValue(Builder, Loaded, PMV); in performMaskedAtomicOp()
876 Value *NewVal = buildAtomicRMWValue(Op, Builder, Loaded_Extract, Inc); in performMaskedAtomicOp()
877 Value *FinalVal = insertMaskedValue(Builder, Loaded, NewVal, PMV); in performMaskedAtomicOp()
904 ReplacementIRBuilder Builder(AI, *DL); in expandPartwordAtomicRMW() local
907 createMaskInstrs(Builder, AI, AI->getType(), AI->getPointerOperand(), in expandPartwordAtomicRMW()
913 Value *ValOp = Builder.CreateBitCast(AI->getValOperand(), PMV.IntValueType); in expandPartwordAtomicRMW()
915 Builder.CreateShl(Builder.CreateZExt(ValOp, PMV.WordType), PMV.ShiftAmt, in expandPartwordAtomicRMW()
919 auto PerformPartwordOp = [&](IRBuilderBase &Builder, Value *Loaded) { in expandPartwordAtomicRMW() argument
920 return performMaskedAtomicOp(Op, Builder, Loaded, ValOperand_Shifted, in expandPartwordAtomicRMW()
926 OldResult = insertRMWCmpXchgLoop(Builder, PMV.WordType, PMV.AlignedAddr, in expandPartwordAtomicRMW()
931 OldResult = insertRMWLLSCLoop(Builder, PMV.WordType, PMV.AlignedAddr, in expandPartwordAtomicRMW()
936 Value *FinalOldResult = extractMaskedValue(Builder, OldResult, PMV); in expandPartwordAtomicRMW()
973 ReplacementIRBuilder Builder(AI, *DL); in widenPartwordAtomicRMW() local
981 createMaskInstrs(Builder, AI, AI->getType(), AI->getPointerOperand(), in widenPartwordAtomicRMW()
985 Builder.CreateShl(Builder.CreateZExt(AI->getValOperand(), PMV.WordType), in widenPartwordAtomicRMW()
992 Builder.CreateOr(ValOperand_Shifted, PMV.Inv_Mask, "AndOperand"); in widenPartwordAtomicRMW()
996 AtomicRMWInst *NewAI = Builder.CreateAtomicRMW( in widenPartwordAtomicRMW()
1002 Value *FinalOldResult = extractMaskedValue(Builder, NewAI, PMV); in widenPartwordAtomicRMW()
1050 ReplacementIRBuilder Builder(CI, *DL); in expandPartwordCmpXchg() local
1051 LLVMContext &Ctx = Builder.getContext(); in expandPartwordCmpXchg()
1062 Builder.SetInsertPoint(BB); in expandPartwordCmpXchg()
1065 createMaskInstrs(Builder, CI, CI->getCompareOperand()->getType(), Addr, in expandPartwordCmpXchg()
1070 Builder.CreateShl(Builder.CreateZExt(NewVal, PMV.WordType), PMV.ShiftAmt); in expandPartwordCmpXchg()
1072 Builder.CreateShl(Builder.CreateZExt(Cmp, PMV.WordType), PMV.ShiftAmt); in expandPartwordCmpXchg()
1076 LoadInst *InitLoaded = Builder.CreateLoad(PMV.WordType, PMV.AlignedAddr); in expandPartwordCmpXchg()
1078 Value *InitLoaded_MaskOut = Builder.CreateAnd(InitLoaded, PMV.Inv_Mask); in expandPartwordCmpXchg()
1079 Builder.CreateBr(LoopBB); in expandPartwordCmpXchg()
1082 Builder.SetInsertPoint(LoopBB); in expandPartwordCmpXchg()
1083 PHINode *Loaded_MaskOut = Builder.CreatePHI(PMV.WordType, 2); in expandPartwordCmpXchg()
1087 Value *FullWord_NewVal = Builder.CreateOr(Loaded_MaskOut, NewVal_Shifted); in expandPartwordCmpXchg()
1088 Value *FullWord_Cmp = Builder.CreateOr(Loaded_MaskOut, Cmp_Shifted); in expandPartwordCmpXchg()
1089 AtomicCmpXchgInst *NewCI = Builder.CreateAtomicCmpXchg( in expandPartwordCmpXchg()
1100 Value *OldVal = Builder.CreateExtractValue(NewCI, 0); in expandPartwordCmpXchg()
1101 Value *Success = Builder.CreateExtractValue(NewCI, 1); in expandPartwordCmpXchg()
1104 Builder.CreateBr(EndBB); in expandPartwordCmpXchg()
1106 Builder.CreateCondBr(Success, EndBB, FailureBB); in expandPartwordCmpXchg()
1109 Builder.SetInsertPoint(FailureBB); in expandPartwordCmpXchg()
1113 Value *OldVal_MaskOut = Builder.CreateAnd(OldVal, PMV.Inv_Mask); in expandPartwordCmpXchg()
1114 Value *ShouldContinue = Builder.CreateICmpNE(Loaded_MaskOut, OldVal_MaskOut); in expandPartwordCmpXchg()
1115 Builder.CreateCondBr(ShouldContinue, LoopBB, EndBB); in expandPartwordCmpXchg()
1121 Builder.SetInsertPoint(CI); in expandPartwordCmpXchg()
1123 Value *FinalOldVal = extractMaskedValue(Builder, OldVal, PMV); in expandPartwordCmpXchg()
1125 Res = Builder.CreateInsertValue(Res, FinalOldVal, 0); in expandPartwordCmpXchg()
1126 Res = Builder.CreateInsertValue(Res, Success, 1); in expandPartwordCmpXchg()
1137 ReplacementIRBuilder Builder(I, *DL); in expandAtomicOpToLLSC() local
1138 Value *Loaded = insertRMWLLSCLoop(Builder, ResultType, Addr, AddrAlign, in expandAtomicOpToLLSC()
1146 ReplacementIRBuilder Builder(AI, *DL); in expandAtomicRMWToMaskedIntrinsic() local
1149 createMaskInstrs(Builder, AI, AI->getType(), AI->getPointerOperand(), in expandAtomicRMWToMaskedIntrinsic()
1160 Value *ValOperand_Shifted = Builder.CreateShl( in expandAtomicRMWToMaskedIntrinsic()
1161 Builder.CreateCast(CastOp, AI->getValOperand(), PMV.WordType), in expandAtomicRMWToMaskedIntrinsic()
1164 Builder, AI, PMV.AlignedAddr, ValOperand_Shifted, PMV.Mask, PMV.ShiftAmt, in expandAtomicRMWToMaskedIntrinsic()
1166 Value *FinalOldResult = extractMaskedValue(Builder, OldResult, PMV); in expandAtomicRMWToMaskedIntrinsic()
1173 ReplacementIRBuilder Builder(CI, *DL); in expandAtomicCmpXchgToMaskedIntrinsic() local
1176 Builder, CI, CI->getCompareOperand()->getType(), CI->getPointerOperand(), in expandAtomicCmpXchgToMaskedIntrinsic()
1179 Value *CmpVal_Shifted = Builder.CreateShl( in expandAtomicCmpXchgToMaskedIntrinsic()
1180 Builder.CreateZExt(CI->getCompareOperand(), PMV.WordType), PMV.ShiftAmt, in expandAtomicCmpXchgToMaskedIntrinsic()
1182 Value *NewVal_Shifted = Builder.CreateShl( in expandAtomicCmpXchgToMaskedIntrinsic()
1183 Builder.CreateZExt(CI->getNewValOperand(), PMV.WordType), PMV.ShiftAmt, in expandAtomicCmpXchgToMaskedIntrinsic()
1186 Builder, CI, PMV.AlignedAddr, CmpVal_Shifted, NewVal_Shifted, PMV.Mask, in expandAtomicCmpXchgToMaskedIntrinsic()
1188 Value *FinalOldVal = extractMaskedValue(Builder, OldVal, PMV); in expandAtomicCmpXchgToMaskedIntrinsic()
1190 Res = Builder.CreateInsertValue(Res, FinalOldVal, 0); in expandAtomicCmpXchgToMaskedIntrinsic()
1191 Value *Success = Builder.CreateICmpEQ( in expandAtomicCmpXchgToMaskedIntrinsic()
1192 CmpVal_Shifted, Builder.CreateAnd(OldVal, PMV.Mask), "Success"); in expandAtomicCmpXchgToMaskedIntrinsic()
1193 Res = Builder.CreateInsertValue(Res, Success, 1); in expandAtomicCmpXchgToMaskedIntrinsic()
1200 IRBuilderBase &Builder, Type *ResultTy, Value *Addr, Align AddrAlign, in insertRMWLLSCLoop() argument
1203 LLVMContext &Ctx = Builder.getContext(); in insertRMWLLSCLoop()
1204 BasicBlock *BB = Builder.GetInsertBlock(); in insertRMWLLSCLoop()
1224 BB->splitBasicBlock(Builder.GetInsertPoint(), "atomicrmw.end"); in insertRMWLLSCLoop()
1230 Builder.SetInsertPoint(BB); in insertRMWLLSCLoop()
1231 Builder.CreateBr(LoopBB); in insertRMWLLSCLoop()
1234 Builder.SetInsertPoint(LoopBB); in insertRMWLLSCLoop()
1235 Value *Loaded = TLI->emitLoadLinked(Builder, ResultTy, Addr, MemOpOrder); in insertRMWLLSCLoop()
1237 Value *NewVal = PerformOp(Builder, Loaded); in insertRMWLLSCLoop()
1240 TLI->emitStoreConditional(Builder, NewVal, Addr, MemOpOrder); in insertRMWLLSCLoop()
1241 Value *TryAgain = Builder.CreateICmpNE( in insertRMWLLSCLoop()
1243 Builder.CreateCondBr(TryAgain, LoopBB, ExitBB); in insertRMWLLSCLoop()
1245 Builder.SetInsertPoint(ExitBB, ExitBB->begin()); in insertRMWLLSCLoop()
1260 ReplacementIRBuilder Builder(CI, *DL); in convertCmpXchgToIntegerType() local
1264 Value *NewCmp = Builder.CreatePtrToInt(CI->getCompareOperand(), NewTy); in convertCmpXchgToIntegerType()
1265 Value *NewNewVal = Builder.CreatePtrToInt(CI->getNewValOperand(), NewTy); in convertCmpXchgToIntegerType()
1267 auto *NewCI = Builder.CreateAtomicCmpXchg( in convertCmpXchgToIntegerType()
1274 Value *OldVal = Builder.CreateExtractValue(NewCI, 0); in convertCmpXchgToIntegerType()
1275 Value *Succ = Builder.CreateExtractValue(NewCI, 1); in convertCmpXchgToIntegerType()
1277 OldVal = Builder.CreateIntToPtr(OldVal, CI->getCompareOperand()->getType()); in convertCmpXchgToIntegerType()
1280 Res = Builder.CreateInsertValue(Res, OldVal, 0); in convertCmpXchgToIntegerType()
1281 Res = Builder.CreateInsertValue(Res, Succ, 1); in convertCmpXchgToIntegerType()
1382 ReplacementIRBuilder Builder(CI, *DL); in expandAtomicCmpXchg() local
1388 Builder.SetInsertPoint(BB); in expandAtomicCmpXchg()
1390 TLI->emitLeadingFence(Builder, CI, SuccessOrder); in expandAtomicCmpXchg()
1393 createMaskInstrs(Builder, CI, CI->getCompareOperand()->getType(), Addr, in expandAtomicCmpXchg()
1395 Builder.CreateBr(StartBB); in expandAtomicCmpXchg()
1398 Builder.SetInsertPoint(StartBB); in expandAtomicCmpXchg()
1400 TLI->emitLoadLinked(Builder, PMV.WordType, PMV.AlignedAddr, MemOpOrder); in expandAtomicCmpXchg()
1402 extractMaskedValue(Builder, UnreleasedLoad, PMV); in expandAtomicCmpXchg()
1403 Value *ShouldStore = Builder.CreateICmpEQ( in expandAtomicCmpXchg()
1408 Builder.CreateCondBr(ShouldStore, ReleasingStoreBB, NoStoreBB); in expandAtomicCmpXchg()
1410 Builder.SetInsertPoint(ReleasingStoreBB); in expandAtomicCmpXchg()
1412 TLI->emitLeadingFence(Builder, CI, SuccessOrder); in expandAtomicCmpXchg()
1413 Builder.CreateBr(TryStoreBB); in expandAtomicCmpXchg()
1415 Builder.SetInsertPoint(TryStoreBB); in expandAtomicCmpXchg()
1417 Builder.CreatePHI(PMV.WordType, 2, "loaded.trystore"); in expandAtomicCmpXchg()
1420 insertMaskedValue(Builder, LoadedTryStore, CI->getNewValOperand(), PMV); in expandAtomicCmpXchg()
1421 Value *StoreSuccess = TLI->emitStoreConditional(Builder, NewValueInsert, in expandAtomicCmpXchg()
1423 StoreSuccess = Builder.CreateICmpEQ( in expandAtomicCmpXchg()
1426 Builder.CreateCondBr(StoreSuccess, SuccessBB, in expandAtomicCmpXchg()
1429 Builder.SetInsertPoint(ReleasedLoadBB); in expandAtomicCmpXchg()
1433 TLI->emitLoadLinked(Builder, PMV.WordType, PMV.AlignedAddr, MemOpOrder); in expandAtomicCmpXchg()
1434 Value *SecondLoadExtract = extractMaskedValue(Builder, SecondLoad, PMV); in expandAtomicCmpXchg()
1435 ShouldStore = Builder.CreateICmpEQ(SecondLoadExtract, in expandAtomicCmpXchg()
1440 Builder.CreateCondBr(ShouldStore, TryStoreBB, NoStoreBB); in expandAtomicCmpXchg()
1444 Builder.CreateUnreachable(); in expandAtomicCmpXchg()
1448 Builder.SetInsertPoint(SuccessBB); in expandAtomicCmpXchg()
1451 TLI->emitTrailingFence(Builder, CI, SuccessOrder); in expandAtomicCmpXchg()
1452 Builder.CreateBr(ExitBB); in expandAtomicCmpXchg()
1454 Builder.SetInsertPoint(NoStoreBB); in expandAtomicCmpXchg()
1456 Builder.CreatePHI(UnreleasedLoad->getType(), 2, "loaded.nostore"); in expandAtomicCmpXchg()
1464 TLI->emitAtomicCmpXchgNoStoreLLBalance(Builder); in expandAtomicCmpXchg()
1465 Builder.CreateBr(FailureBB); in expandAtomicCmpXchg()
1467 Builder.SetInsertPoint(FailureBB); in expandAtomicCmpXchg()
1469 Builder.CreatePHI(UnreleasedLoad->getType(), 2, "loaded.failure"); in expandAtomicCmpXchg()
1474 TLI->emitTrailingFence(Builder, CI, FailureOrder); in expandAtomicCmpXchg()
1475 Builder.CreateBr(ExitBB); in expandAtomicCmpXchg()
1481 Builder.SetInsertPoint(ExitBB, ExitBB->begin()); in expandAtomicCmpXchg()
1483 Builder.CreatePHI(UnreleasedLoad->getType(), 2, "loaded.exit"); in expandAtomicCmpXchg()
1486 PHINode *Success = Builder.CreatePHI(Type::getInt1Ty(Ctx), 2, "success"); in expandAtomicCmpXchg()
1494 Builder.SetInsertPoint(ExitBB, std::next(Success->getIterator())); in expandAtomicCmpXchg()
1495 Value *Loaded = extractMaskedValue(Builder, LoadedFull, PMV); in expandAtomicCmpXchg()
1524 Res = Builder.CreateInsertValue(PoisonValue::get(CI->getType()), Loaded, 0); in expandAtomicCmpXchg()
1525 Res = Builder.CreateInsertValue(Res, Success, 1); in expandAtomicCmpXchg()
1563 IRBuilderBase &Builder, Type *ResultTy, Value *Addr, Align AddrAlign, in insertRMWCmpXchgLoop() argument
1567 LLVMContext &Ctx = Builder.getContext(); in insertRMWCmpXchgLoop()
1568 BasicBlock *BB = Builder.GetInsertBlock(); in insertRMWCmpXchgLoop()
1587 BB->splitBasicBlock(Builder.GetInsertPoint(), "atomicrmw.end"); in insertRMWCmpXchgLoop()
1594 Builder.SetInsertPoint(BB); in insertRMWCmpXchgLoop()
1595 LoadInst *InitLoaded = Builder.CreateAlignedLoad(ResultTy, Addr, AddrAlign); in insertRMWCmpXchgLoop()
1596 Builder.CreateBr(LoopBB); in insertRMWCmpXchgLoop()
1599 Builder.SetInsertPoint(LoopBB); in insertRMWCmpXchgLoop()
1600 PHINode *Loaded = Builder.CreatePHI(ResultTy, 2, "loaded"); in insertRMWCmpXchgLoop()
1603 Value *NewVal = PerformOp(Builder, Loaded); in insertRMWCmpXchgLoop()
1608 CreateCmpXchg(Builder, Addr, Loaded, NewVal, AddrAlign, in insertRMWCmpXchgLoop()
1617 Builder.CreateCondBr(Success, ExitBB, LoopBB); in insertRMWCmpXchgLoop()
1619 Builder.SetInsertPoint(ExitBB, ExitBB->begin()); in insertRMWCmpXchgLoop()
1648 ReplacementIRBuilder Builder(AI, AI->getDataLayout()); in expandAtomicRMWToCmpXchg() local
1649 Builder.setIsFPConstrained( in expandAtomicRMWToCmpXchg()
1655 Builder, AI->getType(), AI->getPointerOperand(), AI->getAlign(), in expandAtomicRMWToCmpXchg()
1657 [&](IRBuilderBase &Builder, Value *Loaded) { in expandAtomicRMWToCmpXchg() argument
1658 return buildAtomicRMWValue(AI->getOperation(), Builder, Loaded, in expandAtomicRMWToCmpXchg()
1809 I, [this](IRBuilderBase &Builder, Value *Addr, Value *Loaded, in expandAtomicRMWToLibcall()
1813 AtomicCmpXchgInst *Pair = Builder.CreateAtomicCmpXchg( in expandAtomicRMWToLibcall()
1816 Success = Builder.CreateExtractValue(Pair, 1, "success"); in expandAtomicRMWToLibcall()
1817 NewLoaded = Builder.CreateExtractValue(Pair, 0, "newloaded"); in expandAtomicRMWToLibcall()
1840 IRBuilder<> Builder(I); in expandAtomicOpToLibcall() local
1940 PtrVal = Builder.CreateAddrSpaceCast(PtrVal, PointerType::getUnqual(Ctx)); in expandAtomicOpToLibcall()
1947 Builder.CreateLifetimeStart(AllocaCASExpected, SizeVal64); in expandAtomicOpToLibcall()
1948 Builder.CreateAlignedStore(CASExpected, AllocaCASExpected, AllocaAlignment); in expandAtomicOpToLibcall()
1956 Builder.CreateBitOrPointerCast(ValueOperand, SizedIntTy); in expandAtomicOpToLibcall()
1961 Builder.CreateLifetimeStart(AllocaValue, SizeVal64); in expandAtomicOpToLibcall()
1962 Builder.CreateAlignedStore(ValueOperand, AllocaValue, AllocaAlignment); in expandAtomicOpToLibcall()
1971 Builder.CreateLifetimeStart(AllocaResult, SizeVal64); in expandAtomicOpToLibcall()
1998 CallInst *Call = Builder.CreateCall(LibcallFn, Args); in expandAtomicOpToLibcall()
2004 Builder.CreateLifetimeEnd(AllocaValue, SizeVal64); in expandAtomicOpToLibcall()
2011 Value *ExpectedOut = Builder.CreateAlignedLoad( in expandAtomicOpToLibcall()
2013 Builder.CreateLifetimeEnd(AllocaCASExpected, SizeVal64); in expandAtomicOpToLibcall()
2014 V = Builder.CreateInsertValue(V, ExpectedOut, 0); in expandAtomicOpToLibcall()
2015 V = Builder.CreateInsertValue(V, Result, 1); in expandAtomicOpToLibcall()
2020 V = Builder.CreateBitOrPointerCast(Result, I->getType()); in expandAtomicOpToLibcall()
2022 V = Builder.CreateAlignedLoad(I->getType(), AllocaResult, in expandAtomicOpToLibcall()
2024 Builder.CreateLifetimeEnd(AllocaResult, SizeVal64); in expandAtomicOpToLibcall()