Lines Matching refs:CGF
58 RValue EmitDarwinVAArg(Address VAListAddr, QualType Ty, CodeGenFunction &CGF,
61 RValue EmitAAPCSVAArg(Address VAListAddr, QualType Ty, CodeGenFunction &CGF,
64 RValue EmitVAArg(CodeGenFunction &CGF, Address VAListAddr, QualType Ty, in EmitVAArg() argument
66 llvm::Type *BaseTy = CGF.ConvertType(Ty); in EmitVAArg()
72 ? EmitMSVAArg(CGF, VAListAddr, Ty, Slot) in EmitVAArg()
73 : isDarwinPCS() ? EmitDarwinVAArg(VAListAddr, Ty, CGF, Slot) in EmitVAArg()
74 : EmitAAPCSVAArg(VAListAddr, Ty, CGF, Kind, Slot); in EmitVAArg()
77 RValue EmitMSVAArg(CodeGenFunction &CGF, Address VAListAddr, QualType Ty,
139 bool isScalarizableAsmOperand(CodeGen::CodeGenFunction &CGF, in isScalarizableAsmOperand() argument
141 if (CGF.getTarget().hasFeature("ls64")) { in isScalarizableAsmOperand()
150 return TargetCodeGenInfo::isScalarizableAsmOperand(CGF, Ty); in isScalarizableAsmOperand()
537 CodeGenFunction &CGF, AArch64ABIKind Kind, in EmitAAPCSVAArg() argument
540 CGF.CurFnInfo->getCallingConvention()); in EmitAAPCSVAArg()
547 llvm::Type *BaseTy = CGF.ConvertType(Ty); in EmitAAPCSVAArg()
572 llvm::BasicBlock *MaybeRegBlock = CGF.createBasicBlock("vaarg.maybe_reg"); in EmitAAPCSVAArg()
573 llvm::BasicBlock *InRegBlock = CGF.createBasicBlock("vaarg.in_reg"); in EmitAAPCSVAArg()
574 llvm::BasicBlock *OnStackBlock = CGF.createBasicBlock("vaarg.on_stack"); in EmitAAPCSVAArg()
575 llvm::BasicBlock *ContBlock = CGF.createBasicBlock("vaarg.end"); in EmitAAPCSVAArg()
586 reg_offs_p = CGF.Builder.CreateStructGEP(VAListAddr, 3, "gr_offs_p"); in EmitAAPCSVAArg()
587 reg_offs = CGF.Builder.CreateLoad(reg_offs_p, "gr_offs"); in EmitAAPCSVAArg()
592 reg_offs_p = CGF.Builder.CreateStructGEP(VAListAddr, 4, "vr_offs_p"); in EmitAAPCSVAArg()
593 reg_offs = CGF.Builder.CreateLoad(reg_offs_p, "vr_offs"); in EmitAAPCSVAArg()
607 UsingStack = CGF.Builder.CreateICmpSGE( in EmitAAPCSVAArg()
608 reg_offs, llvm::ConstantInt::get(CGF.Int32Ty, 0)); in EmitAAPCSVAArg()
610 CGF.Builder.CreateCondBr(UsingStack, OnStackBlock, MaybeRegBlock); in EmitAAPCSVAArg()
614 CGF.EmitBlock(MaybeRegBlock); in EmitAAPCSVAArg()
622 reg_offs = CGF.Builder.CreateAdd( in EmitAAPCSVAArg()
623 reg_offs, llvm::ConstantInt::get(CGF.Int32Ty, Align - 1), in EmitAAPCSVAArg()
625 reg_offs = CGF.Builder.CreateAnd( in EmitAAPCSVAArg()
626 reg_offs, llvm::ConstantInt::get(CGF.Int32Ty, -Align), in EmitAAPCSVAArg()
635 NewOffset = CGF.Builder.CreateAdd( in EmitAAPCSVAArg()
636 reg_offs, llvm::ConstantInt::get(CGF.Int32Ty, RegSize), "new_reg_offs"); in EmitAAPCSVAArg()
637 CGF.Builder.CreateStore(NewOffset, reg_offs_p); in EmitAAPCSVAArg()
642 InRegs = CGF.Builder.CreateICmpSLE( in EmitAAPCSVAArg()
643 NewOffset, llvm::ConstantInt::get(CGF.Int32Ty, 0), "inreg"); in EmitAAPCSVAArg()
645 CGF.Builder.CreateCondBr(InRegs, InRegBlock, OnStackBlock); in EmitAAPCSVAArg()
653 CGF.EmitBlock(InRegBlock); in EmitAAPCSVAArg()
657 CGF.Builder.CreateStructGEP(VAListAddr, reg_top_index, "reg_top_p"); in EmitAAPCSVAArg()
658 reg_top = CGF.Builder.CreateLoad(reg_top_p, "reg_top"); in EmitAAPCSVAArg()
659 Address BaseAddr(CGF.Builder.CreateInBoundsGEP(CGF.Int8Ty, reg_top, reg_offs), in EmitAAPCSVAArg()
660 CGF.Int8Ty, CharUnits::fromQuantity(IsFPR ? 16 : 8)); in EmitAAPCSVAArg()
662 llvm::Type *MemTy = CGF.ConvertTypeForMem(Ty), *ElementTy = MemTy; in EmitAAPCSVAArg()
680 llvm::Type *BaseTy = CGF.ConvertType(QualType(Base, 0)); in EmitAAPCSVAArg()
682 Address Tmp = CGF.CreateTempAlloca(HFATy, in EmitAAPCSVAArg()
687 if (CGF.CGM.getDataLayout().isBigEndian() && in EmitAAPCSVAArg()
694 CGF.Builder.CreateConstInBoundsByteGEP(BaseAddr, BaseOffset); in EmitAAPCSVAArg()
697 Address StoreAddr = CGF.Builder.CreateConstArrayGEP(Tmp, i); in EmitAAPCSVAArg()
699 llvm::Value *Elem = CGF.Builder.CreateLoad(LoadAddr); in EmitAAPCSVAArg()
700 CGF.Builder.CreateStore(Elem, StoreAddr); in EmitAAPCSVAArg()
709 if (CGF.CGM.getDataLayout().isBigEndian() && !IsIndirect && in EmitAAPCSVAArg()
713 BaseAddr = CGF.Builder.CreateConstInBoundsByteGEP(BaseAddr, Offset); in EmitAAPCSVAArg()
719 CGF.EmitBranch(ContBlock); in EmitAAPCSVAArg()
724 CGF.EmitBlock(OnStackBlock); in EmitAAPCSVAArg()
726 Address stack_p = CGF.Builder.CreateStructGEP(VAListAddr, 0, "stack_p"); in EmitAAPCSVAArg()
727 llvm::Value *OnStackPtr = CGF.Builder.CreateLoad(stack_p, "stack"); in EmitAAPCSVAArg()
732 OnStackPtr = emitRoundPointerUpToAlignment(CGF, OnStackPtr, TyAlign); in EmitAAPCSVAArg()
734 Address OnStackAddr = Address(OnStackPtr, CGF.Int8Ty, in EmitAAPCSVAArg()
745 llvm::Value *StackSizeC = CGF.Builder.getSize(StackSize); in EmitAAPCSVAArg()
746 llvm::Value *NewStack = CGF.Builder.CreateInBoundsGEP( in EmitAAPCSVAArg()
747 CGF.Int8Ty, OnStackPtr, StackSizeC, "new_stack"); in EmitAAPCSVAArg()
750 CGF.Builder.CreateStore(NewStack, stack_p); in EmitAAPCSVAArg()
752 if (CGF.CGM.getDataLayout().isBigEndian() && !isAggregateTypeForABI(Ty) && in EmitAAPCSVAArg()
755 OnStackAddr = CGF.Builder.CreateConstInBoundsByteGEP(OnStackAddr, Offset); in EmitAAPCSVAArg()
760 CGF.EmitBranch(ContBlock); in EmitAAPCSVAArg()
765 CGF.EmitBlock(ContBlock); in EmitAAPCSVAArg()
767 Address ResAddr = emitMergePHI(CGF, RegAddr, InRegBlock, OnStackAddr, in EmitAAPCSVAArg()
771 return CGF.EmitLoadOfAnyValue( in EmitAAPCSVAArg()
772 CGF.MakeAddrLValue( in EmitAAPCSVAArg()
773 Address(CGF.Builder.CreateLoad(ResAddr, "vaarg.addr"), ElementTy, in EmitAAPCSVAArg()
778 return CGF.EmitLoadOfAnyValue(CGF.MakeAddrLValue(ResAddr, Ty), Slot); in EmitAAPCSVAArg()
782 CodeGenFunction &CGF, in EmitDarwinVAArg() argument
788 return CGF.EmitLoadOfAnyValue( in EmitDarwinVAArg()
789 CGF.MakeAddrLValue( in EmitDarwinVAArg()
790 EmitVAArgInstr(CGF, VAListAddr, Ty, ABIArgInfo::getDirect()), Ty), in EmitDarwinVAArg()
813 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, IsIndirect, TyInfo, SlotSize, in EmitDarwinVAArg()
817 RValue AArch64ABIInfo::EmitMSVAArg(CodeGenFunction &CGF, Address VAListAddr, in EmitMSVAArg() argument
825 return emitVoidPtrVAArg(CGF, VAListAddr, Ty, IsIndirect, in EmitMSVAArg()
826 CGF.getContext().getTypeInfoInChars(Ty), in EmitMSVAArg()