|
11 | 11 | // CHECK: %[[VAL_4:.*]] = omp.map.info var_ptr(%[[VAL_1]] : !fir.ref<index>, index) map_clauses(to) capture(ByRef) -> !fir.ref<index> {name = "ub"}
|
12 | 12 | // CHECK: %[[VAL_5:.*]] = omp.map.info var_ptr(%[[VAL_2]] : !fir.ref<index>, index) map_clauses(to) capture(ByRef) -> !fir.ref<index> {name = "step"}
|
13 | 13 | // CHECK: %[[VAL_6:.*]] = omp.map.info var_ptr(%[[ARG3:.*]] : !fir.ref<index>, index) map_clauses(tofrom) capture(ByRef) -> !fir.ref<index> {name = "addr"}
|
| 14 | +// CHECK: %[[VAL_7:.*]] = omp.map.info var_ptr(%[[VAL_0]] : !fir.ref<index>, index) map_clauses(exit_release_or_enter_alloc) capture(ByRef) -> !fir.ref<index> {name = "lb"} |
| 15 | +// CHECK: %[[VAL_8:.*]] = omp.map.info var_ptr(%[[VAL_1]] : !fir.ref<index>, index) map_clauses(exit_release_or_enter_alloc) capture(ByRef) -> !fir.ref<index> {name = "ub"} |
| 16 | +// CHECK: %[[VAL_9:.*]] = omp.map.info var_ptr(%[[VAL_2]] : !fir.ref<index>, index) map_clauses(exit_release_or_enter_alloc) capture(ByRef) -> !fir.ref<index> {name = "step"} |
| 17 | +// CHECK: %[[VAL_10:.*]] = omp.map.info var_ptr(%[[ARG3:.*]] : !fir.ref<index>, index) map_clauses(exit_release_or_enter_alloc) capture(ByRef) -> !fir.ref<index> {name = "addr"} |
14 | 18 | // CHECK: omp.target_data map_entries(%[[VAL_3]], %[[VAL_4]], %[[VAL_5]], %[[VAL_6]] : !fir.ref<index>, !fir.ref<index>, !fir.ref<index>, !fir.ref<index>) {
|
15 |
| -// CHECK: %[[VAL_7:.*]] = omp.map.info var_ptr(%[[VAL_0]] : !fir.ref<index>, index) map_clauses(to) capture(ByRef) -> !fir.ref<index> {name = "lb"} |
16 |
| -// CHECK: %[[VAL_8:.*]] = omp.map.info var_ptr(%[[VAL_1]] : !fir.ref<index>, index) map_clauses(to) capture(ByRef) -> !fir.ref<index> {name = "ub"} |
17 |
| -// CHECK: %[[VAL_9:.*]] = omp.map.info var_ptr(%[[VAL_2]] : !fir.ref<index>, index) map_clauses(to) capture(ByRef) -> !fir.ref<index> {name = "step"} |
18 |
| -// CHECK: %[[VAL_10:.*]] = omp.map.info var_ptr(%[[ARG3:.*]] : !fir.ref<index>, index) map_clauses(tofrom) capture(ByRef) -> !fir.ref<index> {name = "addr"} |
19 |
| -// CHECK: %[[VAL_11:.*]] = fir.alloca !fir.heap<index> |
20 |
| -// CHECK: %[[VAL_12:.*]] = omp.map.info var_ptr(%[[VAL_11]] : !fir.ref<!fir.heap<index>>, !fir.heap<index>) map_clauses(from) capture(ByRef) -> !fir.ref<!fir.heap<index>> {name = "__flang_workdistribute_from"} |
21 |
| -// CHECK: %[[VAL_13:.*]] = omp.map.info var_ptr(%[[VAL_11]] : !fir.ref<!fir.heap<index>>, !fir.heap<index>) map_clauses(to) capture(ByRef) -> !fir.ref<!fir.heap<index>> {name = "__flang_workdistribute_to"} |
22 |
| -// CHECK: %[[VAL_14:.*]] = arith.constant 1 : index |
23 |
| -// CHECK: %[[VAL_15:.*]] = fir.load %[[VAL_0]] : !fir.ref<index> |
24 |
| -// CHECK: %[[VAL_16:.*]] = fir.load %[[VAL_1]] : !fir.ref<index> |
25 |
| -// CHECK: %[[VAL_17:.*]] = fir.load %[[VAL_2]] : !fir.ref<index> |
26 |
| -// CHECK: %[[VAL_18:.*]] = arith.addi %[[VAL_16]], %[[VAL_16]] : index |
27 |
| -// CHECK: %[[VAL_19:.*]] = llvm.mlir.constant(0 : i32) : i32 |
28 |
| -// CHECK: %[[VAL_20:.*]] = "fir.omp_target_allocmem"(%[[VAL_19]], %[[VAL_14]]) <{in_type = index, operandSegmentSizes = array<i32: 1, 0, 1>, uniq_name = "dev_buf"}> : (i32, index) -> !fir.heap<index> |
29 |
| -// CHECK: fir.store %[[VAL_20]] to %[[VAL_11]] : !fir.ref<!fir.heap<index>> |
30 |
| -// CHECK: omp.target map_entries(%[[VAL_7]] -> %[[VAL_21:.*]], %[[VAL_8]] -> %[[VAL_22:.*]], %[[VAL_9]] -> %[[VAL_23:.*]], %[[VAL_10]] -> %[[VAL_24:.*]], %[[VAL_13]] -> %[[VAL_25:.*]] : !fir.ref<index>, !fir.ref<index>, !fir.ref<index>, !fir.ref<index>, !fir.ref<!fir.heap<index>>) { |
31 |
| -// CHECK: %[[VAL_26:.*]] = fir.load %[[VAL_25]] : !fir.llvm_ptr<!fir.heap<index>> |
32 |
| -// CHECK: %[[VAL_27:.*]] = fir.load %[[VAL_21]] : !fir.ref<index> |
33 |
| -// CHECK: %[[VAL_28:.*]] = fir.load %[[VAL_22]] : !fir.ref<index> |
34 |
| -// CHECK: %[[VAL_29:.*]] = fir.load %[[VAL_23]] : !fir.ref<index> |
35 |
| -// CHECK: %[[VAL_30:.*]] = arith.addi %[[VAL_28]], %[[VAL_28]] : index |
| 19 | +// CHECK: %[[VAL_11:.*]] = fir.alloca index |
| 20 | +// CHECK: %[[VAL_12:.*]] = omp.map.info var_ptr(%[[VAL_11]] : !fir.ref<index>, index) map_clauses(from) capture(ByRef) -> !fir.ref<index> {name = "__flang_workdistribute_from"} |
| 21 | +// CHECK: %[[VAL_13:.*]] = omp.map.info var_ptr(%[[VAL_11]] : !fir.ref<index>, index) map_clauses(to) capture(ByRef) -> !fir.ref<index> {name = "__flang_workdistribute_to"} |
| 22 | +// CHECK: %[[VAL_14:.*]] = fir.alloca index |
| 23 | +// CHECK: %[[VAL_15:.*]] = omp.map.info var_ptr(%[[VAL_14]] : !fir.ref<index>, index) map_clauses(from) capture(ByRef) -> !fir.ref<index> {name = "__flang_workdistribute_from"} |
| 24 | +// CHECK: %[[VAL_16:.*]] = omp.map.info var_ptr(%[[VAL_14]] : !fir.ref<index>, index) map_clauses(to) capture(ByRef) -> !fir.ref<index> {name = "__flang_workdistribute_to"} |
| 25 | +// CHECK: %[[VAL_17:.*]] = fir.alloca index |
| 26 | +// CHECK: %[[VAL_18:.*]] = omp.map.info var_ptr(%[[VAL_17]] : !fir.ref<index>, index) map_clauses(from) capture(ByRef) -> !fir.ref<index> {name = "__flang_workdistribute_from"} |
| 27 | +// CHECK: %[[VAL_19:.*]] = omp.map.info var_ptr(%[[VAL_17]] : !fir.ref<index>, index) map_clauses(to) capture(ByRef) -> !fir.ref<index> {name = "__flang_workdistribute_to"} |
| 28 | +// CHECK: %[[VAL_20:.*]] = fir.alloca !fir.heap<index> |
| 29 | +// CHECK: %[[VAL_21:.*]] = omp.map.info var_ptr(%[[VAL_20]] : !fir.ref<!fir.heap<index>>, !fir.heap<index>) map_clauses(from) capture(ByRef) -> !fir.ref<!fir.heap<index>> {name = "__flang_workdistribute_from"} |
| 30 | +// CHECK: %[[VAL_22:.*]] = omp.map.info var_ptr(%[[VAL_20]] : !fir.ref<!fir.heap<index>>, !fir.heap<index>) map_clauses(to) capture(ByRef) -> !fir.ref<!fir.heap<index>> {name = "__flang_workdistribute_to"} |
| 31 | +// CHECK: %[[VAL_23:.*]] = arith.constant 1 : index |
| 32 | +// CHECK: %[[VAL_24:.*]] = fir.load %[[VAL_0]] : !fir.ref<index> |
| 33 | +// CHECK: %[[VAL_25:.*]] = fir.load %[[VAL_1]] : !fir.ref<index> |
| 34 | +// CHECK: %[[VAL_26:.*]] = fir.load %[[VAL_2]] : !fir.ref<index> |
| 35 | +// CHECK: %[[VAL_27:.*]] = arith.addi %[[VAL_25]], %[[VAL_25]] : index |
| 36 | +// CHECK: %[[VAL_28:.*]] = llvm.mlir.constant(0 : i32) : i32 |
| 37 | +// CHECK: %[[VAL_29:.*]] = "fir.omp_target_allocmem"(%[[VAL_28]], %[[VAL_23]]) <{in_type = index, operandSegmentSizes = array<i32: 1, 0, 1>, uniq_name = "dev_buf"}> : (i32, index) -> !fir.heap<index> |
| 38 | +// CHECK: fir.store %[[VAL_24]] to %[[VAL_11]] : !fir.ref<index> |
| 39 | +// CHECK: fir.store %[[VAL_25]] to %[[VAL_14]] : !fir.ref<index> |
| 40 | +// CHECK: fir.store %[[VAL_26]] to %[[VAL_17]] : !fir.ref<index> |
| 41 | +// CHECK: fir.store %[[VAL_29]] to %[[VAL_20]] : !fir.ref<!fir.heap<index>> |
| 42 | +// CHECK: omp.target map_entries(%[[VAL_7]] -> %[[VAL_30:.*]], %[[VAL_8]] -> %[[VAL_31:.*]], %[[VAL_9]] -> %[[VAL_32:.*]], %[[VAL_10]] -> %[[VAL_33:.*]], %[[VAL_13]] -> %[[VAL_34:.*]], %[[VAL_16]] -> %[[VAL_35:.*]], %[[VAL_19]] -> %[[VAL_36:.*]], %[[VAL_22]] -> %[[VAL_37:.*]] : !fir.ref<index>, !fir.ref<index>, !fir.ref<index>, !fir.ref<index>, !fir.ref<index>, !fir.ref<index>, !fir.ref<index>, !fir.ref<!fir.heap<index>>) { |
| 43 | +// CHECK: %[[VAL_38:.*]] = fir.load %[[VAL_34]] : !fir.llvm_ptr<index> |
| 44 | +// CHECK: %[[VAL_39:.*]] = fir.load %[[VAL_35]] : !fir.llvm_ptr<index> |
| 45 | +// CHECK: %[[VAL_40:.*]] = fir.load %[[VAL_36]] : !fir.llvm_ptr<index> |
| 46 | +// CHECK: %[[VAL_41:.*]] = fir.load %[[VAL_37]] : !fir.llvm_ptr<!fir.heap<index>> |
| 47 | +// CHECK: %[[VAL_42:.*]] = arith.addi %[[VAL_39]], %[[VAL_39]] : index |
36 | 48 | // CHECK: omp.teams {
|
37 | 49 | // CHECK: omp.parallel {
|
38 | 50 | // CHECK: omp.distribute {
|
39 | 51 | // CHECK: omp.wsloop {
|
40 |
| -// CHECK: omp.loop_nest (%[[VAL_31:.*]]) : index = (%[[VAL_27]]) to (%[[VAL_28]]) inclusive step (%[[VAL_29]]) { |
41 |
| -// CHECK: fir.store %[[VAL_30]] to %[[VAL_26]] : !fir.heap<index> |
| 52 | +// CHECK: omp.loop_nest (%[[VAL_43:.*]]) : index = (%[[VAL_38]]) to (%[[VAL_39]]) inclusive step (%[[VAL_40]]) { |
| 53 | +// CHECK: fir.store %[[VAL_42]] to %[[VAL_41]] : !fir.heap<index> |
42 | 54 | // CHECK: omp.yield
|
43 | 55 | // CHECK: }
|
44 | 56 | // CHECK: } {omp.composite}
|
|
49 | 61 | // CHECK: }
|
50 | 62 | // CHECK: omp.terminator
|
51 | 63 | // CHECK: }
|
52 |
| -// CHECK: %[[VAL_32:.*]] = fir.load %[[VAL_11]] : !fir.ref<!fir.heap<index>> |
53 |
| -// CHECK: %[[VAL_33:.*]] = fir.load %[[VAL_0]] : !fir.ref<index> |
54 |
| -// CHECK: %[[VAL_34:.*]] = fir.load %[[VAL_1]] : !fir.ref<index> |
55 |
| -// CHECK: %[[VAL_35:.*]] = fir.load %[[VAL_2]] : !fir.ref<index> |
56 |
| -// CHECK: %[[VAL_36:.*]] = arith.addi %[[VAL_34]], %[[VAL_34]] : index |
57 |
| -// CHECK: fir.store %[[VAL_33]] to %[[VAL_32]] : !fir.heap<index> |
58 |
| -// CHECK: %[[VAL_37:.*]] = llvm.mlir.constant(0 : i32) : i32 |
59 |
| -// CHECK: "fir.omp_target_freemem"(%[[VAL_37]], %[[VAL_32]]) : (i32, !fir.heap<index>) -> () |
| 64 | +// CHECK: %[[VAL_44:.*]] = fir.load %[[VAL_11]] : !fir.ref<index> |
| 65 | +// CHECK: %[[VAL_45:.*]] = fir.load %[[VAL_14]] : !fir.ref<index> |
| 66 | +// CHECK: %[[VAL_46:.*]] = fir.load %[[VAL_17]] : !fir.ref<index> |
| 67 | +// CHECK: %[[VAL_47:.*]] = fir.load %[[VAL_20]] : !fir.ref<!fir.heap<index>> |
| 68 | +// CHECK: %[[VAL_48:.*]] = arith.addi %[[VAL_45]], %[[VAL_45]] : index |
| 69 | +// CHECK: fir.store %[[VAL_44]] to %[[VAL_47]] : !fir.heap<index> |
| 70 | +// CHECK: %[[VAL_49:.*]] = llvm.mlir.constant(0 : i32) : i32 |
| 71 | +// CHECK: "fir.omp_target_freemem"(%[[VAL_49]], %[[VAL_47]]) : (i32, !fir.heap<index>) -> () |
60 | 72 | // CHECK: omp.terminator
|
61 | 73 | // CHECK: }
|
62 | 74 | // CHECK: return
|
|
0 commit comments