|
reference, declaration → definition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
|
References
gen/tools/clang/include/clang/Basic/arm_mve_builtin_cg.inc 17 Value *Val1 = Builder.CreateLoad(Val0);
19 Value *Val3 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vldr_gather_base_wb, llvm::SmallVector<llvm::Type *, 2> {Param0, llvm::VectorType::get(Int32Ty, 4)}), llvm::SmallVector<Value *, 2> {Val1, Val2});
20 Value *Val4 = Builder.CreateExtractValue(Val3, 1);
21 Builder.CreateStore(Val4, Val0);
22 return Builder.CreateExtractValue(Val3, 0);
27 Value *Val1 = Builder.CreateLoad(Val0);
30 Value *Val4 = Builder.CreateIntCast(Val3, Int32Ty, false);
31 Value *Val5 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 1> {Val4});
31 Value *Val5 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 1> {Val4});
32 Value *Val6 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vldr_gather_base_wb_predicated, llvm::SmallVector<llvm::Type *, 3> {llvm::VectorType::get(Int64Ty, 2), llvm::VectorType::get(Int64Ty, 2), llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 3> {Val1, Val2, Val5});
32 Value *Val6 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vldr_gather_base_wb_predicated, llvm::SmallVector<llvm::Type *, 3> {llvm::VectorType::get(Int64Ty, 2), llvm::VectorType::get(Int64Ty, 2), llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 3> {Val1, Val2, Val5});
33 Value *Val7 = Builder.CreateExtractValue(Val6, 1);
34 Builder.CreateStore(Val7, Val0);
35 return Builder.CreateExtractValue(Val6, 0);
160 Value *Val1 = Builder.CreateIntCast(Val0, Int32Ty, false);
162 Value *Val3 = Builder.CreateCall(CGM.getIntrinsic(Param0, llvm::SmallVector<llvm::Type *, 1> {Param1}), llvm::SmallVector<Value *, 2> {Val1, Val2});
163 return Builder.CreateIntCast(Val3, Param2, Param3);
170 Value *Val3 = Builder.CreateLoad(Val2);
172 Value *Val5 = Builder.CreateShl(Val3, Val4);
173 Value *Val6 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vadc, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Int32Ty, 4)}), llvm::SmallVector<Value *, 3> {Val0, Val1, Val5});
175 Value *Val8 = Builder.CreateExtractValue(Val6, 1);
177 Value *Val10 = Builder.CreateLShr(Val8, Val9);
178 Value *Val11 = Builder.CreateAnd(Val7, Val10);
179 Builder.CreateStore(Val11, Val2);
180 return Builder.CreateExtractValue(Val6, 0);
208 Value *Val2 = Builder.CreateCall(CGM.getIntrinsic(Param0, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Int32Ty, 4)}), llvm::SmallVector<Value *, 2> {Val0, Val1});
209 return Builder.CreateIntCast(Val2, Int32Ty, Param1);
217 Value *Val4 = Builder.CreateLoad(Val3);
219 Value *Val6 = Builder.CreateShl(Val4, Val5);
221 Value *Val8 = Builder.CreateIntCast(Val7, Int32Ty, false);
222 Value *Val9 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 1> {Val8});
222 Value *Val9 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 1> {Val8});
223 Value *Val10 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vadc_predicated, llvm::SmallVector<llvm::Type *, 2> {llvm::VectorType::get(Int32Ty, 4), llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 5> {Val0, Val1, Val2, Val6, Val9});
223 Value *Val10 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vadc_predicated, llvm::SmallVector<llvm::Type *, 2> {llvm::VectorType::get(Int32Ty, 4), llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 5> {Val0, Val1, Val2, Val6, Val9});
225 Value *Val12 = Builder.CreateExtractValue(Val10, 1);
227 Value *Val14 = Builder.CreateLShr(Val12, Val13);
228 Value *Val15 = Builder.CreateAnd(Val11, Val14);
229 Builder.CreateStore(Val15, Val3);
230 return Builder.CreateExtractValue(Val10, 0);
239 Value *Val5 = Builder.CreateIntCast(Val4, Int32Ty, false);
240 Value *Val6 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 1> {Val5});
240 Value *Val6 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 1> {Val5});
241 Value *Val7 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vadc_predicated, llvm::SmallVector<llvm::Type *, 2> {llvm::VectorType::get(Int32Ty, 4), llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 5> {Val0, Val1, Val2, Val3, Val6});
241 Value *Val7 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vadc_predicated, llvm::SmallVector<llvm::Type *, 2> {llvm::VectorType::get(Int32Ty, 4), llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 5> {Val0, Val1, Val2, Val3, Val6});
243 Value *Val9 = Builder.CreateExtractValue(Val7, 1);
245 Value *Val11 = Builder.CreateLShr(Val9, Val10);
246 Value *Val12 = Builder.CreateAnd(Val8, Val11);
248 Builder.CreateStore(Val12, Val13);
249 return Builder.CreateExtractValue(Val7, 0);
256 Value *Val3 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vadc, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Int32Ty, 4)}), llvm::SmallVector<Value *, 3> {Val0, Val1, Val2});
258 Value *Val5 = Builder.CreateExtractValue(Val3, 1);
260 Value *Val7 = Builder.CreateLShr(Val5, Val6);
261 Value *Val8 = Builder.CreateAnd(Val4, Val7);
263 Builder.CreateStore(Val8, Val9);
264 return Builder.CreateExtractValue(Val3, 0);
281 Value *Val4 = Builder.CreateIntCast(Val3, Int32Ty, false);
282 Value *Val5 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 1> {Val4});
282 Value *Val5 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {llvm::VectorType::get(Builder.getInt1Ty(), 4)}), llvm::SmallVector<Value *, 1> {Val4});
283 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vcvt_narrow_predicated), llvm::SmallVector<Value *, 4> {Val0, Val1, Val2, Val5});
299 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_vcvt_narrow), llvm::SmallVector<Value *, 3> {Val0, Val1, Val2});
309 return Builder.CreateAdd(Val0, Val1);
315 return Builder.CreateFAdd(Val0, Val1);
321 return Builder.CreateFSub(Val0, Val1);
331 return Builder.CreateSub(Val0, Val1);
336 Value *Val2 = Builder.CreateLShr(Val0, Val1);
337 Value *Val3 = Builder.CreateIntCast(Val2, Int32Ty, false);
338 Value *Val4 = Builder.CreateIntCast(Val0, Int32Ty, false);
340 Value *Val6 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_urshrl), llvm::SmallVector<Value *, 3> {Val4, Val3, Val5});
341 Value *Val7 = Builder.CreateExtractValue(Val6, 1);
342 Value *Val8 = Builder.CreateIntCast(Val7, Int64Ty, false);
344 Value *Val10 = Builder.CreateShl(Val8, Val9);
345 Value *Val11 = Builder.CreateExtractValue(Val6, 0);
346 Value *Val12 = Builder.CreateIntCast(Val11, Int64Ty, false);
347 return Builder.CreateOr(Val10, Val12);
370 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 8);
375 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 4);
380 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 8);
385 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 4);
390 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 16);
395 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 8);
400 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 4);
405 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 16);
410 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 8);
415 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 4);
420 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 8);
425 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 4);
430 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 16);
435 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 8);
440 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 4);
445 Param0 = llvm::VectorType::get(Builder.getInt1Ty(), 16);
453 Value *Val3 = Builder.CreateIntCast(Val2, Int32Ty, false);
454 Value *Val4 = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_mve_pred_i2v, llvm::SmallVector<llvm::Type *, 1> {Param0}), llvm::SmallVector<Value *, 1> {Val3});
456 return Builder.CreateCall(CGM.getIntrinsic(Param1, llvm::SmallVector<llvm::Type *, 2> {Param2, Param0}), llvm::SmallVector<Value *, 4> {Val0, Val1, Val4, Val5});
tools/clang/lib/CodeGen/CGAtomic.cpp 87 VoidPtrAddr = CGF.Builder.CreateConstGEP1_64(
89 auto Addr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
91 CGF.Builder.getIntNTy(AtomicSizeInBits)->getPointerTo(),
203 addr = CGF.Builder.CreateStructGEP(addr, 0);
297 return CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
350 CGF.Builder.CreateMemSet(
365 llvm::Value *Expected = CGF.Builder.CreateLoad(Val1);
366 llvm::Value *Desired = CGF.Builder.CreateLoad(Val2);
368 llvm::AtomicCmpXchgInst *Pair = CGF.Builder.CreateAtomicCmpXchg(
376 llvm::Value *Old = CGF.Builder.CreateExtractValue(Pair, 0);
377 llvm::Value *Cmp = CGF.Builder.CreateExtractValue(Pair, 1);
391 CGF.Builder.CreateCondBr(Cmp, ContinueBB, StoreExpectedBB);
393 CGF.Builder.SetInsertPoint(StoreExpectedBB);
395 CGF.Builder.CreateStore(Old, Val1);
397 CGF.Builder.CreateBr(ContinueBB);
399 CGF.Builder.SetInsertPoint(ContinueBB);
457 llvm::SwitchInst *SI = CGF.Builder.CreateSwitch(FailureOrderVal, MonotonicBB);
464 CGF.Builder.SetInsertPoint(MonotonicBB);
467 CGF.Builder.CreateBr(ContBB);
470 CGF.Builder.SetInsertPoint(AcquireBB);
473 CGF.Builder.CreateBr(ContBB);
474 SI->addCase(CGF.Builder.getInt32((int)llvm::AtomicOrderingCABI::consume),
476 SI->addCase(CGF.Builder.getInt32((int)llvm::AtomicOrderingCABI::acquire),
480 CGF.Builder.SetInsertPoint(SeqCstBB);
483 CGF.Builder.CreateBr(ContBB);
484 SI->addCase(CGF.Builder.getInt32((int)llvm::AtomicOrderingCABI::seq_cst),
488 CGF.Builder.SetInsertPoint(ContBB);
527 llvm::SwitchInst *SI = CGF.Builder.CreateSwitch(IsWeak, WeakBB);
528 SI->addCase(CGF.Builder.getInt1(false), StrongBB);
530 CGF.Builder.SetInsertPoint(StrongBB);
533 CGF.Builder.CreateBr(ContBB);
535 CGF.Builder.SetInsertPoint(WeakBB);
538 CGF.Builder.CreateBr(ContBB);
540 CGF.Builder.SetInsertPoint(ContBB);
548 llvm::LoadInst *Load = CGF.Builder.CreateLoad(Ptr);
551 CGF.Builder.CreateStore(Load, Dest);
559 llvm::Value *LoadVal1 = CGF.Builder.CreateLoad(Val1);
560 llvm::StoreInst *Store = CGF.Builder.CreateStore(LoadVal1, Ptr);
638 llvm::Value *LoadVal1 = CGF.Builder.CreateLoad(Val1);
640 CGF.Builder.CreateAtomicRMW(Op, Ptr.getPointer(), LoadVal1, Order, Scope);
647 Result = CGF.Builder.CreateBinOp(PostOp, RMWI, LoadVal1);
649 Result = CGF.Builder.CreateNot(Result);
650 CGF.Builder.CreateStore(Result, Dest);
689 auto &Builder = CGF.Builder;
733 Address Ptr = Address(CGF.Builder.CreateBitCast(Val, IPtrTy), Align);
836 Val1Scalar = Builder.CreateMul(Val1Scalar, CGM.getSize(PointeeIncAmt));
1187 ResVal = Builder.CreateBinOp(PostOp, ResVal, LoadVal1);
1190 ResVal = Builder.CreateNot(ResVal);
1192 Builder.CreateStore(
1194 Builder.CreateBitCast(Dest, ResVal->getType()->getPointerTo()));
1201 Builder.CreateBitCast(Dest, ConvertTypeForMem(RValTy)->getPointerTo()),
1252 Builder.CreateBitCast(Dest, ConvertTypeForMem(RValTy)->getPointerTo(
1277 Order = Builder.CreateIntCast(Order, Builder.getInt32Ty(), false);
1277 Order = Builder.CreateIntCast(Order, Builder.getInt32Ty(), false);
1278 llvm::SwitchInst *SI = Builder.CreateSwitch(Order, MonotonicBB);
1281 Builder.SetInsertPoint(MonotonicBB);
1284 Builder.CreateBr(ContBB);
1286 Builder.SetInsertPoint(AcquireBB);
1289 Builder.CreateBr(ContBB);
1290 SI->addCase(Builder.getInt32((int)llvm::AtomicOrderingCABI::consume),
1292 SI->addCase(Builder.getInt32((int)llvm::AtomicOrderingCABI::acquire),
1296 Builder.SetInsertPoint(ReleaseBB);
1299 Builder.CreateBr(ContBB);
1300 SI->addCase(Builder.getInt32((int)llvm::AtomicOrderingCABI::release),
1304 Builder.SetInsertPoint(AcqRelBB);
1307 Builder.CreateBr(ContBB);
1308 SI->addCase(Builder.getInt32((int)llvm::AtomicOrderingCABI::acq_rel),
1311 Builder.SetInsertPoint(SeqCstBB);
1314 Builder.CreateBr(ContBB);
1315 SI->addCase(Builder.getInt32((int)llvm::AtomicOrderingCABI::seq_cst),
1319 Builder.SetInsertPoint(ContBB);
1325 Builder.CreateBitCast(Dest, ConvertTypeForMem(RValTy)->getPointerTo(
1335 return CGF.Builder.CreateBitCast(addr, ty->getPointerTo(addrspace));
1343 CGF.Builder.CreateMemCpy(Tmp, Addr,
1361 addr = CGF.Builder.CreateStructGEP(addr, 0);
1369 return RValue::get(CGF.Builder.CreateLoad(addr));
1402 return RValue::get(CGF.Builder.CreateIntToPtr(IntVal, ValTy));
1404 return RValue::get(CGF.Builder.CreateBitCast(IntVal, ValTy));
1421 CGF.Builder.CreateStore(IntVal, CastTemp)
1446 llvm::LoadInst *Load = CGF.Builder.CreateLoad(Addr, "atomic-load");
1588 return CGF.Builder.CreatePtrToInt(Value, InputIntTy);
1590 return CGF.Builder.CreateBitCast(Value, InputIntTy);
1599 return CGF.Builder.CreateLoad(Addr);
1607 auto *Inst = CGF.Builder.CreateAtomicCmpXchg(Addr.getPointer(),
1615 auto *PreviousVal = CGF.Builder.CreateExtractValue(Inst, /*Idxs=*/0);
1616 auto *SuccessFailureVal = CGF.Builder.CreateExtractValue(Inst, /*Idxs=*/1);
1750 auto *OldVal = CGF.Builder.CreateLoad(ExpectedAddr);
1751 CGF.Builder.CreateStore(OldVal, DesiredAddr);
1761 CGF.Builder.CreateCondBr(Res, ExitBB, ContBB);
1775 auto *CurBB = CGF.Builder.GetInsertBlock();
1777 llvm::PHINode *PHI = CGF.Builder.CreatePHI(OldVal->getType(),
1784 CGF.Builder.CreateStore(PHI, NewAtomicIntAddr);
1789 auto *DesiredVal = CGF.Builder.CreateLoad(NewAtomicIntAddr);
1792 PHI->addIncoming(Res.first, CGF.Builder.GetInsertBlock());
1793 CGF.Builder.CreateCondBr(Res.second, ExitBB, ContBB);
1836 auto *OldVal = CGF.Builder.CreateLoad(ExpectedAddr);
1837 CGF.Builder.CreateStore(OldVal, DesiredAddr);
1844 CGF.Builder.CreateCondBr(Res, ExitBB, ContBB);
1857 auto *CurBB = CGF.Builder.GetInsertBlock();
1859 llvm::PHINode *PHI = CGF.Builder.CreatePHI(OldVal->getType(),
1866 CGF.Builder.CreateStore(PHI, NewAtomicIntAddr);
1869 auto *DesiredVal = CGF.Builder.CreateLoad(NewAtomicIntAddr);
1872 PHI->addIncoming(Res.first, CGF.Builder.GetInsertBlock());
1873 CGF.Builder.CreateCondBr(Res.second, ExitBB, ContBB);
1959 intValue = Builder.CreateIntCast(
1961 llvm::StoreInst *store = Builder.CreateStore(intValue, addr);
tools/clang/lib/CodeGen/CGBlocks.cpp 842 CGF.Builder.CreateStructGEP(blockInfo.LocalAddress, capture.getIndex());
980 return Builder.CreateStructGEP(blockAddr, index, name);
983 Builder.CreateStore(value, projectField(index, name));
1034 Builder.CreateStore(LoadCXXThis(), addr);
1066 src = Builder.CreateStructGEP(LoadBlockStruct(),
1090 byrefPointer = Builder.CreateLoad(src, "byref.capture");
1092 byrefPointer = Builder.CreateBitCast(src.getPointer(), VoidPtrTy);
1095 Builder.CreateStore(byrefPointer, blockField);
1115 Builder.CreateStore(src.getPointer(), blockField);
1121 llvm::Value *value = Builder.CreateLoad(src, "captured");
1122 Builder.CreateStore(value, blockField);
1134 llvm::Value *value = Builder.CreateLoad(src, "block.captured_block");
1138 Builder.CreateStore(value, blockField);
1173 llvm::Value *result = Builder.CreatePointerCast(
1269 llvm::Value *BlockDescriptor = Builder.CreatePointerCast(
1281 llvm::Value *FuncPtr = Builder.CreateStructGEP(GenBlockTy, BlockPtr, 2);
1282 Func = Builder.CreateAlignedLoad(FuncPtr, getPointerAlign());
1286 BlockPtr = Builder.CreatePointerCast(
1289 llvm::Value *FuncPtr = Builder.CreateStructGEP(GenBlockTy, BlockPtr, 3);
1292 BlockPtr = Builder.CreatePointerCast(BlockPtr, VoidPtrTy);
1298 Func = Builder.CreateAlignedLoad(FuncPtr, getPointerAlign());
1309 Func = Builder.CreatePointerCast(Func, BlockFTyPtr);
1325 Address addr = Builder.CreateStructGEP(LoadBlockStruct(), capture.getIndex(),
1333 addr = Address(Builder.CreateLoad(addr), byrefInfo.ByrefAlignment);
1336 addr = Builder.CreateBitCast(addr, byrefPointerType, "byref.addr");
1483 Builder.CreateStore(arg, alloc);
1490 cast<llvm::AllocaInst>(alloc.getPointer()), Builder);
1499 BlockPointer = Builder.CreatePointerCast(
1604 Builder.CreateStore(BlockPointer, Alloca);
1611 Address addr = Builder.CreateStructGEP(
1613 CXXThisValue = Builder.CreateLoad(addr, "this");
1626 Builder.CreateStore(capture.getConstant(), alloca);
1632 llvm::BasicBlock *entry = Builder.GetInsertBlock();
1633 llvm::BasicBlock::iterator entry_ptr = Builder.GetInsertPoint();
1645 llvm::BasicBlock *resume = Builder.GetInsertBlock();
1649 Builder.SetInsertPoint(entry, entry_ptr);
1656 DI->EmitLocation(Builder, variable->getLocation());
1664 Builder);
1669 variable, BlockPointerDbgLoc, Builder, blockInfo,
1674 DI->EmitLocation(Builder,
1680 Builder.ClearInsertionPoint();
1682 Builder.SetInsertPoint(resume);
1789 BlockVarAddr = CGF.Builder.CreateLoad(Addr);
1790 BlockVarAddr = CGF.Builder.CreateBitCast(BlockVarAddr, CGF.VoidPtrTy);
2043 src = Address(Builder.CreateLoad(src), blockInfo.BlockAlign);
2044 src = Builder.CreateBitCast(src, structPtrTy, "block.source");
2047 dst = Address(Builder.CreateLoad(dst), blockInfo.BlockAlign);
2048 dst = Builder.CreateBitCast(dst, structPtrTy, "block.dest");
2057 Address srcField = Builder.CreateStructGEP(src, index);
2058 Address dstField = Builder.CreateStructGEP(dst, index);
2078 llvm::Value *srcValue = Builder.CreateLoad(srcField, "blockcopy.src");
2085 Builder.CreateStore(null, dstField);
2103 llvm::Value *srcValue = Builder.CreateLoad(srcField, "blockcopy.src");
2104 srcValue = Builder.CreateBitCast(srcValue, VoidPtrTy);
2106 Builder.CreateBitCast(dstField.getPointer(), VoidPtrTy);
2238 src = Address(Builder.CreateLoad(src), blockInfo.BlockAlign);
2239 src = Builder.CreateBitCast(src, structPtrTy, "block");
2248 Address srcField = Builder.CreateStructGEP(src, capture.getIndex());
2274 destField = CGF.Builder.CreateBitCast(destField, CGF.VoidPtrTy);
2276 srcField = CGF.Builder.CreateBitCast(srcField, CGF.VoidPtrPtrTy);
2277 llvm::Value *srcValue = CGF.Builder.CreateLoad(srcField);
2289 field = CGF.Builder.CreateBitCast(field, CGF.Int8PtrTy->getPointerTo(0));
2290 llvm::Value *value = CGF.Builder.CreateLoad(field);
2331 llvm::Value *value = CGF.Builder.CreateLoad(srcField);
2337 CGF.Builder.CreateStore(null, destField);
2342 CGF.Builder.CreateStore(value, destField);
2343 CGF.Builder.CreateStore(null, srcField);
2368 llvm::Value *oldValue = CGF.Builder.CreateLoad(srcField);
2370 CGF.Builder.CreateStore(copy, destField);
2489 destField = Address(CGF.Builder.CreateLoad(destField),
2491 destField = CGF.Builder.CreateBitCast(destField, byrefPtrType);
2497 srcField = Address(CGF.Builder.CreateLoad(srcField),
2499 srcField = CGF.Builder.CreateBitCast(srcField, byrefPtrType);
2561 addr = Address(CGF.Builder.CreateLoad(addr), byrefInfo.ByrefAlignment);
2563 addr = CGF.Builder.CreateBitCast(addr, byrefPtrType);
2708 Address forwardingAddr = Builder.CreateStructGEP(baseAddr, 1, "forwarding");
2709 baseAddr = Address(Builder.CreateLoad(forwardingAddr), info.ByrefAlignment);
2712 return Builder.CreateStructGEP(baseAddr, info.FieldIndex, name);
2830 auto fieldAddr = Builder.CreateStructGEP(addr, nextHeaderIndex, name);
2831 Builder.CreateStore(value, fieldAddr);
2854 V = Builder.CreateIntToPtr(Builder.getInt32(isa), Int8PtrTy, "isa");
2854 V = Builder.CreateIntToPtr(Builder.getInt32(isa), Int8PtrTy, "isa");
2928 Builder.CreateBitCast(V, Int8PtrTy),
tools/clang/lib/CodeGen/CGBuiltin.cpp 55 Byte = CGF.Builder.getInt8(0x00);
64 CGF.Builder.CreateMemSet(AI, Byte, Size, AlignmentInBytes);
98 return CGF.Builder.CreatePtrToInt(V, IntType);
109 return CGF.Builder.CreateIntToPtr(V, ResultType);
135 Args[0] = CGF.Builder.CreateBitCast(DestPtr, IntPtrType);
140 llvm::Value *Result = CGF.Builder.CreateAtomicRMW(
151 Value *BC = CGF.Builder.CreateBitCast(
199 Args[0] = CGF.Builder.CreateBitCast(DestPtr, IntPtrType);
201 llvm::Value *Result = CGF.Builder.CreateAtomicRMW(
203 Result = CGF.Builder.CreateBinOp(Op, Result, Args[1]);
205 Result = CGF.Builder.CreateBinOp(llvm::Instruction::Xor, Result,
236 Args[0] = CGF.Builder.CreateBitCast(DestPtr, IntPtrType);
242 Value *Pair = CGF.Builder.CreateAtomicCmpXchg(
247 return CGF.Builder.CreateZExt(CGF.Builder.CreateExtractValue(Pair, 1),
247 return CGF.Builder.CreateZExt(CGF.Builder.CreateExtractValue(Pair, 1),
251 return EmitFromInt(CGF, CGF.Builder.CreateExtractValue(Pair, 0), T,
288 auto *Result = CGF.Builder.CreateAtomicCmpXchg(
292 return CGF.Builder.CreateExtractValue(Result, 0);
300 auto *Result = CGF.Builder.CreateAtomicRMW(
305 return CGF.Builder.CreateAdd(Result, ConstantInt::get(IntTy, 1));
313 auto *Result = CGF.Builder.CreateAtomicRMW(
318 return CGF.Builder.CreateSub(Result, ConstantInt::get(IntTy, 1));
328 Ptr = CGF.Builder.CreateBitCast(Ptr, ITy->getPointerTo());
329 llvm::LoadInst *Load = CGF.Builder.CreateAlignedLoad(Ptr, LoadSize);
342 Ptr = CGF.Builder.CreateBitCast(Ptr, ITy->getPointerTo());
344 CGF.Builder.CreateAlignedStore(Value, Ptr, StoreSize);
357 return CGF.Builder.CreateCall(F, Src0);
368 return CGF.Builder.CreateCall(F, { Src0, Src1 });
380 return CGF.Builder.CreateCall(F, { Src0, Src1, Src2 });
391 return CGF.Builder.CreateCall(F, {Src0, Src1});
403 return CGF.Builder.CreateCall(F, Src0);
409 llvm::CallInst *Call = CGF.Builder.CreateCall(F, V);
422 V = CGF.Builder.CreateBitCast(V, IntTy);
434 V = CGF.Builder.CreateLShr(V, ShiftCst);
439 V = CGF.Builder.CreateTrunc(V, IntTy);
442 return CGF.Builder.CreateICmpSLT(V, Zero);
470 llvm::Value *Tmp = CGF.Builder.CreateCall(Callee, {X, Y});
471 Carry = CGF.Builder.CreateExtractValue(Tmp, 1);
472 return CGF.Builder.CreateExtractValue(Tmp, 0);
481 llvm::Instruction *Call = CGF.Builder.CreateCall(F);
534 Builder.CreateBitCast(ArgValue, DestType, ArgValue->getName().data());
537 return Builder.CreateCall(CGM.getIntrinsic(inst), ArgValue);
611 Value *Min = Builder.getInt1((Type & 2) != 0);
613 Value *NullIsUnknown = Builder.getTrue();
614 Value *Dynamic = Builder.getInt1(IsDynamic);
615 return Builder.CreateCall(F, {Ptr, Min, NullIsUnknown, Dynamic});
723 return CGF.Builder.CreateCall(IA, {BitBase, BitPos});
760 Value *ByteIndex = CGF.Builder.CreateAShr(
762 Value *BitBaseI8 = CGF.Builder.CreatePointerCast(BitBase, CGF.Int8PtrTy);
763 Address ByteAddr(CGF.Builder.CreateInBoundsGEP(CGF.Int8Ty, BitBaseI8,
767 CGF.Builder.CreateAnd(CGF.Builder.CreateTrunc(BitPos, CGF.Int8Ty),
767 CGF.Builder.CreateAnd(CGF.Builder.CreateTrunc(BitPos, CGF.Int8Ty),
773 Mask = CGF.Builder.CreateShl(llvm::ConstantInt::get(CGF.Int8Ty, 1), PosLow,
786 Mask = CGF.Builder.CreateNot(Mask);
789 OldByte = CGF.Builder.CreateAtomicRMW(RMWOp, ByteAddr.getPointer(), Mask,
793 OldByte = CGF.Builder.CreateLoad(ByteAddr, "bittest.byte");
800 NewByte = CGF.Builder.CreateXor(OldByte, Mask);
803 NewByte = CGF.Builder.CreateAnd(OldByte, CGF.Builder.CreateNot(Mask));
803 NewByte = CGF.Builder.CreateAnd(OldByte, CGF.Builder.CreateNot(Mask));
806 NewByte = CGF.Builder.CreateOr(OldByte, Mask);
810 CGF.Builder.CreateStore(NewByte, ByteAddr);
815 Value *ShiftedByte = CGF.Builder.CreateLShr(OldByte, PosLow, "bittest.shr");
816 return CGF.Builder.CreateAnd(
846 Arg1 = CGF.Builder.CreateCall(
849 Arg1 = CGF.Builder.CreateCall(
863 llvm::Value *Buf = CGF.Builder.CreateBitOrPointerCast(
927 BasicBlock *Begin = Builder.GetInsertBlock();
929 Builder.SetInsertPoint(End);
930 PHINode *Result = Builder.CreatePHI(ResultType, 2, "bitscan_result");
932 Builder.SetInsertPoint(Begin);
933 Value *IsZero = Builder.CreateICmpEQ(ArgValue, ArgZero);
935 Builder.CreateCondBr(IsZero, End, NotZero);
938 Builder.SetInsertPoint(NotZero);
943 Value *ZeroCount = Builder.CreateCall(F, {ArgValue, Builder.getTrue()});
943 Value *ZeroCount = Builder.CreateCall(F, {ArgValue, Builder.getTrue()});
944 ZeroCount = Builder.CreateIntCast(ZeroCount, IndexType, false);
945 Builder.CreateStore(ZeroCount, IndexAddress, false);
951 Value *ZeroCount = Builder.CreateCall(F, {ArgValue, Builder.getTrue()});
951 Value *ZeroCount = Builder.CreateCall(F, {ArgValue, Builder.getTrue()});
952 ZeroCount = Builder.CreateIntCast(ZeroCount, IndexType, false);
953 Value *Index = Builder.CreateNSWSub(ArgTypeLastIndex, ZeroCount);
954 Builder.CreateStore(Index, IndexAddress, false);
956 Builder.CreateBr(End);
959 Builder.SetInsertPoint(End);
1072 llvm::CallInst *CI = Builder.CreateCall(IA, EmitScalarExpr(E->getArg(0)));
1102 Value *Cond = Builder.CreateICmpNE(
1107 llvm::ConstantInt::get(Builder.getInt8Ty(), Kind)},
1190 Address BufAddr(Builder.CreateLoad(GetAddrOfLocalVar(Args[0]), "buf"),
1192 Builder.CreateStore(Builder.getInt8(Layout.getSummaryByte()),
1192 Builder.CreateStore(Builder.getInt8(Layout.getSummaryByte()),
1193 Builder.CreateConstByteGEP(BufAddr, Offset++, "summary"));
1194 Builder.CreateStore(Builder.getInt8(Layout.getNumArgsByte()),
1194 Builder.CreateStore(Builder.getInt8(Layout.getNumArgsByte()),
1195 Builder.CreateConstByteGEP(BufAddr, Offset++, "numArgs"));
1199 Builder.CreateStore(
1200 Builder.getInt8(Item.getDescriptorByte()),
1201 Builder.CreateConstByteGEP(BufAddr, Offset++, "argDescriptor"));
1202 Builder.CreateStore(
1203 Builder.getInt8(Item.getSizeByte()),
1204 Builder.CreateConstByteGEP(BufAddr, Offset++, "argSize"));
1211 Address Addr = Builder.CreateConstByteGEP(BufAddr, Offset, "argData");
1212 Addr = Builder.CreateBitCast(Addr, Arg.getPointer()->getType(),
1214 Builder.CreateStore(Builder.CreateLoad(Arg), Addr);
1214 Builder.CreateStore(Builder.CreateLoad(Arg), Addr);
1262 ArgVal = Builder.getInt32(Item.getConstValue().getQuantity());
1269 ArgVal = Builder.CreateBitOrPointerCast(ArgVal, IntTy);
1272 ArgVal = Builder.CreateZExtOrBitCast(ArgVal, ConvertType(ArgTy));
1328 Signed = CGF.Builder.CreateSExt(Signed, Unsigned->getType(), "op.sext");
1330 Unsigned = CGF.Builder.CreateZExt(Unsigned, Signed->getType(), "op.zext");
1339 llvm::Value *IsNegative = CGF.Builder.CreateICmpSLT(Signed, Zero);
1340 llvm::Value *AbsOfNegative = CGF.Builder.CreateSub(Zero, Signed);
1342 CGF.Builder.CreateSelect(IsNegative, AbsOfNegative, Signed);
1357 CGF.Builder.CreateAdd(llvm::ConstantInt::get(OpTy, IntMax),
1358 CGF.Builder.CreateZExt(IsNegative, OpTy));
1360 CGF.Builder.CreateICmpUGT(UnsignedResult, MaxResult);
1361 Overflow = CGF.Builder.CreateOr(UnsignedOverflow, SignedOverflow);
1364 llvm::Value *NegativeResult = CGF.Builder.CreateNeg(UnsignedResult);
1366 CGF.Builder.CreateSelect(IsNegative, NegativeResult, UnsignedResult);
1367 Result = CGF.Builder.CreateTrunc(SignedResult, ResTy);
1370 llvm::Value *Underflow = CGF.Builder.CreateAnd(
1371 IsNegative, CGF.Builder.CreateIsNotNull(UnsignedResult));
1372 Overflow = CGF.Builder.CreateOr(UnsignedOverflow, Underflow);
1376 llvm::Value *TruncOverflow = CGF.Builder.CreateICmpUGT(
1378 Overflow = CGF.Builder.CreateOr(Overflow, TruncOverflow);
1382 Result = CGF.Builder.CreateSelect(
1383 IsNegative, CGF.Builder.CreateNeg(UnsignedResult), UnsignedResult);
1385 Result = CGF.Builder.CreateTrunc(Result, ResTy);
1391 CGF.Builder.CreateStore(CGF.EmitToMemory(Result, ResultQTy), ResultPtr,
1404 CGF.Builder.CreateGlobalStringPtr(RType.getAsString() + " {\n");
1405 Value *Res = CGF.Builder.CreateCall(Func, {GString});
1432 FieldPtr = CGF.Builder.CreatePointerCast(
1435 FieldPtr = CGF.Builder.CreateStructGEP(CGF.ConvertType(RType), FieldPtr,
1438 GString = CGF.Builder.CreateGlobalStringPtr(
1445 Value *TmpRes = CGF.Builder.CreateCall(Func, {GString});
1446 Res = CGF.Builder.CreateAdd(Res, TmpRes);
1455 Res = CGF.Builder.CreateAdd(TmpRes, Res);
1465 FieldPtr = CGF.Builder.CreateLoad(FieldAddress);
1468 GString = CGF.Builder.CreateGlobalStringPtr(
1470 TmpRes = CGF.Builder.CreateCall(Func, {GString, FieldPtr});
1471 Res = CGF.Builder.CreateAdd(Res, TmpRes);
1474 GString = CGF.Builder.CreateGlobalStringPtr(Pad + "}\n");
1475 Value *TmpRes = CGF.Builder.CreateCall(Func, {GString});
1476 Res = CGF.Builder.CreateAdd(Res, TmpRes);
1523 ShiftAmt = Builder.CreateIntCast(ShiftAmt, Ty, false);
1528 return RValue::get(Builder.CreateCall(F, { Src, Src, ShiftAmt }));
1657 return RValue::get(Builder.CreateFRem(Arg1, Arg2, "fmod"));
1806 DstPtr = Builder.CreateBitCast(DstPtr, Type);
1807 SrcPtr = Builder.CreateBitCast(SrcPtr, Type);
1808 return RValue::get(Builder.CreateCall(CGM.getIntrinsic(Intrinsic::vacopy),
1817 Value *NegOp = Builder.CreateNSWNeg(ArgValue, "neg");
1819 Value *CmpResult = Builder.CreateICmpSLT(ArgValue, Zero, "abscond");
1820 Value *Result = Builder.CreateSelect(CmpResult, NegOp, ArgValue, "abs");
1834 Imag = Builder.CreateFSub(Zero, Imag, "sub");
1906 Value *IsNeg = Builder.CreateICmpSLT(ArgValue, Zero, "isneg");
1907 Value *Inverse = Builder.CreateNot(ArgValue, "not");
1908 Value *Tmp = Builder.CreateSelect(IsNeg, Inverse, ArgValue);
1909 Value *Ctlz = Builder.CreateCall(F, {Tmp, Builder.getFalse()});
1909 Value *Ctlz = Builder.CreateCall(F, {Tmp, Builder.getFalse()});
1910 Value *Result = Builder.CreateSub(Ctlz, llvm::ConstantInt::get(ArgType, 1));
1911 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/true,
1925 Value *ZeroUndef = Builder.getInt1(getTarget().isCLZForZeroUndef());
1926 Value *Result = Builder.CreateCall(F, {ArgValue, ZeroUndef});
1928 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/true,
1942 Value *ZeroUndef = Builder.getInt1(getTarget().isCLZForZeroUndef());
1943 Value *Result = Builder.CreateCall(F, {ArgValue, ZeroUndef});
1945 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/true,
1960 Builder.CreateAdd(Builder.CreateCall(F, {ArgValue, Builder.getTrue()}),
1960 Builder.CreateAdd(Builder.CreateCall(F, {ArgValue, Builder.getTrue()}),
1960 Builder.CreateAdd(Builder.CreateCall(F, {ArgValue, Builder.getTrue()}),
1963 Value *IsZero = Builder.CreateICmpEQ(ArgValue, Zero, "iszero");
1964 Value *Result = Builder.CreateSelect(IsZero, Zero, Tmp, "ffs");
1966 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/true,
1980 Value *Tmp = Builder.CreateCall(F, ArgValue);
1981 Value *Result = Builder.CreateAnd(Tmp, llvm::ConstantInt::get(ArgType, 1));
1983 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/true,
1996 Value *Result = Builder.CreateCall(F, {ArgValue, Builder.getFalse()});
1996 Value *Result = Builder.CreateCall(F, {ArgValue, Builder.getFalse()});
1998 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/true,
2014 Value *Result = Builder.CreateCall(F, ArgValue);
2016 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/true,
2039 Builder.CreateCall(FnExpect, {ArgValue, ExpectedValue}, "expval");
2066 return RValue::get(Builder.CreateCall(FnAssume, ArgValue));
2124 ArgValue = Builder.CreateBitCast(ArgValue, ConvertType(ArgType));
2128 Value *Result = Builder.CreateCall(F, ArgValue);
2130 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/false);
2154 return RValue::get(Builder.CreateCall(F, {Address, RW, Locality, Data}));
2158 return RValue::get(Builder.CreateCall(F));
2164 return RValue::get(Builder.CreateCall(F, {Begin, End}));
2186 return RValue::get(Builder.CreateCall(F, {Base, Exponent}));
2203 LHS = Builder.CreateFCmpOGT(LHS, RHS, "cmp");
2206 LHS = Builder.CreateFCmpOGE(LHS, RHS, "cmp");
2209 LHS = Builder.CreateFCmpOLT(LHS, RHS, "cmp");
2212 LHS = Builder.CreateFCmpOLE(LHS, RHS, "cmp");
2215 LHS = Builder.CreateFCmpONE(LHS, RHS, "cmp");
2218 LHS = Builder.CreateFCmpUNO(LHS, RHS, "cmp");
2222 return RValue::get(Builder.CreateZExt(LHS, ConvertType(E->getType())));
2226 V = Builder.CreateFCmpUNO(V, V, "cmp");
2227 return RValue::get(Builder.CreateZExt(V, ConvertType(E->getType())));
2247 Value *FCmp = Builder.CreateFCmp(Pred, Fabs, Infinity, "cmpinf");
2248 return RValue::get(Builder.CreateZExt(FCmp, ConvertType(E->getType())));
2255 Value *IsInf = Builder.CreateFCmpOEQ(
2263 Value *SignResult = Builder.CreateSelect(IsNeg, NegativeOne, One);
2264 Value *Result = Builder.CreateSelect(IsInf, SignResult, Zero);
2271 Value *Eq = Builder.CreateFCmpOEQ(V, V, "iseq");
2275 Builder.CreateFCmpULT(Abs, ConstantFP::getInfinity(V->getType()),"isinf");
2279 Builder.CreateFCmpUGE(Abs, ConstantFP::get(V->getContext(), Smallest),
2281 V = Builder.CreateAnd(Eq, IsLessThanInf, "and");
2282 V = Builder.CreateAnd(V, IsNormal, "and");
2283 return RValue::get(Builder.CreateZExt(V, ConvertType(E->getType())));
2290 Value *Result = Builder.CreateCall(F);
2292 Result = Builder.CreateIntCast(Result, ResultType, /*isSigned*/true,
2302 BasicBlock *Begin = Builder.GetInsertBlock();
2304 Builder.SetInsertPoint(End);
2306 Builder.CreatePHI(ConvertType(E->getArg(0)->getType()), 4,
2310 Builder.SetInsertPoint(Begin);
2311 Value *IsZero = Builder.CreateFCmpOEQ(V, Constant::getNullValue(Ty),
2315 Builder.CreateCondBr(IsZero, End, NotZero);
2319 Builder.SetInsertPoint(NotZero);
2320 Value *IsNan = Builder.CreateFCmpUNO(V, V, "cmp");
2323 Builder.CreateCondBr(IsNan, End, NotNan);
2327 Builder.SetInsertPoint(NotNan);
2330 Builder.CreateFCmpOEQ(VAbs, ConstantFP::getInfinity(V->getType()),
2334 Builder.CreateCondBr(IsInf, End, NotInf);
2338 Builder.SetInsertPoint(NotInf);
2342 Builder.CreateFCmpUGE(VAbs, ConstantFP::get(V->getContext(), Smallest),
2345 Builder.CreateSelect(IsNormal, EmitScalarExpr(E->getArg(2)),
2347 Builder.CreateBr(End);
2351 Builder.SetInsertPoint(End);
2365 AllocaInst *AI = Builder.CreateAlloca(Builder.getInt8Ty(), Size);
2365 AllocaInst *AI = Builder.CreateAlloca(Builder.getInt8Ty(), Size);
2378 AllocaInst *AI = Builder.CreateAlloca(Builder.getInt8Ty(), Size);
2378 AllocaInst *AI = Builder.CreateAlloca(Builder.getInt8Ty(), Size);
2390 Builder.CreateMemSet(Dest, Builder.getInt8(0), SizeVal, false);
2390 Builder.CreateMemSet(Dest, Builder.getInt8(0), SizeVal, false);
2402 Builder.CreateMemCpy(Dest, Src, SizeVal, false);
2422 Value *SizeVal = llvm::ConstantInt::get(Builder.getContext(), Size);
2423 Builder.CreateMemCpy(Dest, Src, SizeVal, false);
2448 Value *SizeVal = llvm::ConstantInt::get(Builder.getContext(), Size);
2449 Builder.CreateMemMove(Dest, Src, SizeVal, false);
2462 Builder.CreateMemMove(Dest, Src, SizeVal, false);
2468 Value *ByteVal = Builder.CreateTrunc(EmitScalarExpr(E->getArg(1)),
2469 Builder.getInt8Ty());
2473 Builder.CreateMemSet(Dest, ByteVal, SizeVal, false);
2487 Value *ByteVal = Builder.CreateTrunc(EmitScalarExpr(E->getArg(1)),
2488 Builder.getInt8Ty());
2489 Value *SizeVal = llvm::ConstantInt::get(Builder.getContext(), Size);
2490 Builder.CreateMemSet(Dest, ByteVal, SizeVal, false);
2505 BasicBlock *Entry = Builder.GetInsertBlock();
2510 Value *SizeEq0 = Builder.CreateICmpEQ(Size, ConstantInt::get(SizeTy, 0));
2511 Builder.CreateCondBr(SizeEq0, Exit, CmpGT);
2514 PHINode *DstPhi = Builder.CreatePHI(Dst->getType(), 2);
2516 PHINode *SrcPhi = Builder.CreatePHI(Src->getType(), 2);
2518 PHINode *SizePhi = Builder.CreatePHI(SizeTy, 2);
2522 Value *DstCh = Builder.CreateAlignedLoad(WCharTy, DstPhi, WCharAlign);
2523 Value *SrcCh = Builder.CreateAlignedLoad(WCharTy, SrcPhi, WCharAlign);
2524 Value *DstGtSrc = Builder.CreateICmpUGT(DstCh, SrcCh);
2525 Builder.CreateCondBr(DstGtSrc, Exit, CmpLT);
2528 Value *DstLtSrc = Builder.CreateICmpULT(DstCh, SrcCh);
2529 Builder.CreateCondBr(DstLtSrc, Exit, Next);
2532 Value *NextDst = Builder.CreateConstInBoundsGEP1_32(WCharTy, DstPhi, 1);
2533 Value *NextSrc = Builder.CreateConstInBoundsGEP1_32(WCharTy, SrcPhi, 1);
2534 Value *NextSize = Builder.CreateSub(SizePhi, ConstantInt::get(SizeTy, 1));
2536 Builder.CreateICmpEQ(NextSize, ConstantInt::get(SizeTy, 0));
2537 Builder.CreateCondBr(NextSizeEq0, Exit, CmpGT);
2543 PHINode *Ret = Builder.CreatePHI(IntTy, 4);
2562 return RValue::get(Builder.CreateCall(F,
2569 return RValue::get(Builder.CreateCall(F, Depth));
2573 return RValue::get(Builder.CreateCall(F, Builder.getInt32(0)));
2573 return RValue::get(Builder.CreateCall(F, Builder.getInt32(0)));
2579 return RValue::get(Builder.CreateCall(F, Depth));
2617 Builder.CreateCall(F, {Int, Ptr});
2618 Builder.CreateUnreachable();
2627 return RValue::get(Builder.CreateCall(F));
2642 Value *Result = Builder.CreatePtrToInt(Ptr, IntPtrTy, "extend.cast");
2650 return RValue::get(Builder.CreateSExt(Result, Int64Ty, "extend.sext"));
2652 return RValue::get(Builder.CreateZExt(Result, Int64Ty, "extend.zext"));
2659 Value *FrameAddr = Builder.CreateCall(
2662 Builder.CreateStore(FrameAddr, Buf);
2666 Builder.CreateCall(CGM.getIntrinsic(Intrinsic::stacksave));
2667 Address StackSaveSlot = Builder.CreateConstInBoundsGEP(Buf, 2);
2668 Builder.CreateStore(StackAddr, StackSaveSlot);
2672 Buf = Builder.CreateBitCast(Buf, Int8PtrTy);
2673 return RValue::get(Builder.CreateCall(F, Buf.getPointer()));
2677 Buf = Builder.CreateBitCast(Buf, Int8PtrTy);
2680 Builder.CreateCall(CGM.getIntrinsic(Intrinsic::eh_sjlj_longjmp), Buf);
2683 Builder.CreateUnreachable();
2695 Ptr = Builder.CreateLaunderInvariantGroup(Ptr);
2845 Ptr = Builder.CreateBitCast(Ptr, ITy->getPointerTo());
2847 Builder.CreateAlignedStore(llvm::Constant::getNullValue(ITy), Ptr,
2861 Builder.CreateFence(llvm::AtomicOrdering::SequentiallyConsistent);
2901 Ptr = Builder.CreateBitCast(Ptr, Int8Ty->getPointerTo(AddrSpace));
2902 Value *NewVal = Builder.getInt8(1);
2910 Result = Builder.CreateAtomicRMW(llvm::AtomicRMWInst::Xchg, Ptr, NewVal,
2915 Result = Builder.CreateAtomicRMW(llvm::AtomicRMWInst::Xchg, Ptr, NewVal,
2919 Result = Builder.CreateAtomicRMW(llvm::AtomicRMWInst::Xchg, Ptr, NewVal,
2924 Result = Builder.CreateAtomicRMW(llvm::AtomicRMWInst::Xchg, Ptr, NewVal,
2928 Result = Builder.CreateAtomicRMW(
2934 return RValue::get(Builder.CreateIsNotNull(Result, "tobool"));
2951 Order = Builder.CreateIntCast(Order, Builder.getInt32Ty(), false);
2951 Order = Builder.CreateIntCast(Order, Builder.getInt32Ty(), false);
2952 llvm::SwitchInst *SI = Builder.CreateSwitch(Order, BBs[0]);
2954 Builder.SetInsertPoint(ContBB);
2955 PHINode *Result = Builder.CreatePHI(Int8Ty, 5, "was_set");
2958 Builder.SetInsertPoint(BBs[i]);
2959 AtomicRMWInst *RMW = Builder.CreateAtomicRMW(llvm::AtomicRMWInst::Xchg,
2963 Builder.CreateBr(ContBB);
2966 SI->addCase(Builder.getInt32(0), BBs[0]);
2967 SI->addCase(Builder.getInt32(1), BBs[1]);
2968 SI->addCase(Builder.getInt32(2), BBs[1]);
2969 SI->addCase(Builder.getInt32(3), BBs[2]);
2970 SI->addCase(Builder.getInt32(4), BBs[3]);
2971 SI->addCase(Builder.getInt32(5), BBs[4]);
2973 Builder.SetInsertPoint(ContBB);
2974 return RValue::get(Builder.CreateIsNotNull(Result, "tobool"));
2984 Ptr = Builder.CreateBitCast(Ptr, Int8Ty->getPointerTo(AddrSpace));
2985 Value *NewVal = Builder.getInt8(0);
2989 StoreInst *Store = Builder.CreateStore(NewVal, Ptr, Volatile);
3016 Order = Builder.CreateIntCast(Order, Builder.getInt32Ty(), false);
3016 Order = Builder.CreateIntCast(Order, Builder.getInt32Ty(), false);
3017 llvm::SwitchInst *SI = Builder.CreateSwitch(Order, BBs[0]);
3020 Builder.SetInsertPoint(BBs[i]);
3021 StoreInst *Store = Builder.CreateStore(NewVal, Ptr, Volatile);
3023 Builder.CreateBr(ContBB);
3026 SI->addCase(Builder.getInt32(0), BBs[0]);
3027 SI->addCase(Builder.getInt32(3), BBs[1]);
3028 SI->addCase(Builder.getInt32(5), BBs[2]);
3030 Builder.SetInsertPoint(ContBB);
3053 Builder.CreateFence(llvm::AtomicOrdering::Acquire, SSID);
3056 Builder.CreateFence(llvm::AtomicOrdering::Release, SSID);
3059 Builder.CreateFence(llvm::AtomicOrdering::AcquireRelease, SSID);
3062 Builder.CreateFence(llvm::AtomicOrdering::SequentiallyConsistent, SSID);
3075 Order = Builder.CreateIntCast(Order, Builder.getInt32Ty(), false);
3075 Order = Builder.CreateIntCast(Order, Builder.getInt32Ty(), false);
3076 llvm::SwitchInst *SI = Builder.CreateSwitch(Order, ContBB);
3078 Builder.SetInsertPoint(AcquireBB);
3079 Builder.CreateFence(llvm::AtomicOrdering::Acquire, SSID);
3080 Builder.CreateBr(ContBB);
3081 SI->addCase(Builder.getInt32(1), AcquireBB);
3082 SI->addCase(Builder.getInt32(2), AcquireBB);
3084 Builder.SetInsertPoint(ReleaseBB);
3085 Builder.CreateFence(llvm::AtomicOrdering::Release, SSID);
3086 Builder.CreateBr(ContBB);
3087 SI->addCase(Builder.getInt32(3), ReleaseBB);
3089 Builder.SetInsertPoint(AcqRelBB);
3090 Builder.CreateFence(llvm::AtomicOrdering::AcquireRelease, SSID);
3091 Builder.CreateBr(ContBB);
3092 SI->addCase(Builder.getInt32(4), AcqRelBB);
3094 Builder.SetInsertPoint(SeqCstBB);
3095 Builder.CreateFence(llvm::AtomicOrdering::SequentiallyConsistent, SSID);
3096 Builder.CreateBr(ContBB);
3097 SI->addCase(Builder.getInt32(5), SeqCstBB);
3099 Builder.SetInsertPoint(ContBB);
3107 Builder.CreateZExt(EmitSignBit(*this, EmitScalarExpr(E->getArg(0))),
3130 Builder.CreateCall(F, MetadataAsValue::get(getLLVMContext(), StrTuple));
3205 llvm::Value *CarryOut = Builder.CreateZExt(Builder.CreateOr(Carry1, Carry2),
3205 llvm::Value *CarryOut = Builder.CreateZExt(Builder.CreateOr(Carry1, Carry2),
3207 Builder.CreateStore(CarryOut, CarryOutPtr);
3269 Left = Builder.CreateIntCast(Left, EncompassingLLVMTy, LeftInfo.Signed);
3270 Right = Builder.CreateIntCast(Right, EncompassingLLVMTy, RightInfo.Signed);
3279 llvm::Value *ResultTrunc = Builder.CreateTrunc(Result, ResultLLVMTy);
3283 llvm::Value *ResultTruncExt = Builder.CreateIntCast(
3286 Builder.CreateICmpNE(Result, ResultTruncExt);
3288 Overflow = Builder.CreateOr(Overflow, TruncationOverflow);
3295 Builder.CreateStore(EmitToMemory(Result, ResultQTy), ResultPtr, isVolatile);
3365 Builder.CreateStore(Sum, SumOutPtr);
3403 Builder.CreateBitCast(EmitScalarExpr(E->getArg(0)), IntPtrType);
3407 Exchange = Builder.CreatePtrToInt(Exchange, IntType);
3410 Builder.CreatePtrToInt(EmitScalarExpr(E->getArg(2)), IntType);
3416 auto Result = Builder.CreateAtomicCmpXchg(Destination, Comparand, Exchange,
3420 return RValue::get(Builder.CreateIntToPtr(Builder.CreateExtractValue(Result,
3420 return RValue::get(Builder.CreateIntToPtr(Builder.CreateExtractValue(Result,
3529 auto T = Builder.getIntNTy(Context.getTypeSize(SizeTy));
3531 return RValue::get(Builder.CreateCall(F));
3585 Value *BCast = Builder.CreatePointerCast(Arg1, I8PTy);
3587 Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, Name),
3601 Value *BCast = Builder.CreatePointerCast(Arg3, I8PTy);
3605 Arg2 = Builder.CreateZExtOrTrunc(Arg2, Int32Ty);
3606 return RValue::get(Builder.CreateCall(
3648 Arg1 = Builder.CreateZExtOrTrunc(Arg1, Int32Ty);
3650 Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, Name),
3688 Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, Name),
3712 return RValue::get(Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, Name),
3730 NewArg = Builder.CreateAddrSpaceCast(Arg0, NewArgT);
3732 NewArg = Builder.CreateBitOrPointerCast(Arg0, NewArgT);
3735 Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, NewName), {NewArg});
3736 return RValue::get(Builder.CreateBitOrPointerCast(NewCall,
3747 llvm::Type *GenericVoidPtrTy = Builder.getInt8PtrTy(
3768 Builder.CreatePointerCast(Info.Kernel, GenericVoidPtrTy);
3770 Builder.CreatePointerCast(Info.BlockArg, GenericVoidPtrTy);
3778 Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, Name, ByValAttrSet),
3803 auto *GEP = Builder.CreateGEP(TmpPtr, {Zero, Index});
3807 Builder.CreateZExtOrTrunc(EmitScalarExpr(E->getArg(I)), SizeTy);
3808 Builder.CreateAlignedStore(
3821 Builder.CreatePointerCast(Info.Kernel, GenericVoidPtrTy);
3822 auto *Block = Builder.CreatePointerCast(Info.BlockArg, GenericVoidPtrTy);
3839 RValue::get(Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, Name),
3852 Builder.CreateZExtOrTrunc(EmitScalarExpr(E->getArg(3)), Int32Ty);
3866 EventWaitList = Builder.CreatePointerCast(EventWaitList, EventPtrTy);
3874 Builder.CreatePointerCast(EmitScalarExpr(E->getArg(5)), EventPtrTy);
3880 Builder.CreatePointerCast(Info.Kernel, GenericVoidPtrTy);
3882 Builder.CreatePointerCast(Info.BlockArg, GenericVoidPtrTy);
3898 Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, Name),
3915 RValue::get(Builder.CreateCall(CGM.CreateRuntimeFunction(FTy, Name),
3926 llvm::Type *GenericVoidPtrTy = Builder.getInt8PtrTy(
3930 Value *Kernel = Builder.CreatePointerCast(Info.Kernel, GenericVoidPtrTy);
3931 Value *Arg = Builder.CreatePointerCast(Info.BlockArg, GenericVoidPtrTy);
3932 return RValue::get(Builder.CreateCall(
3940 llvm::Type *GenericVoidPtrTy = Builder.getInt8PtrTy(
3944 Value *Kernel = Builder.CreatePointerCast(Info.Kernel, GenericVoidPtrTy);
3945 Value *Arg = Builder.CreatePointerCast(Info.BlockArg, GenericVoidPtrTy);
3946 return RValue::get(Builder.CreateCall(
3955 llvm::Type *GenericVoidPtrTy = Builder.getInt8PtrTy(
3961 Value *Kernel = Builder.CreatePointerCast(Info.Kernel, GenericVoidPtrTy);
3962 Value *Block = Builder.CreatePointerCast(Info.BlockArg, GenericVoidPtrTy);
3967 return RValue::get(Builder.CreateCall(
3980 Value *HalfVal = Builder.CreateFPTrunc(Val, Builder.getHalfTy());
3980 Value *HalfVal = Builder.CreateFPTrunc(Val, Builder.getHalfTy());
3981 return RValue::get(Builder.CreateStore(HalfVal, Address));
3985 Value *HalfVal = Builder.CreateLoad(Address);
3986 return RValue::get(Builder.CreateFPExt(HalfVal, Builder.getDoubleTy()));
3986 return RValue::get(Builder.CreateFPExt(HalfVal, Builder.getDoubleTy()));
3990 Value *HalfVal = Builder.CreateLoad(Address);
3991 return RValue::get(Builder.CreateFPExt(HalfVal, Builder.getFloatTy()));
3991 return RValue::get(Builder.CreateFPExt(HalfVal, Builder.getFloatTy()));
4034 Arg0Val = Builder.CreatePointerCast(Arg0Val, PTy0);
4039 Arg1 = Builder.CreateTruncOrBitCast(Arg1, PTy1);
4040 return RValue::get(Builder.CreateCall(F, {Arg0Val, Arg1}));
4063 Arg0 = Builder.CreateTruncOrBitCast(Arg0, PTy0);
4072 Arg1Val = Builder.CreatePointerCast(Arg1Val, PTy1);
4077 Arg2 = Builder.CreateTruncOrBitCast(Arg2, PTy2);
4078 return RValue::get(Builder.CreateCall(F, {Arg0, Arg1Val, Arg2}));
4099 DestAddr = Address(Builder.CreateBitCast(DestAddr.getPointer(), BPP, "cp"),
4101 SrcAddr = Address(Builder.CreateBitCast(SrcAddr.getPointer(), BPP, "ap"),
4104 Value *ArgPtr = Builder.CreateLoad(SrcAddr, "ap.val");
4105 return RValue::get(Builder.CreateStore(ArgPtr, DestAddr));
4182 ArgValue = Builder.CreateAddrSpaceCast(
4190 ArgValue = Builder.CreateBitCast(ArgValue, PTy);
4196 Value *V = Builder.CreateCall(F, Args);
4207 V = Builder.CreateAddrSpaceCast(
4214 V = Builder.CreateBitCast(V, RetTy);
4338 return Builder.CreateShuffleVector(V, V, SV, "lane");
4350 Ops[j] = Builder.CreateBitCast(Ops[j], ai->getType(), name);
4352 return Builder.CreateCall(F, Ops, name);
4370 Vec = Builder.CreateBitCast(Vec, Ty);
4388 return Builder.CreateLShr(Vec, Shift, name);
4390 return Builder.CreateAShr(Vec, Shift, name);
5221 CGF.Builder.CreateTruncOrBitCast(Ops[j], ArgTy->getVectorElementType());
5223 CGF.Builder.CreateInsertElement(UndefValue::get(ArgTy), Ops[j], C0);
5230 return CGF.Builder.CreateExtractElement(Result, C0);
5232 return CGF.Builder.CreateBitCast(Result, ResultType, s);
5258 return Builder.getInt32(addr.getAlignment().getQuantity());
5284 Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
5285 Ops[1] = Builder.CreateBitCast(Ops[1], SrcTy);
5286 Ops[0] = Builder.CreateAdd(Ops[0], Ops[1], "vaddhn");
5291 Ops[0] = Builder.CreateLShr(Ops[0], ShiftAmt, "vaddhn");
5294 return Builder.CreateTrunc(Ops[0], VTy, "vaddhn");
5348 Ops.push_back(Builder.getInt1(getTarget().isCLZForZeroUndef()));
5352 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
5355 return Usgn ? Builder.CreateUIToFP(Ops[0], Ty, "vcvt")
5356 : Builder.CreateSIToFP(Ops[0], Ty, "vcvt");
5359 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
5362 return Usgn ? Builder.CreateUIToFP(Ops[0], Ty, "vcvt")
5363 : Builder.CreateSIToFP(Ops[0], Ty, "vcvt");
5403 Ops[0] = Builder.CreateBitCast(Ops[0], GetFloatNeonType(this, Type));
5404 return Usgn ? Builder.CreateFPToUI(Ops[0], Ty, "vcvt")
5405 : Builder.CreateFPToSI(Ops[0], Ty, "vcvt");
5465 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
5466 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
5467 return Builder.CreateShuffleVector(Ops[0], Ops[1], Indices, "vext");
5472 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
5473 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
5474 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
5477 return Builder.CreateCall(F, {Ops[1], Ops[2], Ops[0]});
5492 Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
5495 Ops[1] = Builder.CreateCall(F, Ops[1], "vld1xN");
5497 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
5498 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
5515 Ops[1] = Builder.CreateCall(F, {Ops[1], Align}, NameHint);
5517 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
5518 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
5524 PtrOp0 = Builder.CreateBitCast(PtrOp0, Ty);
5525 LoadInst *Ld = Builder.CreateLoad(PtrOp0);
5527 Ops[0] = Builder.CreateInsertElement(V, Ld, CI);
5539 Ops[I] = Builder.CreateBitCast(Ops[I], Ty);
5541 Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), NameHint);
5543 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
5544 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
5548 Ops[0] = Builder.CreateBitCast(Ops[0], DTy);
5550 return Builder.CreateZExt(Ops[0], Ty, "vmovl");
5551 return Builder.CreateSExt(Ops[0], Ty, "vmovl");
5555 Ops[0] = Builder.CreateBitCast(Ops[0], QTy);
5556 return Builder.CreateTrunc(Ops[0], Ty, "vmovn");
5621 return Builder.CreateShl(Builder.CreateBitCast(Ops[0],Ty), Ops[1],
5621 return Builder.CreateShl(Builder.CreateBitCast(Ops[0],Ty), Ops[1],
5625 Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
5627 Ops[0] = Builder.CreateZExt(Ops[0], VTy);
5629 Ops[0] = Builder.CreateSExt(Ops[0], VTy);
5631 return Builder.CreateShl(Ops[0], Ops[1], "vshll_n");
5635 Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
5638 Ops[0] = Builder.CreateLShr(Ops[0], Ops[1]);
5640 Ops[0] = Builder.CreateAShr(Ops[0], Ops[1]);
5641 return Builder.CreateTrunc(Ops[0], Ty, "vshrn_n");
5686 Ops[0] = Builder.CreateBitCast(Ops[0], SrcTy);
5687 Ops[1] = Builder.CreateBitCast(Ops[1], SrcTy);
5688 Ops[0] = Builder.CreateSub(Ops[0], Ops[1], "vsubhn");
5693 Ops[0] = Builder.CreateLShr(Ops[0], ShiftAmt, "vsubhn");
5696 return Builder.CreateTrunc(Ops[0], VTy, "vsubhn");
5700 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
5701 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
5702 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
5711 Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
5712 SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vtrn");
5713 SV = Builder.CreateDefaultAlignedStore(SV, Addr);
5719 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
5720 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
5721 Ops[0] = Builder.CreateAnd(Ops[0], Ops[1]);
5722 Ops[0] = Builder.CreateICmp(ICmpInst::ICMP_NE, Ops[0],
5724 return Builder.CreateSExt(Ops[0], Ty, "vtst");
5728 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
5729 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
5730 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
5738 Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
5739 SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vuzp");
5740 SV = Builder.CreateDefaultAlignedStore(SV, Addr);
5746 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
5747 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
5748 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
5757 Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
5758 SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vzip");
5759 SV = Builder.CreateDefaultAlignedStore(SV, Addr);
5810 return Builder.CreateBitCast(Result, ResultType, NameHint);
5825 Op = Builder.CreateBitCast(Op, OTy);
5827 Op = Builder.CreateFCmp(Fp, Op, Constant::getNullValue(OTy));
5829 Op = Builder.CreateICmp(Ip, Op, Constant::getNullValue(OTy));
5831 return Builder.CreateSExt(Op, Ty, Name);
5852 TblOps.push_back(CGF.Builder.CreateShuffleVector(Ops[PairPos],
5862 TblOps.push_back(CGF.Builder.CreateShuffleVector(Ops[PairPos],
5903 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_hint),
5920 CodeGen::CGBuilderTy &Builder = CGF.Builder;
6032 return Builder.CreateCall(Emit);
6037 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_dbg), Option);
6049 return Builder.CreateCall(F, {Address, RW, Locality, IsData});
6054 return Builder.CreateCall(
6060 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_cls), Arg, "cls");
6064 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_cls64), Arg,
6107 Value *Rt = Builder.CreateTruncOrBitCast(RtAndRt2, Int32Ty);
6108 Value *Rt2 = Builder.CreateLShr(RtAndRt2, C1);
6109 Rt2 = Builder.CreateTruncOrBitCast(Rt2, Int32Ty);
6111 return Builder.CreateCall(F, {Coproc, Opc1, Rt, Rt2, CRm});
6131 Value *RtAndRt2 = Builder.CreateCall(F, {Coproc, Opc1, CRm});
6136 Value *Rt = Builder.CreateExtractValue(RtAndRt2, 1);
6137 Value *Rt1 = Builder.CreateExtractValue(RtAndRt2, 0);
6138 Rt = Builder.CreateZExt(Rt, Int64Ty);
6139 Rt1 = Builder.CreateZExt(Rt1, Int64Ty);
6142 RtAndRt2 = Builder.CreateShl(Rt, ShiftCast, "shl", true);
6143 RtAndRt2 = Builder.CreateOr(RtAndRt2, Rt1);
6145 return Builder.CreateBitCast(RtAndRt2, ConvertType(E->getType()));
6168 Value *Val = Builder.CreateCall(F, Builder.CreateBitCast(LdPtr, Int8PtrTy),
6168 Value *Val = Builder.CreateCall(F, Builder.CreateBitCast(LdPtr, Int8PtrTy),
6171 Value *Val0 = Builder.CreateExtractValue(Val, 1);
6172 Value *Val1 = Builder.CreateExtractValue(Val, 0);
6173 Val0 = Builder.CreateZExt(Val0, Int64Ty);
6174 Val1 = Builder.CreateZExt(Val1, Int64Ty);
6177 Val = Builder.CreateShl(Val0, ShiftCst, "shl", true /* nuw */);
6178 Val = Builder.CreateOr(Val, Val1);
6179 return Builder.CreateBitCast(Val, ConvertType(E->getType()));
6190 LoadAddr = Builder.CreateBitCast(LoadAddr, PtrTy);
6196 Value *Val = Builder.CreateCall(F, LoadAddr, "ldrex");
6199 return Builder.CreateIntToPtr(Val, RealResTy);
6203 Val = Builder.CreateTruncOrBitCast(Val, IntResTy);
6204 return Builder.CreateBitCast(Val, RealResTy);
6219 Builder.CreateStore(Val, Tmp);
6221 Address LdPtr = Builder.CreateBitCast(Tmp,llvm::PointerType::getUnqual(STy));
6222 Val = Builder.CreateLoad(LdPtr);
6224 Value *Arg0 = Builder.CreateExtractValue(Val, 0);
6225 Value *Arg1 = Builder.CreateExtractValue(Val, 1);
6226 Value *StPtr = Builder.CreateBitCast(EmitScalarExpr(E->getArg(1)), Int8PtrTy);
6227 return Builder.CreateCall(F, {Arg0, Arg1, StPtr}, "strexd");
6238 StoreAddr = Builder.CreateBitCast(StoreAddr, StoreTy->getPointerTo());
6241 StoreVal = Builder.CreatePtrToInt(StoreVal, Int32Ty);
6246 StoreVal = Builder.CreateBitCast(StoreVal, IntTy);
6247 StoreVal = Builder.CreateZExtOrBitCast(StoreVal, Int32Ty);
6254 return Builder.CreateCall(F, {StoreVal, StoreAddr}, "strex");
6259 return Builder.CreateCall(F);
6290 Value *Arg1a = Builder.CreateTruncOrBitCast(Arg1, Int32Ty);
6291 Value *Arg1b = Builder.CreateLShr(Arg1, C1);
6292 Arg1b = Builder.CreateTruncOrBitCast(Arg1b, Int32Ty);
6295 Value *Res = Builder.CreateCall(F, {Arg0, Arg1a});
6296 return Builder.CreateCall(F, {Res, Arg1b});
6298 Arg1 = Builder.CreateZExtOrBitCast(Arg1, Int32Ty);
6301 return Builder.CreateCall(F, {Arg0, Arg1});
6348 return Builder.getInt32(addr.getAlignment().getQuantity());
6441 return Builder.CreateExtractElement(Ops[0], Ops[1], "vget_lane");
6447 return Builder.CreateCall(F, {Arg}, "vrndn"); }
6459 return Builder.CreateInsertElement(Ops[1], Ops[0], Ops[2], "vset_lane");
6480 return Builder.CreateCall(F, {Ops[1], Ops[2], Ops[0],
6644 return Builder.CreateCall(F, Ops, "vcvtr");
6676 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
6679 Ops[1] = Builder.CreateShuffleVector(Ops[1], Ops[1], SV);
6685 Value *Ld = Builder.CreateCall(F, {Ops[0], Align});
6689 return Builder.CreateShuffleVector(Ops[1], Ld, SV, "vld1q_lane");
6693 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
6694 PtrOp0 = Builder.CreateElementBitCast(PtrOp0, VTy->getElementType());
6695 Value *Ld = Builder.CreateLoad(PtrOp0);
6696 return Builder.CreateInsertElement(Ops[1], Ld, Ops[2], "vld1_lane");
6722 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
6723 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
6726 Ops[1] = Builder.CreateCall(CGM.getIntrinsic(Int, Ty), {Ops[1], Ops[2]});
6727 return Builder.CreateAdd(Ops[0], Ops[1], "vrsra_n");
6739 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
6741 return Builder.CreateAdd(Ops[0], Ops[1]);
6746 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
6748 Ops[1] = Builder.CreateShuffleVector(Ops[1], Ops[1], SV);
6751 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::arm_neon_vst1,
6756 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
6757 Ops[1] = Builder.CreateExtractElement(Ops[1], Ops[2]);
6759 auto St = Builder.CreateStore(Ops[1], Builder.CreateBitCast(PtrOp0, Ty));
6759 auto St = Builder.CreateStore(Ops[1], Builder.CreateBitCast(PtrOp0, Ty));
6836 Value *LoadResult = Builder.CreateCall(F, Ops);
6839 Value *Vec = Builder.CreateExtractValue(LoadResult, i);
6840 MvecOut = Builder.CreateInsertValue(MvecOut, Vec, {0, i});
6846 return Builder.CreateStore(MvecOut, ReturnValue.getValue());
6873 auto Mvec = Builder.CreateLoad(MvecSlot.getAddress());
6875 Ops.push_back(Builder.CreateExtractValue(Mvec, {0, i}));
6881 ToReturn = Builder.CreateCall(F, Ops);
6942 CodeGen::CGBuilderTy &Builder = CGF.Builder;
7040 Op = Builder.CreateBitCast(Op, Int16Ty);
7043 Op = Builder.CreateInsertElement(V, Op, CI);
7080 return Builder.CreateCall(F, llvm::ConstantInt::get(Int32Ty, HintID));
7103 return Builder.CreateCall(F, {Address, RW, Locality, IsData});
7110 return Builder.CreateCall(
7117 return Builder.CreateCall(
7123 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::aarch64_cls), Arg,
7128 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::aarch64_cls64), Arg,
7136 return Builder.CreateCall(
7160 Value *Val = Builder.CreateCall(F, Builder.CreateBitCast(LdPtr, Int8PtrTy),
7160 Value *Val = Builder.CreateCall(F, Builder.CreateBitCast(LdPtr, Int8PtrTy),
7163 Value *Val0 = Builder.CreateExtractValue(Val, 1);
7164 Value *Val1 = Builder.CreateExtractValue(Val, 0);
7166 Val0 = Builder.CreateZExt(Val0, Int128Ty);
7167 Val1 = Builder.CreateZExt(Val1, Int128Ty);
7170 Val = Builder.CreateShl(Val0, ShiftCst, "shl", true /* nuw */);
7171 Val = Builder.CreateOr(Val, Val1);
7172 return Builder.CreateBitCast(Val, ConvertType(E->getType()));
7181 LoadAddr = Builder.CreateBitCast(LoadAddr, PtrTy);
7187 Value *Val = Builder.CreateCall(F, LoadAddr, "ldxr");
7190 return Builder.CreateIntToPtr(Val, RealResTy);
7194 Val = Builder.CreateTruncOrBitCast(Val, IntResTy);
7195 return Builder.CreateBitCast(Val, RealResTy);
7209 Tmp = Builder.CreateBitCast(Tmp, llvm::PointerType::getUnqual(STy));
7210 llvm::Value *Val = Builder.CreateLoad(Tmp);
7212 Value *Arg0 = Builder.CreateExtractValue(Val, 0);
7213 Value *Arg1 = Builder.CreateExtractValue(Val, 1);
7214 Value *StPtr = Builder.CreateBitCast(EmitScalarExpr(E->getArg(1)),
7216 return Builder.CreateCall(F, {Arg0, Arg1, StPtr}, "stxp");
7227 StoreAddr = Builder.CreateBitCast(StoreAddr, StoreTy->getPointerTo());
7230 StoreVal = Builder.CreatePtrToInt(StoreVal, Int64Ty);
7235 StoreVal = Builder.CreateBitCast(StoreVal, IntTy);
7236 StoreVal = Builder.CreateZExtOrBitCast(StoreVal, Int64Ty);
7243 return Builder.CreateCall(F, {StoreVal, StoreAddr}, "stxr");
7261 return Builder.CreateCall(F, Metadata);
7266 return Builder.CreateCall(F);
7270 return Builder.CreateFence(llvm::AtomicOrdering::SequentiallyConsistent,
7300 Arg1 = Builder.CreateZExtOrBitCast(Arg1, DataTy);
7302 return Builder.CreateCall(F, {Arg0, Arg1});
7329 Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
7330 Mask = Builder.CreateZExt(Mask, Int64Ty);
7331 Value *RV = Builder.CreateCall(
7333 return Builder.CreatePointerCast(RV, T);
7339 Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
7340 TagOffset = Builder.CreateZExt(TagOffset, Int64Ty);
7341 Value *RV = Builder.CreateCall(
7343 return Builder.CreatePointerCast(RV, T);
7349 ExcludedMask = Builder.CreateZExt(ExcludedMask, Int64Ty);
7350 Pointer = Builder.CreatePointerCast(Pointer, Int8PtrTy);
7351 return Builder.CreateCall(
7359 TagAddress = Builder.CreatePointerCast(TagAddress, Int8PtrTy);
7360 Value *RV = Builder.CreateCall(
7362 return Builder.CreatePointerCast(RV, T);
7369 TagAddress = Builder.CreatePointerCast(TagAddress, Int8PtrTy);
7370 return Builder.CreateCall(
7376 PointerA = Builder.CreatePointerCast(PointerA, Int8PtrTy);
7377 PointerB = Builder.CreatePointerCast(PointerB, Int8PtrTy);
7378 return Builder.CreateCall(
7438 return Builder.CreateCall(F, Metadata);
7444 return Builder.CreateCall(F, { Metadata, ArgValue });
7450 return Builder.CreateCall(F);
7455 return Builder.CreateCall(F);
7510 Value *Ptr = Builder.CreateBitCast(EmitScalarExpr(E->getArg(0)), Int128PTy);
7511 return Builder.CreateAlignedLoad(Int128Ty, Ptr,
7516 Value *Ptr = Builder.CreateBitCast(Ops[0], Int128PTy);
7517 return Builder.CreateDefaultAlignedStore(EmitScalarExpr(E->getArg(1)), Ptr);
7529 Ops[0] = Builder.CreateBitCast(Ops[0], FTy);
7531 return Builder.CreateFPToUI(Ops[0], InTy);
7532 return Builder.CreateFPToSI(Ops[0], InTy);
7544 Ops[0] = Builder.CreateBitCast(Ops[0], InTy);
7546 return Builder.CreateUIToFP(Ops[0], FTy);
7547 return Builder.CreateSIToFP(Ops[0], FTy);
7566 Ops[0] = Builder.CreateBitCast(Ops[0], InTy);
7568 return Builder.CreateUIToFP(Ops[0], FTy);
7569 return Builder.CreateSIToFP(Ops[0], FTy);
7576 Ops[0] = Builder.CreateBitCast(Ops[0], HalfTy);
7578 return Builder.CreateFPToUI(Ops[0], Int16Ty);
7579 return Builder.CreateFPToSI(Ops[0], Int16Ty);
7586 Ops[0] = Builder.CreateBitCast(Ops[0], HalfTy);
7588 return Builder.CreateFPToUI(Ops[0], Int32Ty);
7589 return Builder.CreateFPToSI(Ops[0], Int32Ty);
7596 Ops[0] = Builder.CreateBitCast(Ops[0], HalfTy);
7598 return Builder.CreateFPToUI(Ops[0], Int64Ty);
7599 return Builder.CreateFPToSI(Ops[0], Int64Ty);
7634 return Builder.CreateTrunc(Ops[0], Int16Ty);
7657 return Builder.CreateTrunc(Ops[0], Int16Ty);
7674 return Builder.CreateTrunc(Ops[0], Int16Ty);
7687 Ops[0] = Builder.CreateSExt(Ops[0], InTy, "sext");
7691 Ops[0] = Builder.CreateZExt(Ops[0], InTy);
7700 Vec = Builder.CreateBitCast(Vec, Ty, "v2i64");
7703 Value *Op0 = Builder.CreateExtractElement(Vec, Idx0, "lane0");
7704 Value *Op1 = Builder.CreateExtractElement(Vec, Idx1, "lane1");
7706 return Builder.CreateAdd(Op0, Op1, "vpaddd");
7713 Vec = Builder.CreateBitCast(Vec, Ty, "v2f64");
7716 Value *Op0 = Builder.CreateExtractElement(Vec, Idx0, "lane0");
7717 Value *Op1 = Builder.CreateExtractElement(Vec, Idx1, "lane1");
7719 return Builder.CreateFAdd(Op0, Op1, "vpaddd");
7726 Vec = Builder.CreateBitCast(Vec, Ty, "v2f32");
7729 Value *Op0 = Builder.CreateExtractElement(Vec, Idx0, "lane0");
7730 Value *Op1 = Builder.CreateExtractElement(Vec, Idx1, "lane1");
7732 return Builder.CreateFAdd(Op0, Op1, "vpaddd");
7777 Ops[0] = Builder.CreateBitCast(Ops[0], Int64Ty);
7779 Builder.CreateICmpEQ(Ops[0], llvm::Constant::getNullValue(Int64Ty));
7780 return Builder.CreateSExt(Ops[0], Int64Ty, "vceqzd");
7797 Ops[0] = Builder.CreateBitCast(Ops[0], DoubleTy);
7798 Ops[1] = Builder.CreateBitCast(Ops[1], DoubleTy);
7799 Ops[0] = Builder.CreateFCmp(P, Ops[0], Ops[1]);
7800 return Builder.CreateSExt(Ops[0], Int64Ty, "vcmpd");
7817 Ops[0] = Builder.CreateBitCast(Ops[0], FloatTy);
7818 Ops[1] = Builder.CreateBitCast(Ops[1], FloatTy);
7819 Ops[0] = Builder.CreateFCmp(P, Ops[0], Ops[1]);
7820 return Builder.CreateSExt(Ops[0], Int32Ty, "vcmpd");
7837 Ops[0] = Builder.CreateBitCast(Ops[0], HalfTy);
7838 Ops[1] = Builder.CreateBitCast(Ops[1], HalfTy);
7839 Ops[0] = Builder.CreateFCmp(P, Ops[0], Ops[1]);
7840 return Builder.CreateSExt(Ops[0], Int16Ty, "vcmpd");
7867 Ops[0] = Builder.CreateBitCast(Ops[0], Int64Ty);
7868 Ops[1] = Builder.CreateBitCast(Ops[1], Int64Ty);
7869 Ops[0] = Builder.CreateICmp(P, Ops[0], Ops[1]);
7870 return Builder.CreateSExt(Ops[0], Int64Ty, "vceqd");
7875 Ops[0] = Builder.CreateBitCast(Ops[0], Int64Ty);
7876 Ops[1] = Builder.CreateBitCast(Ops[1], Int64Ty);
7877 Ops[0] = Builder.CreateAnd(Ops[0], Ops[1]);
7878 Ops[0] = Builder.CreateICmp(ICmpInst::ICMP_NE, Ops[0],
7880 return Builder.CreateSExt(Ops[0], Int64Ty, "vtstd");
7893 return Builder.CreateInsertElement(Ops[1], Ops[0], Ops[2], "vset_lane");
7896 Ops[1] = Builder.CreateBitCast(Ops[1],
7899 return Builder.CreateInsertElement(Ops[1], Ops[0], Ops[2], "vset_lane");
7902 Ops[1] = Builder.CreateBitCast(Ops[1],
7905 return Builder.CreateInsertElement(Ops[1], Ops[0], Ops[2], "vset_lane");
7909 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int8Ty, 8));
7910 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7914 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int8Ty, 16));
7915 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7919 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int16Ty, 4));
7920 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7924 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int16Ty, 8));
7925 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7929 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int32Ty, 2));
7930 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7933 Ops[0] = Builder.CreateBitCast(Ops[0],
7935 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7939 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int32Ty, 4));
7940 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7944 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int64Ty, 1));
7945 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7948 Ops[0] = Builder.CreateBitCast(Ops[0],
7950 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7954 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int64Ty, 2));
7955 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7958 Ops[0] = Builder.CreateBitCast(Ops[0],
7960 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7963 Ops[0] = Builder.CreateBitCast(Ops[0],
7965 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7969 Ops[0] = Builder.CreateBitCast(Ops[0],
7971 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7975 Ops[0] = Builder.CreateBitCast(Ops[0],
7977 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
7981 return Builder.CreateFAdd(Ops[0], Ops[1], "vaddh");
7984 return Builder.CreateFSub(Ops[0], Ops[1], "vsubh");
7987 return Builder.CreateFMul(Ops[0], Ops[1], "vmulh");
7990 return Builder.CreateFDiv(Ops[0], Ops[1], "vdivh");
7994 return Builder.CreateCall(F,
8000 Value* Sub = Builder.CreateFSub(Zero, EmitScalarExpr(E->getArg(1)), "vsubh");
8002 return Builder.CreateCall(F, {Sub, EmitScalarExpr(E->getArg(2)), Ops[0]});
8006 return Builder.CreateAdd(Ops[0], EmitScalarExpr(E->getArg(1)), "vaddd");
8009 return Builder.CreateSub(Ops[0], EmitScalarExpr(E->getArg(1)), "vsubd");
8019 Ops[1] = Builder.CreateExtractElement(Ops[1], CI, "lane0");
8028 Ops[1] = Builder.CreateZExt(Ops[1], Int64Ty);
8038 Ops[1] = Builder.CreateZExt(Ops[1], Int64Ty);
8056 Ops[1] = Builder.CreateBitCast(Ops[1], Int64Ty);
8057 Ops.push_back(Builder.CreateNeg(EmitScalarExpr(E->getArg(2))));
8058 Ops[1] = Builder.CreateCall(CGM.getIntrinsic(Int, Int64Ty),
8059 {Ops[1], Builder.CreateSExt(Ops[2], Int64Ty)});
8060 return Builder.CreateAdd(Ops[0], Builder.CreateBitCast(Ops[1], Int64Ty));
8060 return Builder.CreateAdd(Ops[0], Builder.CreateBitCast(Ops[1], Int64Ty));
8065 return Builder.CreateShl(
8070 return Builder.CreateAShr(
8081 return Builder.CreateLShr(Ops[0], ConstantInt::get(Int64Ty, ShiftAmt),
8086 Ops[1] = Builder.CreateAShr(
8090 return Builder.CreateAdd(Ops[0], Ops[1]);
8099 Ops[1] = Builder.CreateLShr(Ops[1], ConstantInt::get(Int64Ty, ShiftAmt),
8101 return Builder.CreateAdd(Ops[0], Ops[1]);
8107 Ops[2] = Builder.CreateExtractElement(Ops[2], EmitScalarExpr(E->getArg(3)),
8116 Ops[1] = Builder.CreateExtractElement(Ops[1], CI, "lane0");
8143 Ops[2] = Builder.CreateExtractElement(Ops[2], EmitScalarExpr(E->getArg(3)),
8160 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
8164 return Builder.CreateExtractElement(Ops[0], EmitScalarExpr(E->getArg(1)),
8307 AtomicRMWInst *RMWI = Builder.CreateAtomicRMW(
8310 return Builder.CreateAdd(RMWI, Arg1);
8339 Ops[0] = Builder.CreateBitCast(Ops[0], BitTy, "vbsl");
8340 Ops[1] = Builder.CreateBitCast(Ops[1], BitTy, "vbsl");
8341 Ops[2] = Builder.CreateBitCast(Ops[2], BitTy, "vbsl");
8343 Ops[1] = Builder.CreateAnd(Ops[0], Ops[1], "vbsl");
8344 Ops[2] = Builder.CreateAnd(Builder.CreateNot(Ops[0]), Ops[2], "vbsl");
8344 Ops[2] = Builder.CreateAnd(Builder.CreateNot(Ops[0]), Ops[2], "vbsl");
8345 Ops[0] = Builder.CreateOr(Ops[1], Ops[2], "vbsl");
8346 return Builder.CreateBitCast(Ops[0], Ty);
8365 Ops[1] = Builder.CreateBitCast(Ops[1], SourceTy);
8366 Ops[1] = Builder.CreateShuffleVector(Ops[1], Ops[1], SV, "lane");
8376 Ops[0] = Builder.CreateBitCast(Ops[0], DoubleTy);
8377 Ops[1] = Builder.CreateBitCast(Ops[1], DoubleTy);
8380 Ops[2] = Builder.CreateBitCast(Ops[2], VTy);
8381 Ops[2] = Builder.CreateExtractElement(Ops[2], Ops[3], "extract");
8383 Value *Result = Builder.CreateCall(F, {Ops[1], Ops[2], Ops[0]});
8384 return Builder.CreateBitCast(Result, Ty);
8387 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
8388 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
8392 Ops[2] = Builder.CreateBitCast(Ops[2], STy);
8395 Ops[2] = Builder.CreateShuffleVector(Ops[2], Ops[2], SV, "lane");
8397 return Builder.CreateCall(F, {Ops[2], Ops[1], Ops[0]});
8401 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
8402 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
8404 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
8406 return Builder.CreateCall(F, {Ops[2], Ops[1], Ops[0]});
8417 Ops[2] = Builder.CreateExtractElement(Ops[2], Ops[3], "extract");
8418 return Builder.CreateCall(F, {Ops[1], Ops[2], Ops[0]});
8466 llvm::Value *addend = Builder.CreateBitCast(Ops[0], tmp->getType());
8467 return Builder.CreateAdd(tmp, addend);
8597 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
8599 return usgn ? Builder.CreateUIToFP(Ops[0], Ty, "vcvt")
8600 : Builder.CreateSIToFP(Ops[0], Ty, "vcvt");
8605 Ops[0] = Builder.CreateBitCast(Ops[0], GetNeonType(this, SrcFlag));
8607 return Builder.CreateFPExt(Ops[0], Ty, "vcvt");
8613 Ops[0] = Builder.CreateBitCast(Ops[0], GetNeonType(this, SrcFlag));
8615 return Builder.CreateFPTrunc(Ops[0], Ty, "vcvt");
8629 Ops[0] = Builder.CreateBitCast(Ops[0], GetFloatNeonType(this, Type));
8631 return Builder.CreateFPToUI(Ops[0], Ty);
8632 return Builder.CreateFPToSI(Ops[0], Ty);
8708 Ops[1] = Builder.CreateExtractElement(Ops[1], Ops[2], "extract");
8719 Ops[0] = Builder.CreateBitCast(Ops[0], DoubleTy);
8722 Ops[1] = Builder.CreateBitCast(Ops[1], VTy);
8723 Ops[1] = Builder.CreateExtractElement(Ops[1], Ops[2], "extract");
8724 Value *Result = Builder.CreateFMul(Ops[0], Ops[1]);
8725 return Builder.CreateBitCast(Result, Ty);
8728 return Builder.CreateNeg(EmitScalarExpr(E->getArg(0)), "vnegd");
8730 return Builder.CreateFNeg(EmitScalarExpr(E->getArg(0)), "vnegh");
8749 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
8768 return Builder.CreateTrunc(Ops[0], Int8Ty);
8780 return Builder.CreateTrunc(Ops[0], Int16Ty);
8792 return Builder.CreateTrunc(Ops[0], Int8Ty);
8804 return Builder.CreateTrunc(Ops[0], Int16Ty);
8813 return Builder.CreateTrunc(Ops[0], Int8Ty);
8822 return Builder.CreateTrunc(Ops[0], Int16Ty);
8831 return Builder.CreateTrunc(Ops[0], Int8Ty);
8840 return Builder.CreateTrunc(Ops[0], Int16Ty);
8849 return Builder.CreateTrunc(Ops[0], Int8Ty);
8858 return Builder.CreateTrunc(Ops[0], Int16Ty);
8867 return Builder.CreateTrunc(Ops[0], Int8Ty);
8876 return Builder.CreateTrunc(Ops[0], Int16Ty);
8885 return Builder.CreateTrunc(Ops[0], HalfTy);
8894 return Builder.CreateTrunc(Ops[0], HalfTy);
8903 return Builder.CreateTrunc(Ops[0], Int8Ty);
8912 return Builder.CreateTrunc(Ops[0], Int16Ty);
8921 return Builder.CreateTrunc(Ops[0], Int8Ty);
8930 return Builder.CreateTrunc(Ops[0], Int16Ty);
8939 return Builder.CreateTrunc(Ops[0], Int8Ty);
8948 return Builder.CreateTrunc(Ops[0], Int16Ty);
8957 return Builder.CreateTrunc(Ops[0], Int8Ty);
8966 return Builder.CreateTrunc(Ops[0], Int16Ty);
8975 return Builder.CreateTrunc(Ops[0], HalfTy);
8984 return Builder.CreateTrunc(Ops[0], HalfTy);
8993 return Builder.CreateTrunc(Ops[0], HalfTy);
9002 return Builder.CreateTrunc(Ops[0], HalfTy);
9011 return Builder.CreateTrunc(Ops[0], HalfTy);
9020 return Builder.CreateTrunc(Ops[0], HalfTy);
9023 Ops[0] = Builder.CreateBitCast(Ops[0], DoubleTy);
9024 Value *RHS = Builder.CreateBitCast(EmitScalarExpr(E->getArg(1)), DoubleTy);
9025 return Builder.CreateFMul(Ops[0], RHS);
9034 return Builder.CreateTrunc(Ops[0], Int16Ty);
9051 return Builder.CreateTrunc(Ops[0], Int16Ty);
9068 return Builder.CreateTrunc(Ops[0], Int16Ty);
9085 return Builder.CreateTrunc(Ops[0], Int16Ty);
9109 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
9111 return Builder.CreateAdd(Ops[0], Ops[1]);
9120 Ops[0] = Builder.CreateBitCast(Ops[0], VTy);
9121 return Builder.CreateAdd(Ops[0], tmp);
9125 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(VTy));
9128 return Builder.CreateAlignedLoad(VTy, Ops[0], Alignment);
9132 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(VTy));
9133 Ops[1] = Builder.CreateBitCast(Ops[1], VTy);
9134 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9137 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
9139 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
9143 Builder.CreateAlignedLoad(VTy->getElementType(), Ops[0], Alignment);
9144 return Builder.CreateInsertElement(Ops[1], Ops[0], Ops[2], "vld1_lane");
9150 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
9154 Builder.CreateAlignedLoad(VTy->getElementType(), Ops[0], Alignment);
9156 Ops[0] = Builder.CreateInsertElement(V, Ops[0], CI);
9161 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
9162 Ops[1] = Builder.CreateExtractElement(Ops[1], Ops[2]);
9164 return Builder.CreateDefaultAlignedStore(Ops[1],
9165 Builder.CreateBitCast(Ops[0], Ty));
9169 Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
9172 Ops[1] = Builder.CreateCall(F, Ops[1], "vld2");
9173 Ops[0] = Builder.CreateBitCast(Ops[0],
9175 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9180 Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
9183 Ops[1] = Builder.CreateCall(F, Ops[1], "vld3");
9184 Ops[0] = Builder.CreateBitCast(Ops[0],
9186 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9191 Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
9194 Ops[1] = Builder.CreateCall(F, Ops[1], "vld4");
9195 Ops[0] = Builder.CreateBitCast(Ops[0],
9197 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9203 Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
9206 Ops[1] = Builder.CreateCall(F, Ops[1], "vld2");
9207 Ops[0] = Builder.CreateBitCast(Ops[0],
9209 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9215 Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
9218 Ops[1] = Builder.CreateCall(F, Ops[1], "vld3");
9219 Ops[0] = Builder.CreateBitCast(Ops[0],
9221 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9227 Ops[1] = Builder.CreateBitCast(Ops[1], PTy);
9230 Ops[1] = Builder.CreateCall(F, Ops[1], "vld4");
9231 Ops[0] = Builder.CreateBitCast(Ops[0],
9233 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9241 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
9242 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
9243 Ops[3] = Builder.CreateZExt(Ops[3], Int64Ty);
9244 Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), "vld2_lane");
9246 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
9247 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9255 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
9256 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
9257 Ops[3] = Builder.CreateBitCast(Ops[3], Ty);
9258 Ops[4] = Builder.CreateZExt(Ops[4], Int64Ty);
9259 Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), "vld3_lane");
9261 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
9262 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9270 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
9271 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
9272 Ops[3] = Builder.CreateBitCast(Ops[3], Ty);
9273 Ops[4] = Builder.CreateBitCast(Ops[4], Ty);
9274 Ops[5] = Builder.CreateZExt(Ops[5], Int64Ty);
9275 Ops[1] = Builder.CreateCall(F, makeArrayRef(Ops).slice(1), "vld4_lane");
9277 Ops[0] = Builder.CreateBitCast(Ops[0], Ty);
9278 return Builder.CreateDefaultAlignedStore(Ops[1], Ops[0]);
9292 Ops[2] = Builder.CreateZExt(Ops[2], Int64Ty);
9309 Ops[3] = Builder.CreateZExt(Ops[3], Int64Ty);
9326 Ops[4] = Builder.CreateZExt(Ops[4], Int64Ty);
9333 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
9334 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
9335 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
9344 Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
9345 SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vtrn");
9346 SV = Builder.CreateDefaultAlignedStore(SV, Addr);
9352 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
9353 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
9354 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
9362 Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
9363 SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vuzp");
9364 SV = Builder.CreateDefaultAlignedStore(SV, Addr);
9370 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::PointerType::getUnqual(Ty));
9371 Ops[1] = Builder.CreateBitCast(Ops[1], Ty);
9372 Ops[2] = Builder.CreateBitCast(Ops[2], Ty);
9381 Value *Addr = Builder.CreateConstInBoundsGEP1_32(Ty, Ops[0], vi);
9382 SV = Builder.CreateShuffleVector(Ops[1], Ops[2], Indices, "vzip");
9383 SV = Builder.CreateDefaultAlignedStore(SV, Addr);
9460 return Builder.CreateCall(FnGetFieldInfo, {FieldAddr, InfoKind});
9484 Result = Builder.CreateInsertElement(Result, Ops[i], Builder.getInt32(i));
9484 Result = Builder.CreateInsertElement(Result, Ops[i], Builder.getInt32(i));
9493 llvm::VectorType *MaskTy = llvm::VectorType::get(CGF.Builder.getInt1Ty(),
9495 Value *MaskVec = CGF.Builder.CreateBitCast(Mask, MaskTy);
9503 MaskVec = CGF.Builder.CreateShuffleVector(MaskVec, MaskVec,
9514 Value *Ptr = CGF.Builder.CreateBitCast(Ops[0],
9520 return CGF.Builder.CreateMaskedStore(Ops[1], Ptr, Align, MaskVec);
9526 Value *Ptr = CGF.Builder.CreateBitCast(Ops[0],
9532 return CGF.Builder.CreateMaskedLoad(Ptr, Align, MaskVec, Ops[1]);
9541 Value *Ptr = CGF.Builder.CreateBitCast(Ops[0],
9549 return CGF.Builder.CreateCall(F, { Ptr, MaskVec, Ops[1] });
9563 return CGF.Builder.CreateCall(F, { Ops[0], Ops[1], MaskVec });
9572 Value *Ptr = CGF.Builder.CreateBitCast(Ops[0],
9580 return CGF.Builder.CreateCall(F, { Ops[1], Ptr, MaskVec });
9591 LHS = CGF.Builder.CreateNot(LHS);
9593 return CGF.Builder.CreateBitCast(CGF.Builder.CreateBinOp(Opc, LHS, RHS),
9593 return CGF.Builder.CreateBitCast(CGF.Builder.CreateBinOp(Opc, LHS, RHS),
9606 Amt = CGF.Builder.CreateIntCast(Amt, Ty->getScalarType(), false);
9607 Amt = CGF.Builder.CreateVectorSplat(NumElts, Amt);
9612 return CGF.Builder.CreateCall(F, {Op0, Op1, Amt});
9650 Value *Cmp = CGF.Builder.CreateICmp(Pred, Op0, Op1);
9651 Value *Res = CGF.Builder.CreateSExt(Cmp, Ty);
9665 return CGF.Builder.CreateSelect(Mask, Op0, Op1);
9676 llvm::VectorType::get(CGF.Builder.getInt1Ty(),
9678 Mask = CGF.Builder.CreateBitCast(Mask, MaskTy);
9679 Mask = CGF.Builder.CreateExtractElement(Mask, (uint64_t)0);
9680 return CGF.Builder.CreateSelect(Mask, Op0, Op1);
9688 Cmp = CGF.Builder.CreateAnd(Cmp, getMaskVecValue(CGF, MaskIn, NumElts));
9697 Cmp = CGF.Builder.CreateShuffleVector(
9701 return CGF.Builder.CreateBitCast(Cmp,
9715 llvm::VectorType::get(CGF.Builder.getInt1Ty(), NumElts));
9718 llvm::VectorType::get(CGF.Builder.getInt1Ty(), NumElts));
9730 Cmp = CGF.Builder.CreateICmp(Pred, Ops[0], Ops[1]);
9755 Res = CGF.Builder.CreateCall(F, { Ops[0], Ops[3] });
9757 Res = IsSigned ? CGF.Builder.CreateSIToFP(Ops[0], Ty)
9758 : CGF.Builder.CreateUIToFP(Ops[0], Ty);
9768 Value *Sub = CGF.Builder.CreateSub(Zero, Ops[0]);
9769 Value *Cmp = CGF.Builder.CreateICmp(ICmpInst::ICMP_SGT, Ops[0], Zero);
9770 Value *Res = CGF.Builder.CreateSelect(Cmp, Ops[0], Sub);
9776 Value *Cmp = CGF.Builder.CreateICmp(Pred, Ops[0], Ops[1]);
9777 Value *Res = CGF.Builder.CreateSelect(Cmp, Ops[0], Ops[1]);
9828 C = CGF.Builder.CreateFNeg(C);
9836 Res = CGF.Builder.CreateCall(Intr, {A, B, C, Ops.back() });
9840 Res = CGF.Builder.CreateCall(FMA, {A, B, C} );
9849 Value *NegC = CGF.Builder.CreateFNeg(C);
9850 Value *FMSub = CGF.Builder.CreateCall(FMA, {A, B, NegC} );
9851 Res = CGF.Builder.CreateShuffleVector(FMSub, Res, Indices);
9897 Ops[2] = CGF.Builder.CreateFNeg(Ops[2]);
9899 Ops[0] = CGF.Builder.CreateExtractElement(Ops[0], (uint64_t)0);
9900 Ops[1] = CGF.Builder.CreateExtractElement(Ops[1], (uint64_t)0);
9901 Ops[2] = CGF.Builder.CreateExtractElement(Ops[2], (uint64_t)0);
9907 Res = CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(IID),
9911 Res = CGF.Builder.CreateCall(FMA, Ops.slice(0, 3));
9922 PassThru = CGF.Builder.CreateExtractElement(Upper, (uint64_t)0);
9926 return CGF.Builder.CreateInsertElement(Upper, Res, (uint64_t)0);
9935 Value *LHS = CGF.Builder.CreateBitCast(Ops[0], Ty);
9936 Value *RHS = CGF.Builder.CreateBitCast(Ops[1], Ty);
9941 LHS = CGF.Builder.CreateShl(LHS, ShiftAmt);
9942 LHS = CGF.Builder.CreateAShr(LHS, ShiftAmt);
9943 RHS = CGF.Builder.CreateShl(RHS, ShiftAmt);
9944 RHS = CGF.Builder.CreateAShr(RHS, ShiftAmt);
9948 LHS = CGF.Builder.CreateAnd(LHS, Mask);
9949 RHS = CGF.Builder.CreateAnd(RHS, Mask);
9952 return CGF.Builder.CreateMul(LHS, RHS);
9980 Value *Ternlog = CGF.Builder.CreateCall(CGF.CGM.getIntrinsic(IID),
9990 return CGF.Builder.CreateSExt(Mask, DstTy, "vpmovm2");
10001 return CGF.Builder.CreateCall(F, {Ops[0], Ops[1]});
10014 llvm::Type *Int32Ty = CGF.Builder.getInt32Ty();
10015 Value *ZeroExt = CGF.Builder.CreateZExt(Ops[0], Int32Ty);
10016 Value *Shl = CGF.Builder.CreateShl(ZeroExt, 16);
10018 Value *BitCast = CGF.Builder.CreateBitCast(Shl, ResultType);
10024 llvm::Type *Int32Ty = Builder.getInt32Ty();
10059 llvm::Value *CpuValue = Builder.CreateGEP(STy, CpuModel, Idxs);
10060 CpuValue = Builder.CreateAlignedLoad(CpuValue, CharUnits::fromQuantity(4));
10063 return Builder.CreateICmpEQ(CpuValue,
10096 Value *Result = Builder.getTrue();
10114 Value *Idxs[] = {Builder.getInt32(0), Builder.getInt32(3),
10114 Value *Idxs[] = {Builder.getInt32(0), Builder.getInt32(3),
10115 Builder.getInt32(0)};
10116 Value *CpuFeatures = Builder.CreateGEP(STy, CpuModel, Idxs);
10118 Builder.CreateAlignedLoad(CpuFeatures, CharUnits::fromQuantity(4));
10121 Value *Mask = Builder.getInt32(Features1);
10122 Value *Bitset = Builder.CreateAnd(Features, Mask);
10123 Value *Cmp = Builder.CreateICmpEQ(Bitset, Mask);
10124 Result = Builder.CreateAnd(Result, Cmp);
10133 Builder.CreateAlignedLoad(CpuFeatures2, CharUnits::fromQuantity(4));
10136 Value *Mask = Builder.getInt32(Features2);
10137 Value *Bitset = Builder.CreateAnd(Features, Mask);
10138 Value *Cmp = Builder.CreateICmpEQ(Bitset, Mask);
10139 Result = Builder.CreateAnd(Result, Cmp);
10153 return Builder.CreateCall(Func);
10197 return Builder.CreateCall(F, Ops);
10206 Value *Cmp = Builder.CreateFCmp(Pred, Ops[0], Ops[1]);
10209 Value *Sext = Builder.CreateSExt(Cmp, IntVecTy);
10210 return Builder.CreateBitCast(Sext, FPVecTy);
10222 return Builder.CreateCall(F, {Address, RW, Locality, Data});
10225 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_sse2_clflush),
10229 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_sse2_lfence));
10232 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_sse2_mfence));
10235 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_sse_sfence));
10238 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_sse2_pause));
10241 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_rdtsc));
10244 Value *Call = Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_rdtscp));
10245 Builder.CreateDefaultAlignedStore(Builder.CreateExtractValue(Call, 1),
10245 Builder.CreateDefaultAlignedStore(Builder.CreateExtractValue(Call, 1),
10247 return Builder.CreateExtractValue(Call, 0);
10253 return Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)});
10253 return Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)});
10259 return Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)});
10259 return Builder.CreateCall(F, {Ops[0], Builder.getInt1(false)});
10273 return Builder.CreateBitCast(BuildVector(Ops),
10290 return Builder.CreateExtractElement(Ops[0], Index);
10305 return Builder.CreateInsertElement(Ops[0], Ops[1], Index);
10310 Builder.CreateStore(Ops[0], Tmp);
10311 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_sse_ldmxcsr),
10312 Builder.CreateBitCast(Tmp.getPointer(), Int8PtrTy));
10317 Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_sse_stmxcsr),
10318 Builder.CreateBitCast(Tmp.getPointer(), Int8PtrTy));
10319 return Builder.CreateLoad(Tmp, "stmxcsr");
10360 Value *Mhi = Builder.CreateTrunc(
10361 Builder.CreateLShr(Ops[1], ConstantInt::get(Int64Ty, 32)), Int32Ty);
10362 Value *Mlo = Builder.CreateTrunc(Ops[1], Int32Ty);
10365 return Builder.CreateCall(CGM.getIntrinsic(ID), Ops);
10369 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::x86_xgetbv), Ops);
10408 return Builder.CreateCall(F, Ops);
10735 return Builder.CreateCall(Intr, Ops);
10843 return Builder.CreateCall(Intr, Ops);
10875 Value *Res = Builder.CreateShuffleVector(Ops[0],
10913 Value *Op1 = Builder.CreateShuffleVector(Ops[1],
10925 return Builder.CreateShuffleVector(Ops[0], Op1,
10931 Value *Res = Builder.CreateTrunc(Ops[0], Ops[1]->getType());
10939 return Builder.CreateTrunc(Ops[0], Ops[1]->getType());
10956 return Builder.CreateCall(Intr, Ops);
10975 return Builder.CreateShuffleVector(Ops[0], Ops[1],
10999 return Builder.CreateShuffleVector(Ops[0], UndefValue::get(Ty),
11023 return Builder.CreateShuffleVector(Ops[0], UndefValue::get(Ty),
11053 return Builder.CreateShuffleVector(Ops[0], UndefValue::get(Ty),
11083 return Builder.CreateShuffleVector(Ops[0], Ops[1],
11101 return Builder.CreateShuffleVector(Ops[0], UndefValue::get(Ty),
11137 return Builder.CreateShuffleVector(Ops[1], Ops[0],
11157 return Builder.CreateShuffleVector(Ops[1], Ops[0],
11186 return Builder.CreateShuffleVector(Ops[0], Ops[1],
11225 return Builder.CreateShuffleVector(OutOps[0], OutOps[1],
11253 Value *Cast = Builder.CreateBitCast(Ops[0], VecTy, "cast");
11255 Value *SV = Builder.CreateShuffleVector(Zero, Cast,
11258 return Builder.CreateBitCast(SV, Ops[0]->getType(), "cast");
11283 Value *Cast = Builder.CreateBitCast(Ops[0], VecTy, "cast");
11285 Value *SV = Builder.CreateShuffleVector(Cast, Zero,
11288 return Builder.CreateBitCast(SV, ResultType, "cast");
11307 Value *SV = Builder.CreateShuffleVector(Zero, In,
11310 return Builder.CreateBitCast(SV, Ops[0]->getType());
11329 Value *SV = Builder.CreateShuffleVector(In, Zero,
11332 return Builder.CreateBitCast(SV, Ops[0]->getType());
11339 getLLVMContext(), llvm::ConstantAsMetadata::get(Builder.getInt32(1)));
11347 Src = Builder.CreateExtractElement(Src, (uint64_t)0, "extract");
11350 Value *BC = Builder.CreateBitCast(
11354 StoreInst *SI = Builder.CreateDefaultAlignedStore(Src, BC);
11415 Value *A = Builder.CreateExtractElement(Ops[1], (uint64_t)0);
11416 Value *B = Builder.CreateExtractElement(Ops[2], (uint64_t)0);
11418 return Builder.CreateInsertElement(Ops[1], A, (uint64_t)0);
11467 Value *Cmp = Builder.CreateICmpEQ(Or, C);
11468 return Builder.CreateZExt(Cmp, ConvertType(E->getType()));
11476 Value *Cmp = Builder.CreateICmpEQ(Or, C);
11477 return Builder.CreateZExt(Cmp, ConvertType(E->getType()));
11521 return Builder.CreateCall(Intr, {LHS, RHS});
11549 Value *Res = Builder.CreateCall(Intr, {LHS, RHS});
11550 return Builder.CreateBitCast(Res, Ops[0]->getType());
11583 return Builder.CreateBitCast(Builder.CreateNot(Res),
11583 return Builder.CreateBitCast(Builder.CreateNot(Res),
11595 return Builder.CreateBitCast(Res, Ops[0]->getType());
11610 LHS = Builder.CreateShuffleVector(LHS, LHS,
11612 RHS = Builder.CreateShuffleVector(RHS, RHS,
11616 Value *Res = Builder.CreateShuffleVector(RHS, LHS,
11618 return Builder.CreateBitCast(Res, Ops[0]->getType());
11628 return Builder.CreateCall(F, {Ops[0],Builder.getInt1(false)});
11628 return Builder.CreateCall(F, {Ops[0],Builder.getInt1(false)});
11632 Value *A = Builder.CreateExtractElement(Ops[0], (uint64_t)0);
11634 A = Builder.CreateCall(F, {A});
11635 return Builder.CreateInsertElement(Ops[0], A, (uint64_t)0);
11646 return Builder.CreateCall(CGM.getIntrinsic(IID), Ops);
11648 Value *A = Builder.CreateExtractElement(Ops[1], (uint64_t)0);
11650 A = Builder.CreateCall(F, A);
11651 Value *Src = Builder.CreateExtractElement(Ops[2], (uint64_t)0);
11653 return Builder.CreateInsertElement(Ops[0], A, (uint64_t)0);
11669 return Builder.CreateCall(CGM.getIntrinsic(IID), Ops);
11673 return Builder.CreateCall(F, Ops[0]);
11818 Ops[0] = Builder.CreateBitCast(Ops[0], MMXTy, "cast");
11820 return Builder.CreateCall(F, Ops, "pswapd");
11851 Value *Call = Builder.CreateCall(CGM.getIntrinsic(ID));
11852 Builder.CreateDefaultAlignedStore(Builder.CreateExtractValue(Call, 0),
11852 Builder.CreateDefaultAlignedStore(Builder.CreateExtractValue(Call, 0),
11854 return Builder.CreateExtractValue(Call, 1);
11877 Value *Call = Builder.CreateCall(CGM.getIntrinsic(IID),
11879 Builder.CreateDefaultAlignedStore(Builder.CreateExtractValue(Call, 1),
11879 Builder.CreateDefaultAlignedStore(Builder.CreateExtractValue(Call, 1),
11881 return Builder.CreateExtractValue(Call, 0);
11917 Value *Fpclass = Builder.CreateCall(CGM.getIntrinsic(ID), Ops);
11952 Value *Call = Builder.CreateCall(CGM.getIntrinsic(ID), {Ops[0], Ops[1]});
11953 Value *Result = Builder.CreateExtractValue(Call, 0);
11955 Builder.CreateDefaultAlignedStore(Result, Ops[2]);
11957 Result = Builder.CreateExtractValue(Call, 1);
11959 return Builder.CreateDefaultAlignedStore(Result, Ops[3]);
11979 return Builder.CreateCall(CGM.getIntrinsic(ID), Ops);
12003 Value *Shufbit = Builder.CreateCall(CGM.getIntrinsic(ID), Ops);
12102 Value *Cmp = Builder.CreateFCmp(Pred, Ops[0], Ops[1]);
12149 return Builder.CreateCall(CGM.getIntrinsic(IID), Ops);
12166 Value *Res = Builder.CreateCall(CGM.getIntrinsic(IID), Ops[0]);
12174 Value *LHS = Builder.CreateIntCast(Ops[0], Int64Ty, isSigned);
12175 Value *RHS = Builder.CreateIntCast(Ops[1], Int64Ty, isSigned);
12176 return Builder.CreateMul(LHS, RHS, "", !isSigned, isSigned);
12186 Value *LHS = Builder.CreateIntCast(Ops[0], Int128Ty, IsSigned);
12187 Value *RHS = Builder.CreateIntCast(Ops[1], Int128Ty, IsSigned);
12191 MulResult = Builder.CreateNSWMul(LHS, RHS);
12192 HigherBits = Builder.CreateAShr(MulResult, 64);
12194 MulResult = Builder.CreateNUWMul(LHS, RHS);
12195 HigherBits = Builder.CreateLShr(MulResult, 64);
12197 HigherBits = Builder.CreateIntCast(HigherBits, ResType, IsSigned);
12203 Builder.CreateStore(HigherBits, HighBitsAddress);
12204 return Builder.CreateIntCast(MulResult, ResType, IsSigned);
12208 return Builder.CreateFence(llvm::AtomicOrdering::SequentiallyConsistent,
12219 llvm::Type *Int128Ty = Builder.getInt128Ty();
12221 Builder.CreateShl(Builder.CreateZExt(Ops[1], Int128Ty), 64);
12221 Builder.CreateShl(Builder.CreateZExt(Ops[1], Int128Ty), 64);
12222 Value *LowPart128 = Builder.CreateZExt(Ops[0], Int128Ty);
12223 Value *Val = Builder.CreateOr(HighPart128, LowPart128);
12224 Value *Amt = Builder.CreateAnd(Builder.CreateZExt(Ops[2], Int128Ty),
12224 Value *Amt = Builder.CreateAnd(Builder.CreateZExt(Ops[2], Int128Ty),
12228 Res = Builder.CreateLShr(Builder.CreateShl(Val, Amt), 64);
12228 Res = Builder.CreateLShr(Builder.CreateShl(Val, Amt), 64);
12230 Res = Builder.CreateLShr(Val, Amt);
12231 return Builder.CreateTrunc(Res, Int64Ty);
12236 return Builder.CreateFence(llvm::AtomicOrdering::SequentiallyConsistent,
12269 llvm::Type *Int128Ty = Builder.getInt128Ty();
12273 Builder.CreateBitCast(Ops[0], Int128PtrTy);
12274 Value *ExchangeHigh128 = Builder.CreateZExt(Ops[1], Int128Ty);
12275 Value *ExchangeLow128 = Builder.CreateZExt(Ops[2], Int128Ty);
12276 Address ComparandResult(Builder.CreateBitCast(Ops[3], Int128PtrTy),
12279 Value *Exchange = Builder.CreateOr(
12280 Builder.CreateShl(ExchangeHigh128, 64, "", false, false),
12283 Value *Comparand = Builder.CreateLoad(ComparandResult);
12286 Builder.CreateAtomicCmpXchg(Destination, Comparand, Exchange,
12292 Builder.CreateStore(Builder.CreateExtractValue(CXI, 0), ComparandResult);
12292 Builder.CreateStore(Builder.CreateExtractValue(CXI, 0), ComparandResult);
12295 Value *Success = Builder.CreateExtractValue(CXI, 1);
12296 return Builder.CreateZExt(Success, ConvertType(E->getType()));
12302 return Builder.CreateCall(F);
12307 return Builder.CreateMemSet(Ops[0], Ops[1], Ops[2], 1, true);
12320 llvm::CallInst *CI = Builder.CreateCall(IA);
12330 Builder.CreateIntToPtr(Ops[0], llvm::PointerType::get(IntTy, 257));
12331 LoadInst *Load = Builder.CreateAlignedLoad(
12342 Builder.CreateIntToPtr(Ops[0], llvm::PointerType::get(IntTy, 256));
12343 LoadInst *Load = Builder.CreateAlignedLoad(
12394 return Builder.CreateCall(CGM.getIntrinsic(Intrinsic::readcyclecounter));
12413 Ops[0] = Builder.CreateBitCast(Ops[0], Int8PtrTy);
12415 Ops[1] = Builder.CreateBitCast(Ops[1], Int8PtrTy);
12416 Ops[0] = Builder.CreateGEP(Ops[1], Ops[0]);
12463 return Builder.CreateCall(F, Ops, "");
12481 Ops[1] = Builder.CreateBitCast(Ops[1], Int8PtrTy);
12483 Ops[2] = Builder.CreateBitCast(Ops[2], Int8PtrTy);
12484 Ops[1] = Builder.CreateGEP(Ops[2], Ops[1]);
12525 return Builder.CreateCall(F, Ops, "");
12534 return Builder.CreateCall(F, X);
12543 Value *Undef = ConstantInt::get(Builder.getInt1Ty(), false);
12545 return Builder.CreateCall(F, {X, Undef});
12553 Value *Undef = ConstantInt::get(Builder.getInt1Ty(), false);
12555 return Builder.CreateCall(F, {X, Undef});
12564 return Builder.CreateCall(F, X);
12574 return Builder.CreateCall(F, {X, Y});
12605 return Builder.CreateCall(F, X);
12614 return Builder.CreateCall(F, X);
12635 return Builder.CreateCall(F, {X, Y, Z});
12638 return Builder.CreateFSub(Zero,
12639 Builder.CreateCall(F, {X, Y, Z}), "sub");
12642 return Builder.CreateCall(F,
12643 {X, Y, Builder.CreateFSub(Zero, Z, "sub")});
12647 Builder.CreateCall(F, {X, Y, Builder.CreateFSub(Zero, Z, "sub")});
12647 Builder.CreateCall(F, {X, Y, Builder.CreateFSub(Zero, Z, "sub")});
12648 return Builder.CreateFSub(Zero, FsubRes, "sub");
12674 Ops[1] = Builder.CreateBitCast(Ops[1], llvm::VectorType::get(Int64Ty, 2));
12684 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int64Ty, 2));
12685 Ops[0] = Builder.CreateShuffleVector(Ops[0], Ops[0], ShuffleMask);
12692 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int32Ty, 4));
12694 return Builder.CreateCall(F, Ops);
12701 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int64Ty, 2));
12717 Value *Call = Builder.CreateCall(F, Ops);
12725 Value *ShuffleCall = Builder.CreateShuffleVector(Call, Call, ShuffleMask);
12729 return Builder.CreateCall(F, Ops);
12738 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int64Ty, 2));
12739 Ops[1] = Builder.CreateBitCast(Ops[1], llvm::VectorType::get(Int64Ty, 2));
12752 Builder.CreateShuffleVector(Ops[0], Ops[1], ShuffleMask);
12755 return Builder.CreateBitCast(ShuffleCall, RetTy);
12762 Ops[0] = Builder.CreateBitCast(Ops[0], llvm::VectorType::get(Int32Ty, 4));
12763 Ops[1] = Builder.CreateBitCast(Ops[1], llvm::VectorType::get(Int32Ty, 4));
12793 Builder.CreateShuffleVector(Ops[0], Ops[1], ShuffleMask);
12796 return Builder.CreateBitCast(ShuffleCall, RetTy);
12803 Value *Res = Builder.CreateInsertElement(
12805 Res = Builder.CreateInsertElement(Res, Ops[1],
12807 return Builder.CreateBitCast(Res, ConvertType(E->getType()));
12812 Value *Unpacked = Builder.CreateBitCast(
12818 return Builder.CreateExtractElement(Unpacked, Index);
12840 llvm::Value *Tmp = Builder.CreateCall(Callee, {X, Y, Z});
12842 llvm::Value *Result = Builder.CreateExtractValue(Tmp, 0);
12843 llvm::Value *Flag = Builder.CreateExtractValue(Tmp, 1);
12848 llvm::Value *FlagExt = Builder.CreateZExt(Flag, RealFlagType);
12849 Builder.CreateStore(FlagExt, FlagOutPtr);
12861 llvm::Value *Src3ToBool = Builder.CreateIsNotNull(Src3);
12862 return Builder.CreateCall(F, {Src0, Src1, Src2, Src3ToBool});
12879 return Builder.CreateCall(F, Args);
12919 { Builder.getInt32Ty(), Src0->getType() });
12920 return Builder.CreateCall(F, Src0);
12925 { Builder.getInt16Ty(), Src0->getType() });
12926 return Builder.CreateCall(F, Src0);
12948 { Builder.getInt64Ty(), Src0->getType() });
12949 return Builder.CreateCall(F, { Src0, Src1, Src2 });
12959 { Builder.getInt64Ty(), Src0->getType() });
12960 return Builder.CreateCall(F, { Src0, Src1, Src2 });
12975 return Builder.CreateCall(F, { Src0, Builder.getFalse() });
12975 return Builder.CreateCall(F, { Src0, Builder.getFalse() });
13027 Value *Call = CGF.Builder.CreateCall(F, Args);
13028 Value *CC = CGF.Builder.CreateExtractValue(Call, 1);
13029 CGF.Builder.CreateStore(CC, CCPtr);
13030 return CGF.Builder.CreateExtractValue(Call, 0);
13040 return Builder.CreateCall(F, {TDB, Control});
13046 return Builder.CreateCall(F, {TDB, Control});
13052 return Builder.CreateCall(F, {TDB, Control});
13057 return Builder.CreateCall(F, Builder.CreateSExt(Data, Int64Ty, "tabort"));
13057 return Builder.CreateCall(F, Builder.CreateSExt(Data, Int64Ty, "tabort"));
13063 return Builder.CreateCall(F, {Data, Address});
13078 return Builder.CreateCall(F, X);
13087 Value *Undef = ConstantInt::get(Builder.getInt1Ty(), false);
13089 return Builder.CreateCall(F, {X, Undef});
13098 Value *Undef = ConstantInt::get(Builder.getInt1Ty(), false);
13100 return Builder.CreateCall(F, {X, Undef});
13108 return Builder.CreateCall(F, X);
13117 return Builder.CreateCall(F, {X, Y, Z});
13127 return Builder.CreateCall(F, {X, Y, Builder.CreateFSub(Zero, Z, "sub")});
13127 return Builder.CreateCall(F, {X, Y, Builder.CreateFSub(Zero, Z, "sub")});
13137 return Builder.CreateFSub(Zero, Builder.CreateCall(F, {X, Y, Z}), "sub");
13137 return Builder.CreateFSub(Zero, Builder.CreateCall(F, {X, Y, Z}), "sub");
13147 Value *NegZ = Builder.CreateFSub(Zero, Z, "sub");
13148 return Builder.CreateFSub(Zero, Builder.CreateCall(F, {X, Y, NegZ}));
13148 return Builder.CreateFSub(Zero, Builder.CreateCall(F, {X, Y, NegZ}));
13155 return Builder.CreateCall(F, X);
13163 return Builder.CreateFSub(Zero, Builder.CreateCall(F, X), "sub");
13163 return Builder.CreateFSub(Zero, Builder.CreateCall(F, X), "sub");
13199 return Builder.CreateCall(F, X);
13209 return Builder.CreateCall(F, {X, M4Value, M5Value});
13230 return Builder.CreateCall(F, {X, Y});
13239 return Builder.CreateCall(F, {X, Y, M4Value});
13260 return Builder.CreateCall(F, {X, Y});
13269 return Builder.CreateCall(F, {X, Y, M4Value});
13278 return Builder.CreateCall(F, X);
13621 return Builder.CreateCall(
13624 {Ptr, ConstantInt::get(Builder.getInt32Ty(), Align.getQuantity())});
13628 return Builder.CreateCall(
13695 return Builder.CreateAtomicRMW(llvm::AtomicRMWInst::FAdd, Ptr, Val,
13704 return Builder.CreateCall(FnALI32, {Ptr, Val});
13712 return Builder.CreateCall(FnALD32, {Ptr, Val});
13836 return Builder.CreateCall(
13846 return Builder.CreateCall(
13857 Value *ResultPair = Builder.CreateCall(
13862 Value *Pred = Builder.CreateZExt(Builder.CreateExtractValue(ResultPair, 1),
13862 Value *Pred = Builder.CreateZExt(Builder.CreateExtractValue(ResultPair, 1),
13864 Builder.CreateStore(Pred, PredOutPtr);
13865 return Builder.CreateExtractValue(ResultPair, 0);
13920 Builder.CreateCall(CGM.getIntrinsic(IID, Src->getType()), {Src, Ldm});
13925 Builder.CreateAlignedStore(Result, Dst.getPointer(),
13929 Builder.CreateAlignedStore(
13930 Builder.CreateBitCast(Builder.CreateExtractValue(Result, i),
13930 Builder.CreateBitCast(Builder.CreateExtractValue(Result, i),
13932 Builder.CreateGEP(Dst.getPointer(),
13967 Value *V = Builder.CreateAlignedLoad(
13968 Builder.CreateGEP(Src.getPointer(), llvm::ConstantInt::get(IntTy, i)),
13970 Values.push_back(Builder.CreateBitCast(V, ParamType));
13973 Value *Result = Builder.CreateCall(Intrinsic, Values);
14026 Value *V = Builder.CreateAlignedLoad(
14027 Builder.CreateGEP(SrcA.getPointer(),
14030 Values.push_back(Builder.CreateBitCast(V, AType));
14035 Value *V = Builder.CreateAlignedLoad(
14036 Builder.CreateGEP(SrcB.getPointer(),
14039 Values.push_back(Builder.CreateBitCast(V, BType));
14045 Value *V = Builder.CreateAlignedLoad(
14046 Builder.CreateGEP(SrcC.getPointer(),
14049 Values.push_back(Builder.CreateBitCast(V, CType));
14051 Value *Result = Builder.CreateCall(Intrinsic, Values);
14054 Builder.CreateAlignedStore(
14055 Builder.CreateBitCast(Builder.CreateExtractValue(Result, i), DType),
14055 Builder.CreateBitCast(Builder.CreateExtractValue(Result, i), DType),
14056 Builder.CreateGEP(Dst.getPointer(), llvm::ConstantInt::get(IntTy, i)),
14072 return Builder.CreateCall(Callee, I);
14081 return Builder.CreateCall(Callee, Args);
14097 return Builder.CreateCall(Callee, Args);
14105 return Builder.CreateCall(Callee, {Arg});
14110 return Builder.CreateCall(Callee);
14115 return Builder.CreateCall(Callee);
14119 return Builder.CreateCall(Callee);
14125 return Builder.CreateCall(Callee, {Tag, Obj});
14129 return Builder.CreateCall(Callee);
14136 return Builder.CreateCall(Callee, {Addr, Expected, Timeout});
14143 return Builder.CreateCall(Callee, {Addr, Expected, Timeout});
14149 return Builder.CreateCall(Callee, {Addr, Count});
14159 return Builder.CreateCall(Callee, {Src});
14169 return Builder.CreateCall(Callee, {Src});
14181 return Builder.CreateCall(Callee, {Src});
14193 return Builder.CreateCall(Callee, {Src});
14203 return Builder.CreateCall(Callee, {LHS, RHS});
14213 return Builder.CreateCall(Callee, {LHS, RHS});
14219 return Builder.CreateCall(Callee, {Src, Indices});
14234 Value *Extract = Builder.CreateExtractElement(Vec, Lane);
14238 return Builder.CreateSExt(Extract, ConvertType(E->getType()));
14241 return Builder.CreateZExt(Extract, ConvertType(E->getType()));
14267 Value *Trunc = Builder.CreateTrunc(Val, ElemType);
14268 return Builder.CreateInsertElement(Vec, Trunc, Lane);
14274 return Builder.CreateInsertElement(Vec, Val, Lane);
14311 return Builder.CreateCall(Callee, {LHS, RHS});
14319 return Builder.CreateCall(Callee, {V1, V2, C});
14348 return Builder.CreateCall(Callee, {Vec});
14354 return Builder.CreateCall(Callee, {Vec});
14360 return Builder.CreateCall(Callee, {Vec});
14383 return Builder.CreateCall(Callee, {A, B, C});
14406 return Builder.CreateCall(Callee, {Low, High});
14440 return Builder.CreateCall(Callee, Vec);
14455 BP = Address(Builder.CreateBitCast(BP.getPointer(), Int8PtrPtrTy),
14457 llvm::Value *Base = Builder.CreateLoad(BP);
14466 llvm::Value *Result = Builder.CreateCall(CGM.getIntrinsic(IntID), Ops);
14467 llvm::Value *NewBase = Builder.CreateExtractValue(Result, 1);
14468 llvm::Value *LV = Builder.CreateBitCast(EmitScalarExpr(E->getArg(0)),
14473 Builder.CreateAlignedStore(NewBase, LV, Dest.getAlignment());
14474 return Builder.CreateExtractValue(Result, 0);
14480 BP = Address(Builder.CreateBitCast(BP.getPointer(), Int8PtrPtrTy),
14482 llvm::Value *Base = Builder.CreateLoad(BP);
14491 llvm::Value *NewBase = Builder.CreateCall(CGM.getIntrinsic(IntID), Ops);
14492 llvm::Value *LV = Builder.CreateBitCast(EmitScalarExpr(E->getArg(0)),
14497 return Builder.CreateAlignedStore(NewBase, LV, Dest.getAlignment());
14508 Builder.CreateBitCast(EmitScalarExpr(E->getArg(0)), Int8PtrTy);
14514 DestAddr = Address(Builder.CreateBitCast(DestAddr.getPointer(), Int8PtrTy),
14523 llvm::Value *Result = Builder.CreateCall(CGM.getIntrinsic(IntID), Ops);
14525 llvm::Value *DestVal = Builder.CreateExtractValue(Result, 0);
14530 DestVal = Builder.CreateTrunc(DestVal, DestTy);
14533 Builder.CreateBitCast(DestAddress, DestVal->getType()->getPointerTo());
14534 Builder.CreateAlignedStore(DestVal, DestForStore, DestAddr.getAlignment());
14536 return Builder.CreateExtractValue(Result, 1);
14551 Dest = Builder.CreateBitCast(Dest,
14552 llvm::VectorType::get(Builder.getInt1Ty(), Size)->getPointerTo(0));
14553 LoadInst *QLd = Builder.CreateLoad(Dest);
14555 llvm::Value *Result = Builder.CreateCall(CGM.getIntrinsic(ID), Ops);
14556 llvm::Value *Vprd = Builder.CreateExtractValue(Result, 1);
14557 llvm::Value *Base = Builder.CreateBitCast(EmitScalarExpr(E->getArg(2)),
14559 Builder.CreateAlignedStore(Vprd, Base, Dest.getAlignment());
14560 return Builder.CreateExtractValue(Result, 0);
14573 Dest = Builder.CreateBitCast(Dest,
14574 llvm::VectorType::get(Builder.getInt1Ty(), Size)->getPointerTo(0));
14575 LoadInst *QLd = Builder.CreateLoad(Dest);
14577 llvm::Value *Result = Builder.CreateCall(CGM.getIntrinsic(ID), Ops);
14578 llvm::Value *Vprd = Builder.CreateExtractValue(Result, 1);
14579 llvm::Value *Base = Builder.CreateBitCast(EmitScalarExpr(E->getArg(2)),
14581 Builder.CreateAlignedStore(Vprd, Base, Dest.getAlignment());
14582 return Builder.CreateExtractValue(Result, 0);
tools/clang/lib/CodeGen/CGCUDANV.cpp 261 llvm::Value *VoidVarPtr = CGF.Builder.CreatePointerCast(VarPtr, VoidPtrTy);
262 CGF.Builder.CreateDefaultAlignedStore(
263 VoidVarPtr, CGF.Builder.CreateConstGEP1_32(KernelArgs.getPointer(), i));
316 llvm::Value *Kernel = CGF.Builder.CreatePointerCast(CGF.CurFn, VoidPtrTy);
324 LaunchKernelArgs.add(RValue::get(CGF.Builder.CreateLoad(ShmemSize)),
326 LaunchKernelArgs.add(RValue::get(CGF.Builder.CreateLoad(Stream)),
357 CGF.Builder.CreatePointerCast(CGF.GetAddrOfLocalVar(A).getPointer(),
364 llvm::Value *CBZero = CGF.Builder.CreateICmpEQ(CB, Zero);
366 CGF.Builder.CreateCondBr(CBZero, NextBlock, EndBlock);
373 llvm::Value *Arg = CGF.Builder.CreatePointerCast(CGF.CurFn, CharPtrTy);
tools/clang/lib/CodeGen/CGCXX.cpp 255 VTable = CGF.Builder.CreateBitCast(VTable, Ty);
264 CGF.Builder.CreateConstInBoundsGEP1_64(VTable, VTableIndex, "vfnkxt");
266 CGF.Builder.CreateAlignedLoad(VFuncPtr, CGF.PointerAlignInBytes);
tools/clang/lib/CodeGen/CGCXXABI.cpp 86 return CGF.Builder.getFalse();
94 return CGF.Builder.getFalse();
146 return CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(getThisDecl(CGF)),
206 ptr = CGF.Builder.CreateElementBitCast(ptr, CGF.Int8Ty);
218 CGF.Builder.CreateConstInBoundsByteGEP(ptr, -cookieSize);
tools/clang/lib/CodeGen/CGCXXABI.h 616 CGF.Builder.CreateCatchRet(CPI, BB);
tools/clang/lib/CodeGen/CGCall.cpp 1011 CGF.Builder.CreateConstGEP2_32(nullptr, BaseAddr.getPointer(), 0, i);
1106 V = Builder.CreateBitCast(V, IRFuncTy->getParamType(IRCallArgPos));
1146 SrcPtr = CGF.Builder.CreateStructGEP(SrcPtr, 0, "coerce.dive");
1172 return CGF.Builder.CreateBitCast(Val, Ty, "coerce.val");
1175 Val = CGF.Builder.CreatePtrToInt(Val, CGF.IntPtrTy, "coerce.val.pi");
1191 Val = CGF.Builder.CreateLShr(Val, SrcSize - DstSize, "coerce.highbits");
1192 Val = CGF.Builder.CreateTrunc(Val, DestIntTy, "coerce.val.ii");
1194 Val = CGF.Builder.CreateZExt(Val, DestIntTy, "coerce.val.ii");
1195 Val = CGF.Builder.CreateShl(Val, DstSize - SrcSize, "coerce.highbits");
1199 Val = CGF.Builder.CreateIntCast(Val, DestIntTy, false, "coerce.val.ii");
1204 Val = CGF.Builder.CreateIntToPtr(Val, Ty, "coerce.val.ip");
1223 return CGF.Builder.CreateLoad(Src);
1238 llvm::Value *Load = CGF.Builder.CreateLoad(Src);
1250 Src = CGF.Builder.CreateBitCast(Src,
1252 return CGF.Builder.CreateLoad(Src);
1257 Address Casted = CGF.Builder.CreateElementBitCast(Tmp,CGF.Int8Ty);
1258 Address SrcCasted = CGF.Builder.CreateElementBitCast(Src,CGF.Int8Ty);
1259 CGF.Builder.CreateMemCpy(Casted, SrcCasted,
1262 return CGF.Builder.CreateLoad(Tmp);
1275 Address EltPtr = CGF.Builder.CreateStructGEP(Dest, i);
1276 llvm::Value *Elt = CGF.Builder.CreateExtractValue(Val, i);
1277 CGF.Builder.CreateStore(Elt, EltPtr, DestIsVolatile);
1280 CGF.Builder.CreateStore(Val, Dest, DestIsVolatile);
1297 CGF.Builder.CreateStore(Src, Dst, DstIsVolatile);
1313 CGF.Builder.CreateStore(Src, Dst, DstIsVolatile);
1321 Dst = CGF.Builder.CreateElementBitCast(Dst, SrcTy);
1334 CGF.Builder.CreateStore(Src, Tmp);
1335 Address Casted = CGF.Builder.CreateElementBitCast(Tmp,CGF.Int8Ty);
1336 Address DstCasted = CGF.Builder.CreateElementBitCast(Dst,CGF.Int8Ty);
1337 CGF.Builder.CreateMemCpy(DstCasted, Casted,
1346 addr = CGF.Builder.CreateElementBitCast(addr, CGF.Int8Ty);
1347 addr = CGF.Builder.CreateConstInBoundsByteGEP(addr,
1349 addr = CGF.Builder.CreateElementBitCast(addr, info.getCoerceToType());
2177 return CGF.Builder.CreateTrunc(value, varType, "arg.unpromote");
2179 return CGF.Builder.CreateFPCast(value, varType, "arg.unpromote");
2216 llvm::Value *errorValue = CGF.Builder.CreateLoad(Temp);
2217 CGF.Builder.CreateStore(errorValue, Arg);
2238 Builder.CreateStore(Zero, ReturnValue);
2307 Builder.CreateStructGEP(ArgStruct, FieldIndex, Arg->getName());
2330 Address Dst = Builder.CreateBitCast(AlignedTemp, Int8PtrTy);
2331 Address Src = Builder.CreateBitCast(ParamAddr, Int8PtrTy);
2332 Builder.CreateMemCpy(Dst, Src, SizeVal, false);
2427 llvm::Value *incomingErrorValue = Builder.CreateLoad(arg);
2428 Builder.CreateStore(incomingErrorValue, temp);
2439 V = Builder.CreateBitCast(V, ArgI.getCoerceToType());
2450 V = Builder.CreateBitCast(V, LTy);
2473 AddrToStoreInto = Builder.CreateElementBitCast(Ptr, STy);
2483 Address EltPtr = Builder.CreateStructGEP(AddrToStoreInto, i);
2484 Builder.CreateStore(AI, EltPtr);
2488 Builder.CreateMemCpy(Ptr, AddrToStoreInto, DstSize);
2518 alloca = Builder.CreateElementBitCast(alloca, coercionType);
2526 auto eltAddr = Builder.CreateStructGEP(alloca, i);
2528 Builder.CreateStore(elt, eltAddr);
2589 llvm::BasicBlock *BB = CGF.Builder.GetInsertBlock();
2670 return CGF.Builder.CreateBitCast(result, resultType);
2707 return CGF.Builder.CreateBitCast(load, resultType);
2749 llvm::BasicBlock *IP = CGF.Builder.GetInsertBlock();
2782 llvm::BasicBlock *IP = CGF.Builder.GetInsertBlock();
2804 Builder.CreateUnreachable();
2810 Builder.CreateRetVoid();
2828 llvm::Value *SRet = Builder.CreateStructGEP(
2830 RV = Builder.CreateAlignedLoad(SRet, getPointerAlign(), "sret");
2850 EmitStoreOfScalar(Builder.CreateLoad(ReturnValue),
2880 RV = Builder.CreateLoad(ReturnValue);
2925 Address addr = Builder.CreateElementBitCast(ReturnValue, coercionType);
2931 auto eltAddr = Builder.CreateStructGEP(addr, i);
2932 auto elt = Builder.CreateLoad(eltAddr);
2947 RV = Builder.CreateInsertValue(RV, results[i], i);
2960 Ret = Builder.CreateRet(RV);
2962 Ret = Builder.CreateRetVoid();
3006 llvm::Value *SLocPtr = Builder.CreateLoad(ReturnLocation, "return.sloc.load");
3007 llvm::Value *CanNullCheck = Builder.CreateIsNotNull(SLocPtr);
3010 Builder.CreateAnd(CanNullCheck, RetValNullabilityPrecondition);
3011 Builder.CreateCondBr(CanNullCheck, Check, NoCheck);
3015 llvm::Value *Cond = Builder.CreateIsNotNull(RV);
3044 Placeholder = CGF.Builder.CreateAlignedLoad(IRPtrTy, Placeholder, Align);
3071 args.add(RValue::get(Builder.CreateLoad(local)), type);
3081 llvm::Value *ptr = Builder.CreateLoad(local);
3084 Builder.CreateStore(null, local);
3102 llvm::Instruction *isActive = Builder.CreateUnreachable();
3130 CGF.Builder.CreateIsNull(srcAddr.getPointer(), "icr.isnull");
3131 CGF.Builder.CreateCondBr(isNull, contBB, writebackBB);
3136 llvm::Value *value = CGF.Builder.CreateLoad(writeback.Temporary);
3139 value = CGF.Builder.CreateBitCast(value, srcAddr.getElementType(),
3254 CGF.Builder.CreateStore(null, temp);
3269 CGF.Builder.CreateIsNull(srcAddr.getPointer(), "icr.isnull");
3271 finalArgument = CGF.Builder.CreateSelect(isNull,
3278 originBB = CGF.Builder.GetInsertBlock();
3281 CGF.Builder.CreateCondBr(isNull, contBB, copyBB);
3295 src = CGF.Builder.CreateBitCast(src, destType->getElementType(),
3299 CGF.Builder.CreateStore(src, temp);
3314 llvm::BasicBlock *copyBB = CGF.Builder.GetInsertBlock();
3319 llvm::PHINode *phiToUse = CGF.Builder.CreatePHI(valueToUse->getType(), 2,
3339 StackBase = CGF.Builder.CreateCall(F, {}, "inalloca.save");
3346 CGF.Builder.CreateCall(F, StackBase);
3395 Builder.CreateICmpNE(V, llvm::Constant::getNullValue(V->getType()));
3429 auto T = Builder.getIntNTy(Context.getTypeSize(SizeTy));
3609 llvm::Instruction *IsActive = Builder.CreateUnreachable();
3701 llvm::CallInst *call = Builder.CreateCall(
3715 Builder.CreateInvoke(callee,
3723 llvm::CallInst *call = Builder.CreateCall(callee, args, BundleList);
3726 Builder.CreateUnreachable();
3758 Inst = Builder.CreateCall(Callee, Args, BundleList, Name);
3761 Inst = Builder.CreateInvoke(Callee, ContBB, InvokeDest, Args, BundleList,
3873 Builder.CreateStructGEP(ArgMemory, RetAI.getInAllocaFieldIndex());
3874 Builder.CreateStore(SRetPtr.getPointer(), Addr);
3914 CGBuilderTy::InsertPoint IP = Builder.saveIP();
3915 Builder.SetInsertPoint(Placeholder);
3917 Builder.CreateStructGEP(ArgMemory, ArgInfo.getInAllocaFieldIndex());
3918 Builder.restoreIP(IP);
3923 Builder.CreateStructGEP(ArgMemory, ArgInfo.getInAllocaFieldIndex());
3930 Addr = Builder.CreateBitCast(Addr, MemType);
4041 V = Builder.CreateLoad(
4060 llvm::Value *errorValue = Builder.CreateLoad(swiftErrorArg);
4061 Builder.CreateStore(errorValue, swiftErrorTemp);
4067 V = Builder.CreateZExt(V, ArgInfo.getCoerceToType());
4073 V = Builder.CreateBitCast(V, IRFuncTy->getParamType(FirstIRArg));
4109 Builder.CreateMemCpy(TempAlloca, Src, SrcSize);
4112 Src = Builder.CreateBitCast(Src,
4118 Address EltPtr = Builder.CreateStructGEP(Src, i);
4119 llvm::Value *LI = Builder.CreateLoad(EltPtr);
4160 Builder.CreateStore(RV.getScalarVal(), addr);
4163 addr = Builder.CreateElementBitCast(addr, coercionType);
4169 Address eltAddr = Builder.CreateStructGEP(addr, i);
4170 llvm::Value *elt = Builder.CreateLoad(eltAddr);
4203 Builder.CreateBitCast(CalleePtr, IRFuncTy->getPointerTo(CalleeAS));
4220 Arg = Builder.CreateBitCast(Arg, LastParamTy);
4360 CI = Builder.CreateCall(IRFuncTy, CalleePtr, IRCallArgs, BundleList);
4363 CI = Builder.CreateInvoke(IRFuncTy, CalleePtr, Cont, InvokeDest, IRCallArgs,
4388 PGO.valueProfile(Builder, llvm::IPVK_IndirectCallTarget,
4430 llvm::IRBuilder<>::InsertPointGuard IPGuard(Builder);
4431 Builder.SetInsertPoint(CI);
4440 Builder.ClearInsertionPoint();
4453 llvm::Value *errorResult = Builder.CreateLoad(swiftErrorTemp);
4454 Builder.CreateStore(errorResult, swiftErrorArg);
4473 addr = Builder.CreateElementBitCast(addr, coercionType);
4482 Address eltAddr = Builder.CreateStructGEP(addr, i);
4485 elt = Builder.CreateExtractValue(elt, unpaddedIndex++);
4488 Builder.CreateStore(elt, eltAddr);
4513 llvm::Value *Real = Builder.CreateExtractValue(CI, 0);
4514 llvm::Value *Imag = Builder.CreateExtractValue(CI, 1);
4533 V = Builder.CreateBitCast(V, RetIRTy);
tools/clang/lib/CodeGen/CGClass.cpp 218 V = Builder.CreateElementBitCast(V, Int8Ty);
219 V = Builder.CreateConstInBoundsByteGEP(V, Offset);
221 V = Builder.CreateElementBitCast(V, ConvertType(Base));
241 baseOffset = CGF.Builder.CreateAdd(virtualOffset, baseOffset);
250 ptr = CGF.Builder.CreateBitCast(ptr, CGF.Int8Ty->getPointerTo(AddrSpace));
251 ptr = CGF.Builder.CreateInBoundsGEP(ptr, baseOffset, "add.ptr");
321 return Builder.CreateBitCast(Value, BasePtrTy);
330 origBB = Builder.GetInsertBlock();
334 llvm::Value *isNull = Builder.CreateIsNull(Value.getPointer());
335 Builder.CreateCondBr(isNull, endBB, notNullBB);
358 Value = Builder.CreateBitCast(Value, BasePtrTy);
362 llvm::BasicBlock *notNullBB = Builder.GetInsertBlock();
363 Builder.CreateBr(endBB);
366 llvm::PHINode *PHI = Builder.CreatePHI(BasePtrTy, 2, "cast.result");
394 return Builder.CreateBitCast(BaseAddr, DerivedPtrTy);
406 llvm::Value *IsNull = Builder.CreateIsNull(BaseAddr.getPointer());
407 Builder.CreateCondBr(IsNull, CastNull, CastNotNull);
412 llvm::Value *Value = Builder.CreateBitCast(BaseAddr.getPointer(), Int8PtrTy);
413 Value = Builder.CreateInBoundsGEP(Value, Builder.CreateNeg(NonVirtualOffset),
413 Value = Builder.CreateInBoundsGEP(Value, Builder.CreateNeg(NonVirtualOffset),
417 Value = Builder.CreateBitCast(Value, DerivedPtrTy);
421 Builder.CreateBr(CastEnd);
423 Builder.CreateBr(CastEnd);
426 llvm::PHINode *PHI = Builder.CreatePHI(Value->getType(), 2);
474 VTT = Builder.CreateConstInBoundsGEP1_64(VTT, SubVTTIndex);
478 VTT = Builder.CreateConstInBoundsGEP2_64(VTT, 0, SubVTTIndex);
649 = CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(Args[SrcArgIndex]));
802 ThisPtr = Builder.CreatePtrToInt(ThisPtr, IntPtrTy);
814 Builder.CreateCall(
815 F, {Builder.CreateAdd(ThisPtr, Builder.getIntN(PtrSize, EndOffset)),
815 F, {Builder.CreateAdd(ThisPtr, Builder.getIntN(PtrSize, EndOffset)),
816 Builder.getIntN(PtrSize, PoisonSize)});
960 llvm::Value *SrcPtr = CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(SrcRec));
983 DestPtr = CGF.Builder.CreateBitCast(DestPtr, DBP);
988 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, SBP);
990 CGF.Builder.CreateMemCpy(DestPtr, SrcPtr, Size.getQuantity());
1297 CXXThisValue = Builder.CreateLaunderInvariantGroup(LoadCXXThis());
1303 Builder.CreateBr(BaseCtorContinueBB);
1314 CXXThisValue = Builder.CreateLaunderInvariantGroup(LoadCXXThis());
1433 Builder.CreateUnreachable();
1434 Builder.ClearInsertionPoint();
1505 CXXThisValue = Builder.CreateLaunderInvariantGroup(LoadCXXThis());
1576 = CGF.Builder.CreateIsNull(ShouldDeleteCondition);
1577 CGF.Builder.CreateCondBr(ShouldCallDelete, continueBB, callDeleteBB);
1591 CGF.Builder.CreateBr(continueBB);
1640 llvm::Value *Args[] = {CGF.Builder.CreateBitCast(Ptr, CGF.VoidPtrTy),
1716 llvm::Value *OffsetPtr = CGF.Builder.CreateGEP(
1717 CGF.Builder.CreateBitCast(CGF.LoadCXXThis(), CGF.Int8PtrTy),
1935 llvm::Value *iszero = Builder.CreateIsNull(numElements, "isempty");
1936 zeroCheckBranch = Builder.CreateCondBr(iszero, loopBB, loopBB);
1942 llvm::Value *arrayEnd = Builder.CreateInBoundsGEP(arrayBegin, numElements,
1946 llvm::BasicBlock *entryBB = Builder.GetInsertBlock();
1949 llvm::PHINode *cur = Builder.CreatePHI(arrayBegin->getType(), 2,
2002 Builder.CreateInBoundsGEP(cur, llvm::ConstantInt::get(SizeTy, 1),
2004 cur->addIncoming(next, Builder.GetInsertBlock());
2007 llvm::Value *done = Builder.CreateICmpEQ(next, arrayEnd, "arrayctor.done");
2009 Builder.CreateCondBr(done, contBB, loopBB);
2289 Builder.CreateICmpEQ(VPtrValue, VTableGlobal, "cmp.vtables");
2290 Builder.CreateAssumption(Cmp);
2314 Src = Builder.CreateBitCast(Src, t);
2494 VTableField = Builder.CreateBitCast(VTableField, VTablePtrTy->getPointerTo());
2495 VTableAddressPoint = Builder.CreateBitCast(VTableAddressPoint, VTablePtrTy);
2497 llvm::StoreInst *Store = Builder.CreateStore(VTableAddressPoint, VTableField);
2591 Address VTablePtrSrc = Builder.CreateElementBitCast(This, VTableTy);
2592 llvm::Instruction *VTable = Builder.CreateLoad(VTablePtrSrc, "vtable");
2650 llvm::Value *CastedVTable = Builder.CreateBitCast(VTable, Int8PtrTy);
2652 Builder.CreateCall(CGM.getIntrinsic(llvm::Intrinsic::type_test),
2654 Builder.CreateCall(CGM.getIntrinsic(llvm::Intrinsic::assume), TypeTest);
2692 Builder.CreateIsNotNull(Derived, "cast.nonnull");
2697 Builder.CreateCondBr(DerivedNotNull, CheckBlock, ContBlock);
2709 Builder.CreateBr(ContBlock);
2758 llvm::Value *CastedVTable = Builder.CreateBitCast(VTable, Int8PtrTy);
2759 llvm::Value *TypeTest = Builder.CreateCall(
2782 llvm::Value *ValidVtable = Builder.CreateCall(
2815 llvm::Value *CastedVTable = Builder.CreateBitCast(VTable, Int8PtrTy);
2816 llvm::Value *CheckedLoad = Builder.CreateCall(
2820 llvm::Value *CheckResult = Builder.CreateExtractValue(CheckedLoad, 1);
2830 return Builder.CreateBitCast(
2831 Builder.CreateExtractValue(CheckedLoad, 0),
tools/clang/lib/CodeGen/CGCleanup.cpp 46 CGF.Builder.CreateStore(V, addr);
55 CGF.Builder.CreateStore(V.first, CGF.Builder.CreateStructGEP(addr, 0));
55 CGF.Builder.CreateStore(V.first, CGF.Builder.CreateStructGEP(addr, 0));
56 CGF.Builder.CreateStore(V.second, CGF.Builder.CreateStructGEP(addr, 1));
56 CGF.Builder.CreateStore(V.second, CGF.Builder.CreateStructGEP(addr, 1));
68 CGF.Builder.CreateStore(V.getPointer(), addr);
85 return RValue::get(CGF.Builder.CreateLoad(getSavingAddress(Value)));
89 auto addr = CGF.Builder.CreateLoad(getSavingAddress(Value));
95 CGF.Builder.CreateLoad(CGF.Builder.CreateStructGEP(address, 0));
95 CGF.Builder.CreateLoad(CGF.Builder.CreateStructGEP(address, 0));
97 CGF.Builder.CreateLoad(CGF.Builder.CreateStructGEP(address, 1));
97 CGF.Builder.CreateLoad(CGF.Builder.CreateStructGEP(address, 1));
280 Builder.getInt1Ty(), CharUnits::One(), "cleanup.cond");
284 setBeforeOutermostConditional(Builder.getFalse(), active);
287 Builder.CreateStore(Builder.getTrue(), active);
287 Builder.CreateStore(Builder.getTrue(), active);
339 createStoreInstBefore(CGF.Builder.getInt32(Fixup.DestinationIndex),
349 Switch->addCase(CGF.Builder.getInt32(Fixup.DestinationIndex),
409 Switch->addCase(Builder.getInt32(Fixup.DestinationIndex), Block);
467 *ReloadedValue = Builder.CreateLoad(Tmp);
533 bool WasInsertBlock = CGF.Builder.GetInsertBlock() == Entry;
534 assert(!WasInsertBlock || CGF.Builder.GetInsertPoint() == Entry->end());
550 CGF.Builder.SetInsertPoint(Pred);
566 = CGF.Builder.CreateLoad(ActiveFlag, "cleanup.is_active");
567 CGF.Builder.CreateCondBr(IsActive, CleanupBB, ContBB);
676 llvm::BasicBlock *FallthroughSource = Builder.GetInsertBlock();
792 Builder.CreateStore(Builder.getInt32(0), getNormalCleanupDestSlot());
792 Builder.CreateStore(Builder.getInt32(0), getNormalCleanupDestSlot());
798 savedInactiveFallthroughIP = Builder.saveAndClearIP();
875 Switch->addCase(Builder.getInt32(0), FallthroughDest);
900 llvm::BasicBlock *NormalExit = Builder.GetInsertBlock();
910 createStoreInstBefore(Builder.getInt32(Fixup.DestinationIndex),
927 Builder.restoreIP(savedInactiveFallthroughIP);
943 Builder.ClearInsertionPoint();
966 CGBuilderTy::InsertPoint SavedIP = Builder.saveAndClearIP();
985 CurrentFuncletPad = CPI = Builder.CreateCleanupPad(ParentPad);
1002 Builder.CreateCleanupRet(CPI, NextAction);
1004 Builder.CreateBr(NextAction);
1010 Builder.restoreIP(SavedIP);
1052 llvm::BranchInst *BI = Builder.CreateBr(Dest.getBlock());
1063 Builder.ClearInsertionPoint();
1076 Builder.ClearInsertionPoint();
1083 llvm::ConstantInt *Index = Builder.getInt32(Dest.getDestIndex());
1117 Builder.ClearInsertionPoint();
1205 var = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), CharUnits::One(),
1213 llvm::Constant *value = CGF.Builder.getInt1(kind == ForDeactivation);
1224 CGF.Builder.CreateStore(CGF.Builder.getInt1(kind == ForActivation), var);
1224 CGF.Builder.CreateStore(CGF.Builder.getInt1(kind == ForActivation), var);
1252 CGBuilderTy::InsertPoint SavedIP = Builder.saveAndClearIP();
1254 Builder.restoreIP(SavedIP);
1267 CreateDefaultAlignTempAlloca(Builder.getInt32Ty(), "cleanup.dest.slot");
tools/clang/lib/CodeGen/CGCoroutine.cpp 196 auto &Builder = CGF.Builder;
206 CGF.Builder.CreateCondBr(SuspendRet, RealSuspendBlock, ReadyBlock);
403 auto *CoroEnd = CGF.Builder.CreateCall(
404 CoroEndFn, {NullPtr, CGF.Builder.getTrue()}, Bundles);
410 CGF.Builder.CreateCondBr(CoroEnd, ResumeBB, CleanupContBB);
433 BasicBlock *SaveInsertBlock = CGF.Builder.GetInsertBlock();
453 CGF.Builder.SetInsertPoint(InsertPt);
457 auto *Cond = CGF.Builder.CreateICmpNE(CoroFree, NullPtr);
458 CGF.Builder.CreateCondBr(Cond, FreeBB, AfterFreeBB);
462 CGF.Builder.SetInsertPoint(AfterFreeBB);
478 : CGF(CGF), Builder(CGF.Builder), S(S), GroActiveFlag(Address::invalid()),
537 const bool CanFallthrough = CGF.Builder.GetInsertBlock();
544 auto *NullPtr = llvm::ConstantPointerNull::get(Builder.getInt8PtrTy());
548 auto *EntryBB = Builder.GetInsertBlock();
554 auto *CoroId = Builder.CreateCall(
556 {Builder.getInt32(NewAlign), NullPtr, NullPtr, NullPtr});
562 auto *CoroAlloc = Builder.CreateCall(
565 Builder.CreateCondBr(CoroAlloc, AllocBB, InitBB);
569 auto *AllocOrInvokeContBB = Builder.GetInsertBlock();
577 auto *Cond = Builder.CreateICmpNE(AllocateCall, NullPtr);
578 Builder.CreateCondBr(Cond, InitBB, RetOnFailureBB);
585 Builder.CreateBr(InitBB);
591 auto *Phi = Builder.CreatePHI(VoidPtrTy, 2);
594 auto *CoroBegin = Builder.CreateCall(
649 Value *SkipBody = Builder.CreateFlagLoad(CurCoro.Data->ResumeEHVar,
651 Builder.CreateCondBr(SkipBody, ContBB, BodyBB);
673 const bool CanFallthrough = Builder.GetInsertBlock();
689 Builder.CreateCall(CoroEnd, {NullPtr, Builder.getFalse()});
689 Builder.CreateCall(CoroEnd, {NullPtr, Builder.getFalse()});
710 auto NullPtr = llvm::ConstantPointerNull::get(Builder.getInt8PtrTy());
738 llvm::CallInst *Call = Builder.CreateCall(F, Args);
tools/clang/lib/CodeGen/CGDebugInfo.cpp 100 OriginalLocation = CGF->Builder.getCurrentDebugLocation();
106 DI->EmitLocation(CGF->Builder, TemporaryLocation);
111 CGF->Builder.SetCurrentDebugLocation(llvm::DebugLoc());
117 CGF->Builder.SetCurrentDebugLocation(llvm::DebugLoc::get(
132 OriginalLocation = CGF.Builder.getCurrentDebugLocation();
134 CGF.Builder.SetCurrentDebugLocation(std::move(Loc));
141 CGF->Builder.SetCurrentDebugLocation(std::move(OriginalLocation));
154 CGF.Builder.getCurrentDebugLocation()->getInlinedAt()) &&
157 DI.EmitInlineFunctionStart(CGF.Builder, InlinedFn);
164 DI.EmitInlineFunctionEnd(CGF->Builder);
165 DI.EmitLocation(CGF->Builder, SavedLocation);
tools/clang/lib/CodeGen/CGDecl.cpp 494 CGF.Builder.CreateFlagLoad(NRVOFlag, "nrvo.val");
495 CGF.Builder.CreateCondBr(DidNRVO, SkipDtorBB, RunDtorBB);
537 llvm::Value *V = CGF.Builder.CreateLoad(Stack);
539 CGF.Builder.CreateCall(F, V);
582 CGF.Builder.CreateBitCast(Addr, CGF.ConvertType(ArgTy));
689 srcAddr = CGF.Builder.CreateElementBitCast(srcAddr,
731 llvm::Value *IsNotNull = Builder.CreateIsNotNull(RHS);
1295 Addr = Builder.CreateBitCast(Addr, AllocaInt8PtrTy);
1297 Builder.CreateCall(CGM.getLLVMLifetimeStartFn(), {SizeV, Addr});
1306 Addr = Builder.CreateBitCast(Addr, AllocaInt8PtrTy);
1308 Builder.CreateCall(CGM.getLLVMLifetimeEndFn(), {Size, Addr});
1334 Builder.CreateStore(VlaSize.NumElts, SizeExprAddr);
1365 Builder);
1460 llvm::Value *Zero = Builder.getFalse();
1464 Builder.CreateStore(Zero, NRVOFlag);
1530 llvm::Value *V = Builder.CreateCall(F);
1531 Builder.CreateStore(V, Stack);
1567 (void)DI->EmitDeclareOfAutoVariable(&D, DebugAddr.getPointer(), Builder,
1672 emitStoresForZeroInit(CGM, D, Loc, isVolatile, Builder);
1675 emitStoresForPatternInit(CGM, D, Loc, isVolatile, Builder);
1698 SizeVal = Builder.CreateNUWMul(SizeVal, CGM.getSize(EltSize));
1699 Builder.CreateMemSet(Loc, llvm::ConstantInt::get(Int8Ty, 0), SizeVal,
1711 llvm::Value *IsZeroSizedVLA = Builder.CreateICmpEQ(
1714 Builder.CreateCondBr(IsZeroSizedVLA, ContBB, SetupBB);
1717 SizeVal = Builder.CreateNUWMul(SizeVal, CGM.getSize(EltSize));
1720 Address Begin = Builder.CreateElementBitCast(Loc, Int8Ty, "vla.begin");
1722 Builder.CreateInBoundsGEP(Begin.getPointer(), SizeVal, "vla.end");
1723 llvm::BasicBlock *OriginBB = Builder.GetInsertBlock();
1725 llvm::PHINode *Cur = Builder.CreatePHI(Begin.getType(), 2, "vla.cur");
1728 Builder.CreateMemCpy(Address(Cur, CurAlign),
1730 CGM, D, Builder, Constant, ConstantAlign),
1733 Builder.CreateInBoundsGEP(Int8Ty, Cur, BaseSizeInChars, "vla.next");
1734 llvm::Value *Done = Builder.CreateICmpEQ(Next, End, "vla-init.isdone");
1735 Builder.CreateCondBr(Done, ContBB, LoopBB);
1851 CGM, D, (Loc.getType() == BP) ? Loc : Builder.CreateBitCast(Loc, BP),
1852 type.isVolatileQualified(), Builder, constant);
2125 llvm::Value *end = Builder.CreateInBoundsGEP(begin, length);
2155 llvm::Value *isEmpty = Builder.CreateICmpEQ(begin, end,
2157 Builder.CreateCondBr(isEmpty, doneBB, bodyBB);
2161 llvm::BasicBlock *entryBB = Builder.GetInsertBlock();
2164 Builder.CreatePHI(begin->getType(), 2, "arraydestroy.elementPast");
2169 llvm::Value *element = Builder.CreateInBoundsGEP(elementPast, negativeOne,
2183 llvm::Value *done = Builder.CreateICmpEQ(element, begin, "arraydestroy.done");
2184 Builder.CreateCondBr(done, doneBB, bodyBB);
2185 elementPast->addIncoming(element, Builder.GetInsertBlock());
2210 begin = CGF.Builder.CreateInBoundsGEP(begin, gepIndices, "pad.arraybegin");
2211 end = CGF.Builder.CreateInBoundsGEP(end, gepIndices, "pad.arrayend");
2265 llvm::Value *arrayEnd = CGF.Builder.CreateLoad(ArrayEndPointer);
2361 ? Builder.CreateLoad(Arg.getIndirectAddress())
2378 DeclPtr = Builder.CreateBitCast(DeclPtr, IRTy, D.getName());
2449 ArgVal = Builder.CreateLoad(DeclPtr);
2499 DI->EmitDeclareOfArgVariable(&D, DeclPtr.getPointer(), ArgNo, Builder);
2514 Builder.CreateAnd(RetValNullabilityPrecondition,
2515 Builder.CreateIsNotNull(Arg.getAnyValue()));
tools/clang/lib/CodeGen/CGDeclCXX.cpp 169 Builder.CreateCall(InvariantStart, Args);
248 llvm::CallInst *call = CGF.Builder.CreateCall(dtor, addr);
331 Builder.CreateCondBr(NeedsInit, InitBlock, NoInitBlock, Weights);
683 llvm::Value *GuardVal = Builder.CreateLoad(Guard);
684 llvm::Value *Uninit = Builder.CreateIsNull(GuardVal,
694 Builder.CreateStore(llvm::ConstantInt::get(GuardVal->getType(),1), Guard);
719 Builder.CreateBr(ExitBlock);
744 llvm::CallInst *CI = Builder.CreateCall(CalleeTy, Callee, Arg);
tools/clang/lib/CodeGen/CGException.cpp 386 Address typedAddr = Builder.CreateBitCast(addr, ty);
416 return Builder.CreateLoad(getExceptionSlot(), "exn");
420 return Builder.CreateLoad(getEHSelectorSlot(), "sel");
502 llvm::Value *zero = CGF.Builder.getInt32(0);
504 CGF.Builder.CreateICmpSLT(selector, zero, "ehspec.fails");
505 CGF.Builder.CreateCondBr(failsFilter, unexpectedBB,
518 CGF.Builder.CreateUnreachable();
770 CGBuilderTy::InsertPoint savedIP = Builder.saveAndClearIP();
778 Builder.CreateLandingPad(llvm::StructType::get(Int8PtrTy, Int32Ty), 0);
780 llvm::Value *LPadExn = Builder.CreateExtractValue(LPadInst, 0);
781 Builder.CreateStore(LPadExn, getExceptionSlot());
782 llvm::Value *LPadSel = Builder.CreateExtractValue(LPadInst, 1);
783 Builder.CreateStore(LPadSel, getEHSelectorSlot());
888 Builder.CreateBr(getEHDispatchBlock(EHStack.getInnermostEHScope()));
891 Builder.restoreIP(savedIP);
900 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveIP();
911 CGF.Builder.CreateCatchSwitch(ParentPad, UnwindBB, NumHandlers);
921 CGF.Builder.SetInsertPoint(Handler.Block);
924 CGF.Builder.CreateCatchPad(
925 CatchSwitch, {TypeInfo.RTTI, CGF.Builder.getInt32(TypeInfo.Flags),
928 CGF.Builder.CreateCatchPad(CatchSwitch, {TypeInfo.RTTI});
933 CGF.Builder.restoreIP(SavedIP);
944 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveIP();
955 CGF.Builder.CreateCatchSwitch(ParentPad, UnwindBB, NumHandlers);
972 auto *CPI = CGF.Builder.CreateCatchPad(CatchSwitch, CatchTypes);
981 llvm::CallInst *Exn = CGF.Builder.CreateCall(GetExnFn, CPI);
982 CGF.Builder.CreateStore(Exn, CGF.getExceptionSlot());
983 llvm::CallInst *Selector = CGF.Builder.CreateCall(GetSelectorFn, CPI);
990 CGF.Builder.CreateBr(CatchScope.getHandler(0).Block);
991 CGF.Builder.restoreIP(SavedIP);
1029 llvm::CallInst *TypeIndex = CGF.Builder.CreateCall(TypeIDFn, TypeInfo.RTTI);
1033 CGF.Builder.CreateICmpEQ(Selector, TypeIndex, "matches");
1034 CGF.Builder.CreateCondBr(MatchesTypeIndex, Handler.Block, NextBlock);
1042 CGF.Builder.restoreIP(SavedIP);
1065 CGBuilderTy::InsertPoint savedIP = CGF.Builder.saveIP();
1084 typeValue = CGF.Builder.CreateBitCast(typeValue, CGF.Int8PtrTy);
1110 CGF.Builder.CreateCall(llvm_eh_typeid_for, typeValue);
1114 CGF.Builder.CreateICmpEQ(selector, typeIndex, "matches");
1115 CGF.Builder.CreateCondBr(matchesTypeIndex, handler.Block, nextBlock);
1119 CGF.Builder.restoreIP(savedIP);
1162 Builder.CreateBr(ContBB);
1229 Builder.CreateUnreachable();
1230 Builder.ClearInsertionPoint();
1238 Builder.CreateBr(ContBB);
1258 Builder.SetInsertPoint(RethrowBlock);
1282 CGF.Builder.CreateFlagLoad(ForEHVar, "finally.endcatch");
1283 CGF.Builder.CreateCondBr(ShouldEndCatch, EndCatchBB, CleanupContBB);
1312 CGF.Builder.CreateLoad(CGF.getNormalCleanupDestSlot(),
1325 CGF.Builder.CreateFlagLoad(ForEHVar, "finally.shouldthrow");
1326 CGF.Builder.CreateCondBr(ShouldRethrow, RethrowBB, ContBB);
1331 CGF.Builder.CreateAlignedLoad(SavedExnVar, CGF.getPointerAlign()));
1335 CGF.Builder.CreateUnreachable();
1340 CGF.Builder.CreateStore(SavedCleanupDest,
1348 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP();
1350 CGF.Builder.restoreIP(SavedIP);
1402 ForEHVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(), "finally.for-eh");
1403 CGF.Builder.CreateFlagStore(false, ForEHVar);
1427 CGBuilderTy::InsertPoint savedIP = CGF.Builder.saveAndClearIP();
1441 CGF.Builder.CreateAlignedStore(exn, SavedExnVar, CGF.getPointerAlign());
1445 CGF.Builder.CreateFlagStore(true, ForEHVar);
1450 CGF.Builder.restoreIP(savedIP);
1461 CGBuilderTy::InsertPoint SavedIP = Builder.saveAndClearIP();
1465 Builder.SetInsertPoint(TerminateLandingPad);
1474 Builder.CreateLandingPad(llvm::StructType::get(Int8PtrTy, Int32Ty), 0);
1479 Exn = Builder.CreateExtractValue(LPadInst, 0);
1483 Builder.CreateUnreachable();
1486 Builder.restoreIP(SavedIP);
1498 CGBuilderTy::InsertPoint SavedIP = Builder.saveAndClearIP();
1499 Builder.SetInsertPoint(TerminateHandler);
1507 Builder.CreateUnreachable();
1510 Builder.restoreIP(SavedIP);
1523 CGBuilderTy::InsertPoint SavedIP = Builder.saveAndClearIP();
1528 Builder.SetInsertPoint(TerminateFunclet);
1537 CurrentFuncletPad = Builder.CreateCleanupPad(ParentPad);
1547 Exn = Builder.CreateCall(GetExnFn, CurrentFuncletPad);
1552 Builder.CreateUnreachable();
1555 Builder.restoreIP(SavedIP);
1563 CGBuilderTy::InsertPoint SavedIP = Builder.saveIP();
1567 Builder.SetInsertPoint(EHResumeBlock);
1577 Builder.CreateUnreachable();
1578 Builder.restoreIP(SavedIP);
1588 LPadVal = Builder.CreateInsertValue(LPadVal, Exn, 0, "lpad.val");
1589 LPadVal = Builder.CreateInsertValue(LPadVal, Sel, 1, "lpad.val");
1591 Builder.CreateResume(LPadVal);
1592 Builder.restoreIP(SavedIP);
1634 FP = CGF.Builder.CreateCall(LocalAddrFn);
1902 R = Builder.CreateIntCast(R, ConvertType(getContext().LongTy),
1904 Builder.CreateStore(R, ReturnValue);
1940 SEHInfo = Builder.CreateConstInBoundsGEP1_32(Int8Ty, EntryFP, -20);
1941 SEHInfo = Builder.CreateBitCast(SEHInfo, Int8PtrTy->getPointerTo());
1942 SEHInfo = Builder.CreateAlignedLoad(Int8PtrTy, SEHInfo, getPointerAlign());
1956 llvm::Value *Ptrs = Builder.CreateBitCast(SEHInfo, PtrsTy->getPointerTo());
1957 llvm::Value *Rec = Builder.CreateStructGEP(PtrsTy, Ptrs, 0);
1958 Rec = Builder.CreateAlignedLoad(Rec, getPointerAlign());
1959 llvm::Value *Code = Builder.CreateAlignedLoad(Rec, getIntAlign());
1961 Builder.CreateStore(Code, SEHCodeSlotStack.back());
1975 return Builder.CreateLoad(SEHCodeSlotStack.back());
1982 return Builder.CreateZExt(&*AI, Int32Ty);
2057 Builder.CreateBr(ContBB);
2073 Builder.CreateCatchRet(CPI, ExceptBB);
2080 llvm::Value *Code = Builder.CreateCall(SEHCodeIntrin, {CPI});
2081 Builder.CreateStore(Code, SEHCodeSlotStack.back());
2091 Builder.CreateBr(ContBB);
2106 Builder.CreateUnreachable();
2107 Builder.ClearInsertionPoint();
tools/clang/lib/CodeGen/CGExpr.cpp 59 return Builder.CreateBitCast(value, destType);
89 llvm::IRBuilderBase::InsertPointGuard IPG(Builder);
94 Builder.SetInsertPoint(AllocaInsertPt);
110 return Builder.CreateAlloca(Ty, ArraySize, Name);
530 OldIP = Builder.saveIP();
532 Builder.restoreIP(CGBuilderTy::InsertPoint(
545 Builder.restoreIP(OldIP);
690 IsNonNull = Builder.CreateIsNotNull(Ptr);
703 Builder.CreateCondBr(IsNonNull, Rest, Done);
717 Size = Builder.CreateMul(Size, ArraySize);
728 llvm::Value *Min = Builder.getFalse();
729 llvm::Value *NullIsUnknown = Builder.getFalse();
730 llvm::Value *Dynamic = Builder.getFalse();
731 llvm::Value *CastAddr = Builder.CreateBitCast(Ptr, Int8PtrTy);
732 llvm::Value *LargeEnough = Builder.CreateICmpUGE(
733 Builder.CreateCall(F, {CastAddr, Min, NullIsUnknown, Dynamic}), Size);
750 PtrAsInt = Builder.CreatePtrToInt(Ptr, IntPtrTy);
751 llvm::Value *Align = Builder.CreateAnd(
754 Builder.CreateICmpEQ(Align, llvm::ConstantInt::get(IntPtrTy, 0));
786 IsNonNull = Builder.CreateIsNotNull(Ptr);
790 Builder.CreateCondBr(IsNonNull, VptrNotNull, Done);
812 Address VPtrAddr(Builder.CreateBitCast(Ptr, VPtrTy), getPointerAlign());
813 llvm::Value *VPtrVal = Builder.CreateLoad(VPtrAddr);
814 llvm::Value *High = Builder.CreateZExt(VPtrVal, Int64Ty);
816 llvm::Value *Hash = emitHash16Bytes(Builder, Low, High);
817 Hash = Builder.CreateTrunc(Hash, IntPtrTy);
824 llvm::Value *Slot = Builder.CreateAnd(Hash,
827 llvm::Value *Indices[] = { Builder.getInt32(0), Slot };
829 Builder.CreateAlignedLoad(Builder.CreateInBoundsGEP(Cache, Indices),
829 Builder.CreateAlignedLoad(Builder.CreateInBoundsGEP(Cache, Indices),
836 llvm::Value *EqualHash = Builder.CreateICmpEQ(CacheVal, Hash);
851 Builder.CreateBr(Done);
922 return Builder.CreateUDiv(SizeInBytes, SizeOfElement);
932 return CGF.Builder.getInt32(VT->getNumElements());
943 return CGF.Builder.getInt(CAT->getSize());
972 llvm::Value *IndexVal = Builder.CreateIntCast(Index, SizeTy, IndexSigned);
973 llvm::Value *BoundVal = Builder.CreateIntCast(Bound, SizeTy, false);
980 llvm::Value *Check = Accessed ? Builder.CreateICmpULT(IndexVal, BoundVal)
981 : Builder.CreateICmpULE(IndexVal, BoundVal);
998 NextVal = Builder.CreateAdd(InVal.first, NextVal, isInc ? "inc" : "dec");
1007 NextVal = Builder.CreateFAdd(InVal.first, NextVal, isInc ? "inc" : "dec");
1093 ? Builder.CreateBitCast(Addr, ConvertType(E->getType()))
1094 : Builder.CreateAddrSpaceCast(Addr,
1617 Check = Builder.CreateICmpULE(Value, llvm::ConstantInt::get(Ctx, End));
1620 Builder.CreateICmpSLE(Value, llvm::ConstantInt::get(Ctx, End));
1622 Builder.CreateICmpSGE(Value, llvm::ConstantInt::get(Ctx, Min));
1623 Check = Builder.CreateAnd(Upper, Lower);
1653 Address Cast = Builder.CreateElementBitCast(Addr, vec4Ty, "castToVec4");
1655 llvm::Value *V = Builder.CreateLoad(Cast, Volatile, "loadVec4");
1658 V = Builder.CreateShuffleVector(V, llvm::UndefValue::get(vec4Ty),
1672 llvm::LoadInst *Load = Builder.CreateLoad(Addr, Volatile);
1675 Load->getContext(), llvm::ConstantAsMetadata::get(Builder.getInt32(1)));
1697 return Builder.CreateZExt(Value, ConvertTypeForMem(Ty), "frombool");
1710 return Builder.CreateTrunc(Value, Builder.getInt1Ty(), "tobool");
1710 return Builder.CreateTrunc(Value, Builder.getInt1Ty(), "tobool");
1729 llvm::Constant *Mask[] = {Builder.getInt32(0), Builder.getInt32(1),
1729 llvm::Constant *Mask[] = {Builder.getInt32(0), Builder.getInt32(1),
1730 Builder.getInt32(2),
1731 llvm::UndefValue::get(Builder.getInt32Ty())};
1733 Value = Builder.CreateShuffleVector(Value, llvm::UndefValue::get(VecTy),
1738 Addr = Builder.CreateElementBitCast(Addr, SrcTy, "storetmp");
1753 llvm::StoreInst *Store = Builder.CreateStore(Value, Addr, Volatile);
1757 llvm::ConstantAsMetadata::get(Builder.getInt32(1)));
1801 llvm::LoadInst *Load = Builder.CreateLoad(LV.getVectorAddress(),
1803 return RValue::get(Builder.CreateExtractElement(Load, LV.getVectorIdx(),
1828 llvm::Value *Val = Builder.CreateLoad(Ptr, LV.isVolatileQualified(), "bf.load");
1834 Val = Builder.CreateShl(Val, HighBits, "bf.shl");
1836 Val = Builder.CreateAShr(Val, Info.Offset + HighBits, "bf.ashr");
1839 Val = Builder.CreateLShr(Val, Info.Offset, "bf.lshr");
1841 Val = Builder.CreateAnd(Val, llvm::APInt::getLowBitsSet(Info.StorageSize,
1845 Val = Builder.CreateIntCast(Val, ResLTy, Info.IsSigned, "bf.cast");
1853 llvm::Value *Vec = Builder.CreateLoad(LV.getExtVectorAddress(),
1864 return RValue::get(Builder.CreateExtractElement(Vec, Elt));
1872 Mask.push_back(Builder.getInt32(getAccessedFieldNo(i, Elts)));
1875 Vec = Builder.CreateShuffleVector(Vec, llvm::UndefValue::get(Vec->getType()),
1888 Builder.CreateElementBitCast(VectorAddress, VectorElementTy,
1895 Builder.CreateConstInBoundsGEP(CastToPointerElement, ix,
1916 llvm::Value *Call = Builder.CreateCall(
1919 Call = Builder.CreateIntToPtr(Call, OrigTy);
1932 llvm::Value *Vec = Builder.CreateLoad(Dst.getVectorAddress(),
1934 Vec = Builder.CreateInsertElement(Vec, Src.getScalarVal(),
1936 Builder.CreateStore(Vec, Dst.getVectorAddress(),
2004 RHS = Builder.CreatePtrToInt(RHS, ResultType, "sub.ptr.rhs.cast");
2006 Builder.CreatePtrToInt(LvalueDst.getPointer(), ResultType,
2008 llvm::Value *BytesBetween = Builder.CreateSub(LHS, RHS, "ivar.offset");
2034 SrcVal = Builder.CreateIntCast(SrcVal, Ptr.getElementType(),
2043 Builder.CreateLoad(Ptr, Dst.isVolatileQualified(), "bf.load");
2047 SrcVal = Builder.CreateAnd(SrcVal,
2053 SrcVal = Builder.CreateShl(SrcVal, Info.Offset, "bf.shl");
2056 Val = Builder.CreateAnd(Val,
2063 SrcVal = Builder.CreateOr(Val, SrcVal, "bf.set");
2069 Builder.CreateStore(SrcVal, Ptr, Dst.isVolatileQualified());
2080 ResultVal = Builder.CreateShl(ResultVal, HighBits, "bf.result.shl");
2081 ResultVal = Builder.CreateAShr(ResultVal, HighBits, "bf.result.ashr");
2085 ResultVal = Builder.CreateIntCast(ResultVal, ResLTy, Info.IsSigned,
2095 llvm::Value *Vec = Builder.CreateLoad(Dst.getExtVectorAddress(),
2110 Mask[getAccessedFieldNo(i, Elts)] = Builder.getInt32(i);
2113 Vec = Builder.CreateShuffleVector(SrcVal,
2123 ExtMask.push_back(Builder.getInt32(i));
2127 Builder.CreateShuffleVector(SrcVal,
2133 Mask.push_back(Builder.getInt32(i));
2143 Mask[getAccessedFieldNo(i, Elts)] = Builder.getInt32(i+NumDstElts);
2145 Vec = Builder.CreateShuffleVector(Vec, ExtSrcVal, MaskV);
2154 Vec = Builder.CreateInsertElement(Vec, SrcVal, Elt);
2157 Builder.CreateStore(Vec, Dst.getExtVectorAddress(),
2179 Value = Builder.CreatePtrToInt(Value, Ty);
2180 Builder.CreateCall(
2289 return CGF.Builder.CreateBitCast(V, IRType->getPointerTo(AS), Name);
2296 Addr = CGF.Builder.CreateElementBitCast(Addr, RealVarTy);
2323 llvm::LoadInst *Load = Builder.CreateLoad(RefLVal.getAddress(),
2346 llvm::Value *Addr = Builder.CreateLoad(Ptr);
2548 Addr = Builder.CreatePointerBitCastOrAddrSpaceCast(Addr, PTy);
2817 Builder.getInt16(TypeKind), Builder.getInt16(TypeInfo),
2817 Builder.getInt16(TypeKind), Builder.getInt16(TypeInfo),
2845 V = Builder.CreateBitCast(V, llvm::Type::getIntNTy(getLLVMContext(),
2852 return Builder.CreateZExt(V, TargetTy);
2857 Builder.CreateStore(V, Ptr);
2860 return Builder.CreatePtrToInt(V, TargetTy);
2915 llvm::Constant *Data[] = {Filename, Builder.getInt32(Line),
2916 Builder.getInt32(Column)};
2965 if (!CGF.Builder.getCurrentDebugLocation()) {
2999 CGF.Builder.CreateUnreachable();
3001 CGF.Builder.CreateBr(ContBB);
3027 Cond = Cond ? Builder.CreateAnd(Cond, Check) : Check;
3037 JointCond = Builder.CreateAnd(FatalCond, RecoverableCond);
3054 llvm::Instruction *Branch = Builder.CreateCondBr(JointCond, Cont, Handlers);
3079 Args.push_back(Builder.CreateBitCast(InfoPtr, Int8PtrTy));
3103 Builder.CreateCondBr(FatalCond, NonFatalHandlerBB, FatalHandlerBB);
3121 llvm::BranchInst *BI = Builder.CreateCondBr(Cond, Cont, CheckBB);
3145 CheckCall = Builder.CreateCall(
3146 SlowPathFn, {TypeId, Ptr, Builder.CreateBitCast(InfoPtr, Int8PtrTy)});
3151 CheckCall = Builder.CreateCall(SlowPathFn, {TypeId, Ptr});
3222 Builder.CreateICmpNE(Data, llvm::ConstantPointerNull::get(Int8PtrTy));
3230 llvm::Value *V = Builder.CreateConstGEP2_32(
3232 Builder.CreatePointerCast(Data, CfiCheckFailDataTy->getPointerTo(0)), 0,
3235 llvm::Value *CheckKind = Builder.CreateLoad(CheckKindAddr);
3240 llvm::Value *ValidVtable = Builder.CreateZExt(
3241 Builder.CreateCall(CGM.getIntrinsic(llvm::Intrinsic::type_test),
3257 Builder.CreateICmpNE(CheckKind, llvm::ConstantInt::get(Int8Ty, Kind));
3274 EmitCheck(std::make_pair(static_cast<llvm::Value *>(Builder.getFalse()),
3279 Builder.CreateUnreachable();
3289 Builder.CreateCondBr(Checked, Cont, TrapBB);
3294 Builder.CreateUnreachable();
3296 Builder.CreateCondBr(Checked, Cont, TrapBB);
3303 llvm::CallInst *TrapCall = Builder.CreateCall(CGM.getIntrinsic(IntrID));
3327 Addr = Builder.CreateElementBitCast(Addr, NewTy);
3334 Addr = Builder.CreateConstArrayGEP(Addr, 0, "arraydecay");
3346 return Builder.CreateElementBitCast(Addr, ConvertTypeForMem(EltType));
3377 return CGF.Builder.CreateGEP(ptr, indices, name);
3441 eltPtr = CGF.Builder.CreatePreserveArrayAccessIndex(addr.getPointer(),
3472 Idx = Builder.CreateIntCast(Idx, IntPtrTy, IdxSigned, "idxprom");
3524 Idx = Builder.CreateMul(Idx, numElements);
3526 Idx = Builder.CreateNSWMul(Idx, numElements);
3544 llvm::Value *ScaledIdx = Builder.CreateMul(Idx, InterfaceSizeVal);
3551 Addr = Builder.CreateElementBitCast(Addr, Int8Ty);
3562 Addr = Builder.CreateBitCast(Addr, OrigBaseTy);
3622 Addr = CGF.Builder.CreateElementBitCast(Addr, NewTy);
3629 Addr = CGF.Builder.CreateConstArrayGEP(Addr, 0, "arraydecay");
3632 return CGF.Builder.CreateElementBitCast(Addr,
3641 return Address(CGF.Builder.CreateLoad(BaseLVal.getAddress()), Align);
3660 Idx = Builder.CreateIntCast(
3692 ? Builder.CreateIntCast(
3698 ? Builder.CreateIntCast(
3702 Idx = Builder.CreateAdd(LowerBoundVal, LengthVal, "lb_add_len",
3706 Idx = Builder.CreateSub(
3726 auto *LengthVal = Builder.CreateIntCast(
3729 Idx = Builder.CreateSub(
3759 Idx = Builder.CreateMul(Idx, NumElements);
3761 Idx = Builder.CreateNSWMul(Idx, NumElements);
3827 Builder.CreateStore(Vec, VecMem);
3932 Base = CGF.Builder.CreateElementBitCast(Base, CGF.Int8Ty);
3933 return CGF.Builder.CreateConstInBoundsByteGEP(Base, Offset);
3950 return CGF.Builder.CreateStructGEP(base, idx, field->getName());
3962 return CGF.Builder.CreatePreserveStructAccessIndex(
3998 Addr = Builder.CreateStructGEP(Addr, Idx, field->getName());
4003 Addr = Builder.CreatePreserveStructAccessIndex(Addr, Idx,
4012 Addr = Builder.CreateElementBitCast(Addr, FieldIntTy);
4068 auto *stripped = Builder.CreateStripInvariantGroup(addr.getPointer());
4080 addr = Address(Builder.CreateLaunderInvariantGroup(addr.getPointer()),
4088 Builder.CreatePreserveUnionAccessIndex(
4094 addr = Builder.CreateElementBitCast(
4122 addr = Builder.CreateElementBitCast(
4150 V = Builder.CreateElementBitCast(V, llvmType, Field->getName());
4247 lhsBlock = Builder.GetInsertBlock();
4249 Builder.CreateBr(contBlock);
4259 rhsBlock = Builder.GetInsertBlock();
4264 llvm::PHINode *phi = Builder.CreatePHI(lhs->getPointer()->getType(),
4417 Address V = Builder.CreateBitCast(LV.getAddress(),
4439 Address V = Builder.CreateElementBitCast(LV.getAddress(),
4690 return Builder.CreateElementBitCast(CGM.GetAddrOfUuidDescriptor(E),
4806 llvm::Value *CalleePrefixStruct = Builder.CreateBitCast(
4809 Builder.CreateConstGEP2_32(PrefixStructTy, CalleePrefixStruct, 0, 0);
4811 Builder.CreateAlignedLoad(CalleeSigPtr, getIntAlign());
4812 llvm::Value *CalleeSigMatch = Builder.CreateICmpEQ(CalleeSig, PrefixSig);
4816 Builder.CreateCondBr(CalleeSigMatch, TypeCheck, Cont);
4820 Builder.CreateConstGEP2_32(PrefixStructTy, CalleePrefixStruct, 0, 1);
4822 Builder.CreateAlignedLoad(CalleeRTTIPtr, getPointerAlign());
4826 Builder.CreateICmpEQ(CalleeRTTI, FTRTTIConst);
4833 Builder.CreateBr(Cont);
4856 llvm::Value *CastedCallee = Builder.CreateBitCast(CalleePtr, Int8PtrTy);
4857 llvm::Value *TypeTest = Builder.CreateCall(
4878 Args.add(RValue::get(Builder.CreateBitCast(Chain, CGM.VoidPtrTy)),
4938 CalleePtr = Builder.CreateBitCast(CalleePtr, CalleeTy, "callee.knr.cast");
tools/clang/lib/CodeGen/CGExprAgg.cpp 61 : CGF(cgf), Builder(CGF.Builder), Dest(Dest),
785 CGF.Builder.CreateStructGEP(valueDest.getAddress(), 0);
1226 CGF.Builder.CreateBr(ContBlock);
1318 CleanupDominator = CGF.Builder.CreateAlignedLoad(
1504 cleanupDominator = CGF.Builder.CreateAlignedLoad(
1834 llvm::Constant *SizeVal = CGF.Builder.getInt64(Size.getQuantity());
1837 Loc = CGF.Builder.CreateElementBitCast(Loc, CGF.Int8Ty);
1838 CGF.Builder.CreateMemSet(Loc, CGF.Builder.getInt8(0), SizeVal, false);
1838 CGF.Builder.CreateMemSet(Loc, CGF.Builder.getInt8(0), SizeVal, false);
1967 SizeVal = Builder.CreateNUWMul(
1989 DestPtr = Builder.CreateElementBitCast(DestPtr, Int8Ty);
1990 SrcPtr = Builder.CreateElementBitCast(SrcPtr, Int8Ty);
2013 auto Inst = Builder.CreateMemCpy(DestPtr, SrcPtr, SizeVal, isVolatile);
tools/clang/lib/CodeGen/CGExprCXX.cpp 148 EmitARCRelease(Builder.CreateLoad(BaseValue,
484 DestPtr = CGF.Builder.CreateElementBitCast(DestPtr, CGF.Int8Ty);
544 CGF.Builder.CreateMemCpy(
545 CGF.Builder.CreateConstInBoundsByteGEP(DestPtr, StoreOffset),
546 CGF.Builder.CreateConstInBoundsByteGEP(SrcPtr, StoreOffset),
558 CGF.Builder.CreateMemSet(
559 CGF.Builder.CreateConstInBoundsByteGEP(DestPtr, StoreOffset),
560 CGF.Builder.getInt8(0), StoreSizeVal);
813 hasOverflow = CGF.Builder.CreateICmpUGE(numElements, thresholdV);
814 numElements = CGF.Builder.CreateTrunc(numElements, CGF.SizeTy);
819 numElements = CGF.Builder.CreateSExt(numElements, CGF.SizeTy);
827 hasOverflow = CGF.Builder.CreateICmpSLT(numElements,
832 numElements = CGF.Builder.CreateZExt(numElements, CGF.SizeTy);
840 hasOverflow = CGF.Builder.CreateICmpULT(numElements,
846 hasOverflow = CGF.Builder.CreateOr(hasOverflow,
847 CGF.Builder.CreateICmpULT(numElements,
868 CGF.Builder.CreateCall(umul_with_overflow, {size, tsmV});
870 llvm::Value *overflowed = CGF.Builder.CreateExtractValue(result, 1);
872 hasOverflow = CGF.Builder.CreateOr(hasOverflow, overflowed);
876 size = CGF.Builder.CreateExtractValue(result, 0);
890 numElements = CGF.Builder.CreateMul(numElements, asmV);
907 CGF.Builder.CreateCall(uadd_with_overflow, {size, cookieSizeV});
909 llvm::Value *overflowed = CGF.Builder.CreateExtractValue(result, 1);
911 hasOverflow = CGF.Builder.CreateOr(hasOverflow, overflowed);
915 size = CGF.Builder.CreateExtractValue(result, 0);
922 size = CGF.Builder.CreateSelect(hasOverflow,
1004 RemainingSize = Builder.CreateSub(RemainingSize, InitializedSize);
1008 Builder.CreateMemSet(CurPtr, Builder.getInt8(0), RemainingSize, false);
1008 Builder.CreateMemSet(CurPtr, Builder.getInt8(0), RemainingSize, false);
1035 Address(Builder.CreateInBoundsGEP(CurPtr.getPointer(),
1036 Builder.getSize(InitListElements),
1059 CurPtr = Builder.CreateElementBitCast(CurPtr, ElementTy);
1071 CleanupDominator = Builder.CreateStore(BeginPtr.getPointer(), EndOfInit);
1085 Builder.CreateBitCast(CurPtr.getPointer(), BeginPtr.getType());
1086 Builder.CreateStore(FinishedPtr, EndOfInit);
1094 CurPtr = Address(Builder.CreateInBoundsGEP(CurPtr.getPointer(),
1095 Builder.getSize(1),
1115 CurPtr = Builder.CreateBitCast(CurPtr, BeginPtr.getType());
1149 Builder.CreateStore(CurPtr.getPointer(), EndOfInit);
1153 NumElements = Builder.CreateSub(
1207 llvm::BasicBlock *EntryBB = Builder.GetInsertBlock();
1213 Builder.CreateInBoundsGEP(BeginPtr.getPointer(), NumElements, "array.end");
1219 Builder.CreateICmpEQ(CurPtr.getPointer(), EndPtr, "array.isempty");
1220 Builder.CreateCondBr(IsEmpty, ContBB, LoopBB);
1228 Builder.CreatePHI(CurPtr.getType(), 2, "array.cur");
1235 Builder.CreateStore(CurPtr.getPointer(), EndOfInit);
1243 CleanupDominator = Builder.CreateUnreachable();
1258 Builder.CreateConstInBoundsGEP1_32(ElementTy, CurPtr.getPointer(), 1,
1263 llvm::Value *IsEnd = Builder.CreateICmpEQ(NextPtr, EndPtr, "array.atend");
1264 Builder.CreateCondBr(IsEnd, ContBB, LoopBB);
1265 CurPtrPhi->addIncoming(NextPtr, Builder.GetInsertBlock());
1660 nullCheckBB = Builder.GetInsertBlock();
1665 Builder.CreateIsNull(allocation.getPointer(), "new.isnull");
1666 Builder.CreateCondBr(isNull, contBB, notNullBB);
1679 cleanupDominator = Builder.CreateUnreachable();
1692 Address result = Builder.CreateElementBitCast(allocation, elementTy);
1700 result = Address(Builder.CreateLaunderInvariantGroup(result.getPointer()),
1723 result = Builder.CreateBitCast(result, resultType);
1737 llvm::BasicBlock *notNullBB = Builder.GetInsertBlock();
1740 llvm::PHINode *PHI = Builder.CreatePHI(resultPtr->getType(), 2);
1768 llvm::Value *DeletePtr = Builder.CreateBitCast(Ptr, ConvertType(ArgTy));
1788 Size = Builder.CreateMul(Size, NumElements);
1792 Size = Builder.CreateAdd(
1999 CGF.Builder.CreateInBoundsGEP(arrayBegin, numElements, "delete.end");
2022 llvm::Value *IsNull = Builder.CreateIsNull(Ptr.getPointer(), "isnull");
2024 Builder.CreateCondBr(IsNull, DeleteEnd, DeleteNotNull);
2041 llvm::Value *Zero = Builder.getInt32(0);
2056 Ptr = Address(Builder.CreateInBoundsGEP(Ptr.getPointer(), GEP, "del.first"),
2131 llvm::Value *IsNull = CGF.Builder.CreateIsNull(ThisPtr.getPointer());
2132 CGF.Builder.CreateCondBr(IsNull, BadTypeidBlock, EndBlock);
2150 return Builder.CreateBitCast(TypeInfo, StdTypeInfoPtrTy);
2163 return Builder.CreateBitCast(CGM.GetAddrOfRTTIDescriptor(OperandTy),
2236 llvm::Value *IsNull = Builder.CreateIsNull(ThisAddr.getPointer());
2237 Builder.CreateCondBr(IsNull, CastNull, CastNotNull);
2250 CastNotNull = Builder.GetInsertBlock();
2263 llvm::PHINode *PHI = Builder.CreatePHI(Value->getType(), 2);
tools/clang/lib/CodeGen/CGExprComplex.cpp 50 : CGF(cgf), Builder(CGF.Builder), IgnoreReal(ir), IgnoreImag(ii) {
335 return Builder.CreateStructGEP(addr, 0, addr.getName() + ".realp");
340 return Builder.CreateStructGEP(addr, 1, addr.getName() + ".imagp");
tools/clang/lib/CodeGen/CGExprScalar.cpp 238 : CGF(cgf), Builder(CGF.Builder), IgnoreResultAssign(ira),
2750 size = CGF.Builder.CreateNUWMul(CGF.CGM.getSize(eltSize), size);
3202 return CGF.Builder.CreateIntToPtr(index, pointer->getType());
3207 index = CGF.Builder.CreateIntCast(index, DL.getIntPtrType(PtrTy), isSigned,
3213 index = CGF.Builder.CreateNeg(index, "idx.neg");
3228 index = CGF.Builder.CreateMul(index, objectSize);
3230 Value *result = CGF.Builder.CreateBitCast(pointer, CGF.VoidPtrTy);
3231 result = CGF.Builder.CreateGEP(result, index, "add.ptr");
3232 return CGF.Builder.CreateBitCast(result, pointer->getType());
3246 index = CGF.Builder.CreateMul(index, numElements, "vla.index");
3247 pointer = CGF.Builder.CreateGEP(pointer, index, "add.ptr");
3249 index = CGF.Builder.CreateNSWMul(index, numElements, "vla.index");
3261 Value *result = CGF.Builder.CreateBitCast(pointer, CGF.VoidPtrTy);
3262 result = CGF.Builder.CreateGEP(result, index, "add.ptr");
3263 return CGF.Builder.CreateBitCast(result, pointer->getType());
3267 return CGF.Builder.CreateGEP(pointer, index, "add.ptr");
3554 divisor = CGF.Builder.CreateNUWMul(CGF.CGM.getSize(eltSize), divisor);
4490 Addr = Builder.CreateElementBitCast(Addr, ConvertType(E->getType()));
4655 Value *GEPVal = Builder.CreateInBoundsGEP(Ptr, IdxList, Name);
4665 Builder.GetInsertBlock()->getParent(), PtrTy->getPointerAddressSpace());
4680 EmitGEPOffsetInBytes(Ptr, GEPVal, getLLVMContext(), CGM, Builder);
4683 EvaluatedGEP.OffsetOverflows == Builder.getFalse()) &&
4696 auto *IntPtr = Builder.CreatePtrToInt(Ptr, IntPtrTy);
4697 auto *ComputedGEP = Builder.CreateAdd(IntPtr, EvaluatedGEP.TotalOffset);
4713 auto *BaseIsNotNullptr = Builder.CreateIsNotNull(Ptr);
4714 auto *ResultIsNotNullptr = Builder.CreateIsNotNull(ComputedGEP);
4717 ? Builder.CreateICmpEQ(BaseIsNotNullptr, ResultIsNotNullptr)
4718 : Builder.CreateAnd(BaseIsNotNullptr, ResultIsNotNullptr);
4728 auto *NoOffsetOverflow = Builder.CreateNot(EvaluatedGEP.OffsetOverflows);
4735 auto *PosOrZeroValid = Builder.CreateICmpUGE(ComputedGEP, IntPtr);
4737 Builder.CreateICmpSGE(EvaluatedGEP.TotalOffset, Zero);
4738 llvm::Value *NegValid = Builder.CreateICmpULT(ComputedGEP, IntPtr);
4740 Builder.CreateSelect(PosOrZeroOffset, PosOrZeroValid, NegValid);
4746 ValidGEP = Builder.CreateICmpUGE(ComputedGEP, IntPtr);
4752 ValidGEP = Builder.CreateICmpULE(ComputedGEP, IntPtr);
4754 ValidGEP = Builder.CreateAnd(ValidGEP, NoOffsetOverflow);
tools/clang/lib/CodeGen/CGGPUBuiltin.cpp 111 llvm::Value *P = Builder.CreateStructGEP(AllocaTy, Alloca, I - 1);
113 Builder.CreateAlignedStore(Arg, P, DL.getPrefTypeAlignment(Arg->getType()));
115 BufferPtr = Builder.CreatePointerCast(Alloca, llvm::Type::getInt8PtrTy(Ctx));
120 return RValue::get(Builder.CreateCall(
tools/clang/lib/CodeGen/CGNonTrivialStruct.cpp 354 CGF.Builder.CreateNUWMul(BaseEltSizeVal, NumElts);
355 Address BC = CGF.Builder.CreateBitCast(DstAddr, CGF.CGM.Int8PtrTy);
357 CGF.Builder.CreateInBoundsGEP(BC.getPointer(), SizeInBytes);
358 DstArrayEnd = CGF.Builder.CreateBitCast(DstArrayEnd, CGF.CGM.Int8PtrPtrTy,
360 llvm::BasicBlock *PreheaderBB = CGF.Builder.GetInsertBlock();
368 PHIs[I] = CGF.Builder.CreatePHI(CGF.CGM.Int8PtrPtrTy, 2, "addr.cur");
379 CGF.Builder.CreateICmpEQ(PHIs[DstIdx], DstArrayEnd, "done");
380 CGF.Builder.CreateCondBr(Done, ExitBB, LoopBB);
396 LoopBB = CGF.Builder.GetInsertBlock();
406 CGF.Builder.CreateBr(HeaderBB);
415 Addr = CGF->Builder.CreateBitCast(Addr, CGF->CGM.Int8PtrTy);
416 Addr = CGF->Builder.CreateConstInBoundsGEP(Addr, Offset.getQuantity());
417 return CGF->Builder.CreateBitCast(Addr, CGF->CGM.Int8PtrPtrTy);
471 llvm::Value *V = CGF->Builder.CreateLoad(CGF->GetAddrOfLocalVar(Args[I]));
489 CallerCGF.Builder.CreateBitCast(Addrs[I], CallerCGF.CGM.Int8PtrPtrTy)
524 this->CGF->Builder.CreateElementBitCast(DstAddr, this->CGF->Int8Ty);
526 this->CGF->Builder.CreateElementBitCast(SrcAddr, this->CGF->Int8Ty);
527 this->CGF->Builder.CreateMemCpy(DstAddr, SrcAddr, SizeVal, false);
532 DstAddr = this->CGF->Builder.CreateElementBitCast(DstAddr, Ty);
533 SrcAddr = this->CGF->Builder.CreateElementBitCast(SrcAddr, Ty);
534 llvm::Value *SrcVal = this->CGF->Builder.CreateLoad(SrcAddr, false);
535 this->CGF->Builder.CreateStore(SrcVal, DstAddr, false);
550 this->CGF->Builder.CreateBitCast(DstAddr, PtrTy), FT);
554 this->CGF->Builder.CreateBitCast(SrcAddr, PtrTy), FT);
558 Address DstAddr = this->CGF->Builder.CreateBitCast(Addrs[DstIdx], Ty);
559 Address SrcAddr = this->CGF->Builder.CreateBitCast(Addrs[SrcIdx], Ty);
655 llvm::Constant *SizeVal = CGF->Builder.getInt64(Size.getQuantity());
657 Address Loc = CGF->Builder.CreateElementBitCast(DstAddr, CGF->Int8Ty);
658 CGF->Builder.CreateMemSet(Loc, CGF->Builder.getInt8(0), SizeVal,
658 CGF->Builder.CreateMemSet(Loc, CGF->Builder.getInt8(0), SizeVal,
809 Address DstPtr = Builder.CreateBitCast(Dst.getAddress(), CGM.Int8PtrPtrTy);
821 Addrs[I] = CGF.Builder.CreateBitCast(Addrs[I], CGF.CGM.Int8PtrPtrTy);
tools/clang/lib/CodeGen/CGObjC.cpp 92 Address BitCast = Builder.CreateBitCast(Temporary, ConvertType(ArgQT));
103 llvm::Value *Cast = Builder.CreateBitCast(GV, ConvertType(EncodingQT));
113 return Builder.CreateBitCast(result.getScalarVal(),
138 return Builder.CreateBitCast(Ptr, ConvertType(E->getType()));
167 LValue LV = MakeAddrLValue(Builder.CreateConstArrayGEP(Objects, i),
178 LValue KeyLV = MakeAddrLValue(Builder.CreateConstArrayGEP(Keys, i),
185 LValue ValueLV = MakeAddrLValue(Builder.CreateConstArrayGEP(Objects, i),
236 return Builder.CreateBitCast(result.getScalarVal(),
277 return RValue::get(CGF.Builder.CreateBitCast(Result.getScalarVal(),
596 Builder.CreateStore(getNullForVariable(selfAddr), selfAddr);
636 newSelf = Builder.CreateBitCast(newSelf, selfTy);
638 Builder.CreateStore(newSelf, selfAddr);
738 Address dest = CGF.Builder.CreateBitCast(CGF.ReturnValue, CGF.VoidPtrTy);
741 src = CGF.Builder.CreateBitCast(src, CGF.VoidPtrTy);
746 args.add(RValue::get(CGF.Builder.getInt1(isAtomic)), Context.BoolTy);
747 args.add(RValue::get(CGF.Builder.getInt1(hasStrong)), Context.BoolTy);
1007 ivarAddr = CGF.Builder.CreateBitCast(ivarAddr, CGF.Int8PtrTy);
1066 ivarAddr = Builder.CreateBitCast(ivarAddr, bitcastType);
1067 llvm::LoadInst *load = Builder.CreateLoad(ivarAddr, "load");
1078 ivarVal = Builder.CreateTrunc(load, newTy);
1081 Builder.CreateStore(ivarVal,
1082 Builder.CreateBitCast(ReturnValue, bitcastType));
1102 Builder.CreateLoad(GetAddrOfLocalVar(getterMethod->getCmdDecl()), "cmd");
1103 llvm::Value *self = Builder.CreateBitCast(LoadObjCSelf(), VoidPtrTy);
1111 args.add(RValue::get(Builder.getInt1(strategy.isAtomic())),
1126 RV = RValue::get(Builder.CreateBitCast(
1183 value = Builder.CreateBitCast(
1210 ivarAddr = CGF.Builder.CreateBitCast(ivarAddr, CGF.Int8PtrTy);
1219 argAddr = CGF.Builder.CreateBitCast(argAddr, CGF.Int8PtrTy);
1228 args.add(RValue::get(CGF.Builder.getTrue()), CGF.getContext().BoolTy);
1232 args.add(RValue::get(CGF.Builder.getFalse()), CGF.getContext().BoolTy);
1256 ivarAddr = CGF.Builder.CreateBitCast(ivarAddr, CGF.Int8PtrTy);
1265 argAddr = CGF.Builder.CreateBitCast(argAddr, CGF.Int8PtrTy);
1351 argAddr = Builder.CreateElementBitCast(argAddr, bitcastType);
1352 ivarAddr = Builder.CreateElementBitCast(ivarAddr, bitcastType);
1355 llvm::Value *load = Builder.CreateLoad(argAddr);
1358 llvm::StoreInst *store = Builder.CreateStore(load, ivarAddr);
1389 Builder.CreateLoad(GetAddrOfLocalVar(setterMethod->getCmdDecl()));
1391 Builder.CreateBitCast(LoadObjCSelf(), VoidPtrTy);
1395 llvm::Value *arg = Builder.CreateLoad(argAddr, "arg");
1396 arg = Builder.CreateBitCast(arg, VoidPtrTy);
1410 args.add(RValue::get(Builder.getInt1(strategy.isAtomic())),
1412 args.add(RValue::get(Builder.getInt1(strategy.isCopy())),
1596 Builder.CreateBitCast(LoadObjCSelf(), Types.ConvertType(IdTy));
1634 DI->EmitLexicalBlockStart(Builder, S.getSourceRange().getBegin());
1721 Builder.CreateCondBr(
1722 Builder.CreateICmpEQ(initialBufferLimit, zero, "iszero"), EmptyBB,
1733 Builder.CreateStructGEP(StatePtr, 2, "mutationsptr.ptr");
1735 = Builder.CreateLoad(StateMutationsPtrPtr, "mutationsptr");
1738 Builder.CreateAlignedLoad(StateMutationsPtr, getPointerAlign(),
1747 llvm::PHINode *index = Builder.CreatePHI(NSUIntegerTy, 3, "forcoll.index");
1751 llvm::PHINode *count = Builder.CreatePHI(NSUIntegerTy, 3, "forcoll.count");
1759 StateMutationsPtr = Builder.CreateLoad(StateMutationsPtrPtr, "mutationsptr");
1761 = Builder.CreateAlignedLoad(StateMutationsPtr, getPointerAlign(),
1767 Builder.CreateCondBr(Builder.CreateICmpEQ(currentMutations, initialMutations),
1767 Builder.CreateCondBr(Builder.CreateICmpEQ(currentMutations, initialMutations),
1773 Builder.CreateBitCast(Collection,
1815 Builder.CreateStructGEP(StatePtr, 1, "stateitems.ptr");
1817 Builder.CreateLoad(StateItemsPtr, "stateitems");
1821 Builder.CreateGEP(EnumStateItems, index, "currentitem.ptr");
1823 Builder.CreateAlignedLoad(CurrentItemPtr, getPointerAlign());
1826 CurrentItem = Builder.CreateBitCast(CurrentItem, convertedElementType,
1862 Builder.CreateAdd(index, llvm::ConstantInt::get(NSUIntegerTy, 1));
1868 Builder.CreateCondBr(
1869 Builder.CreateICmpULT(indexPlusOne, count), LoopBodyBB, FetchMoreBB,
1887 index->addIncoming(zero, Builder.GetInsertBlock());
1888 count->addIncoming(refetchCount, Builder.GetInsertBlock());
1890 Builder.CreateCondBr(Builder.CreateICmpEQ(refetchCount, zero),
1890 Builder.CreateCondBr(Builder.CreateICmpEQ(refetchCount, zero),
1905 DI->EmitLexicalBlockEnd(Builder, S.getSourceRange().getEnd());
1997 value = CGF.Builder.CreateBitCast(value, CGF.Int8PtrTy);
2004 return CGF.Builder.CreateBitCast(call, origType);
2019 addr = CGF.Builder.CreateBitCast(addr, CGF.Int8PtrPtrTy);
2026 result = CGF.Builder.CreateBitCast(result, origType);
2048 CGF.Builder.CreateBitCast(addr.getPointer(), CGF.Int8PtrPtrTy),
2049 CGF.Builder.CreateBitCast(value, CGF.Int8PtrTy)
2055 return CGF.Builder.CreateBitCast(result, origType);
2071 CGF.Builder.CreateBitCast(dst.getPointer(), CGF.Int8PtrPtrTy),
2072 CGF.Builder.CreateBitCast(src.getPointer(), CGF.Int8PtrPtrTy)
2101 value = CGF.Builder.CreateBitCast(value, CGF.Int8PtrTy);
2107 return CGF.Builder.CreateBitCast(Inst, origType);
2151 llvm::MDNode::get(Builder.getContext(), None));
2192 CGF.Builder.CreateCall(marker, None, CGF.getBundlesForFunclet(marker));
2242 value = Builder.CreateBitCast(value, Int8PtrTy);
2249 llvm::MDNode::get(Builder.getContext(), None));
2270 llvm::Value *value = Builder.CreateLoad(addr);
2288 Builder.CreateBitCast(addr.getPointer(), Int8PtrPtrTy),
2289 Builder.CreateBitCast(value, Int8PtrTy)
2374 value = Builder.CreateBitCast(value, Int8PtrTy);
2377 return Builder.CreateBitCast(value, origType);
2425 Builder.CreateStore(value, addr);
2444 addr = Builder.CreateBitCast(addr, Int8PtrPtrTy);
2505 llvm::FunctionType::get(Builder.getVoidTy(), Int8PtrTy, false);
2606 llvm::Value *value = CGF.Builder.CreateLoad(addr);
2639 llvm::FunctionType::get(Builder.getVoidTy(), Int8PtrTy, false);
2648 value = Builder.CreateBitCast(value, Int8PtrTy);
2655 llvm::MDNode::get(Builder.getContext(), None));
2773 CGBuilderTy::InsertPoint ip = CGF.Builder.saveIP();
2776 CGF.Builder.SetInsertPoint(call->getParent(),
2780 CGF.Builder.restoreIP(ip);
2783 CGBuilderTy::InsertPoint ip = CGF.Builder.saveIP();
2787 CGF.Builder.SetInsertPoint(BB, BB->begin());
2790 CGF.Builder.restoreIP(ip);
3143 value = CGF.Builder.CreateBitCast(value, resultType);
3320 return CGF.Builder.CreateBitCast(value, resultType);
3445 DI->EmitLexicalBlockStart(Builder, S.getLBracLoc());
3461 DI->EmitLexicalBlockEnd(Builder, S.getRBracLoc());
3475 object = Builder.CreateBitCast(object, VoidPtrTy);
3711 return Builder.CreateICmpNE(CallRes, llvm::Constant::getNullValue(Int32Ty));
3745 CGF.Builder.SetInsertPoint(CGF.createBasicBlock("", CFLinkCheckFunc));
3748 CGF.Builder.CreateUnreachable();
tools/clang/lib/CodeGen/CGObjCGNU.cpp 689 CGBuilderTy &Builder = CGF.Builder;
700 CGBuilderTy &Builder = CGF.Builder;
751 CGBuilderTy &Builder = CGF.Builder;
792 CGBuilderTy &Builder = CGF.Builder;
1199 CGBuilderTy &Builder = CGF.Builder;
1254 return CGF.Builder.CreateLoad(Address(GetClassVar(Name, isWeak),
1325 return CGF.Builder.CreateAlignedLoad(Ref, CGM.getPointerAlign());
1682 llvm::Value *Offset = CGF.Builder.CreateAlignedLoad(IvarOffsetPointer, Align);
1684 Offset = CGF.Builder.CreateZExtOrBitCast(Offset, PtrDiffTy);
2040 CGBuilderTy &Builder = CGF.Builder;
2057 CGBuilderTy &Builder = CGF.Builder;
2345 CGF.Builder.CreateStore(SelValue, tmp);
2503 CGBuilderTy &Builder = CGF.Builder;
2621 CGBuilderTy &Builder = CGF.Builder;
2729 messageBB = CGF.Builder.GetInsertBlock();
2730 CGF.Builder.CreateBr(continueBB);
3038 return CGF.Builder.CreateBitCast(protocol, llvm::PointerType::getUnqual(T));
3958 ExceptionAsObject = CGF.Builder.CreateBitCast(ExceptionAsObject, IdTy);
3963 CGF.Builder.CreateUnreachable();
3965 CGF.Builder.ClearInsertionPoint();
3970 CGBuilderTy &B = CGF.Builder;
3977 CGBuilderTy &B = CGF.Builder;
3986 CGBuilderTy &B = CGF.Builder;
3997 CGBuilderTy &B = CGF.Builder;
4005 CGBuilderTy &B = CGF.Builder;
4015 CGBuilderTy &B = CGF.Builder;
4075 return CGF.Builder.CreateZExtOrBitCast(
4076 CGF.Builder.CreateAlignedLoad(
4077 Int32Ty, CGF.Builder.CreateAlignedLoad(
4093 Offset = CGF.Builder.CreateAlignedLoad(Offset, Align);
4095 Offset = CGF.Builder.CreateZExtOrBitCast(Offset, PtrDiffTy);
tools/clang/lib/CodeGen/CGObjCMac.cpp 1718 llvm::Value *isNull = CGF.Builder.CreateIsNull(receiver);
1719 CGF.Builder.CreateCondBr(isNull, NullBB, callBB);
1741 llvm::BasicBlock *callBB = CGF.Builder.GetInsertBlock();
1744 CGF.Builder.CreateBr(contBB);
1766 assert(CGF.Builder.GetInsertBlock() == NullBB);
1785 llvm::PHINode *phi = CGF.Builder.CreatePHI(null->getType(), 2);
1812 llvm::PHINode *real = CGF.Builder.CreatePHI(scalarTy, 2);
1815 llvm::PHINode *imag = CGF.Builder.CreatePHI(scalarTy, 2);
2068 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy);
2069 CGF.Builder.CreateStore(ReceiverAsObject,
2070 CGF.Builder.CreateStructGEP(ObjCSuper, 0));
2083 Target = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, Target, 0);
2084 Target = CGF.Builder.CreateAlignedLoad(Target, CGF.getPointerAlign());
2088 CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, MetaClassPtr, 1);
2090 CGF.Builder.CreateAlignedLoad(SuperPtr, CGF.getPointerAlign());
2097 ClassPtr = CGF.Builder.CreateStructGEP(ObjCTypes.ClassTy, ClassPtr, 1);
2098 Target = CGF.Builder.CreateAlignedLoad(ClassPtr, CGF.getPointerAlign());
2104 Target = CGF.Builder.CreateBitCast(Target, ClassTy);
2105 CGF.Builder.CreateStore(Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1));
2105 CGF.Builder.CreateStore(Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1));
2150 Arg0 = CGF.Builder.CreateBitCast(Arg0, ObjCTypes.ObjectPtrTy);
2214 CGF.Builder.CreateBitCast(Fn.getCallee(), MSI.MessengerType));
3025 CGF.Builder.CreateBitCast(className,
3028 llvm::CallInst *call = CGF.Builder.CreateCall(lookUpClassFn, className);
4141 CGF.Builder.CreateCondBr(CGF.Builder.CreateLoad(CallTryExitVar),
4141 CGF.Builder.CreateCondBr(CGF.Builder.CreateLoad(CallTryExitVar),
4159 CGF.Builder.CreateLoad(CGF.getNormalCleanupDestSlot());
4164 CGF.Builder.CreateStore(CurCleanupDest,
4174 llvm::Value *SyncArg = CGF.Builder.CreateLoad(SyncArgSlot);
4464 SyncArg = CGF.Builder.CreateBitCast(SyncArg, ObjCTypes.ObjectPtrTy);
4469 CGF.Builder.CreateStore(SyncArg, SyncArgSlot);
4492 Address CallTryExitVar = CGF.CreateTempAlloca(CGF.Builder.getInt1Ty(),
4514 llvm::Constant *Zero = llvm::ConstantInt::get(CGF.Builder.getInt32Ty(), 0);
4516 llvm::Value *SetJmpBuffer = CGF.Builder.CreateGEP(
4528 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception");
4529 CGF.Builder.CreateCondBr(DidCatch, TryHandler, TryBlock);
4533 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar);
4533 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar);
4537 CGBuilderTy::InsertPoint TryFallthroughIP = CGF.Builder.saveAndClearIP();
4549 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar);
4549 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar);
4576 CGF.Builder.CreateStore(Caught, PropagatingExnVar);
4589 CGF.Builder.CreateIsNotNull(SetJmpResult, "did_catch_exception");
4593 CGF.Builder.CreateCondBr(Threw, CatchHandler, CatchBlock);
4598 CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar);
4598 CGF.Builder.CreateStore(CGF.Builder.getInt1(HasFinally), CallTryExitVar);
4663 CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"),
4663 CGF.Builder.CreateCondBr(CGF.Builder.CreateIsNotNull(Match, "matched"),
4678 CGF.Builder.CreateBitCast(Caught,
4717 CGF.Builder.CreateStore(NewCaught, PropagatingExnVar);
4720 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar);
4720 CGF.Builder.CreateStore(CGF.Builder.getFalse(), CallTryExitVar);
4729 CGF.Builder.restoreIP(TryFallthroughIP);
4731 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar);
4731 CGF.Builder.CreateStore(CGF.Builder.getTrue(), CallTryExitVar);
4736 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP();
4742 PropagatingExn = CGF.Builder.CreateLoad(PropagatingExnVar);
4754 CGF.Builder.CreateUnreachable();
4757 CGF.Builder.restoreIP(SavedIP);
4768 CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy);
4777 CGF.Builder.CreateUnreachable();
4781 CGF.Builder.ClearInsertionPoint();
4790 AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj,
4795 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy);
4808 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty)
4809 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty);
4810 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
4812 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
4813 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy);
4829 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty)
4830 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty);
4831 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
4833 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
4834 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy);
4855 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty)
4856 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty);
4857 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
4859 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
4860 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy);
4874 src = (Size == 4) ? CGF.Builder.CreateBitCast(src, CGM.Int32Ty)
4875 : CGF.Builder.CreateBitCast(src, CGM.Int64Ty);
4876 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
4878 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
4879 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy);
4889 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy);
4890 DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy);
5100 return CGF.Builder.CreateAlignedLoad(Entry, CGF.getPointerAlign());
5121 return CGF.Builder.CreateLoad(EmitSelectorAddr(CGF, Sel));
6522 return CGF.Builder.CreateAlignedLoad(PTGV, Align);
6533 return CGF.Builder.CreateAlignedLoad(PTGV, Align);
7073 CGF.Builder.CreateAlignedLoad(GV, CGF.getSizeAlign(), "ivar");
7084 IvarOffsetValue = CGF.Builder.CreateIntCast(
7127 arg0 = CGF.Builder.CreateBitCast(arg0, ObjCTypes.ObjectPtrTy);
7205 Address(CGF.Builder.CreateBitCast(messageRef, ObjCTypes.MessageRefPtrTy),
7212 Address calleeAddr = CGF.Builder.CreateStructGEP(mref, 0);
7213 llvm::Value *calleePtr = CGF.Builder.CreateLoad(calleeAddr, "msgSend_fn");
7215 calleePtr = CGF.Builder.CreateBitCast(calleePtr, MSI.MessengerType);
7314 return CGF.Builder.CreateAlignedLoad(Entry, Align);
7408 return CGF.Builder.CreateAlignedLoad(Entry, Align);
7447 CGF.Builder.CreateBitCast(Receiver, ObjCTypes.ObjectPtrTy);
7448 CGF.Builder.CreateStore(ReceiverAsObject,
7449 CGF.Builder.CreateStructGEP(ObjCSuper, 0));
7462 Target = CGF.Builder.CreateBitCast(Target, ClassTy);
7463 CGF.Builder.CreateStore(Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1));
7463 CGF.Builder.CreateStore(Target, CGF.Builder.CreateStructGEP(ObjCSuper, 1));
7479 llvm::LoadInst* LI = CGF.Builder.CreateLoad(Addr);
7520 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
7521 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
7522 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
7524 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
7525 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy);
7540 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
7541 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
7542 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
7544 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
7545 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy);
7556 SrcPtr = CGF.Builder.CreateBitCast(SrcPtr, ObjCTypes.Int8PtrTy);
7557 DestPtr = CGF.Builder.CreateBitCast(DestPtr, ObjCTypes.Int8PtrTy);
7569 AddrWeakObj = CGF.Builder.CreateBitCast(AddrWeakObj, ObjCTypes.PtrObjectPtrTy);
7573 read_weak = CGF.Builder.CreateBitCast(read_weak, DestTy);
7586 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
7587 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
7588 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
7590 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
7591 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy);
7607 src = (Size == 4 ? CGF.Builder.CreateBitCast(src, ObjCTypes.IntTy)
7608 : CGF.Builder.CreateBitCast(src, ObjCTypes.LongTy));
7609 src = CGF.Builder.CreateIntToPtr(src, ObjCTypes.Int8PtrTy);
7611 src = CGF.Builder.CreateBitCast(src, ObjCTypes.ObjectPtrTy);
7612 dst = CGF.Builder.CreateBitCast(dst, ObjCTypes.PtrObjectPtrTy);
7668 Exception = CGF.Builder.CreateBitCast(Exception, ObjCTypes.ObjectPtrTy);
7678 CGF.Builder.CreateUnreachable();
7680 CGF.Builder.ClearInsertionPoint();
tools/clang/lib/CodeGen/CGObjCRuntime.cpp 65 llvm::Value *V = CGF.Builder.CreateBitCast(BaseValue, CGF.Int8PtrTy);
66 V = CGF.Builder.CreateInBoundsGEP(V, Offset, "add.ptr");
69 V = CGF.Builder.CreateBitCast(V, llvm::PointerType::getUnqual(LTy));
109 Addr = CGF.Builder.CreateElementBitCast(Addr,
223 CGBuilderTy::InsertPoint SavedIP = CGF.Builder.saveAndClearIP();
258 llvm::Value *CastExn = CGF.Builder.CreateBitCast(Exn, CatchType);
277 CGF.Builder.restoreIP(SavedIP);
301 CGF.Builder.CreateStore(exn, paramAddr);
340 lock = CGF.Builder.CreateBitCast(lock, CGF.VoidPtrTy);
343 CGF.Builder.CreateCall(syncEnterFn, lock)->setDoesNotThrow();
tools/clang/lib/CodeGen/CGOpenMPRuntime.cpp 152 UntiedSwitch = CGF.Builder.CreateSwitch(Res, DoneBB);
156 UntiedSwitch->addCase(CGF.Builder.getInt32(0),
157 CGF.Builder.GetInsertBlock());
166 CGF.EmitStoreOfScalar(CGF.Builder.getInt32(UntiedSwitch->getNumCases()),
173 UntiedSwitch->addCase(CGF.Builder.getInt32(UntiedSwitch->getNumCases()),
174 CGF.Builder.GetInsertBlock());
871 CGF.Builder.CreateElementBitCast(DestAddr, DestAddr.getElementType());
874 CGF.Builder.CreateElementBitCast(SrcAddr, DestAddr.getElementType());
881 llvm::Value *DestEnd = CGF.Builder.CreateGEP(DestBegin, NumElements);
886 CGF.Builder.CreateICmpEQ(DestBegin, DestEnd, "omp.arrayinit.isempty");
887 CGF.Builder.CreateCondBr(IsEmpty, DoneBB, BodyBB);
890 llvm::BasicBlock *EntryBB = CGF.Builder.GetInsertBlock();
898 SrcElementPHI = CGF.Builder.CreatePHI(SrcBegin->getType(), 2,
905 llvm::PHINode *DestElementPHI = CGF.Builder.CreatePHI(
925 llvm::Value *SrcElementNext = CGF.Builder.CreateConstGEP1_32(
927 SrcElementPHI->addIncoming(SrcElementNext, CGF.Builder.GetInsertBlock());
931 llvm::Value *DestElementNext = CGF.Builder.CreateConstGEP1_32(
935 CGF.Builder.CreateICmpEQ(DestElementNext, DestEnd, "omp.arraycpy.done");
936 CGF.Builder.CreateCondBr(Done, DoneBB, BodyBB);
937 DestElementPHI->addIncoming(DestElementNext, CGF.Builder.GetInsertBlock());
1014 Size = CGF.Builder.CreatePtrDiff(SharedAddresses[N].second.getPointer(),
1016 Size = CGF.Builder.CreateNUWAdd(
1018 SizeInChars = CGF.Builder.CreateNUWMul(Size, ElemSizeOf);
1022 Size = CGF.Builder.CreateExactUDiv(SizeInChars, ElemSizeOf);
1061 PrivateAddr = CGF.Builder.CreateElementBitCast(
1065 CGF.Builder.CreateElementBitCast(SharedLVal.getAddress(),
1098 PrivateAddr = CGF.Builder.CreateElementBitCast(
1118 CGF.Builder.CreateElementBitCast(BaseLV.getAddress(),
1135 CGF.Builder.CreateStore(Tmp.getPointer(), TopTmp);
1144 Addr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(Addr, Ty);
1146 CGF.Builder.CreateStore(Addr, Tmp);
1181 llvm::Value *Adjustment = CGF.Builder.CreatePtrDiff(
1184 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
1187 llvm::Value *Ptr = CGF.Builder.CreateGEP(PrivatePointer, Adjustment);
1608 Undef, CGF.Int32Ty, "svcpt", CGF.Builder.GetInsertBlock());
1653 CGBuilderTy::InsertPointGuard IPG(CGF.Builder);
1654 CGF.Builder.SetInsertPoint(Elem.second.ServiceInsertPt);
1655 CGF.Builder.CreateMemCpy(LocValue, getOrCreateDefaultLocation(Flags),
1675 OMPDebugLoc = CGF.Builder.CreateGlobalStringPtr(OS2.str());
1708 CGF.Builder.GetInsertBlock() == TopBlock ||
1712 CGF.Builder.GetInsertBlock()) {
1716 if (CGF.Builder.GetInsertBlock() == TopBlock) {
1732 CGBuilderTy::InsertPointGuard IPG(CGF.Builder);
1733 CGF.Builder.SetInsertPoint(Elem.second.ServiceInsertPt);
1734 llvm::CallInst *Call = CGF.Builder.CreateCall(
2728 CGF.Builder.CreatePointerCast(VDAddr.getPointer(),
2748 OMPLoc, CGF.Builder.CreatePointerCast(VDAddr.getPointer(), CGM.VoidPtrTy),
2789 Arg = CtorCGF.Builder.CreateElementBitCast(
2796 CtorCGF.Builder.CreateStore(ArgVal, CtorCGF.ReturnValue);
2998 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(GAddr, CGM.VoidPtrTy),
2999 CGF.Builder.CreateIntCast(CGF.getTypeSize(VarType), CGM.SizeTy,
3004 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
3063 CGF.Builder.getInt32(CapturedVars.size()), // Number of captured vars
3064 CGF.Builder.CreateBitCast(OutlinedFn, RT.getKmpc_MicroPointerTy())};
3088 CGF.InitTempAlloca(ZeroAddrBound, CGF.Builder.getInt32(/*C*/ 0));
3179 llvm::Value *CallBool = CGF.Builder.CreateIsNotNull(EnterRes);
3183 CGF.Builder.CreateCondBr(CallBool, ThenBlock, ContBlock);
3213 EnterArgs.push_back(CGF.Builder.CreateIntCast(
3278 Address PtrAddr = CGF.Builder.CreateConstArrayGEP(Array, Index);
3279 llvm::Value *Ptr = CGF.Builder.CreateLoad(PtrAddr);
3282 Addr = CGF.Builder.CreateElementBitCast(
3314 Address LHS(CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
3315 CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(&LHSArg)),
3317 Address RHS(CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
3318 CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(&RHSArg)),
3369 CGF.Builder.CreateStore(CGF.Builder.getInt32(0), DidIt);
3369 CGF.Builder.CreateStore(CGF.Builder.getInt32(0), DidIt);
3380 CGF.Builder.CreateStore(CGF.Builder.getInt32(1), DidIt);
3380 CGF.Builder.CreateStore(CGF.Builder.getInt32(1), DidIt);
3394 Address Elem = CGF.Builder.CreateConstArrayGEP(CopyprivateList, I);
3395 CGF.Builder.CreateStore(
3396 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
3407 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(CopyprivateList,
3409 llvm::Value *DidItVal = CGF.Builder.CreateLoad(DidIt);
3499 llvm::Value *Cmp = CGF.Builder.CreateIsNotNull(Result);
3500 CGF.Builder.CreateCondBr(Cmp, ExitBB, ContBB);
3644 : CGF.Builder.getIntN(IVSize, 1);
3648 CGF.Builder.getInt32(addMonoNonMonoModifier(
3652 CGF.Builder.getIntN(IVSize, 1), // Stride
3684 Chunk = CGF.Builder.getIntN(Values.IVSize, 1);
3695 CGF.Builder.getInt32(addMonoNonMonoModifier(CGF.CGM, Schedule, M1,
3701 CGF.Builder.getIntN(Values.IVSize, 1), // Incr
3804 CGF.Builder.CreateIntCast(NumThreads, CGF.Int32Ty, /*isSigned*/ true)};
4544 llvm::Value *SharedsParam = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4552 PrivatesParam = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4560 CGF.Builder
4592 CGF.EmitStoreThroughLValue(RValue::get(CGF.Builder.getInt32(/*C=*/0)),
4772 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5046 TaskPrivatesMap = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5082 ? CGF.Builder.CreateSelect(Data.Final.getPointer(),
5083 CGF.Builder.getInt32(FinalFlag),
5084 CGF.Builder.getInt32(/*C=*/0))
5085 : CGF.Builder.getInt32(Data.Final.getInt() ? FinalFlag : 0);
5086 TaskFlags = CGF.Builder.CreateOr(TaskFlags, CGF.Builder.getInt32(Flags));
5086 TaskFlags = CGF.Builder.CreateOr(TaskFlags, CGF.Builder.getInt32(Flags));
5090 SharedsSize, CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5101 DeviceID = CGF.Builder.CreateIntCast(CGF.EmitScalarExpr(Device),
5104 DeviceID = CGF.Builder.getInt64(OMP_DEVICEID_UNDEF);
5113 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5161 CGF.EmitStoreOfScalar(CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5237 CGF.Builder.CreateConstGEP1_32(UpAddrLVal.getPointer(), /*Idx0=*/1);
5239 CGF.Builder.CreatePtrToInt(Addr.getPointer(), CGM.SizeTy);
5240 llvm::Value *UpIntPtr = CGF.Builder.CreatePtrToInt(UpAddr, CGM.SizeTy);
5241 Size = CGF.Builder.CreateNUWSub(UpIntPtr, LowIntPtr);
5246 CGF.Builder.CreateConstArrayGEP(DependenciesArray, I),
5252 CGF.Builder.CreatePtrToInt(Addr.getPointer(), CGF.IntPtrTy),
5282 DependenciesArray = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5283 CGF.Builder.CreateConstArrayGEP(DependenciesArray, 0), CGF.VoidPtrTy);
5300 DepTaskArgs[3] = CGF.Builder.getInt32(NumDependencies);
5302 DepTaskArgs[5] = CGF.Builder.getInt32(0);
5311 CGF.EmitStoreOfScalar(CGF.Builder.getInt32(0), PartIdLVal);
5330 DepWaitTaskArgs[2] = CGF.Builder.getInt32(NumDependencies);
5332 DepWaitTaskArgs[4] = CGF.Builder.getInt32(0);
5395 IfVal = CGF.Builder.CreateIntCast(CGF.EvaluateExprAsBool(IfCond), CGF.IntTy,
5448 ? CGF.Builder.CreateIntCast(Data.Schedule.getPointer(), CGF.Int64Ty,
5451 Result.TaskDupFn ? CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5485 llvm::Value *LHSEnd = CGF.Builder.CreateGEP(LHSBegin, NumElements);
5490 CGF.Builder.CreateICmpEQ(LHSBegin, LHSEnd, "omp.arraycpy.isempty");
5491 CGF.Builder.CreateCondBr(IsEmpty, DoneBB, BodyBB);
5494 llvm::BasicBlock *EntryBB = CGF.Builder.GetInsertBlock();
5499 llvm::PHINode *RHSElementPHI = CGF.Builder.CreatePHI(
5506 llvm::PHINode *LHSElementPHI = CGF.Builder.CreatePHI(
5522 llvm::Value *LHSElementNext = CGF.Builder.CreateConstGEP1_32(
5524 llvm::Value *RHSElementNext = CGF.Builder.CreateConstGEP1_32(
5528 CGF.Builder.CreateICmpEQ(LHSElementNext, LHSEnd, "omp.arraycpy.done");
5529 CGF.Builder.CreateCondBr(Done, DoneBB, BodyBB);
5530 LHSElementPHI->addIncoming(LHSElementNext, CGF.Builder.GetInsertBlock());
5531 RHSElementPHI->addIncoming(RHSElementNext, CGF.Builder.GetInsertBlock());
5585 Address LHS(CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5586 CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(&LHSArg)),
5588 Address RHS(CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5589 CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(&RHSArg)),
5613 Address Elem = CGF.Builder.CreateConstArrayGEP(LHS, Idx);
5614 llvm::Value *Ptr = CGF.Builder.CreateLoad(Elem);
5619 CGF, OVE, RValue::get(CGF.Builder.CreatePtrToInt(Ptr, CGF.SizeTy)));
5751 Address Elem = CGF.Builder.CreateConstArrayGEP(ReductionList, Idx);
5752 CGF.Builder.CreateStore(
5753 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5759 Elem = CGF.Builder.CreateConstArrayGEP(ReductionList, Idx);
5760 llvm::Value *Size = CGF.Builder.CreateIntCast(
5765 CGF.Builder.CreateStore(CGF.Builder.CreateIntToPtr(Size, CGF.VoidPtrTy),
5765 CGF.Builder.CreateStore(CGF.Builder.CreateIntToPtr(Size, CGF.VoidPtrTy),
5784 llvm::Value *RL = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
5789 CGF.Builder.getInt32(RHSExprs.size()), // i32 <n>
5803 CGF.Builder.CreateSwitch(Res, DefaultBB, /*NumCases=*/2);
5812 SwInst->addCase(CGF.Builder.getInt32(1), Case1BB);
5852 SwInst->addCase(CGF.Builder.getInt32(2), Case2BB);
6115 return CGF.Builder.CreateElementBitCast(
6123 return CGF.Builder.CreateElementBitCast(
6247 SizeValInChars = CGF.Builder.CreateIntCast(SizeValInChars, CGM.SizeTy,
6282 CGF.Builder.CreateIntCast(getThreadID(CGF, Loc), CGM.IntTy,
6285 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(TaskRedInput.getPointer(),
6299 llvm::Value *SizeVal = CGF.Builder.CreateIntCast(Sizes.second, CGM.SizeTy,
6304 CGF.Builder.CreateStore(SizeVal, SizeAddr, /*IsVolatile=*/false);
6311 CGF.Builder.CreateStore(
6312 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
6325 CGF.Builder.CreateIntCast(getThreadID(CGF, Loc), CGM.IntTy,
6328 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(SharedLVal.getPointer(),
6398 CGF.Builder.getInt32(getCancellationKind(CancelRegion))};
6407 llvm::Value *Cmp = CGF.Builder.CreateIsNotNull(Result);
6408 CGF.Builder.CreateCondBr(Cmp, ExitBB, ContBB);
6433 CGF.Builder.getInt32(getCancellationKind(CancelRegion))};
6442 llvm::Value *Cmp = CGF.Builder.CreateIsNotNull(Result);
6443 CGF.Builder.CreateCondBr(Cmp, ExitBB, ContBB);
6610 CGBuilderTy &Bld = CGF.Builder;
6744 return CGF.Builder.getInt32(1);
6785 NumThreads = CGF.Builder.CreateIntCast(NumThreads, CGF.Int32Ty,
6788 NumThreads = CGF.Builder.CreateSelect(
6789 CGF.Builder.CreateICmpULT(DefaultThreadLimitVal, NumThreads),
6793 : CGF.Builder.getInt32(0);
6797 NumThreads = CGF.Builder.CreateSelect(CondVal, NumThreads,
6798 CGF.Builder.getInt32(1));
6803 return CGF.Builder.getInt32(1);
6807 : CGF.Builder.getInt32(0);
6827 CGBuilderTy &Bld = CGF.Builder;
7211 return CGF.Builder.CreateNUWMul(LengthVal, ElemSize);
7221 LBVal = CGF.Builder.CreateNUWMul(LBVal, ElemSize);
7222 llvm::Value *Cmp = CGF.Builder.CreateICmpUGT(LengthVal, LBVal);
7223 llvm::Value *TrueVal = CGF.Builder.CreateNUWSub(LengthVal, LBVal);
7224 LengthVal = CGF.Builder.CreateSelect(
7632 Address HB = CGF.Builder.CreateConstGEP(
7633 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(LB,
7659 Size = CGF.Builder.CreatePtrDiff(
7667 Sizes.push_back(CGF.Builder.CreateIntCast(Size, CGF.Int64Ty,
7670 LB = CGF.Builder.CreateConstGEP(ComponentLB, 1);
7674 Size = CGF.Builder.CreatePtrDiff(
7676 CGF.Builder.CreateConstGEP(HB, 1).getPointer()),
7679 CGF.Builder.CreateIntCast(Size, CGF.Int64Ty, /*isSigned=*/true));
7688 CGF.Builder.CreateIntCast(Size, CGF.Int64Ty, /*isSigned=*/true));
7890 llvm::Value *HAddr = CGF.Builder.CreateConstGEP1_32(HB, /*Idx0=*/1);
7891 llvm::Value *CLAddr = CGF.Builder.CreatePointerCast(LB, CGF.VoidPtrTy);
7892 llvm::Value *CHAddr = CGF.Builder.CreatePointerCast(HAddr, CGF.VoidPtrTy);
7893 llvm::Value *Diff = CGF.Builder.CreatePtrDiff(CHAddr, CLAddr);
7894 llvm::Value *Size = CGF.Builder.CreateIntCast(Diff, CGF.Int64Ty,
8188 CGF.Builder.CreateIntCast(CGF.getTypeSize(CGF.getContext().VoidPtrTy),
8207 Sizes.push_back(CGF.Builder.CreateIntCast(
8275 CGF.Builder.CreateIntCast(CGF.getTypeSize(CGF.getContext().VoidPtrTy),
8479 CGF.Builder.CreateIntCast(CGF.getTypeSize(PtrTy->getPointeeType()),
8490 CurSizes.push_back(CGF.Builder.CreateIntCast(
8506 CurSizes.push_back(CGF.Builder.CreateIntCast(
8519 CGF.Builder.CreateMemCpy(
8621 llvm::ConstantDataArray::get(CGF.Builder.getContext(), Mapping);
8633 llvm::Value *BP = CGF.Builder.CreateConstInBoundsGEP2_32(
8636 BP = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
8639 CGF.Builder.CreateStore(BPVal, BPAddr);
8646 llvm::Value *P = CGF.Builder.CreateConstInBoundsGEP2_32(
8649 P = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
8652 CGF.Builder.CreateStore(PVal, PAddr);
8655 llvm::Value *S = CGF.Builder.CreateConstInBoundsGEP2_32(
8661 CGF.Builder.CreateStore(
8662 CGF.Builder.CreateIntCast(Sizes[I], CGM.Int64Ty, /*isSigned=*/true),
8677 BasePointersArrayArg = CGF.Builder.CreateConstInBoundsGEP2_32(
8681 PointersArrayArg = CGF.Builder.CreateConstInBoundsGEP2_32(
8686 SizesArrayArg = CGF.Builder.CreateConstInBoundsGEP2_32(
8689 MapTypesArrayArg = CGF.Builder.CreateConstInBoundsGEP2_32(
8879 llvm::Value *PtrBegin = MapperCGF.Builder.CreateBitCast(
8882 llvm::Value *PtrEnd = MapperCGF.Builder.CreateGEP(PtrBegin, Size);
8911 MapperCGF.Builder.CreateICmpEQ(PtrBegin, PtrEnd, "omp.arraymap.isempty");
8912 MapperCGF.Builder.CreateCondBr(IsEmpty, DoneBB, BodyBB);
8913 llvm::BasicBlock *EntryBB = MapperCGF.Builder.GetInsertBlock();
8917 llvm::PHINode *PtrPHI = MapperCGF.Builder.CreatePHI(
8946 llvm::Value *ShiftedPreviousSize = MapperCGF.Builder.CreateShl(
8948 MapperCGF.Builder.getInt64(MappableExprsHandler::getFlagMemberOffset()));
8952 llvm::Value *CurBaseArg = MapperCGF.Builder.CreateBitCast(
8954 llvm::Value *CurBeginArg = MapperCGF.Builder.CreateBitCast(
8961 llvm::Value *OriMapType = MapperCGF.Builder.getInt64(MapTypes[I]);
8962 llvm::Value *Member = MapperCGF.Builder.CreateAnd(
8964 MapperCGF.Builder.getInt64(MappableExprsHandler::OMP_MAP_MEMBER_OF));
8968 llvm::Value *IsMember = MapperCGF.Builder.CreateIsNull(Member);
8969 MapperCGF.Builder.CreateCondBr(IsMember, TypeBB, MemberCombineBB);
8974 MapperCGF.Builder.CreateNUWAdd(OriMapType, ShiftedPreviousSize);
8978 MapperCGF.Builder.CreatePHI(CGM.Int64Ty, 4, "omp.membermaptype");
8994 llvm::Value *LeftToFrom = MapperCGF.Builder.CreateAnd(
8996 MapperCGF.Builder.getInt64(MappableExprsHandler::OMP_MAP_TO |
9005 llvm::Value *IsAlloc = MapperCGF.Builder.CreateIsNull(LeftToFrom);
9006 MapperCGF.Builder.CreateCondBr(IsAlloc, AllocBB, AllocElseBB);
9009 llvm::Value *AllocMapType = MapperCGF.Builder.CreateAnd(
9011 MapperCGF.Builder.getInt64(~(MappableExprsHandler::OMP_MAP_TO |
9013 MapperCGF.Builder.CreateBr(EndBB);
9015 llvm::Value *IsTo = MapperCGF.Builder.CreateICmpEQ(
9017 MapperCGF.Builder.getInt64(MappableExprsHandler::OMP_MAP_TO));
9018 MapperCGF.Builder.CreateCondBr(IsTo, ToBB, ToElseBB);
9021 llvm::Value *ToMapType = MapperCGF.Builder.CreateAnd(
9023 MapperCGF.Builder.getInt64(~MappableExprsHandler::OMP_MAP_FROM));
9024 MapperCGF.Builder.CreateBr(EndBB);
9026 llvm::Value *IsFrom = MapperCGF.Builder.CreateICmpEQ(
9028 MapperCGF.Builder.getInt64(MappableExprsHandler::OMP_MAP_FROM));
9029 MapperCGF.Builder.CreateCondBr(IsFrom, FromBB, EndBB);
9032 llvm::Value *FromMapType = MapperCGF.Builder.CreateAnd(
9034 MapperCGF.Builder.getInt64(~MappableExprsHandler::OMP_MAP_TO));
9038 MapperCGF.Builder.CreatePHI(CGM.Int64Ty, 4, "omp.maptype");
9057 llvm::Value *PtrNext = MapperCGF.Builder.CreateConstGEP1_32(
9061 MapperCGF.Builder.CreateICmpEQ(PtrNext, PtrEnd, "omp.arraymap.isdone");
9063 MapperCGF.Builder.CreateCondBr(IsDone, ExitBB, BodyBB);
9097 llvm::Value *IsArray = MapperCGF.Builder.CreateICmpSGE(
9098 Size, MapperCGF.Builder.getInt64(1), "omp.arrayinit.isarray");
9099 MapperCGF.Builder.CreateCondBr(IsArray, IsDeleteBB, ExitBB);
9103 llvm::Value *DeleteBit = MapperCGF.Builder.CreateAnd(
9105 MapperCGF.Builder.getInt64(MappableExprsHandler::OMP_MAP_DELETE));
9108 DeleteCond = MapperCGF.Builder.CreateIsNull(
9111 DeleteCond = MapperCGF.Builder.CreateIsNotNull(
9114 MapperCGF.Builder.CreateCondBr(DeleteCond, BodyBB, ExitBB);
9119 llvm::Value *ArraySize = MapperCGF.Builder.CreateNUWMul(
9120 Size, MapperCGF.Builder.getInt64(ElementSize.getQuantity()));
9123 llvm::Value *MapTypeArg = MapperCGF.Builder.CreateAnd(
9125 MapperCGF.Builder.getInt64(~(MappableExprsHandler::OMP_MAP_TO |
9201 DeviceID = CGF.Builder.CreateIntCast(CGF.EmitScalarExpr(Device),
9204 DeviceID = CGF.Builder.getInt64(OMP_DEVICEID_UNDEF);
9209 CGF.Builder.getInt32(InputInfo.NumberOfTargetItems);
9288 llvm::Value *Failed = CGF.Builder.CreateIsNotNull(Return);
9289 CGF.Builder.CreateCondBr(Failed, OffloadFailedBlock, OffloadContBlock);
9342 CurSizes.push_back(CGF.Builder.CreateIntCast(
9909 CGF.Builder.getInt32(CapturedVars.size()), // Number of captured vars
9910 CGF.Builder.CreateBitCast(OutlinedFn, getKmpc_MicroPointerTy())};
9930 ? CGF.Builder.CreateIntCast(CGF.EmitScalarExpr(NumTeams),
9932 : CGF.Builder.getInt32(0);
9936 ? CGF.Builder.CreateIntCast(CGF.EmitScalarExpr(ThreadLimit),
9938 : CGF.Builder.getInt32(0);
9985 DeviceID = CGF.Builder.CreateIntCast(CGF.EmitScalarExpr(Device),
9988 DeviceID = CGF.Builder.getInt64(OMP_DEVICEID_UNDEF);
9992 llvm::Value *PointerNum = CGF.Builder.getInt32(Info.NumberOfPtrs);
10021 DeviceID = CGF.Builder.CreateIntCast(CGF.EmitScalarExpr(Device),
10024 DeviceID = CGF.Builder.getInt64(OMP_DEVICEID_UNDEF);
10028 llvm::Value *PointerNum = CGF.Builder.getInt32(Info.NumberOfPtrs);
10093 DeviceID = CGF.Builder.CreateIntCast(CGF.EmitScalarExpr(Device),
10096 DeviceID = CGF.Builder.getInt64(OMP_DEVICEID_UNDEF);
10101 CGF.Builder.getInt32(InputInfo.NumberOfTargetItems);
10840 CGF.Builder.CreateConstArrayGEP(DimsAddr, I), KmpDimTy);
10862 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
10863 CGF.Builder.CreateConstArrayGEP(DimsAddr, 0).getPointer(),
10891 CGF.EmitStoreOfScalar(CntVal, CGF.Builder.CreateConstArrayGEP(CntAddr, I),
10897 CGF.Builder.CreateConstArrayGEP(CntAddr, 0).getPointer()};
10984 Size = CGF.Builder.CreateNUWAdd(
10986 Size = CGF.Builder.CreateUDiv(Size, CGM.getSize(Align));
10987 Size = CGF.Builder.CreateNUWMul(Size, CGM.getSize(Align));
10999 Allocator = CGF.Builder.CreateIntToPtr(Allocator, CGM.VoidPtrTy);
11001 Allocator = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(Allocator,
11014 Addr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp 135 llvm::Value *CallBool = CGF.Builder.CreateIsNotNull(EnterRes);
139 CGF.Builder.CreateCondBr(CallBool, ThenBlock, ContBlock);
640 CGBuilderTy &Bld = CGF.Builder;
648 CGBuilderTy &Bld = CGF.Builder;
668 CGBuilderTy &Bld = CGF.Builder;
683 CGBuilderTy &Bld = CGF.Builder;
1202 CGBuilderTy &Bld = CGF.Builder;
1258 llvm::Value *Args[] = {CGF.Builder.getInt16(/*IsOMPRuntimeInitialized=*/1)};
1324 CGBuilderTy &Bld = CGF.Builder;
1365 CGF.Builder.getInt16(RequiresFullRuntime ? 1 : 0)};
1412 CGBuilderTy &Bld = CGF.Builder;
2115 CGBuilderTy &Bld = CGF.Builder;
2185 Size, CGF.Builder.getInt16(/*UseSharedMemory=*/0)};
2275 CGF.Builder.getInt16(/*UseSharedMemory=*/0)};
2316 llvm::Value *Ptr = CGF.Builder.CreateInBoundsGEP(
2362 CGBuilderTy &Bld = CGF.Builder;
2374 Size, CGF.Builder.getInt16(/*UseSharedMemory=*/0)};
2412 CGBuilderTy &Bld = CGF.Builder;
2465 CGF.InitTempAlloca(ZeroAddr, CGF.Builder.getInt32(/*C*/ 0));
2495 CGF.InitTempAlloca(ZeroAddr, CGF.Builder.getInt32(/*C*/ 0));
2505 CGF.InitTempAlloca(ZeroAddr, CGF.Builder.getInt32(/*C*/ 0));
2531 CGBuilderTy &Bld = CGF.Builder;
2612 CGBuilderTy &Bld = CGF.Builder;
2664 CGF.InitTempAlloca(ZeroAddr, CGF.Builder.getInt32(/*C*/ 0));
2674 CGF.InitTempAlloca(ZeroAddr, CGF.Builder.getInt32(/*C*/ 0));
2773 llvm::Value *CmpLoopBound = CGF.Builder.CreateICmpSLT(CounterVal, TeamWidth);
2774 CGF.Builder.CreateCondBr(CmpLoopBound, TestBB, ExitBB);
2781 CGF.Builder.CreateICmpEQ(ThreadID, CounterVal);
2782 CGF.Builder.CreateCondBr(CmpThreadToCounter, BodyBB, SyncBB);
2801 CGF.Builder.CreateNSWAdd(CounterVal, CGF.Builder.getInt32(1));
2801 CGF.Builder.CreateNSWAdd(CounterVal, CGF.Builder.getInt32(1));
2822 return CGF.Builder.CreateBitCast(Val, LLVMCastTy);
2824 return CGF.Builder.CreateIntCast(Val, LLVMCastTy,
2827 Address ValCastItem = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
2841 CGBuilderTy &Bld = CGF.Builder;
2869 CGBuilderTy &Bld = CGF.Builder;
2968 CGBuilderTy &Bld = CGF.Builder;
3198 CGBuilderTy &Bld = CGF.Builder;
3498 CGBuilderTy &Bld = CGF.Builder;
3653 CGBuilderTy &Bld = CGF.Builder;
3759 CGBuilderTy &Bld = CGF.Builder;
3780 Address Elem = CGF.Builder.CreateConstArrayGEP(ReductionList, Idx);
3792 Elem = CGF.Builder.CreateConstArrayGEP(ReductionList, Idx);
3793 llvm::Value *Size = CGF.Builder.CreateIntCast(
3798 CGF.Builder.CreateStore(CGF.Builder.CreateIntToPtr(Size, CGF.VoidPtrTy),
3798 CGF.Builder.CreateStore(CGF.Builder.CreateIntToPtr(Size, CGF.VoidPtrTy),
3853 CGBuilderTy &Bld = CGF.Builder;
3959 CGBuilderTy &Bld = CGF.Builder;
3980 Address Elem = CGF.Builder.CreateConstArrayGEP(ReductionList, Idx);
3992 Elem = CGF.Builder.CreateConstArrayGEP(ReductionList, Idx);
3993 llvm::Value *Size = CGF.Builder.CreateIntCast(
3998 CGF.Builder.CreateStore(CGF.Builder.CreateIntToPtr(Size, CGF.VoidPtrTy),
3998 CGF.Builder.CreateStore(CGF.Builder.CreateIntToPtr(Size, CGF.VoidPtrTy),
4306 Address Elem = CGF.Builder.CreateConstArrayGEP(ReductionList, Idx);
4307 CGF.Builder.CreateStore(
4308 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4314 Elem = CGF.Builder.CreateConstArrayGEP(ReductionList, Idx);
4315 llvm::Value *Size = CGF.Builder.CreateIntCast(
4320 CGF.Builder.CreateStore(CGF.Builder.CreateIntToPtr(Size, CGF.VoidPtrTy),
4320 CGF.Builder.CreateStore(CGF.Builder.CreateIntToPtr(Size, CGF.VoidPtrTy),
4325 llvm::Value *RL = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4339 CGF.Builder.getInt32(RHSExprs.size()),
4386 CGF.Builder.getInt32(C.getLangOpts().OpenMPCUDAReductionBufNum),
4404 llvm::Value *Cond = CGF.Builder.CreateICmpEQ(
4406 CGF.Builder.CreateCondBr(Cond, ThenBB, ExitBB);
4495 TargetAddr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4499 TargetAddr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4525 llvm::Value *TargetArg = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
4529 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(TargetArg, TargetType));
4577 CGF.InitTempAlloca(ZeroAddr, CGF.Builder.getInt32(/*C*/ 0));
4584 CGBuilderTy &Bld = CGF.Builder;
tools/clang/lib/CodeGen/CGStmt.cpp 38 DI->EmitLocation(Builder, Loc);
109 llvm::BasicBlock *incoming = Builder.GetInsertBlock();
114 llvm::BasicBlock *outgoing = Builder.GetInsertBlock();
131 Builder.ClearInsertionPoint();
466 llvm::BasicBlock *CurBB = Builder.GetInsertBlock();
482 Builder.SetInsertPoint(BB);
489 llvm::BasicBlock *CurBB = Builder.GetInsertBlock();
496 Builder.CreateBr(Target);
499 Builder.ClearInsertionPoint();
516 Builder.SetInsertPoint(block);
560 DI->EmitLabel(D, Builder);
618 llvm::Value *V = Builder.CreateBitCast(EmitScalarExpr(S.getTarget()),
620 llvm::BasicBlock *CurBB = Builder.GetInsertBlock();
758 Builder.CreateCondBr(
843 Builder.CreateCondBr(
913 Builder.CreateCondBr(
994 Builder.CreateCondBr(
1038 Builder.CreateStore(RV.getScalarVal(), ReturnValue);
1062 Builder.CreateStore(Builder.CreateBitCast(SLocPtr, Int8PtrTy),
1062 Builder.CreateStore(Builder.CreateBitCast(SLocPtr, Int8PtrTy),
1068 Builder.CreateUnreachable();
1069 Builder.ClearInsertionPoint();
1096 Builder.CreateFlagStore(Builder.getTrue(), NRVOFlag);
1096 Builder.CreateFlagStore(Builder.getTrue(), NRVOFlag);
1108 Builder.CreateStore(Result.getScalarVal(), ReturnValue);
1112 Builder.CreateStore(EmitScalarExpr(RV), ReturnValue);
1207 SwitchInsn->addCase(Builder.getInt(LHS), CaseDest);
1215 llvm::BasicBlock *RestoreBB = Builder.GetInsertBlock();
1224 Builder.SetInsertPoint(CaseRangeBlock);
1228 Builder.CreateSub(SwitchInsn->getCondition(), Builder.getInt(LHS));
1228 Builder.CreateSub(SwitchInsn->getCondition(), Builder.getInt(LHS));
1230 Builder.CreateICmpULE(Diff, Builder.getInt(Range), "inbounds");
1230 Builder.CreateICmpULE(Diff, Builder.getInt(Range), "inbounds");
1243 Builder.CreateCondBr(Cond, CaseDest, FalseDest, Weights);
1247 Builder.SetInsertPoint(RestoreBB);
1249 Builder.ClearInsertionPoint();
1270 Builder.getInt(S.getLHS()->EvaluateKnownConstInt(getContext()));
1288 if (Builder.GetInsertBlock()) {
1289 Builder.CreateBr(Block.getBlock());
1290 Builder.ClearInsertionPoint();
1318 Builder.getInt(CurCase->getLHS()->EvaluateKnownConstInt(getContext()));
1646 SwitchInsn = Builder.CreateSwitch(CondV, DefaultBlock);
1667 Builder.ClearInsertionPoint();
1833 Arg = Builder.CreateLoad(Builder.CreateBitCast(InputValue.getAddress(),
1833 Arg = Builder.CreateLoad(Builder.CreateBitCast(InputValue.getAddress(),
1955 llvm::Value *Tmp = CGF.Builder.CreateExtractValue(&Result, i, "asmresult");
2108 Arg = Builder.CreateBitCast(Arg, AdjTy);
2175 Arg = Builder.CreatePtrToInt(Arg, IntPtrTy);
2178 Arg = Builder.CreateZExt(Arg, OutputTy);
2180 Arg = Builder.CreateZExt(Arg, IntPtrTy);
2183 Arg = Builder.CreateFPExt(Arg, OutputTy);
2192 Arg = Builder.CreateBitCast(Arg, AdjTy);
2282 Builder.CreateCallBr(IA, Fallthrough, Transfer, Args);
2288 Builder.CreateCall(IA, Args, getBundlesForFunclet(IA));
2310 Tmp = Builder.CreateFPTrunc(Tmp, TruncTy);
2313 Tmp = Builder.CreateTrunc(Tmp,
2315 Tmp = Builder.CreateIntToPtr(Tmp, TruncTy);
2318 Tmp = Builder.CreatePtrToInt(Tmp,
2320 Tmp = Builder.CreateTrunc(Tmp, TruncTy);
2322 Tmp = Builder.CreateZExtOrTrunc(Tmp, TruncTy);
2324 Tmp = Builder.CreateBitCast(Tmp, TruncTy);
2333 Address A = Builder.CreateBitCast(Dest.getAddress(),
2428 CapturedStmtInfo->setContextValue(Builder.CreateLoad(DeclPtr));
tools/clang/lib/CodeGen/CGStmtOpenMP.cpp 274 Size = Size ? Builder.CreateNUWMul(Size, VlaSize.NumElts)
280 return Builder.CreateNUWMul(Size, CGM.getSize(SizeInChars));
648 SrcAddr = Builder.CreateElementBitCast(SrcAddr, DestAddr.getElementType());
653 llvm::Value *DestEnd = Builder.CreateGEP(DestBegin, NumElements);
658 Builder.CreateICmpEQ(DestBegin, DestEnd, "omp.arraycpy.isempty");
659 Builder.CreateCondBr(IsEmpty, DoneBB, BodyBB);
662 llvm::BasicBlock *EntryBB = Builder.GetInsertBlock();
668 Builder.CreatePHI(SrcBegin->getType(), 2, "omp.arraycpy.srcElementPast");
675 Builder.CreatePHI(DestBegin->getType(), 2, "omp.arraycpy.destElementPast");
685 llvm::Value *DestElementNext = Builder.CreateConstGEP1_32(
687 llvm::Value *SrcElementNext = Builder.CreateConstGEP1_32(
691 Builder.CreateICmpEQ(DestElementNext, DestEnd, "omp.arraycpy.done");
692 Builder.CreateCondBr(Done, DoneBB, BodyBB);
693 DestElementPHI->addIncoming(DestElementNext, Builder.GetInsertBlock());
694 SrcElementPHI->addIncoming(SrcElementNext, Builder.GetInsertBlock());
942 Builder.CreateCondBr(
943 Builder.CreateICmpNE(
944 Builder.CreatePtrToInt(MasterAddr.getPointer(), CGM.IntPtrTy),
945 Builder.CreatePtrToInt(PrivateAddr.getPointer(),
1044 Builder.CreateCondBr(IsLastIterCond, ThenBB, DoneBB);
1086 Address(Builder.CreateLoad(PrivateAddr),
1174 return Builder.CreateElementBitCast(GetAddrOfLocalVar(PrivateVD),
1185 OriginalAddr = Builder.CreateElementBitCast(
1192 ? Builder.CreateElementBitCast(
1248 CGF.Builder.CreateCondBr(Cond, ThenBB, DoneBB);
1495 Builder.CreateCondBr(Cond, ThenBB, DoneBB);
1730 Builder.CreateCondBr(Cond, ThenBB, DoneBB);
1909 Builder.CreateCondBr(BoolCondVal, LoopBody, ExitBlock);
2207 llvm::Value *LBCast = CGF.Builder.CreateIntCast(
2208 CGF.Builder.CreateLoad(LB.getAddress()), CGF.SizeTy, /*isSigned=*/false);
2213 llvm::Value *UBCast = CGF.Builder.CreateIntCast(
2214 CGF.Builder.CreateLoad(UB.getAddress()), CGF.SizeTy, /*isSigned=*/false);
2498 return CGF.Builder.CreateIsNotNull(
2509 return CGF.Builder.CreateIsNotNull(
2516 Builder.CreateIsNotNull(EmitLoadOfScalar(IL, S.getBeginLoc())));
2519 return CGF.Builder.CreateIsNotNull(
2555 llvm::Value *LBVal = CGF.Builder.getIntN(IVSize, 0);
2618 CGF.Builder.getInt32(0));
2620 ? CGF.Builder.getInt32(CS->size() - 1)
2621 : CGF.Builder.getInt32(0);
2625 CGF.Builder.getInt32(1));
2627 CGF.Builder.getInt32(0));
2654 CGF.Builder.CreateSwitch(CGF.EmitLoadOfScalar(IV, S.getBeginLoc()),
2661 SwitchStmt->addCase(CGF.Builder.getInt32(CaseNumber), CaseBB);
2669 SwitchStmt->addCase(CGF.Builder.getInt32(0), CaseBB);
2702 llvm::Value *MinUBGlobalUB = CGF.Builder.CreateSelect(
2703 CGF.Builder.CreateICmpSLT(UBVal, GlobalUBVal), UBVal, GlobalUBVal);
2719 return CGF.Builder.CreateIsNotNull(
2727 CGF.Builder.CreateIsNotNull(
2988 CGF.Builder.getVoidTy(), {CGF.Builder.getInt8PtrTy()}, true);
2988 CGF.Builder.getVoidTy(), {CGF.Builder.getInt8PtrTy()}, true);
2990 llvm::Value *CopyFn = CGF.Builder.CreateLoad(
2992 llvm::Value *PrivatesPtr = CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(
3035 Address Replacement(CGF.Builder.CreateLoad(Pair.second),
3044 llvm::Value *ReductionsPtr = CGF.Builder.CreateLoad(
3226 CGF.Builder.getVoidTy(), {CGF.Builder.getInt8PtrTy()}, true);
3226 CGF.Builder.getVoidTy(), {CGF.Builder.getInt8PtrTy()}, true);
3228 llvm::Value *CopyFn = CGF.Builder.CreateLoad(
3230 llvm::Value *PrivatesPtr = CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(
3247 Address Replacement(CGF.Builder.CreateLoad(Pair.second),
3255 InputInfo.BasePointersArray = CGF.Builder.CreateConstArrayGEP(
3257 InputInfo.PointersArray = CGF.Builder.CreateConstArrayGEP(
3259 InputInfo.SizesArray = CGF.Builder.CreateConstArrayGEP(
3563 return CGF.Builder.CreateIsNotNull(
3574 return CGF.Builder.CreateIsNotNull(
3582 Builder.CreateIsNotNull(EmitLoadOfScalar(IL, S.getBeginLoc())));
3832 UpdateVal = CGF.Builder.CreateIntCast(
3837 CGF.Builder.CreateAtomicRMW(RMWOp, X.getPointer(), UpdateVal, AO);
4183 NumIterations = CGF.Builder.CreateIntCast(NumIterations, CGF.Int64Ty,
4674 Address InitAddr = Builder.CreateBitCast(InitAddrIt->second, AddrTy);
5072 CGF.Builder.CreateIsNotNull(CGF.EmitLoadOfScalar(
tools/clang/lib/CodeGen/CGVTables.cpp 85 llvm::Value *IsNull = CGF.Builder.CreateIsNull(ReturnValue);
86 CGF.Builder.CreateCondBr(IsNull, AdjustNull, AdjustNotNull);
97 CGF.Builder.CreateBr(AdjustEnd);
99 CGF.Builder.CreateBr(AdjustEnd);
102 llvm::PHINode *PHI = CGF.Builder.CreatePHI(ReturnValue->getType(), 2);
210 Builder.SetInsertPoint(&*ThisStore);
213 AdjustedThisPtr = Builder.CreateBitCast(AdjustedThisPtr,
224 Builder.SetInsertPoint(&BB);
226 Builder.CreateRet(RV.getScalarVal());
407 AdjustedThisPtr = Builder.CreateBitCast(AdjustedThisPtr, ThisType);
414 AdjustedThisPtr = Builder.CreateBitCast(AdjustedThisPtr, ThisType);
415 Builder.CreateStore(AdjustedThisPtr, ThisAddr);
420 llvm::CallInst *Call = Builder.CreateCall(Callee, Args);
432 Builder.CreateRetVoid();
434 Builder.CreateRet(Call);
tools/clang/lib/CodeGen/CodeGenFunction.cpp 89 Builder.setFastMathFlags(FMF);
245 llvm::BasicBlock *CurBB = Builder.GetInsertBlock();
272 Builder.SetInsertPoint(BI->getParent());
316 DI->EmitLocation(Builder, LastStopPoint);
318 DI->EmitLocation(Builder, EndLoc);
334 DI->EmitLocation(Builder, EndLoc);
352 DI->EmitFunctionEnd(Builder, CurFn);
367 Builder.ClearInsertionPoint();
453 Builder.ClearInsertionPoint();
526 auto *PCRelAsInt = Builder.CreateSExt(EncodedAddr, IntPtrTy);
527 auto *FuncAsInt = Builder.CreatePtrToInt(F, IntPtrTy, "func_addr.int");
528 auto *GOTAsInt = Builder.CreateAdd(PCRelAsInt, FuncAsInt, "global_addr.int");
529 auto *GOTAddr = Builder.CreateIntToPtr(GOTAsInt, Int8PtrPtrTy, "global_addr");
532 return Builder.CreateLoad(Address(GOTAddr, getPointerAlign()),
563 llvm::ConstantAsMetadata::get(Builder.getInt32(A->getXDim())),
564 llvm::ConstantAsMetadata::get(Builder.getInt32(A->getYDim())),
565 llvm::ConstantAsMetadata::get(Builder.getInt32(A->getZDim()))};
571 llvm::ConstantAsMetadata::get(Builder.getInt32(A->getXDim())),
572 llvm::ConstantAsMetadata::get(Builder.getInt32(A->getYDim())),
573 llvm::ConstantAsMetadata::get(Builder.getInt32(A->getZDim()))};
580 llvm::ConstantAsMetadata::get(Builder.getInt32(A->getSubGroupSize()))};
840 Builder.SetInsertPoint(EntryBB);
864 Builder);
912 Builder.CreateStore(Builder.CreatePointerBitCastOrAddrSpaceCast(
912 Builder.CreateStore(Builder.CreatePointerBitCastOrAddrSpaceCast(
922 llvm::Value *Addr = Builder.CreateStructGEP(nullptr, &*EI, Idx);
924 Addr = Builder.CreateAlignedLoad(Addr, getPointerAlign(), "agg.result");
1030 DI->EmitLocation(Builder, StartLoc);
1218 !FD->getReturnType()->isVoidType() && Builder.GetInsertBlock()) {
1224 llvm::Value *IsFalse = Builder.getFalse();
1233 Builder.CreateUnreachable();
1234 Builder.ClearInsertionPoint();
1558 Builder.CreateCondBr(CondV, TrueBlock, FalseBlock, Weights, Unpredictable);
1577 CGBuilderTy &Builder = CGF.Builder;
1588 llvm::BasicBlock *originBB = CGF.Builder.GetInsertBlock();
1630 DestPtr = Builder.CreateElementBitCast(DestPtr, Int8Ty);
1648 SizeVal = Builder.CreateNUWMul(SizeVal, CGM.getSize(eltSize));
1675 Address SrcPtr(Builder.CreateBitCast(NullVariable, Builder.getInt8PtrTy()),
1675 Address SrcPtr(Builder.CreateBitCast(NullVariable, Builder.getInt8PtrTy()),
1681 Builder.CreateMemCpy(DestPtr, SrcPtr, SizeVal, false);
1688 Builder.CreateMemSet(DestPtr, Builder.getInt8(0), SizeVal, false);
1688 Builder.CreateMemSet(DestPtr, Builder.getInt8(0), SizeVal, false);
1754 llvm::ConstantInt *zero = Builder.getInt32(0);
1790 addr = Builder.CreateElementBitCast(addr, baseType, "array.begin");
1793 addr = Address(Builder.CreateInBoundsGEP(addr.getPointer(),
1805 numElements = Builder.CreateNUWMul(numVLAElements, numElements);
1833 numElements = Builder.CreateNUWMul(numElements, vlaSize);
1947 EmitCheck(std::make_pair(Builder.CreateICmpSGT(Size, Zero),
1954 entry = Builder.CreateIntCast(Size, SizeTy, /*signed*/ false);
2031 Builder.GetInsertBlock());
2051 llvm::Instruction *Assumption = Builder.CreateAlignmentAssumption(
2079 Builder.CreateBitCast(CGM.EmitAnnotationString(AnnotationStr), Int8PtrTy),
2080 Builder.CreateBitCast(CGM.EmitAnnotationUnit(Location), Int8PtrTy),
2083 return Builder.CreateCall(AnnotationFn, Args);
2092 Builder.CreateBitCast(V, CGM.Int8PtrTy, V->getName()),
2109 V = Builder.CreateBitCast(V, CGM.Int8PtrTy);
2111 V = Builder.CreateBitCast(V, VTy);
2244 llvm::IRBuilder<> IRB(Builder.GetInsertBlock(), Builder.GetInsertPoint());
2244 llvm::IRBuilder<> IRB(Builder.GetInsertBlock(), Builder.GetInsertPoint());
2245 IRB.SetCurrentDebugLocation(Builder.getCurrentDebugLocation());
2259 Condition ? Builder.CreateAnd(Condition, FeatureCond) : FeatureCond;
2299 Builder.SetInsertPoint(CurBlock);
2303 Builder.SetInsertPoint(CurBlock);
2310 CreateMultiVersionResolverReturn(CGM, Resolver, Builder, RO.Function,
2320 Builder.CreateCondBr(Condition, RetBlock, CurBlock);
2324 Builder.SetInsertPoint(CurBlock);
2328 Builder.CreateUnreachable();
2329 Builder.ClearInsertionPoint();
2346 Builder.GetInsertBlock()->getParent()->getParent(),
2349 assert(&(Builder.GetInsertBlock()->back()) == Assumption &&
2369 OffsetValue = Builder.getInt1(0); // no offset.
2383 Builder.Insert(Assumption);
tools/clang/lib/CodeGen/CodeGenFunction.h 781 DI->EmitLexicalBlockStart(CGF.Builder, Range.getBegin());
793 DI->EmitLexicalBlockEnd(CGF.Builder, Range.getEnd());
855 CGF.Builder.CreateStore(TempAddr.getPointer(), Temp);
1008 : StartBB(CGF.Builder.GetInsertBlock()) {}
1288 auto IP = CGF.Builder.saveAndClearIP();
1292 CGF.Builder.restoreIP(IP);
1322 CGF.Builder.CreateUnreachable();
1323 CGF.Builder.ClearInsertionPoint();
1344 PGO.emitCounterIncrement(Builder, S, StepV);
2103 return Builder.GetInsertBlock() != nullptr;
4381 CGF.Builder.CreateStore(value, alloca);
4393 return CGF.Builder.CreateAlignedLoad(alloca, alloca->getAlignment());
tools/clang/lib/CodeGen/CodeGenModule.cpp 1303 llvm::ConstantAsMetadata::get(CGF->Builder.getInt32(
1345 llvm::ConstantAsMetadata::get(CGF->Builder.getInt32(AddrSpc)));
5927 return CGF.Builder.CreateCall(CreateRuntimeFunction(FTy,
tools/clang/lib/CodeGen/ItaniumCXXABI.cpp 579 CGBuilderTy &Builder = CGF.Builder;
791 CGBuilderTy &Builder = CGF.Builder;
848 CGBuilderTy &Builder = CGF.Builder;
1045 CGBuilderTy &Builder = CGF.Builder;
1117 CGBuilderTy &Builder = CGF.Builder;
1186 llvm::Value *OffsetPtr = CGF.Builder.CreateConstInBoundsGEP1_64(
1189 CGF.Builder.CreateAlignedLoad(OffsetPtr, CGF.getPointerAlign());
1193 CGF.Builder.CreateBitCast(Ptr.getPointer(), CGF.Int8PtrTy);
1194 CompletePtr = CGF.Builder.CreateInBoundsGEP(CompletePtr, Offset);
1376 CGF.Builder.CreateUnreachable();
1389 Value = CGF.Builder.CreateConstInBoundsGEP1_64(Value, -1ULL);
1390 return CGF.Builder.CreateAlignedLoad(Value, CGF.getPointerAlign());
1423 Value = CGF.Builder.CreateBitCast(Value, DestLTy);
1431 llvm::Value *IsNull = CGF.Builder.CreateIsNull(Value);
1432 CGF.Builder.CreateCondBr(IsNull, BadCastBlock, CastEnd);
1457 CGF.Builder.CreateConstInBoundsGEP1_64(VTable, -2ULL);
1459 CGF.Builder.CreateAlignedLoad(OffsetToTop, CGF.getPointerAlign(),
1465 Value = CGF.Builder.CreateInBoundsGEP(Value, OffsetToTop);
1467 return CGF.Builder.CreateBitCast(Value, DestLTy);
1474 CGF.Builder.CreateUnreachable();
1489 CGF.Builder.CreateConstGEP1_64(VTablePtr, VBaseOffsetOffset.getQuantity(),
1491 VBaseOffsetPtr = CGF.Builder.CreateBitCast(VBaseOffsetPtr,
1495 CGF.Builder.CreateAlignedLoad(VBaseOffsetPtr, CGF.getPointerAlign(),
1583 getStructorImplicitParamValue(CGF) = CGF.Builder.CreateLoad(
1596 CGF.Builder.CreateStore(getThisValue(CGF), CGF.ReturnValue);
1729 VTT = CGF.Builder.CreateConstInBoundsGEP1_64(VTT, VirtualPointerIndex);
1732 return CGF.Builder.CreateAlignedLoad(VTT, CGF.getPointerAlign());
1793 CGF.Builder.CreateConstInBoundsGEP1_64(VTable, VTableIndex, "vfn");
1795 CGF.Builder.CreateAlignedLoad(VFuncPtr, CGF.getPointerAlign());
1914 Address V = CGF.Builder.CreateElementBitCast(InitialPtr, CGF.Int8Ty);
1918 V = CGF.Builder.CreateConstInBoundsByteGEP(V,
1928 Address VTablePtrPtr = CGF.Builder.CreateElementBitCast(V, CGF.Int8PtrTy);
1929 llvm::Value *VTablePtr = CGF.Builder.CreateLoad(VTablePtrPtr);
1932 CGF.Builder.CreateConstInBoundsGEP1_64(VTablePtr, VirtualAdjustment);
1934 OffsetPtr = CGF.Builder.CreateBitCast(OffsetPtr, PtrDiffTy->getPointerTo());
1938 CGF.Builder.CreateAlignedLoad(OffsetPtr, CGF.getPointerAlign());
1941 ResultPtr = CGF.Builder.CreateInBoundsGEP(V.getPointer(), Offset);
1949 ResultPtr = CGF.Builder.CreateConstInBoundsGEP1_64(ResultPtr,
1954 return CGF.Builder.CreateBitCast(ResultPtr, InitialPtr.getType());
2014 CookiePtr = CGF.Builder.CreateConstInBoundsByteGEP(CookiePtr, CookieOffset);
2018 CGF.Builder.CreateElementBitCast(CookiePtr, CGF.SizeTy);
2019 llvm::Instruction *SI = CGF.Builder.CreateStore(NumElements, NumElementsPtr);
2031 CGF.Builder.CreateCall(F, NumElementsPtr.getPointer());
2036 return CGF.Builder.CreateConstInBoundsByteGEP(NewPtr, CookieSize);
2047 CGF.Builder.CreateConstInBoundsByteGEP(numElementsPtr, numElementsOffset);
2050 numElementsPtr = CGF.Builder.CreateElementBitCast(numElementsPtr, CGF.SizeTy);
2052 return CGF.Builder.CreateLoad(numElementsPtr);
2062 return CGF.Builder.CreateCall(F, numElementsPtr.getPointer());
2089 cookie = CGF.Builder.CreateElementBitCast(cookie, CGF.SizeTy);
2092 CGF.Builder.CreateStore(elementSize, cookie);
2095 cookie = CGF.Builder.CreateConstInBoundsGEP(cookie, 1);
2096 CGF.Builder.CreateStore(numElements, cookie);
2101 return CGF.Builder.CreateConstInBoundsByteGEP(newPtr, cookieSize);
2110 = CGF.Builder.CreateConstInBoundsByteGEP(allocPtr, CGF.getSizeSize());
2112 numElementsPtr = CGF.Builder.CreateElementBitCast(numElementsPtr, CGF.SizeTy);
2113 return CGF.Builder.CreateLoad(numElementsPtr);
2173 CGBuilderTy &Builder = CGF.Builder;
2722 llvm::CallInst *CallVal = CGF.Builder.CreateCall(Wrapper);
4122 AdjustedExn = CGF.Builder.CreateConstGEP1_32(Exn, HeaderSize);
4146 llvm::Value *Casted = CGF.Builder.CreateBitCast(AdjustedExn, PtrTy);
4147 CGF.Builder.CreateStore(Casted, ExnPtrTmp);
4155 CGF.Builder.CreateBitCast(AdjustedExn, LLVMCatchTy, "exn.byref");
4156 CGF.Builder.CreateStore(ExnCast, ParamAddr);
4169 CGF.Builder.CreateBitCast(AdjustedExn, LLVMCatchTy, "exn.casted");
4179 CGF.Builder.CreateStore(CastExn, ParamAddr);
4192 llvm::Value *Cast = CGF.Builder.CreateBitCast(AdjustedExn, PtrTy);
4223 Address adjustedExn(CGF.Builder.CreateBitCast(rawAdjustedExn, PtrTy),
4237 Address adjustedExn(CGF.Builder.CreateBitCast(rawAdjustedExn, PtrTy),
tools/clang/lib/CodeGen/MicrosoftCXXABI.cpp 870 llvm::BasicBlock *CatchPadBB = CGF.Builder.GetInsertBlock();
894 Value = CGF.Builder.CreateBitCast(Value, CGF.Int8PtrTy);
919 llvm::Value *Ptr = CGF.Builder.CreateInBoundsGEP(Value.getPointer(), Offset);
946 CGF.Builder.CreateUnreachable();
956 return CGF.Builder.CreateBitCast(Typeid, StdTypeInfoPtrTy);
980 Offset = CGF.Builder.CreateTrunc(Offset, CGF.Int32Ty);
997 return CGF.Builder.CreateBitCast(ThisPtr, DestLTy);
1038 CGF.Builder.CreateSExtOrBitCast(VBPtrToNewBase, CGM.PtrDiffTy);
1039 return CGF.Builder.CreateNSWAdd(VBPtrOffset, VBPtrToNewBase);
1118 CGF.Builder.CreateIsNotNull(IsMostDerivedClass, "is_complete_object");
1122 CGF.Builder.CreateCondBr(IsCompleteObject,
1141 CGF.Builder.CreateIsNotNull(IsMostDerivedClass, "is_complete_object");
1145 CGF.Builder.CreateCondBr(IsCompleteObject,
1172 CGBuilderTy &Builder = CGF.Builder;
1236 This = CGF.Builder.CreateElementBitCast(This, CGM.Int8Ty, "this.int8");
1250 Address VBPtr = CGF.Builder.CreateConstInBoundsByteGEP(This, Offs);
1252 CGF.Builder.CreateConstInBoundsGEP2_32(GV->getValueType(), GV, 0, 0);
1253 VBPtr = CGF.Builder.CreateElementBitCast(VBPtr, GVPtr->getType(),
1255 CGF.Builder.CreateStore(GVPtr, VBPtr);
1389 This = CGF.Builder.CreateElementBitCast(This, CGF.Int8Ty);
1391 return CGF.Builder.CreateConstByteGEP(This, Adjustment);
1420 Result = CGF.Builder.CreateElementBitCast(Result, CGF.Int8Ty);
1427 CGF.Builder.CreateInBoundsGEP(Result.getPointer(), VBaseOffset);
1434 Result = CGF.Builder.CreateElementBitCast(Result, CGF.Int8Ty);
1440 Result = CGF.Builder.CreateConstByteGEP(Result, StaticOffset);
1442 Result = CGF.Builder.CreateConstInBoundsByteGEP(Result, StaticOffset);
1502 This = CGF.Builder.CreateBitCast(This, charPtrTy);
1504 This = CGF.Builder.CreateConstInBoundsGEP1_32(CGF.Int8Ty, This,
1506 This = CGF.Builder.CreateBitCast(This, thisTy, "this.adjusted");
1520 CGF.Builder.CreateStore(getThisValue(CGF), CGF.ReturnValue);
1522 CGF.Builder.CreateStore(CGF.EmitCastToVoidPtr(getThisValue(CGF)),
1529 = CGF.Builder.CreateLoad(
1538 = CGF.Builder.CreateLoad(
1601 CGF.Builder.CreateBr(BaseDtorEndBB);
1861 CGBuilderTy &Builder = CGF.Builder;
2028 CGF.Builder.CreateConstInBoundsGEP1_64(VTable, ML.Index, "vfn");
2030 CGF.Builder.CreateAlignedLoad(VFuncPtr, CGF.getPointerAlign());
2132 This = CGF.Builder.CreateElementBitCast(This, CGF.Int8Ty);
2141 CGF.Builder.CreateConstInBoundsByteGEP(This,
2143 VtorDispPtr = CGF.Builder.CreateElementBitCast(VtorDispPtr, CGF.Int32Ty);
2144 llvm::Value *VtorDisp = CGF.Builder.CreateLoad(VtorDispPtr, "vtordisp");
2145 V = CGF.Builder.CreateGEP(This.getPointer(),
2146 CGF.Builder.CreateNeg(VtorDisp));
2163 V = CGF.Builder.CreateInBoundsGEP(VBPtr, VBaseOffset);
2171 V = CGF.Builder.CreateConstGEP1_32(V, TA.NonVirtual);
2185 Ret = CGF.Builder.CreateElementBitCast(Ret, CGF.Int8Ty);
2195 V = CGF.Builder.CreateInBoundsGEP(VBPtr, VBaseOffset);
2199 V = CGF.Builder.CreateConstInBoundsGEP1_32(CGF.Int8Ty, V, RA.NonVirtual);
2202 return CGF.Builder.CreateBitCast(V, OrigTy);
2230 CGF.Builder.CreateElementBitCast(allocPtr, CGF.SizeTy);
2231 return CGF.Builder.CreateLoad(numElementsPtr);
2249 = CGF.Builder.CreateElementBitCast(cookiePtr, CGF.SizeTy);
2250 CGF.Builder.CreateStore(numElements, numElementsPtr);
2254 return CGF.Builder.CreateConstInBoundsByteGEP(newPtr, cookieSize);
2408 CGBuilderTy &Builder = CGF.Builder;
2448 CGBuilderTy &Builder = CGF.Builder;
2822 CGBuilderTy &Builder = CGF.Builder;
2880 CGBuilderTy &Builder = CGF.Builder;
2944 CGBuilderTy &Builder = CGF.Builder;
2980 CGBuilderTy &Builder = CGF.Builder;
3040 CGBuilderTy &Builder = CGF.Builder;
3108 CGBuilderTy &Builder = CGF.Builder;
3333 CGBuilderTy &Builder = CGF.Builder;
3952 IsCopy ? CGF.Builder.CreateLoad(CGF.GetAddrOfLocalVar(&SrcParam), "src")
4287 CGF.Builder.CreateBitCast(AI.getPointer(), CGM.Int8PtrTy),
tools/clang/lib/CodeGen/TargetInfo.cpp 262 PtrAsInt = CGF.Builder.CreatePtrToInt(PtrAsInt, CGF.IntPtrTy);
263 PtrAsInt = CGF.Builder.CreateAdd(PtrAsInt,
265 PtrAsInt = CGF.Builder.CreateAnd(PtrAsInt,
267 PtrAsInt = CGF.Builder.CreateIntToPtr(PtrAsInt,
297 VAListAddr = CGF.Builder.CreateElementBitCast(VAListAddr, CGF.Int8PtrTy);
299 llvm::Value *Ptr = CGF.Builder.CreateLoad(VAListAddr, "argp.cur");
313 CGF.Builder.CreateConstInBoundsByteGEP(Addr, FullDirectSize, "argp.next");
314 CGF.Builder.CreateStore(NextPtr.getPointer(), VAListAddr);
320 Addr = CGF.Builder.CreateConstInBoundsByteGEP(Addr, SlotSize - DirectSize);
323 Addr = CGF.Builder.CreateElementBitCast(Addr, DirectTy);
366 Addr = Address(CGF.Builder.CreateLoad(Addr), ValueInfo.second);
378 llvm::PHINode *PHI = CGF.Builder.CreatePHI(Addr1.getType(), 2, Name);
453 return CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(
633 CGF.Builder.CreateVAArg(VAListAddr.getPointer(), BaseTy);
649 Val = CGF.Builder.CreateVAArg(VAListAddr.getPointer(), CGF.ConvertType(Ty));
650 CGF.Builder.CreateStore(Val, Temp);
1228 ReturnSlot.setAddress(CGF.Builder.CreateBitCast(ReturnSlot.getAddress(),
1999 CodeGen::CGBuilderTy &Builder = CGF.Builder;
2308 AssignToArrayRange(CGF.Builder, Address, Eight8, 0, 16);
2445 AssignToArrayRange(CGF.Builder, Address, Eight8, 0, 16);
3683 CGF.Builder.CreateStructGEP(VAListAddr, 2, "overflow_arg_area_p");
3685 CGF.Builder.CreateLoad(overflow_arg_area_p, "overflow_arg_area");
3700 CGF.Builder.CreateBitCast(overflow_arg_area,
3711 overflow_arg_area = CGF.Builder.CreateGEP(overflow_arg_area, Offset,
3713 CGF.Builder.CreateStore(overflow_arg_area, overflow_arg_area_p);
3754 gp_offset_p = CGF.Builder.CreateStructGEP(VAListAddr, 0, "gp_offset_p");
3755 gp_offset = CGF.Builder.CreateLoad(gp_offset_p, "gp_offset");
3757 InRegs = CGF.Builder.CreateICmpULE(gp_offset, InRegs, "fits_in_gp");
3761 fp_offset_p = CGF.Builder.CreateStructGEP(VAListAddr, 1, "fp_offset_p");
3762 fp_offset = CGF.Builder.CreateLoad(fp_offset_p, "fp_offset");
3765 FitsInFP = CGF.Builder.CreateICmpULE(fp_offset, FitsInFP, "fits_in_fp");
3766 InRegs = InRegs ? CGF.Builder.CreateAnd(InRegs, FitsInFP) : FitsInFP;
3772 CGF.Builder.CreateCondBr(InRegs, InRegBlock, InMemBlock);
3789 llvm::Value *RegSaveArea = CGF.Builder.CreateLoad(
3790 CGF.Builder.CreateStructGEP(VAListAddr, 3), "reg_save_area");
3798 Tmp = CGF.Builder.CreateElementBitCast(Tmp, ST);
3806 llvm::Value *GPAddr = CGF.Builder.CreateGEP(RegSaveArea, gp_offset);
3807 llvm::Value *FPAddr = CGF.Builder.CreateGEP(RegSaveArea, fp_offset);
3813 llvm::Value *V = CGF.Builder.CreateAlignedLoad(
3814 TyLo, CGF.Builder.CreateBitCast(RegLoAddr, PTyLo),
3816 CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 0));
3816 CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 0));
3819 V = CGF.Builder.CreateAlignedLoad(
3820 TyHi, CGF.Builder.CreateBitCast(RegHiAddr, PTyHi),
3822 CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 1));
3822 CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 1));
3824 RegAddr = CGF.Builder.CreateElementBitCast(Tmp, LTy);
3826 RegAddr = Address(CGF.Builder.CreateGEP(RegSaveArea, gp_offset),
3828 RegAddr = CGF.Builder.CreateElementBitCast(RegAddr, LTy);
3840 CGF.Builder.CreateMemCpy(Tmp, RegAddr, TySize, false);
3845 RegAddr = Address(CGF.Builder.CreateGEP(RegSaveArea, fp_offset),
3847 RegAddr = CGF.Builder.CreateElementBitCast(RegAddr, LTy);
3856 Address RegAddrLo = Address(CGF.Builder.CreateGEP(RegSaveArea, fp_offset),
3859 CGF.Builder.CreateConstInBoundsByteGEP(RegAddrLo,
3866 Tmp = CGF.Builder.CreateElementBitCast(Tmp, ST);
3867 V = CGF.Builder.CreateLoad(CGF.Builder.CreateElementBitCast(
3867 V = CGF.Builder.CreateLoad(CGF.Builder.CreateElementBitCast(
3869 CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 0));
3869 CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 0));
3870 V = CGF.Builder.CreateLoad(CGF.Builder.CreateElementBitCast(
3870 V = CGF.Builder.CreateLoad(CGF.Builder.CreateElementBitCast(
3872 CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 1));
3872 CGF.Builder.CreateStore(V, CGF.Builder.CreateStructGEP(Tmp, 1));
3874 RegAddr = CGF.Builder.CreateElementBitCast(Tmp, LTy);
3882 CGF.Builder.CreateStore(CGF.Builder.CreateAdd(gp_offset, Offset),
3882 CGF.Builder.CreateStore(CGF.Builder.CreateAdd(gp_offset, Offset),
3887 CGF.Builder.CreateStore(CGF.Builder.CreateAdd(fp_offset, Offset),
3887 CGF.Builder.CreateStore(CGF.Builder.CreateAdd(fp_offset, Offset),
4217 CGBuilderTy &Builder = CGF.Builder;
4340 CodeGen::CGBuilderTy &Builder = CGF.Builder;
4881 RealAddr = CGF.Builder.CreateConstInBoundsByteGEP(RealAddr,
4883 ImagAddr = CGF.Builder.CreateConstInBoundsByteGEP(ImagAddr,
4886 ImagAddr = CGF.Builder.CreateConstInBoundsByteGEP(RealAddr, SlotSize);
4890 RealAddr = CGF.Builder.CreateElementBitCast(RealAddr, EltTy);
4891 ImagAddr = CGF.Builder.CreateElementBitCast(ImagAddr, EltTy);
4892 llvm::Value *Real = CGF.Builder.CreateLoad(RealAddr, ".vareal");
4893 llvm::Value *Imag = CGF.Builder.CreateLoad(ImagAddr, ".vaimag");
4913 CodeGen::CGBuilderTy &Builder = CGF.Builder;
5343 reg_offs_p = CGF.Builder.CreateStructGEP(VAListAddr, 3, "gr_offs_p");
5344 reg_offs = CGF.Builder.CreateLoad(reg_offs_p, "gr_offs");
5349 reg_offs_p = CGF.Builder.CreateStructGEP(VAListAddr, 4, "vr_offs_p");
5350 reg_offs = CGF.Builder.CreateLoad(reg_offs_p, "vr_offs");
5364 UsingStack = CGF.Builder.CreateICmpSGE(
5367 CGF.Builder.CreateCondBr(UsingStack, OnStackBlock, MaybeRegBlock);
5379 reg_offs = CGF.Builder.CreateAdd(
5382 reg_offs = CGF.Builder.CreateAnd(
5392 NewOffset = CGF.Builder.CreateAdd(
5394 CGF.Builder.CreateStore(NewOffset, reg_offs_p);
5399 InRegs = CGF.Builder.CreateICmpSLE(
5402 CGF.Builder.CreateCondBr(InRegs, InRegBlock, OnStackBlock);
5414 CGF.Builder.CreateStructGEP(VAListAddr, reg_top_index, "reg_top_p");
5415 reg_top = CGF.Builder.CreateLoad(reg_top_p, "reg_top");
5416 Address BaseAddr(CGF.Builder.CreateInBoundsGEP(reg_top, reg_offs),
5451 CGF.Builder.CreateConstInBoundsByteGEP(BaseAddr, BaseOffset);
5452 LoadAddr = CGF.Builder.CreateElementBitCast(LoadAddr, BaseTy);
5454 Address StoreAddr = CGF.Builder.CreateConstArrayGEP(Tmp, i);
5456 llvm::Value *Elem = CGF.Builder.CreateLoad(LoadAddr);
5457 CGF.Builder.CreateStore(Elem, StoreAddr);
5460 RegAddr = CGF.Builder.CreateElementBitCast(Tmp, MemTy);
5470 BaseAddr = CGF.Builder.CreateConstInBoundsByteGEP(BaseAddr, Offset);
5473 RegAddr = CGF.Builder.CreateElementBitCast(BaseAddr, MemTy);
5483 Address stack_p = CGF.Builder.CreateStructGEP(VAListAddr, 0, "stack_p");
5484 llvm::Value *OnStackPtr = CGF.Builder.CreateLoad(stack_p, "stack");
5491 OnStackPtr = CGF.Builder.CreatePtrToInt(OnStackPtr, CGF.Int64Ty);
5493 OnStackPtr = CGF.Builder.CreateAdd(
5496 OnStackPtr = CGF.Builder.CreateAnd(
5500 OnStackPtr = CGF.Builder.CreateIntToPtr(OnStackPtr, CGF.Int8PtrTy);
5513 llvm::Value *StackSizeC = CGF.Builder.getSize(StackSize);
5515 CGF.Builder.CreateInBoundsGEP(OnStackPtr, StackSizeC, "new_stack");
5518 CGF.Builder.CreateStore(NewStack, stack_p);
5523 OnStackAddr = CGF.Builder.CreateConstInBoundsByteGEP(OnStackAddr, Offset);
5526 OnStackAddr = CGF.Builder.CreateElementBitCast(OnStackAddr, MemTy);
5539 return Address(CGF.Builder.CreateLoad(ResAddr, "vaarg.addr"),
5557 Address Addr(CGF.Builder.CreateLoad(VAListAddr, "ap.cur"), SlotSize);
5558 Addr = CGF.Builder.CreateElementBitCast(Addr, CGF.ConvertTypeForMem(Ty));
5698 AssignToArrayRange(CGF.Builder, Address, Four8, 0, 15);
6291 Address Addr(CGF.Builder.CreateLoad(VAListAddr), SlotSize);
6292 Addr = CGF.Builder.CreateElementBitCast(Addr, CGF.ConvertTypeForMem(Ty));
6724 CGF.Builder.CreateStructGEP(VAListAddr, 2, "overflow_arg_area_ptr");
6726 Address(CGF.Builder.CreateLoad(OverflowArgAreaPtr, "overflow_arg_area"),
6729 CGF.Builder.CreateElementBitCast(OverflowArgArea, DirectTy, "mem_addr");
6733 CGF.Builder.CreateGEP(OverflowArgArea.getPointer(), PaddedSizeV,
6735 CGF.Builder.CreateStore(NewOverflowArgArea, OverflowArgAreaPtr);
6757 CGF.Builder.CreateStructGEP(VAListAddr, RegCountField, "reg_count_ptr");
6758 llvm::Value *RegCount = CGF.Builder.CreateLoad(RegCountPtr, "reg_count");
6760 llvm::Value *InRegs = CGF.Builder.CreateICmpULT(RegCount, MaxRegsV,
6766 CGF.Builder.CreateCondBr(InRegs, InRegBlock, InMemBlock);
6773 CGF.Builder.CreateMul(RegCount, PaddedSizeV, "scaled_reg_count");
6778 CGF.Builder.CreateAdd(ScaledRegCount, RegBase, "reg_offset");
6780 CGF.Builder.CreateStructGEP(VAListAddr, 3, "reg_save_area_ptr");
6782 CGF.Builder.CreateLoad(RegSaveAreaPtr, "reg_save_area");
6783 Address RawRegAddr(CGF.Builder.CreateGEP(RegSaveArea, RegOffset,
6787 CGF.Builder.CreateElementBitCast(RawRegAddr, DirectTy, "reg_addr");
6792 CGF.Builder.CreateAdd(RegCount, One, "reg_count");
6793 CGF.Builder.CreateStore(NewRegCount, RegCountPtr);
6801 CGF.Builder.CreateStructGEP(VAListAddr, 2, "overflow_arg_area_ptr");
6803 Address(CGF.Builder.CreateLoad(OverflowArgAreaPtr, "overflow_arg_area"),
6806 CGF.Builder.CreateConstByteGEP(OverflowArgArea, Padding, "raw_mem_addr");
6808 CGF.Builder.CreateElementBitCast(RawMemAddr, DirectTy, "mem_addr");
6812 CGF.Builder.CreateGEP(OverflowArgArea.getPointer(), PaddedSizeV,
6814 CGF.Builder.CreateStore(NewOverflowArgArea, OverflowArgAreaPtr);
6823 ResAddr = Address(CGF.Builder.CreateLoad(ResAddr, "indirect_arg"),
7282 llvm::Value *Promoted = CGF.Builder.CreateLoad(Addr);
7287 llvm::Value *V = CGF.Builder.CreateTrunc(Promoted, IntTy);
7289 V = CGF.Builder.CreateIntToPtr(V, Temp.getElementType());
7291 CGF.Builder.CreateStore(V, Temp);
7322 AssignToArrayRange(CGF.Builder, Address, Four8, 0, 65);
7332 AssignToArrayRange(CGF.Builder, Address, Four8, 80, 181);
8360 CGBuilderTy &Builder = CGF.Builder;
8433 CodeGen::CGBuilderTy &Builder = CGF.Builder;
8713 CGBuilderTy &Builder = CGF.Builder;
9640 Address Addr(CGF.Builder.CreateLoad(VAListAddr), SlotSize);
9641 Addr = CGF.Builder.CreateElementBitCast(Addr, CGF.ConvertTypeForMem(Ty));
9900 auto IP = CGF.Builder.saveIP();
9902 auto &Builder = CGF.Builder;
9924 auto &Builder = CGF.Builder;
9959 auto IP = CGF.Builder.saveIP();