@@ -63,11 +63,13 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<"dlti.alloca_memo
6363// CHECK: store ptr %[[TMP0]], ptr %[[TMP2]], align 8
6464// CHECK: %[[TMP6:.*]] = load ptr, ptr %[[TMP2]], align 8
6565// CHECK: %[[OMP_GLOBAL_THREAD_NUM:.*]] = call i32 @__kmpc_global_thread_num(ptr addrspacecast (ptr addrspace(1) @[[GLOB1:[0-9]+]] to ptr))
66- // CHECK: %[[GEP_:.*]] = getelementptr { ptr }, ptr addrspace(5) %[[STRUCTARG]], i32 0, i32 0
67- // CHECK: store ptr %[[TMP6]], ptr addrspace(5) %[[GEP_]], align 8
68- // CHECK: %[[TMP7:.*]] = getelementptr inbounds [1 x ptr], ptr %[[TMP2]], i64 0, i64 0
69- // CHECK: store ptr %[[STRUCTARG_ASCAST]], ptr %[[TMP7]], align 8
70- // CHECK: call void @__kmpc_parallel_60(ptr addrspacecast (ptr addrspace(1) @[[GLOB1]] to ptr), i32 %[[OMP_GLOBAL_THREAD_NUM]], i32 1, i32 -1, i32 -1, ptr @[[FUNC1:.*]], ptr null, ptr %[[TMP2]], i64 1, i32 0)
66+ // CHECK: %[[GEP_:.*]] = getelementptr { ptr }, ptr %[[STRUCTARG]], i32 0, i32 0
67+ // CHECK: store ptr %[[TMP6]], ptr %[[GEP_]], align 8
68+ // CHECK: %[[TMP7:.*]] = getelementptr inbounds [1 x ptr], ptr %[[TMP5]], i64 0, i64 0
69+ // CHECK: store ptr %[[STRUCTARG]], ptr %[[TMP7]], align 8
70+ // CHECK: call void @__kmpc_parallel_60(ptr addrspacecast (ptr addrspace(1) @[[GLOB1]] to ptr), i32 %[[OMP_GLOBAL_THREAD_NUM]], i32 1, i32 -1, i32 -1, ptr @[[FUNC1:.*]], ptr @[[FUNC1_WRAPPER:.*]], ptr %[[TMP5]], i64 1, i32 0)
71+ // CHECK: call void @__kmpc_free_shared(ptr %[[STRUCTARG]], i64 8)
72+ // CHECK: call void @__kmpc_free_shared(ptr %[[TMP2]], i64 8)
7173// CHECK: call void @__kmpc_target_deinit()
7274
7375// CHECK: define internal void @[[FUNC1]](
@@ -81,7 +83,7 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<"dlti.alloca_memo
8183// CHECK: call void @__kmpc_parallel_60(ptr addrspacecast (
8284// CHECK-SAME: ptr addrspace(1) @[[NUM_THREADS_GLOB:[0-9]+]] to ptr),
8385// CHECK-SAME: i32 [[NUM_THREADS_TMP0:%.*]], i32 1, i32 156,
84- // CHECK-SAME: i32 -1, ptr [[FUNC_NUM_THREADS1:@ .*]], ptr null , ptr [[NUM_THREADS_TMP1:%.*]], i64 1, i32 0)
86+ // CHECK-SAME: i32 -1, ptr @ [[FUNC_NUM_THREADS1:.*]], ptr @[[FUNC2_WRAPPER:.*]] , ptr [[NUM_THREADS_TMP1:%.*]], i64 1, i32 0)
8587
8688// One of the arguments of kmpc_parallel_60 function is responsible for handling if clause
8789// of omp parallel construct for target region. If this argument is nonzero,
@@ -102,4 +104,23 @@ module attributes {dlti.dl_spec = #dlti.dl_spec<#dlti.dl_entry<"dlti.alloca_memo
102104// CHECK: call void @__kmpc_parallel_60(ptr addrspacecast (
103105// CHECK-SAME: ptr addrspace(1) {{.*}} to ptr),
104106// CHECK-SAME: i32 {{.*}}, i32 %[[IFCOND_TMP4]], i32 -1,
105- // CHECK-SAME: i32 -1, ptr {{.*}}, ptr null, ptr {{.*}}, i64 1, i32 0)
107+ // CHECK-SAME: i32 -1, ptr {{.*}}, ptr {{.*}}, ptr {{.*}}, i64 1, i32 0)
108+
109+ // CHECK: define internal void @[[FUNC1_WRAPPER]](i16 noundef zeroext %{{.*}}, i32 noundef %[[ADDR:.*]])
110+ // CHECK: %[[ADDR_ALLOCA:.*]] = alloca i32, align 4, addrspace(5)
111+ // CHECK: %[[ADDR_ASCAST:.*]] = addrspacecast ptr addrspace(5) %[[ADDR_ALLOCA]] to ptr
112+ // CHECK: %[[ZERO_ALLOCA:.*]] = alloca i32, align 4, addrspace(5)
113+ // CHECK: %[[ZERO_ASCAST:.*]] = addrspacecast ptr addrspace(5) %[[ZERO_ALLOCA]] to ptr
114+ // CHECK: %[[ARGS_ALLOCA:.*]] = alloca ptr, align 8, addrspace(5)
115+ // CHECK: %[[ARGS_ASCAST:.*]] = addrspacecast ptr addrspace(5) %[[ARGS_ALLOCA]] to ptr
116+ // CHECK: store i32 %[[ADDR]], ptr %[[ADDR_ASCAST]]
117+ // CHECK: store i32 0, ptr %[[ZERO_ASCAST]]
118+ // CHECK: call void @__kmpc_get_shared_variables(ptr %[[ARGS_ASCAST]])
119+ // CHECK: %[[LOAD_ARGS:.*]] = load ptr, ptr %[[ARGS_ASCAST]], align 8
120+ // CHECK: %[[FIRST_ARG:.*]] = getelementptr inbounds ptr, ptr %[[LOAD_ARGS]], i64 0
121+ // CHECK: %[[STRUCTARG:.*]] = load ptr, ptr %[[FIRST_ARG]], align 8
122+ // CHECK: call void @[[FUNC1]](ptr %[[ADDR_ASCAST]], ptr %[[ZERO_ASCAST]], ptr %[[STRUCTARG]])
123+
124+ // CHECK: define internal void @[[FUNC2_WRAPPER]](i16 noundef zeroext %{{.*}}, i32 noundef %{{.*}})
125+ // CHECK-NOT: define
126+ // CHECK: call void @[[FUNC_NUM_THREADS1]]({{.*}})
0 commit comments