reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
3737 return EmitX86_64VAArgFromMemory(CGF, VAListAddr, Ty); 3754 gp_offset_p = CGF.Builder.CreateStructGEP(VAListAddr, 0, "gp_offset_p"); 3755 gp_offset = CGF.Builder.CreateLoad(gp_offset_p, "gp_offset"); 3756 InRegs = llvm::ConstantInt::get(CGF.Int32Ty, 48 - neededInt * 8); 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"); 3764 llvm::ConstantInt::get(CGF.Int32Ty, 176 - neededSSE * 16); 3765 FitsInFP = CGF.Builder.CreateICmpULE(fp_offset, FitsInFP, "fits_in_fp"); 3766 InRegs = InRegs ? CGF.Builder.CreateAnd(InRegs, FitsInFP) : FitsInFP; 3769 llvm::BasicBlock *InRegBlock = CGF.createBasicBlock("vaarg.in_reg"); 3770 llvm::BasicBlock *InMemBlock = CGF.createBasicBlock("vaarg.in_mem"); 3771 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("vaarg.end"); 3772 CGF.Builder.CreateCondBr(InRegs, InRegBlock, InMemBlock); 3776 CGF.EmitBlock(InRegBlock); 3788 llvm::Type *LTy = CGF.ConvertTypeForMem(Ty); 3789 llvm::Value *RegSaveArea = CGF.Builder.CreateLoad( 3790 CGF.Builder.CreateStructGEP(VAListAddr, 3), "reg_save_area"); 3797 Address Tmp = CGF.CreateMemTemp(Ty); 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); 3839 Address Tmp = CGF.CreateMemTemp(Ty); 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, 3863 : llvm::StructType::get(CGF.DoubleTy, CGF.DoubleTy); 3863 : llvm::StructType::get(CGF.DoubleTy, CGF.DoubleTy); 3865 Address Tmp = CGF.CreateMemTemp(Ty); 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); 3881 llvm::Value *Offset = llvm::ConstantInt::get(CGF.Int32Ty, neededInt * 8); 3882 CGF.Builder.CreateStore(CGF.Builder.CreateAdd(gp_offset, Offset), 3882 CGF.Builder.CreateStore(CGF.Builder.CreateAdd(gp_offset, Offset), 3886 llvm::Value *Offset = llvm::ConstantInt::get(CGF.Int32Ty, neededSSE * 16); 3887 CGF.Builder.CreateStore(CGF.Builder.CreateAdd(fp_offset, Offset), 3887 CGF.Builder.CreateStore(CGF.Builder.CreateAdd(fp_offset, Offset), 3890 CGF.EmitBranch(ContBlock); 3894 CGF.EmitBlock(InMemBlock); 3895 Address MemAddr = EmitX86_64VAArgFromMemory(CGF, VAListAddr, Ty); 3899 CGF.EmitBlock(ContBlock); 3900 Address ResAddr = emitMergePHI(CGF, RegAddr, InRegBlock, MemAddr, InMemBlock,