• Home
  • Raw
  • Download

Lines Matching refs:CGF

62   virtual void EmitBody(CodeGenFunction &CGF, const Stmt *S) override;
66 virtual LValue getThreadIDVariableLValue(CodeGenFunction &CGF);
122 LValue getThreadIDVariableLValue(CodeGenFunction &CGF) override;
203 CodeGenFunction &CGF; member in __anon9718e37d0111::InlinedOpenMPRegionRAII
210 InlinedOpenMPRegionRAII(CodeGenFunction &CGF, const RegionCodeGenTy &CodeGen) in InlinedOpenMPRegionRAII() argument
211 : CGF(CGF) { in InlinedOpenMPRegionRAII()
213 CGF.CapturedStmtInfo = in InlinedOpenMPRegionRAII()
214 new CGOpenMPInlinedRegionInfo(CGF.CapturedStmtInfo, CodeGen); in InlinedOpenMPRegionRAII()
219 cast<CGOpenMPInlinedRegionInfo>(CGF.CapturedStmtInfo)->getOldCSI(); in ~InlinedOpenMPRegionRAII()
220 delete CGF.CapturedStmtInfo; in ~InlinedOpenMPRegionRAII()
221 CGF.CapturedStmtInfo = OldCSI; in ~InlinedOpenMPRegionRAII()
227 LValue CGOpenMPRegionInfo::getThreadIDVariableLValue(CodeGenFunction &CGF) { in getThreadIDVariableLValue() argument
228 return CGF.MakeNaturalAlignAddrLValue( in getThreadIDVariableLValue()
229 CGF.Builder.CreateAlignedLoad( in getThreadIDVariableLValue()
230 CGF.GetAddrOfLocalVar(getThreadIDVariable()), in getThreadIDVariableLValue()
231 CGF.PointerAlignInBytes), in getThreadIDVariableLValue()
238 void CGOpenMPRegionInfo::EmitBody(CodeGenFunction &CGF, const Stmt * /*S*/) { in EmitBody() argument
244 CGF.EHStack.pushTerminate(); in EmitBody()
246 CodeGenFunction::RunCleanupsScope Scope(CGF); in EmitBody()
247 CodeGen(CGF); in EmitBody()
249 CGF.EHStack.popTerminate(); in EmitBody()
253 CodeGenFunction &CGF) { in getThreadIDVariableLValue() argument
254 return CGF.MakeNaturalAlignAddrLValue( in getThreadIDVariableLValue()
255 CGF.GetAddrOfLocalVar(getThreadIDVariable()), in getThreadIDVariableLValue()
283 CodeGenFunction CGF(CGM, true); in emitParallelOutlinedFunction() local
285 CGF.CapturedStmtInfo = &CGInfo; in emitParallelOutlinedFunction()
286 return CGF.GenerateCapturedStmtFunction(*CS); in emitParallelOutlinedFunction()
296 CodeGenFunction CGF(CGM, true); in emitTaskOutlinedFunction() local
298 CGF.CapturedStmtInfo = &CGInfo; in emitTaskOutlinedFunction()
299 return CGF.GenerateCapturedStmtFunction(*CS); in emitTaskOutlinedFunction()
333 llvm::Value *CGOpenMPRuntime::emitUpdateLocation(CodeGenFunction &CGF, in emitUpdateLocation() argument
341 assert(CGF.CurFn && "No function in current CodeGenFunction."); in emitUpdateLocation()
344 auto I = OpenMPLocThreadIDMap.find(CGF.CurFn); in emitUpdateLocation()
351 llvm::AllocaInst *AI = CGF.CreateTempAlloca(IdentTy, ".kmpc_loc.addr"); in emitUpdateLocation()
353 auto &Elem = OpenMPLocThreadIDMap.FindAndConstruct(CGF.CurFn); in emitUpdateLocation()
357 CGBuilderTy::InsertPointGuard IPG(CGF.Builder); in emitUpdateLocation()
358 CGF.Builder.SetInsertPoint(CGF.AllocaInsertPt); in emitUpdateLocation()
359 CGF.Builder.CreateMemCpy(LocValue, getOrCreateDefaultLocation(Flags), in emitUpdateLocation()
365 auto *PSource = CGF.Builder.CreateConstInBoundsGEP2_32(IdentTy, LocValue, 0, in emitUpdateLocation()
373 PresumedLoc PLoc = CGF.getContext().getSourceManager().getPresumedLoc(Loc); in emitUpdateLocation()
376 dyn_cast_or_null<FunctionDecl>(CGF.CurFuncDecl)) { in emitUpdateLocation()
380 OMPDebugLoc = CGF.Builder.CreateGlobalStringPtr(OS2.str()); in emitUpdateLocation()
384 CGF.Builder.CreateStore(OMPDebugLoc, PSource); in emitUpdateLocation()
389 llvm::Value *CGOpenMPRuntime::getThreadID(CodeGenFunction &CGF, in getThreadID() argument
391 assert(CGF.CurFn && "No function in current CodeGenFunction."); in getThreadID()
396 auto I = OpenMPLocThreadIDMap.find(CGF.CurFn); in getThreadID()
403 dyn_cast_or_null<CGOpenMPRegionInfo>(CGF.CapturedStmtInfo)) { in getThreadID()
406 auto LVal = OMPRegionInfo->getThreadIDVariableLValue(CGF); in getThreadID()
407 ThreadID = CGF.EmitLoadOfLValue(LVal, Loc).getScalarVal(); in getThreadID()
410 if (CGF.Builder.GetInsertBlock() == CGF.AllocaInsertPt->getParent()) { in getThreadID()
411 auto &Elem = OpenMPLocThreadIDMap.FindAndConstruct(CGF.CurFn); in getThreadID()
422 CGBuilderTy::InsertPointGuard IPG(CGF.Builder); in getThreadID()
423 CGF.Builder.SetInsertPoint(CGF.AllocaInsertPt); in getThreadID()
425 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_global_thread_num), in getThreadID()
426 emitUpdateLocation(CGF, Loc)); in getThreadID()
427 auto &Elem = OpenMPLocThreadIDMap.FindAndConstruct(CGF.CurFn); in getThreadID()
432 void CGOpenMPRuntime::functionFinished(CodeGenFunction &CGF) { in functionFinished() argument
433 assert(CGF.CurFn && "No function in current CodeGenFunction."); in functionFinished()
434 if (OpenMPLocThreadIDMap.count(CGF.CurFn)) in functionFinished()
435 OpenMPLocThreadIDMap.erase(CGF.CurFn); in functionFinished()
795 llvm::Value *CGOpenMPRuntime::getAddrOfThreadPrivate(CodeGenFunction &CGF, in getAddrOfThreadPrivate() argument
800 llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc), in getAddrOfThreadPrivate()
801 CGF.Builder.CreatePointerCast(VDAddr, CGM.Int8PtrTy), in getAddrOfThreadPrivate()
804 return CGF.EmitRuntimeCall( in getAddrOfThreadPrivate()
809 CodeGenFunction &CGF, llvm::Value *VDAddr, llvm::Value *Ctor, in emitThreadPrivateVarInit() argument
813 auto OMPLoc = emitUpdateLocation(CGF, Loc); in emitThreadPrivateVarInit()
814 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_global_thread_num), in emitThreadPrivateVarInit()
819 CGF.Builder.CreatePointerCast(VDAddr, CGM.VoidPtrTy), in emitThreadPrivateVarInit()
821 CGF.EmitRuntimeCall( in emitThreadPrivateVarInit()
827 bool PerformInit, CodeGenFunction *CGF) { in emitThreadPrivateVarDefinition() argument
918 if (!CGF) { in emitThreadPrivateVarDefinition()
932 emitThreadPrivateVarInit(*CGF, VDAddr, Ctor, CopyCtor, Dtor, Loc); in emitThreadPrivateVarDefinition()
937 void CGOpenMPRuntime::emitParallelCall(CodeGenFunction &CGF, SourceLocation Loc, in emitParallelCall() argument
942 emitUpdateLocation(CGF, Loc), in emitParallelCall()
943 CGF.Builder.getInt32(1), // Number of arguments after 'microtask' argument in emitParallelCall()
945 CGF.Builder.CreateBitCast(OutlinedFn, getKmpc_MicroPointerTy()), in emitParallelCall()
946 CGF.EmitCastToVoidPtr(CapturedStruct)}; in emitParallelCall()
948 CGF.EmitRuntimeCall(RTLFn, Args); in emitParallelCall()
951 void CGOpenMPRuntime::emitSerialCall(CodeGenFunction &CGF, SourceLocation Loc, in emitSerialCall() argument
954 auto ThreadID = getThreadID(CGF, Loc); in emitSerialCall()
957 llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), ThreadID}; in emitSerialCall()
958 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_serialized_parallel), in emitSerialCall()
962 auto ThreadIDAddr = emitThreadIDAddress(CGF, Loc); in emitSerialCall()
964 CGF.getContext().getIntTypeForBitwidth(/*DestWidth*/ 32, /*Signed*/ true); in emitSerialCall()
965 auto ZeroAddr = CGF.CreateMemTemp(Int32Ty, /*Name*/ ".zero.addr"); in emitSerialCall()
966 CGF.InitTempAlloca(ZeroAddr, CGF.Builder.getInt32(/*C*/ 0)); in emitSerialCall()
968 CGF.EmitCallOrInvoke(OutlinedFn, OutlinedFnArgs); in emitSerialCall()
971 llvm::Value *EndArgs[] = {emitUpdateLocation(CGF, Loc), ThreadID}; in emitSerialCall()
972 CGF.EmitRuntimeCall( in emitSerialCall()
982 llvm::Value *CGOpenMPRuntime::emitThreadIDAddress(CodeGenFunction &CGF, in emitThreadIDAddress() argument
985 dyn_cast_or_null<CGOpenMPRegionInfo>(CGF.CapturedStmtInfo)) in emitThreadIDAddress()
987 return OMPRegionInfo->getThreadIDVariableLValue(CGF).getAddress(); in emitThreadIDAddress()
989 auto ThreadID = getThreadID(CGF, Loc); in emitThreadIDAddress()
991 CGF.getContext().getIntTypeForBitwidth(/*DestWidth*/ 32, /*Signed*/ true); in emitThreadIDAddress()
992 auto ThreadIDTemp = CGF.CreateMemTemp(Int32Ty, /*Name*/ ".threadid_temp."); in emitThreadIDAddress()
993 CGF.EmitStoreOfScalar(ThreadID, in emitThreadIDAddress()
994 CGF.MakeNaturalAlignAddrLValue(ThreadIDTemp, Int32Ty)); in emitThreadIDAddress()
1035 void Emit(CodeGenFunction &CGF, Flags /*flags*/) override { in Emit() argument
1036 CGF.EmitRuntimeCall(Callee, Args); in Emit()
1041 void CGOpenMPRuntime::emitCriticalRegion(CodeGenFunction &CGF, in emitCriticalRegion() argument
1050 CodeGenFunction::RunCleanupsScope Scope(CGF); in emitCriticalRegion()
1051 llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc), in emitCriticalRegion()
1053 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_critical), Args); in emitCriticalRegion()
1055 CGF.EHStack.pushCleanup<CallEndCleanup>( in emitCriticalRegion()
1058 emitInlinedDirective(CGF, CriticalOpGen); in emitCriticalRegion()
1062 static void emitIfStmt(CodeGenFunction &CGF, llvm::Value *IfCond, in emitIfStmt() argument
1064 llvm::Value *CallBool = CGF.EmitScalarConversion( in emitIfStmt()
1066 CGF.getContext().getIntTypeForBitwidth(/*DestWidth=*/32, /*Signed=*/true), in emitIfStmt()
1067 CGF.getContext().BoolTy); in emitIfStmt()
1069 auto *ThenBlock = CGF.createBasicBlock("omp_if.then"); in emitIfStmt()
1070 auto *ContBlock = CGF.createBasicBlock("omp_if.end"); in emitIfStmt()
1072 CGF.Builder.CreateCondBr(CallBool, ThenBlock, ContBlock); in emitIfStmt()
1073 CGF.EmitBlock(ThenBlock); in emitIfStmt()
1074 CGF.CGM.getOpenMPRuntime().emitInlinedDirective(CGF, BodyOpGen); in emitIfStmt()
1076 CGF.EmitBranch(ContBlock); in emitIfStmt()
1077 CGF.EmitBlock(ContBlock, true); in emitIfStmt()
1080 void CGOpenMPRuntime::emitMasterRegion(CodeGenFunction &CGF, in emitMasterRegion() argument
1088 llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc)}; in emitMasterRegion()
1090 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_master), Args); in emitMasterRegion()
1091 emitIfStmt(CGF, IsMaster, [&](CodeGenFunction &CGF) -> void { in emitMasterRegion() argument
1092 CodeGenFunction::RunCleanupsScope Scope(CGF); in emitMasterRegion()
1093 CGF.EHStack.pushCleanup<CallEndCleanup>( in emitMasterRegion()
1096 MasterOpGen(CGF); in emitMasterRegion()
1100 void CGOpenMPRuntime::emitTaskyieldCall(CodeGenFunction &CGF, in emitTaskyieldCall() argument
1104 emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc), in emitTaskyieldCall()
1106 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_omp_taskyield), Args); in emitTaskyieldCall()
1129 CodeGenFunction CGF(CGM); in emitCopyprivateCopyFunction() local
1130 CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args); in emitCopyprivateCopyFunction()
1133 auto *LHS = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitCopyprivateCopyFunction()
1134 CGF.Builder.CreateAlignedLoad(CGF.GetAddrOfLocalVar(&LHSArg), in emitCopyprivateCopyFunction()
1135 CGF.PointerAlignInBytes), in emitCopyprivateCopyFunction()
1137 auto *RHS = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitCopyprivateCopyFunction()
1138 CGF.Builder.CreateAlignedLoad(CGF.GetAddrOfLocalVar(&RHSArg), in emitCopyprivateCopyFunction()
1139 CGF.PointerAlignInBytes), in emitCopyprivateCopyFunction()
1146 auto *DestAddr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitCopyprivateCopyFunction()
1147 CGF.Builder.CreateAlignedLoad( in emitCopyprivateCopyFunction()
1148 CGF.Builder.CreateStructGEP(nullptr, LHS, I), in emitCopyprivateCopyFunction()
1150 CGF.ConvertTypeForMem(C.getPointerType(SrcExprs[I]->getType()))); in emitCopyprivateCopyFunction()
1151 auto *SrcAddr = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitCopyprivateCopyFunction()
1152 CGF.Builder.CreateAlignedLoad( in emitCopyprivateCopyFunction()
1153 CGF.Builder.CreateStructGEP(nullptr, RHS, I), in emitCopyprivateCopyFunction()
1155 CGF.ConvertTypeForMem(C.getPointerType(SrcExprs[I]->getType()))); in emitCopyprivateCopyFunction()
1156 CGF.EmitOMPCopy(CGF, CopyprivateVars[I]->getType(), DestAddr, SrcAddr, in emitCopyprivateCopyFunction()
1161 CGF.FinishFunction(); in emitCopyprivateCopyFunction()
1165 void CGOpenMPRuntime::emitSingleRegion(CodeGenFunction &CGF, in emitSingleRegion() argument
1189 DidIt = CGF.CreateMemTemp(KmpInt32Ty, ".omp.copyprivate.did_it"); in emitSingleRegion()
1190 CGF.InitTempAlloca(DidIt, CGF.Builder.getInt32(0)); in emitSingleRegion()
1193 llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc)}; in emitSingleRegion()
1195 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_single), Args); in emitSingleRegion()
1196 emitIfStmt(CGF, IsSingle, [&](CodeGenFunction &CGF) -> void { in emitSingleRegion() argument
1197 CodeGenFunction::RunCleanupsScope Scope(CGF); in emitSingleRegion()
1198 CGF.EHStack.pushCleanup<CallEndCleanup>( in emitSingleRegion()
1201 SingleOpGen(CGF); in emitSingleRegion()
1204 CGF.Builder.CreateAlignedStore(CGF.Builder.getInt32(1), DidIt, in emitSingleRegion()
1217 CGF.CreateMemTemp(CopyprivateArrayTy, ".omp.copyprivate.cpr_list"); in emitSingleRegion()
1219 auto *Elem = CGF.Builder.CreateStructGEP( in emitSingleRegion()
1221 CGF.Builder.CreateAlignedStore( in emitSingleRegion()
1222 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitSingleRegion()
1223 CGF.EmitLValue(CopyprivateVars[I]).getAddress(), CGF.VoidPtrTy), in emitSingleRegion()
1229 CGM, CGF.ConvertTypeForMem(CopyprivateArrayTy)->getPointerTo(), in emitSingleRegion()
1231 auto *BufSize = CGF.Builder.getInt32( in emitSingleRegion()
1233 auto *CL = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(CopyprivateList, in emitSingleRegion()
1234 CGF.VoidPtrTy); in emitSingleRegion()
1236 CGF.Builder.CreateAlignedLoad(DidIt, CGF.PointerAlignInBytes); in emitSingleRegion()
1238 emitUpdateLocation(CGF, Loc), // ident_t *<loc> in emitSingleRegion()
1239 getThreadID(CGF, Loc), // i32 <gtid> in emitSingleRegion()
1245 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_copyprivate), Args); in emitSingleRegion()
1249 void CGOpenMPRuntime::emitBarrierCall(CodeGenFunction &CGF, SourceLocation Loc, in emitBarrierCall() argument
1273 llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc, Flags), in emitBarrierCall()
1274 getThreadID(CGF, Loc)}; in emitBarrierCall()
1275 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_cancel_barrier), Args); in emitBarrierCall()
1328 void CGOpenMPRuntime::emitForInit(CodeGenFunction &CGF, SourceLocation Loc, in emitForInit() argument
1343 Chunk = CGF.Builder.getIntN(IVSize, 1); in emitForInit()
1344 llvm::Value *Args[] = { emitUpdateLocation(CGF, Loc, OMP_IDENT_KMPC), in emitForInit()
1345 getThreadID(CGF, Loc), in emitForInit()
1346 CGF.Builder.getInt32(Schedule), // Schedule type in emitForInit()
1347 CGF.Builder.getIntN(IVSize, 0), // Lower in emitForInit()
1349 CGF.Builder.getIntN(IVSize, 1), // Stride in emitForInit()
1352 CGF.EmitRuntimeCall(createDispatchInitFunction(IVSize, IVSigned), Args); in emitForInit()
1363 Chunk = CGF.Builder.getIntN(IVSize, 1); in emitForInit()
1367 llvm::Value *Args[] = { emitUpdateLocation(CGF, Loc, OMP_IDENT_KMPC), in emitForInit()
1368 getThreadID(CGF, Loc), in emitForInit()
1369 CGF.Builder.getInt32(Schedule), // Schedule type in emitForInit()
1374 CGF.Builder.getIntN(IVSize, 1), // Incr in emitForInit()
1377 CGF.EmitRuntimeCall(createForStaticInitFunction(IVSize, IVSigned), Args); in emitForInit()
1381 void CGOpenMPRuntime::emitForFinish(CodeGenFunction &CGF, SourceLocation Loc, in emitForFinish() argument
1388 llvm::Value *Args[] = {emitUpdateLocation(CGF, Loc, OMP_IDENT_KMPC), in emitForFinish()
1389 getThreadID(CGF, Loc)}; in emitForFinish()
1390 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_for_static_fini), in emitForFinish()
1394 llvm::Value *CGOpenMPRuntime::emitForNext(CodeGenFunction &CGF, in emitForNext() argument
1404 emitUpdateLocation(CGF, Loc, OMP_IDENT_KMPC), getThreadID(CGF, Loc), in emitForNext()
1411 CGF.EmitRuntimeCall(createDispatchNextFunction(IVSize, IVSigned), Args); in emitForNext()
1412 return CGF.EmitScalarConversion( in emitForNext()
1413 Call, CGF.getContext().getIntTypeForBitwidth(32, /* Signed */ true), in emitForNext()
1414 CGF.getContext().BoolTy); in emitForNext()
1417 void CGOpenMPRuntime::emitNumThreadsClause(CodeGenFunction &CGF, in emitNumThreadsClause() argument
1422 emitUpdateLocation(CGF, Loc), getThreadID(CGF, Loc), in emitNumThreadsClause()
1423 CGF.Builder.CreateIntCast(NumThreads, CGF.Int32Ty, /*isSigned*/ true)}; in emitNumThreadsClause()
1424 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_push_num_threads), in emitNumThreadsClause()
1428 void CGOpenMPRuntime::emitFlush(CodeGenFunction &CGF, ArrayRef<const Expr *>, in emitFlush() argument
1431 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_flush), in emitFlush()
1432 emitUpdateLocation(CGF, Loc)); in emitFlush()
1522 CodeGenFunction CGF(CGM); in emitProxyTaskFunction() local
1523 CGF.disableDebugInfo(); in emitProxyTaskFunction()
1524 CGF.StartFunction(GlobalDecl(), KmpInt32Ty, TaskEntry, TaskEntryFnInfo, Args); in emitProxyTaskFunction()
1527 auto *GtidParam = CGF.EmitLoadOfScalar( in emitProxyTaskFunction()
1528 CGF.GetAddrOfLocalVar(&GtidArg), /*Volatile=*/false, in emitProxyTaskFunction()
1530 auto TaskTypeArgAddr = CGF.EmitLoadOfScalar( in emitProxyTaskFunction()
1531 CGF.GetAddrOfLocalVar(&TaskTypeArg), /*Volatile=*/false, in emitProxyTaskFunction()
1533 auto *PartidPtr = CGF.Builder.CreateStructGEP(KmpTaskTTy, TaskTypeArgAddr, in emitProxyTaskFunction()
1535 auto *PartidParam = CGF.EmitLoadOfScalar( in emitProxyTaskFunction()
1538 auto *SharedsPtr = CGF.Builder.CreateStructGEP(KmpTaskTTy, TaskTypeArgAddr, in emitProxyTaskFunction()
1541 CGF.EmitLoadOfScalar(SharedsPtr, /*Volatile=*/false, in emitProxyTaskFunction()
1545 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitProxyTaskFunction()
1546 SharedsParam, CGF.ConvertTypeForMem(SharedsPtrTy))}; in emitProxyTaskFunction()
1547 CGF.EmitCallOrInvoke(TaskFunction, CallArgs); in emitProxyTaskFunction()
1548 CGF.EmitStoreThroughLValue( in emitProxyTaskFunction()
1549 RValue::get(CGF.Builder.getInt32(/*C=*/0)), in emitProxyTaskFunction()
1550 CGF.MakeNaturalAlignAddrLValue(CGF.ReturnValue, KmpInt32Ty)); in emitProxyTaskFunction()
1551 CGF.FinishFunction(); in emitProxyTaskFunction()
1556 CodeGenFunction &CGF, SourceLocation Loc, bool Tied, in emitTaskCall() argument
1567 auto *KmpTaskTTy = CGF.ConvertType(KmpTaskQTy); in emitTaskCall()
1589 ? CGF.Builder.CreateSelect(Final.getPointer(), in emitTaskCall()
1590 CGF.Builder.getInt32(FinalFlag), in emitTaskCall()
1591 CGF.Builder.getInt32(/*C=*/0)) in emitTaskCall()
1592 : CGF.Builder.getInt32(Final.getInt() ? FinalFlag : 0); in emitTaskCall()
1593 TaskFlags = CGF.Builder.CreateOr(TaskFlags, CGF.Builder.getInt32(Flags)); in emitTaskCall()
1595 llvm::Value *AllocArgs[] = {emitUpdateLocation(CGF, Loc), in emitTaskCall()
1596 getThreadID(CGF, Loc), TaskFlags, KmpTaskTySize, in emitTaskCall()
1598 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitTaskCall()
1600 auto *NewTask = CGF.EmitRuntimeCall( in emitTaskCall()
1603 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(NewTask, KmpTaskTPtrTy); in emitTaskCall()
1607 CGF.EmitAggregateCopy( in emitTaskCall()
1608 CGF.EmitLoadOfScalar( in emitTaskCall()
1609 CGF.Builder.CreateStructGEP(KmpTaskTTy, NewTaskNewTaskTTy, in emitTaskCall()
1615 CGF.Builder.CreateAlignedStore( in emitTaskCall()
1618 CGF.Builder.CreateStructGEP(KmpTaskTTy, NewTaskNewTaskTTy, in emitTaskCall()
1626 llvm::Value *TaskArgs[] = {emitUpdateLocation(CGF, Loc), in emitTaskCall()
1627 getThreadID(CGF, Loc), NewTask}; in emitTaskCall()
1629 CGF.EmitRuntimeCall(createRuntimeFunction(OMPRTL__kmpc_omp_task), TaskArgs); in emitTaskCall()
1654 CodeGenFunction CGF(CGM); in emitReductionFunction() local
1655 CGF.StartFunction(GlobalDecl(), C.VoidTy, Fn, CGFI, Args); in emitReductionFunction()
1659 auto *LHS = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitReductionFunction()
1660 CGF.Builder.CreateAlignedLoad(CGF.GetAddrOfLocalVar(&LHSArg), in emitReductionFunction()
1661 CGF.PointerAlignInBytes), in emitReductionFunction()
1663 auto *RHS = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitReductionFunction()
1664 CGF.Builder.CreateAlignedLoad(CGF.GetAddrOfLocalVar(&RHSArg), in emitReductionFunction()
1665 CGF.PointerAlignInBytes), in emitReductionFunction()
1671 CodeGenFunction::OMPPrivateScope Scope(CGF); in emitReductionFunction()
1676 return CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitReductionFunction()
1677 CGF.Builder.CreateAlignedLoad( in emitReductionFunction()
1678 CGF.Builder.CreateStructGEP(/*Ty=*/nullptr, RHS, I), in emitReductionFunction()
1680 CGF.ConvertTypeForMem(C.getPointerType(RHSExprs[I]->getType()))); in emitReductionFunction()
1685 return CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitReductionFunction()
1686 CGF.Builder.CreateAlignedLoad( in emitReductionFunction()
1687 CGF.Builder.CreateStructGEP(/*Ty=*/nullptr, LHS, I), in emitReductionFunction()
1689 CGF.ConvertTypeForMem(C.getPointerType(LHSExprs[I]->getType()))); in emitReductionFunction()
1694 CGF.EmitIgnoredExpr(E); in emitReductionFunction()
1697 CGF.FinishFunction(); in emitReductionFunction()
1701 void CGOpenMPRuntime::emitReduction(CodeGenFunction &CGF, SourceLocation Loc, in emitReduction() argument
1744 CGF.CreateMemTemp(ReductionArrayTy, ".omp.reduction.red_list"); in emitReduction()
1746 auto *Elem = CGF.Builder.CreateStructGEP(/*Ty=*/nullptr, ReductionList, I); in emitReduction()
1747 CGF.Builder.CreateAlignedStore( in emitReduction()
1748 CGF.Builder.CreatePointerBitCastOrAddrSpaceCast( in emitReduction()
1749 CGF.EmitLValue(RHSExprs[I]).getAddress(), CGF.VoidPtrTy), in emitReduction()
1755 CGM, CGF.ConvertTypeForMem(ReductionArrayTy)->getPointerTo(), LHSExprs, in emitReduction()
1764 CGF, Loc, in emitReduction()
1766 auto *ThreadId = getThreadID(CGF, Loc); in emitReduction()
1769 auto *RL = CGF.Builder.CreatePointerBitCastOrAddrSpaceCast(ReductionList, in emitReduction()
1770 CGF.VoidPtrTy); in emitReduction()
1774 CGF.Builder.getInt32(RHSExprs.size()), // i32 <n> in emitReduction()
1780 auto Res = CGF.EmitRuntimeCall( in emitReduction()
1786 auto *DefaultBB = CGF.createBasicBlock(".omp.reduction.default"); in emitReduction()
1787 auto *SwInst = CGF.Builder.CreateSwitch(Res, DefaultBB, /*NumCases=*/2); in emitReduction()
1795 auto *Case1BB = CGF.createBasicBlock(".omp.reduction.case1"); in emitReduction()
1796 SwInst->addCase(CGF.Builder.getInt32(1), Case1BB); in emitReduction()
1797 CGF.EmitBlock(Case1BB); in emitReduction()
1800 CodeGenFunction::RunCleanupsScope Scope(CGF); in emitReduction()
1807 CGF.EHStack.pushCleanup<CallEndCleanup>( in emitReduction()
1813 CGF.EmitIgnoredExpr(E); in emitReduction()
1817 CGF.EmitBranch(DefaultBB); in emitReduction()
1824 auto *Case2BB = CGF.createBasicBlock(".omp.reduction.case2"); in emitReduction()
1825 SwInst->addCase(CGF.Builder.getInt32(2), Case2BB); in emitReduction()
1826 CGF.EmitBlock(Case2BB); in emitReduction()
1829 CodeGenFunction::RunCleanupsScope Scope(CGF); in emitReduction()
1858 LValue X = CGF.EmitLValue(XExpr); in emitReduction()
1861 E = CGF.EmitAnyExpr(EExpr); in emitReduction()
1862 CGF.EmitOMPAtomicSimpleUpdateExpr( in emitReduction()
1864 [&CGF, UpExpr, VD](RValue XRValue) { in emitReduction()
1865 CodeGenFunction::OMPPrivateScope PrivateScope(CGF); in emitReduction()
1867 VD, [&CGF, VD, XRValue]() -> llvm::Value *{ in emitReduction()
1868 auto *LHSTemp = CGF.CreateMemTemp(VD->getType()); in emitReduction()
1869 CGF.EmitStoreThroughLValue( in emitReduction()
1871 CGF.MakeNaturalAlignAddrLValue(LHSTemp, VD->getType())); in emitReduction()
1875 return CGF.EmitAnyExpr(UpExpr); in emitReduction()
1879 emitCriticalRegion(CGF, ".atomic_reduction", [E](CodeGenFunction &CGF) { in emitReduction() argument
1880 CGF.EmitIgnoredExpr(E); in emitReduction()
1887 CGF.EmitBranch(DefaultBB); in emitReduction()
1888 CGF.EmitBlock(DefaultBB, /*IsFinished=*/true); in emitReduction()
1891 void CGOpenMPRuntime::emitInlinedDirective(CodeGenFunction &CGF, in emitInlinedDirective() argument
1893 InlinedOpenMPRegionRAII Region(CGF, CodeGen); in emitInlinedDirective()
1894 CGF.CapturedStmtInfo->EmitBody(CGF, /*S=*/nullptr); in emitInlinedDirective()