reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/CodeGen/CGOpenMPRuntimeNVPTX.cpp
 2747   llvm::BasicBlock *LoopBB = CGF.createBasicBlock("omp.critical.loop");
 2748   llvm::BasicBlock *TestBB = CGF.createBasicBlock("omp.critical.test");
 2749   llvm::BasicBlock *SyncBB = CGF.createBasicBlock("omp.critical.sync");
 2750   llvm::BasicBlock *BodyBB = CGF.createBasicBlock("omp.critical.body");
 2751   llvm::BasicBlock *ExitBB = CGF.createBasicBlock("omp.critical.exit");
 2754   llvm::Value *Mask = CGF.EmitRuntimeCall(
 2757   llvm::Value *ThreadID = getNVPTXThreadID(CGF);
 2760   llvm::Value *TeamWidth = getNVPTXNumThreads(CGF);
 2764       CGF.getContext().getIntTypeForBitwidth(/*DestWidth=*/32, /*Signed=*/0);
 2765   Address Counter = CGF.CreateMemTemp(Int32Ty, "critical_counter");
 2766   LValue CounterLVal = CGF.MakeAddrLValue(Counter, Int32Ty);
 2767   CGF.EmitStoreOfScalar(llvm::Constant::getNullValue(CGM.Int32Ty), CounterLVal,
 2771   CGF.EmitBlock(LoopBB);
 2772   llvm::Value *CounterVal = CGF.EmitLoadOfScalar(CounterLVal, Loc);
 2773   llvm::Value *CmpLoopBound = CGF.Builder.CreateICmpSLT(CounterVal, TeamWidth);
 2774   CGF.Builder.CreateCondBr(CmpLoopBound, TestBB, ExitBB);
 2778   CGF.EmitBlock(TestBB);
 2779   CounterVal = CGF.EmitLoadOfScalar(CounterLVal, Loc);
 2781       CGF.Builder.CreateICmpEQ(ThreadID, CounterVal);
 2782   CGF.Builder.CreateCondBr(CmpThreadToCounter, BodyBB, SyncBB);
 2785   CGF.EmitBlock(BodyBB);
 2788   CGOpenMPRuntime::emitCriticalRegion(CGF, CriticalName, CriticalOpGen, Loc,
 2795   CGF.EmitBlock(SyncBB);
 2797   (void)CGF.EmitRuntimeCall(
 2801       CGF.Builder.CreateNSWAdd(CounterVal, CGF.Builder.getInt32(1));
 2801       CGF.Builder.CreateNSWAdd(CounterVal, CGF.Builder.getInt32(1));
 2802   CGF.EmitStoreOfScalar(IncCounterVal, CounterLVal);
 2803   CGF.EmitBranch(LoopBB);
 2806   CGF.EmitBlock(ExitBB, /*IsFinished=*/true);