Lines Matching refs:CGF

54                           CodeGenFunction &CGF) const;
57 CodeGenFunction &CGF) const;
59 Address EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, in EmitVAArg() argument
61 llvm::Type *BaseTy = CGF.ConvertType(Ty); in EmitVAArg()
66 return Kind == AArch64ABIKind::Win64 ? EmitMSVAArg(CGF, VAListAddr, Ty) in EmitVAArg()
67 : isDarwinPCS() ? EmitDarwinVAArg(VAListAddr, Ty, CGF) in EmitVAArg()
68 : EmitAAPCSVAArg(VAListAddr, Ty, CGF); in EmitVAArg()
71 Address EmitMSVAArg(CodeGenFunction &CGF, Address VAListAddr,
145 bool isScalarizableAsmOperand(CodeGen::CodeGenFunction &CGF, in isScalarizableAsmOperand() argument
147 if (CGF.getTarget().hasFeature("ls64")) { in isScalarizableAsmOperand()
156 return TargetCodeGenInfo::isScalarizableAsmOperand(CGF, Ty); in isScalarizableAsmOperand()
516 CodeGenFunction &CGF) const { in EmitAAPCSVAArg()
518 CGF.CurFnInfo->getCallingConvention()); in EmitAAPCSVAArg()
523 VAListAddr = VAListAddr.withElementType(CGF.Int8PtrTy); in EmitAAPCSVAArg()
524 auto *Load = CGF.Builder.CreateLoad(VAListAddr); in EmitAAPCSVAArg()
525 return Address(Load, CGF.ConvertTypeForMem(Ty), SlotSize); in EmitAAPCSVAArg()
530 llvm::Type *BaseTy = CGF.ConvertType(Ty); in EmitAAPCSVAArg()
554 llvm::BasicBlock *MaybeRegBlock = CGF.createBasicBlock("vaarg.maybe_reg"); in EmitAAPCSVAArg()
555 llvm::BasicBlock *InRegBlock = CGF.createBasicBlock("vaarg.in_reg"); in EmitAAPCSVAArg()
556 llvm::BasicBlock *OnStackBlock = CGF.createBasicBlock("vaarg.on_stack"); in EmitAAPCSVAArg()
557 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("vaarg.end"); in EmitAAPCSVAArg()
568 reg_offs_p = CGF.Builder.CreateStructGEP(VAListAddr, 3, "gr_offs_p"); in EmitAAPCSVAArg()
569 reg_offs = CGF.Builder.CreateLoad(reg_offs_p, "gr_offs"); in EmitAAPCSVAArg()
574 reg_offs_p = CGF.Builder.CreateStructGEP(VAListAddr, 4, "vr_offs_p"); in EmitAAPCSVAArg()
575 reg_offs = CGF.Builder.CreateLoad(reg_offs_p, "vr_offs"); in EmitAAPCSVAArg()
589 UsingStack = CGF.Builder.CreateICmpSGE( in EmitAAPCSVAArg()
590 reg_offs, llvm::ConstantInt::get(CGF.Int32Ty, 0)); in EmitAAPCSVAArg()
592 CGF.Builder.CreateCondBr(UsingStack, OnStackBlock, MaybeRegBlock); in EmitAAPCSVAArg()
596 CGF.EmitBlock(MaybeRegBlock); in EmitAAPCSVAArg()
604 reg_offs = CGF.Builder.CreateAdd( in EmitAAPCSVAArg()
605 reg_offs, llvm::ConstantInt::get(CGF.Int32Ty, Align - 1), in EmitAAPCSVAArg()
607 reg_offs = CGF.Builder.CreateAnd( in EmitAAPCSVAArg()
608 reg_offs, llvm::ConstantInt::get(CGF.Int32Ty, -Align), in EmitAAPCSVAArg()
617 NewOffset = CGF.Builder.CreateAdd( in EmitAAPCSVAArg()
618 reg_offs, llvm::ConstantInt::get(CGF.Int32Ty, RegSize), "new_reg_offs"); in EmitAAPCSVAArg()
619 CGF.Builder.CreateStore(NewOffset, reg_offs_p); in EmitAAPCSVAArg()
624 InRegs = CGF.Builder.CreateICmpSLE( in EmitAAPCSVAArg()
625 NewOffset, llvm::ConstantInt::get(CGF.Int32Ty, 0), "inreg"); in EmitAAPCSVAArg()
627 CGF.Builder.CreateCondBr(InRegs, InRegBlock, OnStackBlock); in EmitAAPCSVAArg()
635 CGF.EmitBlock(InRegBlock); in EmitAAPCSVAArg()
639 CGF.Builder.CreateStructGEP(VAListAddr, reg_top_index, "reg_top_p"); in EmitAAPCSVAArg()
640 reg_top = CGF.Builder.CreateLoad(reg_top_p, "reg_top"); in EmitAAPCSVAArg()
641 Address BaseAddr(CGF.Builder.CreateInBoundsGEP(CGF.Int8Ty, reg_top, reg_offs), in EmitAAPCSVAArg()
642 CGF.Int8Ty, CharUnits::fromQuantity(IsFPR ? 16 : 8)); in EmitAAPCSVAArg()
644 llvm::Type *MemTy = CGF.ConvertTypeForMem(Ty), *ElementTy = MemTy; in EmitAAPCSVAArg()
662 llvm::Type *BaseTy = CGF.ConvertType(QualType(Base, 0)); in EmitAAPCSVAArg()
664 Address Tmp = CGF.CreateTempAlloca(HFATy, in EmitAAPCSVAArg()
669 if (CGF.CGM.getDataLayout().isBigEndian() && in EmitAAPCSVAArg()
676 CGF.Builder.CreateConstInBoundsByteGEP(BaseAddr, BaseOffset); in EmitAAPCSVAArg()
679 Address StoreAddr = CGF.Builder.CreateConstArrayGEP(Tmp, i); in EmitAAPCSVAArg()
681 llvm::Value *Elem = CGF.Builder.CreateLoad(LoadAddr); in EmitAAPCSVAArg()
682 CGF.Builder.CreateStore(Elem, StoreAddr); in EmitAAPCSVAArg()
691 if (CGF.CGM.getDataLayout().isBigEndian() && !IsIndirect && in EmitAAPCSVAArg()
695 BaseAddr = CGF.Builder.CreateConstInBoundsByteGEP(BaseAddr, Offset); in EmitAAPCSVAArg()
701 CGF.EmitBranch(ContBlock); in EmitAAPCSVAArg()
706 CGF.EmitBlock(OnStackBlock); in EmitAAPCSVAArg()
708 Address stack_p = CGF.Builder.CreateStructGEP(VAListAddr, 0, "stack_p"); in EmitAAPCSVAArg()
709 llvm::Value *OnStackPtr = CGF.Builder.CreateLoad(stack_p, "stack"); in EmitAAPCSVAArg()
716 OnStackPtr = CGF.Builder.CreatePtrToInt(OnStackPtr, CGF.Int64Ty); in EmitAAPCSVAArg()
718 OnStackPtr = CGF.Builder.CreateAdd( in EmitAAPCSVAArg()
719 OnStackPtr, llvm::ConstantInt::get(CGF.Int64Ty, Align - 1), in EmitAAPCSVAArg()
721 OnStackPtr = CGF.Builder.CreateAnd( in EmitAAPCSVAArg()
722 OnStackPtr, llvm::ConstantInt::get(CGF.Int64Ty, -Align), in EmitAAPCSVAArg()
725 OnStackPtr = CGF.Builder.CreateIntToPtr(OnStackPtr, CGF.Int8PtrTy); in EmitAAPCSVAArg()
727 Address OnStackAddr = Address(OnStackPtr, CGF.Int8Ty, in EmitAAPCSVAArg()
738 llvm::Value *StackSizeC = CGF.Builder.getSize(StackSize); in EmitAAPCSVAArg()
739 llvm::Value *NewStack = CGF.Builder.CreateInBoundsGEP( in EmitAAPCSVAArg()
740 CGF.Int8Ty, OnStackPtr, StackSizeC, "new_stack"); in EmitAAPCSVAArg()
743 CGF.Builder.CreateStore(NewStack, stack_p); in EmitAAPCSVAArg()
745 if (CGF.CGM.getDataLayout().isBigEndian() && !isAggregateTypeForABI(Ty) && in EmitAAPCSVAArg()
748 OnStackAddr = CGF.Builder.CreateConstInBoundsByteGEP(OnStackAddr, Offset); in EmitAAPCSVAArg()
753 CGF.EmitBranch(ContBlock); in EmitAAPCSVAArg()
758 CGF.EmitBlock(ContBlock); in EmitAAPCSVAArg()
760 Address ResAddr = emitMergePHI(CGF, RegAddr, InRegBlock, OnStackAddr, in EmitAAPCSVAArg()
764 return Address(CGF.Builder.CreateLoad(ResAddr, "vaarg.addr"), ElementTy, in EmitAAPCSVAArg()
771 CodeGenFunction &CGF) const { in EmitDarwinVAArg()
776 return EmitVAArgInstr(CGF, VAListAddr, Ty, ABIArgInfo::getDirect()); in EmitDarwinVAArg()
783 return Address(CGF.Builder.CreateLoad(VAListAddr, "ap.cur"), in EmitDarwinVAArg()
784 CGF.ConvertTypeForMem(Ty), SlotSize); in EmitDarwinVAArg()
799 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, IsIndirect, in EmitDarwinVAArg()
803 Address AArch64ABIInfo::EmitMSVAArg(CodeGenFunction &CGF, Address VAListAddr, in EmitMSVAArg() argument
811 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, IsIndirect, in EmitMSVAArg()
812 CGF.getContext().getTypeInfoInChars(Ty), in EmitMSVAArg()