Skip to content

Commit 363ae7f

Browse files
committed
[to-be-reverted] Add logs to OMPIRBuilder.
1 parent 16e86b9 commit 363ae7f

File tree

3 files changed

+6
-71
lines changed

3 files changed

+6
-71
lines changed

llvm/lib/Frontend/OpenMP/OMPIRBuilder.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1501,6 +1501,10 @@ IRBuilder<>::InsertPoint OpenMPIRBuilder::createParallel(
15011501
Extractor.findAllocas(CEAC, SinkingCands, HoistingCands, CommonExit);
15021502
Extractor.findInputsOutputs(Inputs, Outputs, SinkingCands);
15031503

1504+
for (auto* Input : Inputs) {
1505+
llvm::errs() << ">>>> collected input: " << *Input << "\n";
1506+
}
1507+
15041508
LLVM_DEBUG(dbgs() << "Before privatization: " << *OuterFn << "\n");
15051509

15061510
FunctionCallee TIDRTLFn =

mlir/lib/Target/LLVMIR/Dialect/OpenMP/OpenMPToLLVMIRTranslation.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,6 +1120,7 @@ convertOmpParallel(omp::ParallelOp opInst, llvm::IRBuilderBase &builder,
11201120
auto privCB = [&](InsertPointTy allocaIP, InsertPointTy codeGenIP,
11211121
llvm::Value &, llvm::Value &vPtr,
11221122
llvm::Value *&replacementValue) -> InsertPointTy {
1123+
llvm::errs() << ">>>> calling privCB for: " << vPtr << "\n";
11231124
replacementValue = &vPtr;
11241125

11251126
// If this is a private value, this lambda will return the corresponding

mlir/test/Target/LLVMIR/openmp-private.mlir

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -5,73 +5,12 @@
55

66
llvm.func @parallel_op_1_private(%arg0: !llvm.ptr) {
77
omp.parallel private(@x.privatizer %arg0 -> %arg2 : !llvm.ptr) {
8-
%0 = llvm.load %arg2 : !llvm.ptr -> f32
8+
// %0 = llvm.load %arg2 : !llvm.ptr -> f32
99
omp.terminator
1010
}
1111
llvm.return
1212
}
1313

14-
// CHECK-LABEL: @parallel_op_1_private
15-
// CHECK-SAME: (ptr %[[ORIG:.*]]) {
16-
// CHECK: %[[OMP_PAR_ARG:.*]] = alloca { ptr }, align 8
17-
// CHECK: %[[ORIG_GEP:.*]] = getelementptr { ptr }, ptr %[[OMP_PAR_ARG]], i32 0, i32 0
18-
// CHECK: store ptr %[[ORIG]], ptr %[[ORIG_GEP]], align 8
19-
// CHECK: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @1, i32 1, ptr @parallel_op_1_private..omp_par, ptr %[[OMP_PAR_ARG]])
20-
// CHECK: }
21-
22-
// CHECK-LABEL: void @parallel_op_1_private..omp_par
23-
// CHECK-SAME: (ptr noalias %{{.*}}, ptr noalias %{{.*}}, ptr %[[ARG:.*]])
24-
// CHECK: %[[ORIG_PTR_PTR:.*]] = getelementptr { ptr }, ptr %[[ARG]], i32 0, i32 0
25-
// CHECK: %[[ORIG_PTR:.*]] = load ptr, ptr %[[ORIG_PTR_PTR]], align 8
26-
27-
// Check that the privatizer alloc region was inlined properly.
28-
// CHECK: %[[PRIV_ALLOC:.*]] = alloca float, align 4
29-
// CHECK: %[[ORIG_VAL:.*]] = load float, ptr %[[ORIG_PTR]], align 4
30-
// CHECK: store float %[[ORIG_VAL]], ptr %[[PRIV_ALLOC]], align 4
31-
// CHECK-NEXT: br
32-
33-
// Check that the privatized value is used (rather than the original one).
34-
// CHECK: load float, ptr %[[PRIV_ALLOC]], align 4
35-
// CHECK: }
36-
37-
llvm.func @parallel_op_2_privates(%arg0: !llvm.ptr, %arg1: !llvm.ptr) {
38-
omp.parallel private(@x.privatizer %arg0 -> %arg2 : !llvm.ptr, @y.privatizer %arg1 -> %arg3 : !llvm.ptr) {
39-
%0 = llvm.load %arg2 : !llvm.ptr -> f32
40-
%1 = llvm.load %arg3 : !llvm.ptr -> i32
41-
omp.terminator
42-
}
43-
llvm.return
44-
}
45-
46-
// CHECK-LABEL: @parallel_op_2_privates
47-
// CHECK-SAME: (ptr %[[ORIG1:.*]], ptr %[[ORIG2:.*]]) {
48-
// CHECK: %[[OMP_PAR_ARG:.*]] = alloca { ptr, ptr }, align 8
49-
// CHECK: %[[ORIG1_GEP:.*]] = getelementptr { ptr, ptr }, ptr %[[OMP_PAR_ARG]], i32 0, i32 0
50-
// CHECK: store ptr %[[ORIG1]], ptr %[[ORIG1_GEP]], align 8
51-
// CHECK: call void (ptr, i32, ptr, ...) @__kmpc_fork_call(ptr @1, i32 1, ptr @parallel_op_2_privates..omp_par, ptr %[[OMP_PAR_ARG]])
52-
// CHECK: }
53-
54-
// CHECK-LABEL: void @parallel_op_2_privates..omp_par
55-
// CHECK-SAME: (ptr noalias %{{.*}}, ptr noalias %{{.*}}, ptr %[[ARG:.*]])
56-
// CHECK: %[[ORIG1_PTR_PTR:.*]] = getelementptr { ptr, ptr }, ptr %[[ARG]], i32 0, i32 0
57-
// CHECK: %[[ORIG1_PTR:.*]] = load ptr, ptr %[[ORIG1_PTR_PTR]], align 8
58-
// CHECK: %[[ORIG2_PTR_PTR:.*]] = getelementptr { ptr, ptr }, ptr %[[ARG]], i32 0, i32 1
59-
// CHECK: %[[ORIG2_PTR:.*]] = load ptr, ptr %[[ORIG2_PTR_PTR]], align 8
60-
61-
// Check that the privatizer alloc region was inlined properly.
62-
// CHECK: %[[PRIV1_ALLOC:.*]] = alloca float, align 4
63-
// CHECK: %[[ORIG1_VAL:.*]] = load float, ptr %[[ORIG1_PTR]], align 4
64-
// CHECK: store float %[[ORIG1_VAL]], ptr %[[PRIV1_ALLOC]], align 4
65-
// CHECK: %[[PRIV2_ALLOC:.*]] = alloca i32, align 4
66-
// CHECK: %[[ORIG2_VAL:.*]] = load i32, ptr %[[ORIG2_PTR]], align 4
67-
// CHECK: store i32 %[[ORIG2_VAL]], ptr %[[PRIV2_ALLOC]], align 4
68-
// CHECK-NEXT: br
69-
70-
// Check that the privatized value is used (rather than the original one).
71-
// CHECK: load float, ptr %[[PRIV1_ALLOC]], align 4
72-
// CHECK: load i32, ptr %[[PRIV2_ALLOC]], align 4
73-
// CHECK: }
74-
7514
omp.private {type = private} @x.privatizer : !llvm.ptr alloc {
7615
^bb0(%arg0: !llvm.ptr):
7716
%c1 = llvm.mlir.constant(1 : i32) : i32
@@ -80,12 +19,3 @@ omp.private {type = private} @x.privatizer : !llvm.ptr alloc {
8019
llvm.store %1, %0 : f32, !llvm.ptr
8120
omp.yield(%0 : !llvm.ptr)
8221
}
83-
84-
omp.private {type = private} @y.privatizer : !llvm.ptr alloc {
85-
^bb0(%arg0: !llvm.ptr):
86-
%c1 = llvm.mlir.constant(1 : i32) : i32
87-
%0 = llvm.alloca %c1 x i32 : (i32) -> !llvm.ptr
88-
%1 = llvm.load %arg0 : !llvm.ptr -> i32
89-
llvm.store %1, %0 : i32, !llvm.ptr
90-
omp.yield(%0 : !llvm.ptr)
91-
}

0 commit comments

Comments
 (0)