[OpenMP] Add Missing Runtime Call for Globalization Remarks

Summary:
Add a missing runtime call to perform data globalization checks.

Reviewers: jdoerfert

Subscribers: guansong hiraditya llvm-commits sstefan1 yaxunl

Tags: #LLVM #OpenMP

Differential Revision: https://reviews.llvm.org/D88621
This commit is contained in:
Joseph Huber 2020-09-30 18:22:53 -04:00
parent c1dcb573a8
commit 82453e759c
2 changed files with 23 additions and 16 deletions

View File

@ -705,24 +705,29 @@ private:
}
void analysisGlobalization() {
auto &RFI =
OMPInfoCache.RFIs[OMPRTL___kmpc_data_sharing_coalesced_push_stack];
RuntimeFunction GlobalizationRuntimeIDs[] = {
OMPRTL___kmpc_data_sharing_coalesced_push_stack,
OMPRTL___kmpc_data_sharing_push_stack};
auto checkGlobalization = [&](Use &U, Function &Decl) {
if (CallInst *CI = getCallIfRegularCall(U, &RFI)) {
auto Remark = [&](OptimizationRemarkAnalysis ORA) {
return ORA
<< "Found thread data sharing on the GPU. "
<< "Expect degraded performance due to data globalization.";
};
emitRemark<OptimizationRemarkAnalysis>(CI, "OpenMPGlobalization",
Remark);
}
for (const auto GlobalizationCallID : GlobalizationRuntimeIDs) {
auto &RFI = OMPInfoCache.RFIs[GlobalizationCallID];
return false;
};
auto CheckGlobalization = [&](Use &U, Function &Decl) {
if (CallInst *CI = getCallIfRegularCall(U, &RFI)) {
auto Remark = [&](OptimizationRemarkAnalysis ORA) {
return ORA
<< "Found thread data sharing on the GPU. "
<< "Expect degraded performance due to data globalization.";
};
emitRemark<OptimizationRemarkAnalysis>(CI, "OpenMPGlobalization",
Remark);
}
RFI.foreachUse(SCC, checkGlobalization);
return false;
};
RFI.foreachUse(SCC, CheckGlobalization);
}
return;
}

View File

@ -59,7 +59,7 @@ entry:
br i1 %.not, label %.non-spmd, label %.exit
.non-spmd: ; preds = %entry
%1 = tail call i8* @__kmpc_data_sharing_coalesced_push_stack(i64 128, i16 0) #4, !dbg !31
%1 = tail call i8* @__kmpc_data_sharing_push_stack(i64 128, i16 0) #4, !dbg !31
%2 = bitcast i8* %1 to %struct._globalized_locals_ty*
br label %.exit
@ -86,6 +86,8 @@ declare i8 @__kmpc_is_spmd_exec_mode() local_unnamed_addr
declare i8* @__kmpc_data_sharing_coalesced_push_stack(i64, i16) local_unnamed_addr
declare i8* @__kmpc_data_sharing_push_stack(i64, i16) local_unnamed_addr
; Function Attrs: nounwind readnone
declare i32 @llvm.nvvm.read.ptx.sreg.tid.x() #1