1207b08a9SGiorgis Georgakoudis // NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --function-signature --include-generated-funcs --replace-value-regex "__omp_offloading_[0-9a-z]+_[0-9a-z]+" "reduction_size[.].+[.]" "pl_cond[.].+[.|,]" --prefix-filecheck-ir-name _
2a2dbfb6bSGiorgis Georgakoudis // Test target codegen - host bc file has to be created first.
3532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -fopenmp-cuda-mode -x c++ -triple powerpc64le-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm-bc %s -o %t-ppc-host.bc
4532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -fopenmp-cuda-mode -x c++ -triple nvptx64-unknown-unknown -fopenmp-targets=nvptx64-nvidia-cuda -emit-llvm %s -fopenmp-is-device -fopenmp-host-ir-file-path %t-ppc-host.bc -o - -disable-llvm-optzns | FileCheck %s --check-prefix=CHECK1
5532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -fopenmp-cuda-mode -x c++ -triple i386-unknown-unknown -fopenmp-targets=nvptx-nvidia-cuda -emit-llvm-bc %s -o %t-x86-host.bc
6532dc62bSNikita Popov // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -fopenmp-cuda-mode -x c++ -triple nvptx-unknown-unknown -fopenmp-targets=nvptx-nvidia-cuda -emit-llvm %s -fopenmp-is-device -fopenmp-host-ir-file-path %t-x86-host.bc -o - -disable-llvm-optzns | FileCheck %s --check-prefix=CHECK2
7*b52d33e6SJohannes Doerfert // RUN: %clang_cc1 -no-opaque-pointers -verify -fopenmp -fopenmp-cuda-mode -fexceptions -fcxx-exceptions -x c++ -triple nvptx-unknown-unknown -fopenmp-targets=nvptx-nvidia-cuda -emit-llvm %s -fopenmp-is-device -fopenmp-host-ir-file-path %t-x86-host.bc -o - -disable-llvm-optzns | FileCheck %s --check-prefix=CHECK2
8a2dbfb6bSGiorgis Georgakoudis 
9a2dbfb6bSGiorgis Georgakoudis // expected-no-diagnostics
10a2dbfb6bSGiorgis Georgakoudis #ifndef HEADER
11a2dbfb6bSGiorgis Georgakoudis #define HEADER
12a2dbfb6bSGiorgis Georgakoudis 
13a2dbfb6bSGiorgis Georgakoudis void work();
14a2dbfb6bSGiorgis Georgakoudis 
use()15a2dbfb6bSGiorgis Georgakoudis void use() {
16a2dbfb6bSGiorgis Georgakoudis       #pragma omp parallel
17a2dbfb6bSGiorgis Georgakoudis       work();
18a2dbfb6bSGiorgis Georgakoudis }
19a2dbfb6bSGiorgis Georgakoudis 
main()20a2dbfb6bSGiorgis Georgakoudis int main() {
21a2dbfb6bSGiorgis Georgakoudis       #pragma omp target parallel
22a2dbfb6bSGiorgis Georgakoudis       {  use(); }
23a2dbfb6bSGiorgis Georgakoudis         #pragma omp target
24a2dbfb6bSGiorgis Georgakoudis         {  use(); }
25a2dbfb6bSGiorgis Georgakoudis }
26a2dbfb6bSGiorgis Georgakoudis 
27a2dbfb6bSGiorgis Georgakoudis #endif
28a2dbfb6bSGiorgis Georgakoudis // CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l21
29a2dbfb6bSGiorgis Georgakoudis // CHECK1-SAME: () #[[ATTR0:[0-9]+]] {
30a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:  entry:
31ac90dfc4SGiorgis Georgakoudis // CHECK1-NEXT:    [[CAPTURED_VARS_ADDRS:%.*]] = alloca [0 x i8*], align 8
32423d34f7SShilei Tian // CHECK1-NEXT:    [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1:[0-9]+]], i8 2, i1 false, i1 true)
33e2cfbfccSJohannes Doerfert // CHECK1-NEXT:    [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
34e2cfbfccSJohannes Doerfert // CHECK1-NEXT:    br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
35e2cfbfccSJohannes Doerfert // CHECK1:       user_code.entry:
36e2cfbfccSJohannes Doerfert // CHECK1-NEXT:    [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB2:[0-9]+]])
37ac90dfc4SGiorgis Georgakoudis // CHECK1-NEXT:    [[TMP2:%.*]] = bitcast [0 x i8*]* [[CAPTURED_VARS_ADDRS]] to i8**
38ac90dfc4SGiorgis Georgakoudis // CHECK1-NEXT:    call void @__kmpc_parallel_51(%struct.ident_t* @[[GLOB2]], i32 [[TMP1]], i32 1, i32 -1, i32 -1, i8* bitcast (void (i32*, i32*)* @__omp_outlined__ to i8*), i8* null, i8** [[TMP2]], i64 0)
39423d34f7SShilei Tian // CHECK1-NEXT:    call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i8 2, i1 true)
40e2cfbfccSJohannes Doerfert // CHECK1-NEXT:    ret void
41e2cfbfccSJohannes Doerfert // CHECK1:       worker.exit:
42a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:    ret void
43a2dbfb6bSGiorgis Georgakoudis //
44a2dbfb6bSGiorgis Georgakoudis //
45a2dbfb6bSGiorgis Georgakoudis // CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__
461b1c8d83Shyeongyu kim // CHECK1-SAME: (i32* noalias noundef [[DOTGLOBAL_TID_:%.*]], i32* noalias noundef [[DOTBOUND_TID_:%.*]]) #[[ATTR1:[0-9]+]] {
47a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:  entry:
48a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:    [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
49a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:    [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
50a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:    store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 8
51a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:    store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 8
5253d5757eSJoseph Huber // CHECK1-NEXT:    call void @_Z3usev() #[[ATTR8:[0-9]+]]
53a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:    ret void
54a2dbfb6bSGiorgis Georgakoudis //
55a2dbfb6bSGiorgis Georgakoudis //
56a2dbfb6bSGiorgis Georgakoudis // CHECK1-LABEL: define {{[^@]+}}@_Z3usev
570276db14SJose M Monsalve Diaz // CHECK1-SAME: () #[[ATTR2:[0-9]+]] {
58a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:  entry:
59ac90dfc4SGiorgis Georgakoudis // CHECK1-NEXT:    [[CAPTURED_VARS_ADDRS:%.*]] = alloca [0 x i8*], align 8
60df729e2bSJohannes Doerfert // CHECK1-NEXT:    [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3:[0-9]+]])
61ac90dfc4SGiorgis Georgakoudis // CHECK1-NEXT:    [[TMP1:%.*]] = bitcast [0 x i8*]* [[CAPTURED_VARS_ADDRS]] to i8**
62ac90dfc4SGiorgis Georgakoudis // CHECK1-NEXT:    call void @__kmpc_parallel_51(%struct.ident_t* @[[GLOB3]], i32 [[TMP0]], i32 1, i32 -1, i32 -1, i8* bitcast (void (i32*, i32*)* @__omp_outlined__1 to i8*), i8* bitcast (void (i16, i32)* @__omp_outlined__1_wrapper to i8*), i8** [[TMP1]], i64 0)
63a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:    ret void
64a2dbfb6bSGiorgis Georgakoudis //
65a2dbfb6bSGiorgis Georgakoudis //
66a2dbfb6bSGiorgis Georgakoudis // CHECK1-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l23
6753d5757eSJoseph Huber // CHECK1-SAME: () #[[ATTR5:[0-9]+]] {
68a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:  entry:
69423d34f7SShilei Tian // CHECK1-NEXT:    [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i8 1, i1 true, i1 true)
70e2cfbfccSJohannes Doerfert // CHECK1-NEXT:    [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
71e2cfbfccSJohannes Doerfert // CHECK1-NEXT:    br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
72e2cfbfccSJohannes Doerfert // CHECK1:       user_code.entry:
7353d5757eSJoseph Huber // CHECK1-NEXT:    call void @_Z3usev() #[[ATTR8]]
74423d34f7SShilei Tian // CHECK1-NEXT:    call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i8 1, i1 true)
75e2cfbfccSJohannes Doerfert // CHECK1-NEXT:    ret void
76e2cfbfccSJohannes Doerfert // CHECK1:       worker.exit:
77a2dbfb6bSGiorgis Georgakoudis // CHECK1-NEXT:    ret void
78a2dbfb6bSGiorgis Georgakoudis //
79a2dbfb6bSGiorgis Georgakoudis //
80df729e2bSJohannes Doerfert // CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__1
811b1c8d83Shyeongyu kim // CHECK1-SAME: (i32* noalias noundef [[DOTGLOBAL_TID_:%.*]], i32* noalias noundef [[DOTBOUND_TID_:%.*]]) #[[ATTR1]] {
82df729e2bSJohannes Doerfert // CHECK1-NEXT:  entry:
83df729e2bSJohannes Doerfert // CHECK1-NEXT:    [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 8
84df729e2bSJohannes Doerfert // CHECK1-NEXT:    [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 8
85df729e2bSJohannes Doerfert // CHECK1-NEXT:    store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 8
86df729e2bSJohannes Doerfert // CHECK1-NEXT:    store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 8
8753d5757eSJoseph Huber // CHECK1-NEXT:    call void @_Z4workv() #[[ATTR8]]
88df729e2bSJohannes Doerfert // CHECK1-NEXT:    ret void
89df729e2bSJohannes Doerfert //
90df729e2bSJohannes Doerfert //
91df729e2bSJohannes Doerfert // CHECK1-LABEL: define {{[^@]+}}@__omp_outlined__1_wrapper
9253d5757eSJoseph Huber // CHECK1-SAME: (i16 noundef zeroext [[TMP0:%.*]], i32 noundef [[TMP1:%.*]]) #[[ATTR7:[0-9]+]] {
93df729e2bSJohannes Doerfert // CHECK1-NEXT:  entry:
94df729e2bSJohannes Doerfert // CHECK1-NEXT:    [[DOTADDR:%.*]] = alloca i16, align 2
95df729e2bSJohannes Doerfert // CHECK1-NEXT:    [[DOTADDR1:%.*]] = alloca i32, align 4
96df729e2bSJohannes Doerfert // CHECK1-NEXT:    [[DOTZERO_ADDR:%.*]] = alloca i32, align 4
97df729e2bSJohannes Doerfert // CHECK1-NEXT:    [[GLOBAL_ARGS:%.*]] = alloca i8**, align 8
98df729e2bSJohannes Doerfert // CHECK1-NEXT:    store i16 [[TMP0]], i16* [[DOTADDR]], align 2
99df729e2bSJohannes Doerfert // CHECK1-NEXT:    store i32 [[TMP1]], i32* [[DOTADDR1]], align 4
100f7de6962Shsmahesha // CHECK1-NEXT:    store i32 0, i32* [[DOTZERO_ADDR]], align 4
101df729e2bSJohannes Doerfert // CHECK1-NEXT:    call void @__kmpc_get_shared_variables(i8*** [[GLOBAL_ARGS]])
102ac90dfc4SGiorgis Georgakoudis // CHECK1-NEXT:    call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]]) #[[ATTR3:[0-9]+]]
103df729e2bSJohannes Doerfert // CHECK1-NEXT:    ret void
104df729e2bSJohannes Doerfert //
105df729e2bSJohannes Doerfert //
106a2dbfb6bSGiorgis Georgakoudis // CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l21
107a2dbfb6bSGiorgis Georgakoudis // CHECK2-SAME: () #[[ATTR0:[0-9]+]] {
108a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:  entry:
109ac90dfc4SGiorgis Georgakoudis // CHECK2-NEXT:    [[CAPTURED_VARS_ADDRS:%.*]] = alloca [0 x i8*], align 4
110423d34f7SShilei Tian // CHECK2-NEXT:    [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1:[0-9]+]], i8 2, i1 false, i1 true)
111e2cfbfccSJohannes Doerfert // CHECK2-NEXT:    [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
112e2cfbfccSJohannes Doerfert // CHECK2-NEXT:    br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
113e2cfbfccSJohannes Doerfert // CHECK2:       user_code.entry:
114e2cfbfccSJohannes Doerfert // CHECK2-NEXT:    [[TMP1:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB2:[0-9]+]])
115ac90dfc4SGiorgis Georgakoudis // CHECK2-NEXT:    [[TMP2:%.*]] = bitcast [0 x i8*]* [[CAPTURED_VARS_ADDRS]] to i8**
116ac90dfc4SGiorgis Georgakoudis // CHECK2-NEXT:    call void @__kmpc_parallel_51(%struct.ident_t* @[[GLOB2]], i32 [[TMP1]], i32 1, i32 -1, i32 -1, i8* bitcast (void (i32*, i32*)* @__omp_outlined__ to i8*), i8* null, i8** [[TMP2]], i32 0)
117423d34f7SShilei Tian // CHECK2-NEXT:    call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i8 2, i1 true)
118e2cfbfccSJohannes Doerfert // CHECK2-NEXT:    ret void
119e2cfbfccSJohannes Doerfert // CHECK2:       worker.exit:
120a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:    ret void
121a2dbfb6bSGiorgis Georgakoudis //
122a2dbfb6bSGiorgis Georgakoudis //
123a2dbfb6bSGiorgis Georgakoudis // CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__
1241b1c8d83Shyeongyu kim // CHECK2-SAME: (i32* noalias noundef [[DOTGLOBAL_TID_:%.*]], i32* noalias noundef [[DOTBOUND_TID_:%.*]]) #[[ATTR1:[0-9]+]] {
125a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:  entry:
126a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:    [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
127a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:    [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
128a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:    store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 4
129a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:    store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 4
13053d5757eSJoseph Huber // CHECK2-NEXT:    call void @_Z3usev() #[[ATTR8:[0-9]+]]
131a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:    ret void
132a2dbfb6bSGiorgis Georgakoudis //
133a2dbfb6bSGiorgis Georgakoudis //
134a2dbfb6bSGiorgis Georgakoudis // CHECK2-LABEL: define {{[^@]+}}@_Z3usev
1350276db14SJose M Monsalve Diaz // CHECK2-SAME: () #[[ATTR2:[0-9]+]] {
136a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:  entry:
137ac90dfc4SGiorgis Georgakoudis // CHECK2-NEXT:    [[CAPTURED_VARS_ADDRS:%.*]] = alloca [0 x i8*], align 4
138df729e2bSJohannes Doerfert // CHECK2-NEXT:    [[TMP0:%.*]] = call i32 @__kmpc_global_thread_num(%struct.ident_t* @[[GLOB3:[0-9]+]])
139ac90dfc4SGiorgis Georgakoudis // CHECK2-NEXT:    [[TMP1:%.*]] = bitcast [0 x i8*]* [[CAPTURED_VARS_ADDRS]] to i8**
140ac90dfc4SGiorgis Georgakoudis // CHECK2-NEXT:    call void @__kmpc_parallel_51(%struct.ident_t* @[[GLOB3]], i32 [[TMP0]], i32 1, i32 -1, i32 -1, i8* bitcast (void (i32*, i32*)* @__omp_outlined__1 to i8*), i8* bitcast (void (i16, i32)* @__omp_outlined__1_wrapper to i8*), i8** [[TMP1]], i32 0)
141a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:    ret void
142a2dbfb6bSGiorgis Georgakoudis //
143a2dbfb6bSGiorgis Georgakoudis //
144a2dbfb6bSGiorgis Georgakoudis // CHECK2-LABEL: define {{[^@]+}}@{{__omp_offloading_[0-9a-z]+_[0-9a-z]+}}_main_l23
14553d5757eSJoseph Huber // CHECK2-SAME: () #[[ATTR5:[0-9]+]] {
146a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:  entry:
147423d34f7SShilei Tian // CHECK2-NEXT:    [[TMP0:%.*]] = call i32 @__kmpc_target_init(%struct.ident_t* @[[GLOB1]], i8 1, i1 true, i1 true)
148e2cfbfccSJohannes Doerfert // CHECK2-NEXT:    [[EXEC_USER_CODE:%.*]] = icmp eq i32 [[TMP0]], -1
149e2cfbfccSJohannes Doerfert // CHECK2-NEXT:    br i1 [[EXEC_USER_CODE]], label [[USER_CODE_ENTRY:%.*]], label [[WORKER_EXIT:%.*]]
150e2cfbfccSJohannes Doerfert // CHECK2:       user_code.entry:
15153d5757eSJoseph Huber // CHECK2-NEXT:    call void @_Z3usev() #[[ATTR8]]
152423d34f7SShilei Tian // CHECK2-NEXT:    call void @__kmpc_target_deinit(%struct.ident_t* @[[GLOB1]], i8 1, i1 true)
153e2cfbfccSJohannes Doerfert // CHECK2-NEXT:    ret void
154e2cfbfccSJohannes Doerfert // CHECK2:       worker.exit:
155a2dbfb6bSGiorgis Georgakoudis // CHECK2-NEXT:    ret void
156a2dbfb6bSGiorgis Georgakoudis //
157a2dbfb6bSGiorgis Georgakoudis //
158df729e2bSJohannes Doerfert // CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__1
1591b1c8d83Shyeongyu kim // CHECK2-SAME: (i32* noalias noundef [[DOTGLOBAL_TID_:%.*]], i32* noalias noundef [[DOTBOUND_TID_:%.*]]) #[[ATTR1]] {
160df729e2bSJohannes Doerfert // CHECK2-NEXT:  entry:
161df729e2bSJohannes Doerfert // CHECK2-NEXT:    [[DOTGLOBAL_TID__ADDR:%.*]] = alloca i32*, align 4
162df729e2bSJohannes Doerfert // CHECK2-NEXT:    [[DOTBOUND_TID__ADDR:%.*]] = alloca i32*, align 4
163df729e2bSJohannes Doerfert // CHECK2-NEXT:    store i32* [[DOTGLOBAL_TID_]], i32** [[DOTGLOBAL_TID__ADDR]], align 4
164df729e2bSJohannes Doerfert // CHECK2-NEXT:    store i32* [[DOTBOUND_TID_]], i32** [[DOTBOUND_TID__ADDR]], align 4
16553d5757eSJoseph Huber // CHECK2-NEXT:    call void @_Z4workv() #[[ATTR8]]
166df729e2bSJohannes Doerfert // CHECK2-NEXT:    ret void
167df729e2bSJohannes Doerfert //
168df729e2bSJohannes Doerfert //
169df729e2bSJohannes Doerfert // CHECK2-LABEL: define {{[^@]+}}@__omp_outlined__1_wrapper
17053d5757eSJoseph Huber // CHECK2-SAME: (i16 noundef zeroext [[TMP0:%.*]], i32 noundef [[TMP1:%.*]]) #[[ATTR7:[0-9]+]] {
171df729e2bSJohannes Doerfert // CHECK2-NEXT:  entry:
172df729e2bSJohannes Doerfert // CHECK2-NEXT:    [[DOTADDR:%.*]] = alloca i16, align 2
173df729e2bSJohannes Doerfert // CHECK2-NEXT:    [[DOTADDR1:%.*]] = alloca i32, align 4
174df729e2bSJohannes Doerfert // CHECK2-NEXT:    [[DOTZERO_ADDR:%.*]] = alloca i32, align 4
175df729e2bSJohannes Doerfert // CHECK2-NEXT:    [[GLOBAL_ARGS:%.*]] = alloca i8**, align 4
176df729e2bSJohannes Doerfert // CHECK2-NEXT:    store i16 [[TMP0]], i16* [[DOTADDR]], align 2
177df729e2bSJohannes Doerfert // CHECK2-NEXT:    store i32 [[TMP1]], i32* [[DOTADDR1]], align 4
178f7de6962Shsmahesha // CHECK2-NEXT:    store i32 0, i32* [[DOTZERO_ADDR]], align 4
179df729e2bSJohannes Doerfert // CHECK2-NEXT:    call void @__kmpc_get_shared_variables(i8*** [[GLOBAL_ARGS]])
180ac90dfc4SGiorgis Georgakoudis // CHECK2-NEXT:    call void @__omp_outlined__1(i32* [[DOTADDR1]], i32* [[DOTZERO_ADDR]]) #[[ATTR3:[0-9]+]]
181df729e2bSJohannes Doerfert // CHECK2-NEXT:    ret void
182df729e2bSJohannes Doerfert //
183