reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
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);