|
1 |
| -!RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=52 %s -o - | FileCheck %s |
| 1 | +!RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=52 %s -o - | FileCheck %s |
2 | 2 | !RUN: %flang_fc1 -emit-hlfir -fopenmp -fopenmp-version=52 -fopenmp-is-target-device %s -o - | FileCheck %s
|
3 | 3 |
|
4 | 4 | module test_0
|
5 | 5 | implicit none
|
6 | 6 |
|
7 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_int {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : i32 |
| 7 | +!CHECK-DAG: fir.global @_QMtest_0Edata_int {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : i32 |
8 | 8 | INTEGER :: data_int = 10
|
9 | 9 | !$omp declare target link(data_int)
|
10 | 10 |
|
11 |
| -!CHECK-DAG: fir.global @_QMtest_0Earray_1d({{.*}}) {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : !fir.array<3xi32> |
| 11 | +!CHECK-DAG: fir.global @_QMtest_0Earray_1d({{.*}}) {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : !fir.array<3xi32> |
12 | 12 | INTEGER :: array_1d(3) = (/1,2,3/)
|
13 | 13 | !$omp declare target link(array_1d)
|
14 | 14 |
|
15 |
| -!CHECK-DAG: fir.global @_QMtest_0Earray_2d({{.*}}) {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : !fir.array<2x2xi32> |
| 15 | +!CHECK-DAG: fir.global @_QMtest_0Earray_2d({{.*}}) {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : !fir.array<2x2xi32> |
16 | 16 | INTEGER :: array_2d(2,2) = reshape((/1,2,3,4/), (/2,2/))
|
17 | 17 | !$omp declare target link(array_2d)
|
18 | 18 |
|
19 |
| -!CHECK-DAG: fir.global @_QMtest_0Ept1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : !fir.box<!fir.ptr<i32>> |
| 19 | +!CHECK-DAG: fir.global @_QMtest_0Ept1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : !fir.box<!fir.ptr<i32>> |
20 | 20 | INTEGER, POINTER :: pt1
|
21 | 21 | !$omp declare target link(pt1)
|
22 | 22 |
|
23 |
| -!CHECK-DAG: fir.global @_QMtest_0Ept2_tar {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} target : i32 |
24 |
| -INTEGER, TARGET :: pt2_tar = 5 |
| 23 | +!CHECK-DAG: fir.global @_QMtest_0Ept2_tar {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} target : i32 |
| 24 | +INTEGER, TARGET :: pt2_tar = 5 |
25 | 25 | !$omp declare target link(pt2_tar)
|
26 | 26 |
|
27 |
| -!CHECK-DAG: fir.global @_QMtest_0Ept2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : !fir.box<!fir.ptr<i32>> |
| 27 | +!CHECK-DAG: fir.global @_QMtest_0Ept2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : !fir.box<!fir.ptr<i32>> |
28 | 28 | INTEGER, POINTER :: pt2 => pt2_tar
|
29 | 29 | !$omp declare target link(pt2)
|
30 | 30 |
|
31 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_int_to {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : i32 |
| 31 | +!CHECK-DAG: fir.global @_QMtest_0Edata_int_to {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : i32 |
32 | 32 | INTEGER :: data_int_to = 5
|
33 | 33 | !$omp declare target to(data_int_to)
|
34 | 34 |
|
35 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_int_enter {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter)>} : i32 |
| 35 | +!CHECK-DAG: fir.global @_QMtest_0Edata_int_enter {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = false>} : i32 |
36 | 36 | INTEGER :: data_int_enter = 5
|
37 | 37 | !$omp declare target enter(data_int_enter)
|
38 | 38 |
|
39 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_int_clauseless {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : i32 |
| 39 | +!CHECK-DAG: fir.global @_QMtest_0Edata_int_clauseless {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : i32 |
40 | 40 | INTEGER :: data_int_clauseless = 1
|
41 | 41 | !$omp declare target(data_int_clauseless)
|
42 | 42 |
|
43 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_extended_to_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : f32 |
44 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_extended_to_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : f32 |
| 43 | +!CHECK-DAG: fir.global @_QMtest_0Edata_extended_to_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : f32 |
| 44 | +!CHECK-DAG: fir.global @_QMtest_0Edata_extended_to_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : f32 |
45 | 45 | REAL :: data_extended_to_1 = 2
|
46 | 46 | REAL :: data_extended_to_2 = 3
|
47 | 47 | !$omp declare target to(data_extended_to_1, data_extended_to_2)
|
48 | 48 |
|
49 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_extended_enter_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter)>} : f32 |
50 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_extended_enter_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter)>} : f32 |
| 49 | +!CHECK-DAG: fir.global @_QMtest_0Edata_extended_enter_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = false>} : f32 |
| 50 | +!CHECK-DAG: fir.global @_QMtest_0Edata_extended_enter_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = false>} : f32 |
51 | 51 | REAL :: data_extended_enter_1 = 2
|
52 | 52 | REAL :: data_extended_enter_2 = 3
|
53 | 53 | !$omp declare target enter(data_extended_enter_1, data_extended_enter_2)
|
54 | 54 |
|
55 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_extended_link_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : f32 |
56 |
| -!CHECK-DAG: fir.global @_QMtest_0Edata_extended_link_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : f32 |
| 55 | +!CHECK-DAG: fir.global @_QMtest_0Edata_extended_link_1 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : f32 |
| 56 | +!CHECK-DAG: fir.global @_QMtest_0Edata_extended_link_2 {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : f32 |
57 | 57 | REAL :: data_extended_link_1 = 2
|
58 | 58 | REAL :: data_extended_link_2 = 3
|
59 | 59 | !$omp declare target link(data_extended_link_1, data_extended_link_2)
|
60 | 60 |
|
| 61 | +!CHECK-DAG: fir.global @_QMtest_0Eautomap_data {omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = true>} target : !fir.box<!fir.heap<i32>> |
| 62 | +INTEGER, ALLOCATABLE, TARGET :: automap_data |
| 63 | +!$omp declare target enter(automap : automap_data) |
| 64 | + |
61 | 65 | contains
|
62 | 66 | end module test_0
|
63 | 67 |
|
64 | 68 | PROGRAM commons
|
65 |
| - !CHECK-DAG: fir.global @numbers_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : tuple<f32, f32> { |
| 69 | + !CHECK-DAG: fir.global @numbers_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : tuple<f32, f32> { |
66 | 70 | REAL :: one = 1
|
67 | 71 | REAL :: two = 2
|
68 | 72 | COMMON /numbers/ one, two
|
69 | 73 | !$omp declare target(/numbers/)
|
70 |
| - |
71 |
| - !CHECK-DAG: fir.global @numbers_link_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link)>} : tuple<f32, f32> { |
| 74 | + |
| 75 | + !CHECK-DAG: fir.global @numbers_link_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (link), automap = false>} : tuple<f32, f32> { |
72 | 76 | REAL :: one_link = 1
|
73 | 77 | REAL :: two_link = 2
|
74 | 78 | COMMON /numbers_link/ one_link, two_link
|
75 | 79 | !$omp declare target link(/numbers_link/)
|
76 | 80 |
|
77 |
| - !CHECK-DAG: fir.global @numbers_to_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to)>} : tuple<f32, f32> { |
| 81 | + !CHECK-DAG: fir.global @numbers_to_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (to), automap = false>} : tuple<f32, f32> { |
78 | 82 | REAL :: one_to = 1
|
79 | 83 | REAL :: two_to = 2
|
80 | 84 | COMMON /numbers_to/ one_to, two_to
|
81 | 85 | !$omp declare target to(/numbers_to/)
|
82 | 86 |
|
83 |
| - !CHECK-DAG: fir.global @numbers_enter_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter)>} : tuple<f32, f32> { |
| 87 | + !CHECK-DAG: fir.global @numbers_enter_ {alignment = 4 : i64, omp.declare_target = #omp.declaretarget<device_type = (any), capture_clause = (enter), automap = false>} : tuple<f32, f32> { |
84 | 88 | REAL :: one_enter = 1
|
85 | 89 | REAL :: two_enter = 2
|
86 | 90 | COMMON /numbers_enter/ one_enter, two_enter
|
|
0 commit comments