Skip to content

Commit 63ee9ae

Browse files
committed
[Clang][OMPX] Add the code generation for multi-dim num_teams
1 parent f9e58d7 commit 63ee9ae

File tree

4 files changed

+1278
-641
lines changed

4 files changed

+1278
-641
lines changed

clang/lib/CodeGen/CGOpenMPRuntime.cpp

+21-1
Original file line numberDiff line numberDiff line change
@@ -9582,6 +9582,20 @@ static void genMapInfo(const OMPExecutableDirective &D, CodeGenFunction &CGF,
95829582
MappedVarSet, CombinedInfo);
95839583
genMapInfo(MEHandler, CGF, CombinedInfo, OMPBuilder, MappedVarSet);
95849584
}
9585+
9586+
static void emitNumTeamsForBareTargetDirective(
9587+
CodeGenFunction &CGF, const OMPExecutableDirective &D,
9588+
llvm::SmallVectorImpl<llvm::Value *> &NumTeams) {
9589+
const auto *C = D.getSingleClause<OMPNumTeamsClause>();
9590+
assert(!C->varlist_empty() && "ompx_bare requires explicit num_teams");
9591+
CodeGenFunction::RunCleanupsScope NumTeamsScope(CGF);
9592+
for (auto *E : C->getNumTeams()) {
9593+
llvm::Value *V = CGF.EmitScalarExpr(E);
9594+
NumTeams.push_back(
9595+
CGF.Builder.CreateIntCast(V, CGF.Int32Ty, /*isSigned=*/true));
9596+
}
9597+
}
9598+
95859599
static void emitTargetCallKernelLaunch(
95869600
CGOpenMPRuntime *OMPRuntime, llvm::Function *OutlinedFn,
95879601
const OMPExecutableDirective &D,
@@ -9651,8 +9665,14 @@ static void emitTargetCallKernelLaunch(
96519665
return CGF.Builder.saveIP();
96529666
};
96539667

9668+
bool IsBare = D.hasClausesOfKind<OMPXBareClause>();
9669+
SmallVector<llvm::Value *, 3> NumTeams;
9670+
if (IsBare)
9671+
emitNumTeamsForBareTargetDirective(CGF, D, NumTeams);
9672+
else
9673+
NumTeams.push_back(OMPRuntime->emitNumTeamsForTargetDirective(CGF, D));
9674+
96549675
llvm::Value *DeviceID = emitDeviceID(Device, CGF);
9655-
llvm::Value *NumTeams = OMPRuntime->emitNumTeamsForTargetDirective(CGF, D);
96569676
llvm::Value *NumThreads =
96579677
OMPRuntime->emitNumThreadsForTargetDirective(CGF, D);
96589678
llvm::Value *RTLoc = OMPRuntime->emitUpdateLocation(CGF, D.getBeginLoc());

0 commit comments

Comments
 (0)