Skip to content

Commit

Permalink
[OpenMP] Make the exec_mode global have protected visibility
Browse files Browse the repository at this point in the history
We use protected visibility for almost everything with offloading. This
is because it provides us with the ability to read things from the host
without the expectation that it will be preempted by a shared library
load, bugs related to this have happened when offloading to the host.
This patch just makes the `exec_mode` global generated for each plugin
have protected visibility.

Reviewed By: jdoerfert

Differential Revision: https://reviews.llvm.org/D135285
  • Loading branch information
jhuber6 committed Oct 5, 2022
1 parent 5f7f484 commit a8ec170
Show file tree
Hide file tree
Showing 5 changed files with 15 additions and 14 deletions.
1 change: 1 addition & 0 deletions clang/lib/CodeGen/CGOpenMPRuntimeGPU.cpp
Expand Up @@ -836,6 +836,7 @@ static void setPropertyExecutionMode(CodeGenModule &CGM, StringRef Name,
llvm::ConstantInt::get(CGM.Int8Ty, Mode ? OMP_TGT_EXEC_MODE_SPMD
: OMP_TGT_EXEC_MODE_GENERIC),
Twine(Name, "_exec_mode"));
GVMode->setVisibility(llvm::GlobalVariable::ProtectedVisibility);
CGM.addCompilerUsedGlobal(GVMode);
}

Expand Down
6 changes: 3 additions & 3 deletions clang/test/OpenMP/nvptx_target_parallel_proc_bind_codegen.cpp
Expand Up @@ -16,9 +16,9 @@
#define HEADER

// Check that the execution mode of all 3 target regions on the gpu is set to SPMD Mode.
// CHECK-DAG: {{@__omp_offloading_.+l29}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l33}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l38}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l29}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l33}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l38}}_exec_mode = weak protected constant i8 2

template<typename tx>
tx ftemplate(int n) {
Expand Down
6 changes: 3 additions & 3 deletions clang/test/OpenMP/nvptx_target_parallel_reduction_codegen.cpp
Expand Up @@ -12,9 +12,9 @@
// CHECK-DAG: [[TRANSFER_STORAGE:@.+]] = weak addrspace([[SHARED_ADDRSPACE:[0-9]+]]) global [32 x i32]

// Check that the execution mode of all 3 target regions is set to Spmd Mode.
// CHECK-DAG: {{@__omp_offloading_.+l27}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l32}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l38}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l27}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l32}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l38}}_exec_mode = weak protected constant i8 2

template<typename tx>
tx ftemplate(int n) {
Expand Down
8 changes: 4 additions & 4 deletions clang/test/OpenMP/nvptx_target_simd_codegen.cpp
Expand Up @@ -16,10 +16,10 @@
#define HEADER

// Check that the execution mode of all 2 target regions on the gpu is set to NonSPMD Mode.
// CHECK-DAG: {{@__omp_offloading_.+l32}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l37}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l42}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l47}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l32}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l37}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l42}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l47}}_exec_mode = weak protected constant i8 2

#define N 1000

Expand Down
Expand Up @@ -16,10 +16,10 @@
#define HEADER

// Check that the execution mode of all 2 target regions on the gpu is set to NonSPMD Mode.
// CHECK-DAG: {{@__omp_offloading_.+l37}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l43}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l48}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l53}}_exec_mode = weak constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l37}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l43}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l48}}_exec_mode = weak protected constant i8 2
// CHECK-DAG: {{@__omp_offloading_.+l53}}_exec_mode = weak protected constant i8 2

#define N 1000
#define M 10
Expand Down

0 comments on commit a8ec170

Please sign in to comment.