@@ -2306,8 +2306,6 @@ func.func @omp_requires_multiple() -> ()
2306
2306
return
2307
2307
}
2308
2308
2309
- // -----
2310
-
2311
2309
// CHECK-LABEL: @opaque_pointers_atomic_rwu
2312
2310
// CHECK-SAME: (%[[v:.*]]: !llvm.ptr, %[[x:.*]]: !llvm.ptr)
2313
2311
func.func @opaque_pointers_atomic_rwu (%v: !llvm.ptr , %x: !llvm.ptr ) {
@@ -2417,8 +2415,8 @@ func.func @omp_target_update_data (%if_cond : i1, %device : si32, %map1: memref<
2417
2415
func.func @omp_targets_is_allocatable (%arg0: !llvm.ptr , %arg1: !llvm.ptr ) -> () {
2418
2416
// CHECK: %[[MAP0:.*]] = omp.map.info var_ptr(%[[ARG0]] : !llvm.ptr, i32) map_clauses(tofrom) capture(ByRef) -> !llvm.ptr {name = ""}
2419
2417
%mapv1 = omp.map.info var_ptr (%arg0 : !llvm.ptr , i32 ) map_clauses (tofrom ) capture (ByRef ) -> !llvm.ptr {name = " " }
2420
- // CHECK: %[[MAP1:.*]] = omp.map.info var_ptr(%[[ARG1]] : !llvm.ptr, !llvm.struct<(ptr, i64, i32, i8, i8, i8, i8)>) map_clauses(tofrom) capture(ByRef) members(%[[MAP0]] : !llvm.ptr) -> !llvm.ptr {name = ""}
2421
- %mapv2 = omp.map.info var_ptr (%arg1 : !llvm.ptr , !llvm.struct <(ptr , i64 , i32 , i8 , i8 , i8 , i8 )>) map_clauses (tofrom ) capture (ByRef ) members (%mapv1 : !llvm.ptr ) -> !llvm.ptr {name = " " }
2418
+ // CHECK: %[[MAP1:.*]] = omp.map.info var_ptr(%[[ARG1]] : !llvm.ptr, !llvm.struct<(ptr, i64, i32, i8, i8, i8, i8)>) map_clauses(tofrom) capture(ByRef) members(%[[MAP0]] : [0] : !llvm.ptr) -> !llvm.ptr {name = ""}
2419
+ %mapv2 = omp.map.info var_ptr (%arg1 : !llvm.ptr , !llvm.struct <(ptr , i64 , i32 , i8 , i8 , i8 , i8 )>) map_clauses (tofrom ) capture (ByRef ) members (%mapv1 : [ 0 ] : !llvm.ptr ) -> !llvm.ptr {name = " " }
2422
2420
// CHECK: omp.target map_entries(%[[MAP0]] -> {{.*}}, %[[MAP1]] -> {{.*}} : !llvm.ptr, !llvm.ptr)
2423
2421
omp.target map_entries (%mapv1 -> %arg2 , %mapv2 -> %arg3 : !llvm.ptr , !llvm.ptr ) {
2424
2422
^bb0 (%arg2: !llvm.ptr , %arg3 : !llvm.ptr ):
@@ -2473,6 +2471,37 @@ func.func @omp_target_enter_update_exit_data_depend(%a: memref<?xi32>, %b: memre
2473
2471
}
2474
2472
// CHECK: omp.target_exit_data map_entries([[MAP2]] : memref<?xi32>) depend(taskdependin -> [[ARG2]] : memref<?xi32>)
2475
2473
omp.target_exit_data map_entries (%map_c : memref <?xi32 >) depend (taskdependin -> %c : memref <?xi32 >)
2474
+
2475
+ return
2476
+ }
2477
+
2478
+ // CHECK-LABEL: omp_map_with_members
2479
+ // CHECK-SAME: (%[[ARG0:.*]]: !llvm.ptr, %[[ARG1:.*]]: !llvm.ptr, %[[ARG2:.*]]: !llvm.ptr, %[[ARG3:.*]]: !llvm.ptr, %[[ARG4:.*]]: !llvm.ptr, %[[ARG5:.*]]: !llvm.ptr)
2480
+ func.func @omp_map_with_members (%arg0: !llvm.ptr , %arg1: !llvm.ptr , %arg2: !llvm.ptr , %arg3: !llvm.ptr , %arg4: !llvm.ptr , %arg5: !llvm.ptr ) -> () {
2481
+ // CHECK: %[[MAP0:.*]] = omp.map.info var_ptr(%[[ARG0]] : !llvm.ptr, i32) map_clauses(to) capture(ByRef) -> !llvm.ptr {name = ""}
2482
+ %mapv1 = omp.map.info var_ptr (%arg0 : !llvm.ptr , i32 ) map_clauses (to ) capture (ByRef ) -> !llvm.ptr {name = " " }
2483
+
2484
+ // CHECK: %[[MAP1:.*]] = omp.map.info var_ptr(%[[ARG1]] : !llvm.ptr, f32) map_clauses(to) capture(ByRef) -> !llvm.ptr {name = ""}
2485
+ %mapv2 = omp.map.info var_ptr (%arg1 : !llvm.ptr , f32 ) map_clauses (to ) capture (ByRef ) -> !llvm.ptr {name = " " }
2486
+
2487
+ // CHECK: %[[MAP2:.*]] = omp.map.info var_ptr(%[[ARG2]] : !llvm.ptr, !llvm.struct<(i32, f32)>) map_clauses(to) capture(ByRef) members(%[[MAP0]], %[[MAP1]] : [0], [1] : !llvm.ptr, !llvm.ptr) -> !llvm.ptr {name = "", partial_map = true}
2488
+ %mapv3 = omp.map.info var_ptr (%arg2 : !llvm.ptr , !llvm.struct <(i32 , f32 )>) map_clauses (to ) capture (ByRef ) members (%mapv1 , %mapv2 : [0 ], [1 ] : !llvm.ptr , !llvm.ptr ) -> !llvm.ptr {name = " " , partial_map = true }
2489
+
2490
+ // CHECK: omp.target_enter_data map_entries(%[[MAP0]], %[[MAP1]], %[[MAP2]] : !llvm.ptr, !llvm.ptr, !llvm.ptr)
2491
+ omp.target_enter_data map_entries (%mapv1 , %mapv2 , %mapv3 : !llvm.ptr , !llvm.ptr , !llvm.ptr ){}
2492
+
2493
+ // CHECK: %[[MAP3:.*]] = omp.map.info var_ptr(%[[ARG3]] : !llvm.ptr, i32) map_clauses(from) capture(ByRef) -> !llvm.ptr {name = ""}
2494
+ %mapv4 = omp.map.info var_ptr (%arg3 : !llvm.ptr , i32 ) map_clauses (from ) capture (ByRef ) -> !llvm.ptr {name = " " }
2495
+
2496
+ // CHECK: %[[MAP4:.*]] = omp.map.info var_ptr(%[[ARG4]] : !llvm.ptr, f32) map_clauses(from) capture(ByRef) -> !llvm.ptr {name = ""}
2497
+ %mapv5 = omp.map.info var_ptr (%arg4 : !llvm.ptr , f32 ) map_clauses (from ) capture (ByRef ) -> !llvm.ptr {name = " " }
2498
+
2499
+ // CHECK: %[[MAP5:.*]] = omp.map.info var_ptr(%[[ARG5]] : !llvm.ptr, !llvm.struct<(i32, struct<(i32, f32)>)>) map_clauses(from) capture(ByRef) members(%[[MAP3]], %[[MAP4]] : [1,0], [1,1] : !llvm.ptr, !llvm.ptr) -> !llvm.ptr {name = "", partial_map = true}
2500
+ %mapv6 = omp.map.info var_ptr (%arg5 : !llvm.ptr , !llvm.struct <(i32 , struct <(i32 , f32 )>)>) map_clauses (from ) capture (ByRef ) members (%mapv4 , %mapv5 : [1 ,0 ], [1 ,1 ] : !llvm.ptr , !llvm.ptr ) -> !llvm.ptr {name = " " , partial_map = true }
2501
+
2502
+ // CHECK: omp.target_exit_data map_entries(%[[MAP3]], %[[MAP4]], %[[MAP5]] : !llvm.ptr, !llvm.ptr, !llvm.ptr)
2503
+ omp.target_exit_data map_entries (%mapv4 , %mapv5 , %mapv6 : !llvm.ptr , !llvm.ptr , !llvm.ptr ){}
2504
+
2476
2505
return
2477
2506
}
2478
2507
0 commit comments