reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
8874 MapperCGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, FnInfo, Args, Loc, Loc); 8876 llvm::Value *Size = MapperCGF.EmitLoadOfScalar( 8877 MapperCGF.GetAddrOfLocalVar(&SizeArg), /*Volatile=*/false, 8879 llvm::Value *PtrBegin = MapperCGF.Builder.CreateBitCast( 8880 MapperCGF.GetAddrOfLocalVar(&BeginArg).getPointer(), 8882 llvm::Value *PtrEnd = MapperCGF.Builder.CreateGEP(PtrBegin, Size); 8883 llvm::Value *MapType = MapperCGF.EmitLoadOfScalar( 8884 MapperCGF.GetAddrOfLocalVar(&TypeArg), /*Volatile=*/false, 8887 llvm::Value *Handle = MapperCGF.EmitLoadOfScalar( 8888 MapperCGF.GetAddrOfLocalVar(&HandleArg), 8890 llvm::Value *BaseIn = MapperCGF.EmitLoadOfScalar( 8891 MapperCGF.GetAddrOfLocalVar(&BaseArg), 8893 llvm::Value *BeginIn = MapperCGF.EmitLoadOfScalar( 8894 MapperCGF.GetAddrOfLocalVar(&BeginArg), 8899 llvm::BasicBlock *HeadBB = MapperCGF.createBasicBlock("omp.arraymap.head"); 8900 emitUDMapperArrayInitOrDel(MapperCGF, Handle, BaseIn, BeginIn, Size, MapType, 8906 MapperCGF.EmitBlock(HeadBB); 8907 llvm::BasicBlock *BodyBB = MapperCGF.createBasicBlock("omp.arraymap.body"); 8908 llvm::BasicBlock *DoneBB = MapperCGF.createBasicBlock("omp.done"); 8911 MapperCGF.Builder.CreateICmpEQ(PtrBegin, PtrEnd, "omp.arraymap.isempty"); 8912 MapperCGF.Builder.CreateCondBr(IsEmpty, DoneBB, BodyBB); 8913 llvm::BasicBlock *EntryBB = MapperCGF.Builder.GetInsertBlock(); 8916 MapperCGF.EmitBlock(BodyBB); 8917 llvm::PHINode *PtrPHI = MapperCGF.Builder.CreatePHI( 8921 Address(PtrPHI, MapperCGF.GetAddrOfLocalVar(&BeginArg) 8925 CodeGenFunction::OMPPrivateScope Scope(MapperCGF); 8926 Scope.addPrivate(MapperVarDecl, [&MapperCGF, PtrCurrent, PtrTy]() { 8927 return MapperCGF 8938 MappableExprsHandler MEHandler(*D, MapperCGF); 8944 llvm::Value *PreviousSize = MapperCGF.EmitRuntimeCall( 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( 8959 llvm::BasicBlock *MemberBB = MapperCGF.createBasicBlock("omp.member"); 8960 MapperCGF.EmitBlock(MemberBB); 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)); 8966 MapperCGF.createBasicBlock("omp.member.combine"); 8967 llvm::BasicBlock *TypeBB = MapperCGF.createBasicBlock("omp.type"); 8968 llvm::Value *IsMember = MapperCGF.Builder.CreateIsNull(Member); 8969 MapperCGF.Builder.CreateCondBr(IsMember, TypeBB, MemberCombineBB); 8972 MapperCGF.EmitBlock(MemberCombineBB); 8974 MapperCGF.Builder.CreateNUWAdd(OriMapType, ShiftedPreviousSize); 8976 MapperCGF.EmitBlock(TypeBB); 8978 MapperCGF.Builder.CreatePHI(CGM.Int64Ty, 4, "omp.membermaptype"); 8994 llvm::Value *LeftToFrom = MapperCGF.Builder.CreateAnd( 8996 MapperCGF.Builder.getInt64(MappableExprsHandler::OMP_MAP_TO | 8998 llvm::BasicBlock *AllocBB = MapperCGF.createBasicBlock("omp.type.alloc"); 9000 MapperCGF.createBasicBlock("omp.type.alloc.else"); 9001 llvm::BasicBlock *ToBB = MapperCGF.createBasicBlock("omp.type.to"); 9002 llvm::BasicBlock *ToElseBB = MapperCGF.createBasicBlock("omp.type.to.else"); 9003 llvm::BasicBlock *FromBB = MapperCGF.createBasicBlock("omp.type.from"); 9004 llvm::BasicBlock *EndBB = MapperCGF.createBasicBlock("omp.type.end"); 9005 llvm::Value *IsAlloc = MapperCGF.Builder.CreateIsNull(LeftToFrom); 9006 MapperCGF.Builder.CreateCondBr(IsAlloc, AllocBB, AllocElseBB); 9008 MapperCGF.EmitBlock(AllocBB); 9009 llvm::Value *AllocMapType = MapperCGF.Builder.CreateAnd( 9011 MapperCGF.Builder.getInt64(~(MappableExprsHandler::OMP_MAP_TO | 9013 MapperCGF.Builder.CreateBr(EndBB); 9014 MapperCGF.EmitBlock(AllocElseBB); 9015 llvm::Value *IsTo = MapperCGF.Builder.CreateICmpEQ( 9017 MapperCGF.Builder.getInt64(MappableExprsHandler::OMP_MAP_TO)); 9018 MapperCGF.Builder.CreateCondBr(IsTo, ToBB, ToElseBB); 9020 MapperCGF.EmitBlock(ToBB); 9021 llvm::Value *ToMapType = MapperCGF.Builder.CreateAnd( 9023 MapperCGF.Builder.getInt64(~MappableExprsHandler::OMP_MAP_FROM)); 9024 MapperCGF.Builder.CreateBr(EndBB); 9025 MapperCGF.EmitBlock(ToElseBB); 9026 llvm::Value *IsFrom = MapperCGF.Builder.CreateICmpEQ( 9028 MapperCGF.Builder.getInt64(MappableExprsHandler::OMP_MAP_FROM)); 9029 MapperCGF.Builder.CreateCondBr(IsFrom, FromBB, EndBB); 9031 MapperCGF.EmitBlock(FromBB); 9032 llvm::Value *FromMapType = MapperCGF.Builder.CreateAnd( 9034 MapperCGF.Builder.getInt64(~MappableExprsHandler::OMP_MAP_TO)); 9036 MapperCGF.EmitBlock(EndBB); 9038 MapperCGF.Builder.CreatePHI(CGM.Int64Ty, 4, "omp.maptype"); 9050 MapperCGF.EmitRuntimeCall( 9057 llvm::Value *PtrNext = MapperCGF.Builder.CreateConstGEP1_32( 9061 MapperCGF.Builder.CreateICmpEQ(PtrNext, PtrEnd, "omp.arraymap.isdone"); 9062 llvm::BasicBlock *ExitBB = MapperCGF.createBasicBlock("omp.arraymap.exit"); 9063 MapperCGF.Builder.CreateCondBr(IsDone, ExitBB, BodyBB); 9065 MapperCGF.EmitBlock(ExitBB); 9068 emitUDMapperArrayInitOrDel(MapperCGF, Handle, BaseIn, BeginIn, Size, MapType, 9072 MapperCGF.EmitBlock(DoneBB, /*IsFinished=*/true); 9073 MapperCGF.FinishFunction();