diff --git a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def --- a/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def +++ b/llvm/include/llvm/Frontend/OpenMP/OMPKinds.def @@ -473,7 +473,7 @@ __OMP_RTL(__kmpc_begin_sharing_variables, false, Void, VoidPtrPtrPtr, SizeTy) __OMP_RTL(__kmpc_end_sharing_variables, false, Void, ) __OMP_RTL(__kmpc_get_shared_variables, false, Void, VoidPtrPtrPtr) -__OMP_RTL(__kmpc_parallel_level, false, Int8, ) +__OMP_RTL(__kmpc_parallel_level, false, Int16, IdentPtr, Int32) __OMP_RTL(__kmpc_is_spmd_exec_mode, false, Int8, ) __OMP_RTL(__kmpc_barrier_simple_spmd, false, Void, IdentPtr, Int32) __OMP_RTL(__kmpc_barrier_simple_generic, false, Void, IdentPtr, Int32) diff --git a/llvm/test/Transforms/OpenMP/parallel_level_fold.ll b/llvm/test/Transforms/OpenMP/parallel_level_fold.ll --- a/llvm/test/Transforms/OpenMP/parallel_level_fold.ll +++ b/llvm/test/Transforms/OpenMP/parallel_level_fold.ll @@ -7,15 +7,18 @@ @no_spmd_exec_mode = weak constant i8 1 @spmd_exec_mode = weak constant i8 0 @parallel_exec_mode = weak constant i8 0 -@G = external global i8 +@G = external global i16 @llvm.compiler.used = appending global [3 x ptr] [ptr @no_spmd_exec_mode, ptr @spmd_exec_mode, ptr @parallel_exec_mode], section "llvm.metadata" ;. ; CHECK: @[[NO_SPMD_EXEC_MODE:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 1 ; CHECK: @[[SPMD_EXEC_MODE:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0 ; CHECK: @[[PARALLEL_EXEC_MODE:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0 -; CHECK: @[[G:[a-zA-Z0-9_$"\\.-]+]] = external global i8 +; CHECK: @[[G:[a-zA-Z0-9_$"\\.-]+]] = external global i16 ; 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" +; CHECK: @[[NONE_SPMD_NESTED_PARALLELISM:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0 +; CHECK: @[[SPMD_NESTED_PARALLELISM:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0 +; CHECK: @[[PARALLEL_NESTED_PARALLELISM:[a-zA-Z0-9_$"\\.-]+]] = weak constant i8 0 ;. define weak void @none_spmd() { ; CHECK-LABEL: define {{[^@]+}}@none_spmd() { @@ -64,19 +67,19 @@ define internal void @mixed_helper() { ; CHECK-LABEL: define {{[^@]+}}@mixed_helper() { -; CHECK-NEXT: [[LEVEL:%.*]] = call i8 @__kmpc_parallel_level() -; CHECK-NEXT: store i8 [[LEVEL]], ptr @G, align 1 +; CHECK-NEXT: [[LEVEL:%.*]] = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0) +; CHECK-NEXT: store i16 [[LEVEL]], ptr @G, align 2 ; CHECK-NEXT: ret void ; - %level = call i8 @__kmpc_parallel_level() - store i8 %level, ptr @G + %level = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0) + store i16 %level, ptr @G ret void } define internal void @none_spmd_helper() { ; CHECK-LABEL: define {{[^@]+}}@none_spmd_helper() { -; CHECK-NEXT: [[LEVEL12:%.*]] = call i8 @__kmpc_parallel_level() -; CHECK-NEXT: [[C:%.*]] = icmp eq i8 [[LEVEL12]], 0 +; CHECK-NEXT: [[LEVEL12:%.*]] = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0) +; CHECK-NEXT: [[C:%.*]] = icmp eq i16 [[LEVEL12]], 0 ; CHECK-NEXT: br i1 [[C]], label [[T:%.*]], label [[F:%.*]] ; CHECK: t: ; CHECK-NEXT: call void @foo() @@ -85,8 +88,8 @@ ; CHECK-NEXT: call void @bar() ; CHECK-NEXT: ret void ; - %level12 = call i8 @__kmpc_parallel_level() - %c = icmp eq i8 %level12, 0 + %level12 = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0) + %c = icmp eq i16 %level12, 0 br i1 %c, label %t, label %f t: call void @foo() @@ -98,11 +101,11 @@ define internal void @spmd_helper() { ; CHECK-LABEL: define {{[^@]+}}@spmd_helper() { -; CHECK-NEXT: store i8 1, ptr @G, align 1 +; CHECK-NEXT: store i8 1, ptr @G, align 2 ; CHECK-NEXT: ret void ; - %level = call i8 @__kmpc_parallel_level() - store i8 %level, ptr @G + %level = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0) + store i16 %level, ptr @G ret void } @@ -118,18 +121,18 @@ define internal void @parallel_helper() { ; CHECK-LABEL: define {{[^@]+}}@parallel_helper() { -; CHECK-NEXT: [[LEVEL:%.*]] = call i8 @__kmpc_parallel_level() -; CHECK-NEXT: store i8 [[LEVEL]], ptr @G, align 1 +; CHECK-NEXT: [[LEVEL:%.*]] = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0) +; CHECK-NEXT: store i16 [[LEVEL]], ptr @G, align 2 ; CHECK-NEXT: ret void ; - %level = call i8 @__kmpc_parallel_level() - store i8 %level, ptr @G + %level = call zeroext i16 @__kmpc_parallel_level(ptr null, i32 0) + store i16 %level, ptr @G ret void } declare void @foo() declare void @bar() -declare i8 @__kmpc_parallel_level() +declare zeroext i16 @__kmpc_parallel_level(ptr, i32) declare i32 @__kmpc_target_init(ptr, i8 zeroext, i1 zeroext) #1 declare void @__kmpc_target_deinit(ptr nocapture readnone, i8 zeroext) #1