Skip to content

Commit bdf3060

Browse files
committed
[LLVM][OpenMP] Correct the function signature of __kmpc_parallel_level
`__kmpc_parallel_level` used to be a function w/o any argument, but in the new device runtime, it accepts two. This patch simply corrects it in `OMPKinds.def`. ``` uint16_t __kmpc_parallel_level(IdentTy *Loc, uint32_t); ``` Reviewed By: jhuber6 Differential Revision: https://reviews.llvm.org/D141655
1 parent fff2092 commit bdf3060

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

llvm/include/llvm/Frontend/OpenMP/OMPKinds.def

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -473,7 +473,7 @@ __OMP_RTL(__kmpc_free_shared, false, Void, VoidPtr, SizeTy)
473473
__OMP_RTL(__kmpc_begin_sharing_variables, false, Void, VoidPtrPtrPtr, SizeTy)
474474
__OMP_RTL(__kmpc_end_sharing_variables, false, Void, )
475475
__OMP_RTL(__kmpc_get_shared_variables, false, Void, VoidPtrPtrPtr)
476-
__OMP_RTL(__kmpc_parallel_level, false, Int8, )
476+
__OMP_RTL(__kmpc_parallel_level, false, Int16, IdentPtr, Int32)
477477
__OMP_RTL(__kmpc_is_spmd_exec_mode, false, Int8, )
478478
__OMP_RTL(__kmpc_barrier_simple_spmd, false, Void, IdentPtr, Int32)
479479
__OMP_RTL(__kmpc_barrier_simple_generic, false, Void, IdentPtr, Int32)

llvm/test/Transforms/OpenMP/parallel_level_fold.ll

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,18 @@ target triple = "nvptx64"
77
@no_spmd_exec_mode = weak constant i8 1
88
@spmd_exec_mode = weak constant i8 0
99
@parallel_exec_mode = weak constant i8 0
10-
@G = external global i8
10+
@G = external global i16
1111
@llvm.compiler.used = appending global [3 x ptr] [ptr @no_spmd_exec_mode, ptr @spmd_exec_mode, ptr @parallel_exec_mode], section "llvm.metadata"
1212

1313
;.
1414
; CHECK: @[[NO_SPMD_EXEC_MODE:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 1
1515
; CHECK: @[[SPMD_EXEC_MODE:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0
1616
; CHECK: @[[PARALLEL_EXEC_MODE:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0
17-
; CHECK: @[[G:[a-zA-Z0-9_$"\\.-]+]] = external global i8
17+
; CHECK: @[[G:[a-zA-Z0-9_$"\\.-]+]] = external global i16
1818
; CHECK: @[[LLVM_COMPILER_USED:[a-zA-Z0-9_$"\\.-]+]] = appending global [3 x ptr] [ptr @no_spmd_exec_mode, ptr @spmd_exec_mode, ptr @parallel_exec_mode], section "llvm.metadata"
19+
; CHECK: @[[NONE_SPMD_NESTED_PARALLELISM:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0
20+
; CHECK: @[[SPMD_NESTED_PARALLELISM:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0
21+
; CHECK: @[[PARALLEL_NESTED_PARALLELISM:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0
1922
;.
2023
define weak void @none_spmd() {
2124
; CHECK-LABEL: define {{[^@]+}}@none_spmd() {
@@ -64,19 +67,19 @@ define weak void @parallel() {
6467

6568
define internal void @mixed_helper() {
6669
; CHECK-LABEL: define {{[^@]+}}@mixed_helper() {
67-
; CHECK-NEXT: [[LEVEL:%.*]] = call i8 @__kmpc_parallel_level()
68-
; CHECK-NEXT: store i8 [[LEVEL]], ptr @G, align 1
70+
; CHECK-NEXT: [[LEVEL:%.*]] = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0)
71+
; CHECK-NEXT: store i16 [[LEVEL]], ptr @G, align 2
6972
; CHECK-NEXT: ret void
7073
;
71-
%level = call i8 @__kmpc_parallel_level()
72-
store i8 %level, ptr @G
74+
%level = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0)
75+
store i16 %level, ptr @G
7376
ret void
7477
}
7578

7679
define internal void @none_spmd_helper() {
7780
; CHECK-LABEL: define {{[^@]+}}@none_spmd_helper() {
78-
; CHECK-NEXT: [[LEVEL12:%.*]] = call i8 @__kmpc_parallel_level()
79-
; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[LEVEL12]], 0
81+
; CHECK-NEXT: [[LEVEL12:%.*]] = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0)
82+
; CHECK-NEXT: [[C:%.*]] = icmp eq i16 [[LEVEL12]], 0
8083
; CHECK-NEXT: br i1 [[C]], label [[T:%.*]], label [[F:%.*]]
8184
; CHECK: t:
8285
; CHECK-NEXT: call void @foo()
@@ -85,8 +88,8 @@ define internal void @none_spmd_helper() {
8588
; CHECK-NEXT: call void @bar()
8689
; CHECK-NEXT: ret void
8790
;
88-
%level12 = call i8 @__kmpc_parallel_level()
89-
%c = icmp eq i8 %level12, 0
91+
%level12 = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0)
92+
%c = icmp eq i16 %level12, 0
9093
br i1 %c, label %t, label %f
9194
t:
9295
call void @foo()
@@ -98,11 +101,11 @@ f:
98101

99102
define internal void @spmd_helper() {
100103
; CHECK-LABEL: define {{[^@]+}}@spmd_helper() {
101-
; CHECK-NEXT: store i8 1, ptr @G, align 1
104+
; CHECK-NEXT: store i8 1, ptr @G, align 2
102105
; CHECK-NEXT: ret void
103106
;
104-
%level = call i8 @__kmpc_parallel_level()
105-
store i8 %level, ptr @G
107+
%level = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0)
108+
store i16 %level, ptr @G
106109
ret void
107110
}
108111

@@ -118,18 +121,18 @@ define internal void @__kmpc_parallel_51(ptr, i32, i32, i32, i32, ptr, ptr, ptr,
118121

119122
define internal void @parallel_helper() {
120123
; CHECK-LABEL: define {{[^@]+}}@parallel_helper() {
121-
; CHECK-NEXT: [[LEVEL:%.*]] = call i8 @__kmpc_parallel_level()
122-
; CHECK-NEXT: store i8 [[LEVEL]], ptr @G, align 1
124+
; CHECK-NEXT: [[LEVEL:%.*]] = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0)
125+
; CHECK-NEXT: store i16 [[LEVEL]], ptr @G, align 2
123126
; CHECK-NEXT: ret void
124127
;
125-
%level = call i8 @__kmpc_parallel_level()
126-
store i8 %level, ptr @G
128+
%level = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0)
129+
store i16 %level, ptr @G
127130
ret void
128131
}
129132

130133
declare void @foo()
131134
declare void @bar()
132-
declare i8 @__kmpc_parallel_level()
135+
declare zeroext i16 @__kmpc_parallel_level(ptr, i32)
133136
declare i32 @__kmpc_target_init(ptr, i8 zeroext, i1 zeroext) #1
134137
declare void @__kmpc_target_deinit(ptr nocapture readnone, i8 zeroext) #1
135138

0 commit comments

Comments
 (0)