Skip to content

Commit f631a10

Browse files
committed
[flang][openacc][NFC] Split global acc declare and function/subroutine declare
Split the tests for declare in module specification and the declare in function/subroutine specificatons. Since the lowering is specific to the location of the declare it will make it easier to update these files. This also remove the duplicate parts shared by the FIR vs HLFIR tests. Reviewed By: razvanlupusoru Differential Revision: https://reviews.llvm.org/D158222
1 parent de82fde commit f631a10

File tree

3 files changed

+82
-144
lines changed

3 files changed

+82
-144
lines changed

flang/test/Lower/OpenACC/HLFIR/acc-declare.f90

Lines changed: 2 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -1,75 +1,9 @@
1-
! This test checks lowering of OpenACC declare directive.
1+
! This test checks lowering of OpenACC declare directive in function and
2+
! subroutine specification parts.
23

34
! RUN: bbc -fopenacc -emit-hlfir %s -o - | FileCheck %s --check-prefixes=HLFIR,ALL
45
! RUN: bbc -fopenacc -emit-fir -hlfir %s -o - | FileCheck %s --check-prefixes=FIR,ALL
56

6-
module acc_declare_test
7-
integer, parameter :: n = 100000
8-
real, dimension(n) :: data1
9-
!$acc declare create(data1)
10-
end module
11-
12-
! ALL-LABEL: fir.global @_QMacc_declare_testEdata1 {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.array<100000xf32>
13-
14-
! ALL-LABEL: acc.global_ctor @_QMacc_declare_testEdata1_acc_ctor {
15-
! ALL: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_testEdata1) {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.ref<!fir.array<100000xf32>>
16-
! ALL: %[[CREATE:.*]] = acc.create varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {name = "data1", structured = false}
17-
! ALL: acc.declare_enter dataOperands(%[[CREATE]] : !fir.ref<!fir.array<100000xf32>>)
18-
! ALL: acc.terminator
19-
! ALL: }
20-
21-
! ALL-LABEL: acc.global_dtor @_QMacc_declare_testEdata1_acc_dtor {
22-
! ALL: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_testEdata1) {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.ref<!fir.array<100000xf32>>
23-
! ALL: %[[DEVICEPTR:.*]] = acc.getdeviceptr varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {dataClause = #acc<data_clause acc_create>, name = "data1", structured = false}
24-
! ALL: acc.declare_exit dataOperands(%[[DEVICEPTR]] : !fir.ref<!fir.array<100000xf32>>)
25-
! ALL: acc.delete accPtr(%[[DEVICEPTR]] : !fir.ref<!fir.array<100000xf32>>) {dataClause = #acc<data_clause acc_create>, name = "data1", structured = false}
26-
! ALL: acc.terminator
27-
! ALL: }
28-
29-
module acc_declare_copyin_test
30-
integer, parameter :: n = 100000
31-
real, dimension(n) :: data1
32-
!$acc declare copyin(data1)
33-
end module
34-
35-
36-
! ALL-LABEL: acc.global_ctor @_QMacc_declare_copyin_testEdata1_acc_ctor {
37-
! ALL: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_copyin_testEdata1) {acc.declare = #acc.declare<dataClause = acc_copyin>} : !fir.ref<!fir.array<100000xf32>>
38-
! ALL: %[[COPYIN:.*]] = acc.copyin varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {name = "data1", structured = false}
39-
! ALL: acc.declare_enter dataOperands(%[[COPYIN]] : !fir.ref<!fir.array<100000xf32>>)
40-
! ALL: acc.terminator
41-
! ALL: }
42-
43-
module acc_declare_device_resident_test
44-
integer, parameter :: n = 5000
45-
integer, dimension(n) :: data1
46-
!$acc declare device_resident(data1)
47-
end module
48-
49-
! ALL-LABEL: fir.global @_QMacc_declare_device_resident_testEdata1 {acc.declare = #acc.declare<dataClause = acc_declare_device_resident>} : !fir.array<5000xi32>
50-
51-
! ALL-LABEL: acc.global_ctor @_QMacc_declare_device_resident_testEdata1_acc_ctor {
52-
! ALL: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_device_resident_testEdata1) {acc.declare = #acc.declare<dataClause = acc_declare_device_resident>} : !fir.ref<!fir.array<5000xi32>>
53-
! ALL: %[[DEVICERESIDENT:.*]] = acc.declare_device_resident varPtr(%0 : !fir.ref<!fir.array<5000xi32>>) -> !fir.ref<!fir.array<5000xi32>> {name = "data1", structured = false}
54-
! ALL: acc.declare_enter dataOperands(%[[DEVICERESIDENT]] : !fir.ref<!fir.array<5000xi32>>)
55-
! ALL: acc.terminator
56-
! ALL: }
57-
58-
module acc_declare_device_link_test
59-
integer, parameter :: n = 5000
60-
integer, dimension(n) :: data1
61-
!$acc declare link(data1)
62-
end module
63-
64-
! ALL-LABEL: fir.global @_QMacc_declare_device_link_testEdata1 {acc.declare = #acc.declare<dataClause = acc_declare_link>} : !fir.array<5000xi32> {
65-
66-
! ALL-LABEL: acc.global_ctor @_QMacc_declare_device_link_testEdata1_acc_ctor {
67-
! ALL: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_device_link_testEdata1) {acc.declare = #acc.declare<dataClause = acc_declare_link>} : !fir.ref<!fir.array<5000xi32>>
68-
! ALL: %[[LINK:.*]] = acc.declare_link varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<5000xi32>>) -> !fir.ref<!fir.array<5000xi32>> {name = "data1", structured = false}
69-
! ALL: acc.declare_enter dataOperands(%[[LINK]] : !fir.ref<!fir.array<5000xi32>>)
70-
! ALL: acc.terminator
71-
! ALL: }
72-
737
module acc_declare
748
contains
759

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
! This test checks lowering of OpenACC declare directive in module specification
2+
! part.
3+
4+
! RUN: bbc -fopenacc -emit-fir %s -o - | FileCheck %s
5+
6+
module acc_declare_test
7+
integer, parameter :: n = 100000
8+
real, dimension(n) :: data1
9+
!$acc declare create(data1)
10+
end module
11+
12+
! CHECK-LABEL: fir.global @_QMacc_declare_testEdata1 {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.array<100000xf32>
13+
14+
! CHECK-LABEL: acc.global_ctor @_QMacc_declare_testEdata1_acc_ctor {
15+
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_testEdata1) {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.ref<!fir.array<100000xf32>>
16+
! CHECK: %[[CREATE:.*]] = acc.create varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {name = "data1", structured = false}
17+
! CHECK: acc.declare_enter dataOperands(%[[CREATE]] : !fir.ref<!fir.array<100000xf32>>)
18+
! CHECK: acc.terminator
19+
! CHECK: }
20+
21+
! CHECK-LABEL: acc.global_dtor @_QMacc_declare_testEdata1_acc_dtor {
22+
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_testEdata1) {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.ref<!fir.array<100000xf32>>
23+
! CHECK: %[[DEVICEPTR:.*]] = acc.getdeviceptr varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {dataClause = #acc<data_clause acc_create>, name = "data1", structured = false}
24+
! CHECK: acc.declare_exit dataOperands(%[[DEVICEPTR]] : !fir.ref<!fir.array<100000xf32>>)
25+
! CHECK: acc.delete accPtr(%[[DEVICEPTR]] : !fir.ref<!fir.array<100000xf32>>) {dataClause = #acc<data_clause acc_create>, name = "data1", structured = false}
26+
! CHECK: acc.terminator
27+
! CHECK: }
28+
29+
module acc_declare_copyin_test
30+
integer, parameter :: n = 100000
31+
real, dimension(n) :: data1
32+
!$acc declare copyin(data1)
33+
end module
34+
35+
! CHECK-LABEL: acc.global_ctor @_QMacc_declare_copyin_testEdata1_acc_ctor {
36+
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_copyin_testEdata1) {acc.declare = #acc.declare<dataClause = acc_copyin>} : !fir.ref<!fir.array<100000xf32>>
37+
! CHECK: %[[COPYIN:.*]] = acc.copyin varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {name = "data1", structured = false}
38+
! CHECK: acc.declare_enter dataOperands(%[[COPYIN]] : !fir.ref<!fir.array<100000xf32>>)
39+
! CHECK: acc.terminator
40+
! CHECK: }
41+
42+
module acc_declare_device_resident_test
43+
integer, parameter :: n = 5000
44+
integer, dimension(n) :: data1
45+
!$acc declare device_resident(data1)
46+
end module
47+
48+
! CHECK-LABEL: fir.global @_QMacc_declare_device_resident_testEdata1 {acc.declare = #acc.declare<dataClause = acc_declare_device_resident>} : !fir.array<5000xi32>
49+
50+
! CHECK-LABEL: acc.global_ctor @_QMacc_declare_device_resident_testEdata1_acc_ctor {
51+
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_device_resident_testEdata1) {acc.declare = #acc.declare<dataClause = acc_declare_device_resident>} : !fir.ref<!fir.array<5000xi32>>
52+
! CHECK: %[[DEVICERESIDENT:.*]] = acc.declare_device_resident varPtr(%0 : !fir.ref<!fir.array<5000xi32>>) -> !fir.ref<!fir.array<5000xi32>> {name = "data1", structured = false}
53+
! CHECK: acc.declare_enter dataOperands(%[[DEVICERESIDENT]] : !fir.ref<!fir.array<5000xi32>>)
54+
! CHECK: acc.terminator
55+
! CHECK: }
56+
57+
! CHECK-LABEL: acc.global_dtor @_QMacc_declare_device_resident_testEdata1_acc_dtor {
58+
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_device_resident_testEdata1) {acc.declare = #acc.declare<dataClause = acc_declare_device_resident>} : !fir.ref<!fir.array<5000xi32>>
59+
! CHECK: %[[DEVPTR:.*]] = acc.getdeviceptr varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<5000xi32>>) -> !fir.ref<!fir.array<5000xi32>> {dataClause = #acc<data_clause acc_declare_device_resident>, name = "data1", structured = false}
60+
! CHECK: acc.declare_exit dataOperands(%[[DEVICEPTR]] : !fir.ref<!fir.array<5000xi32>>)
61+
! CHECK: acc.delete accPtr(%[[DEVICEPTR]] : !fir.ref<!fir.array<5000xi32>>) {dataClause = #acc<data_clause acc_declare_device_resident>, name = "data1", structured = false}
62+
! CHECK: acc.terminator
63+
! CHECK: }
64+
65+
module acc_declare_device_link_test
66+
integer, parameter :: n = 5000
67+
integer, dimension(n) :: data1
68+
!$acc declare link(data1)
69+
end module
70+
71+
! CHECK-LABEL: fir.global @_QMacc_declare_device_link_testEdata1 {acc.declare = #acc.declare<dataClause = acc_declare_link>} : !fir.array<5000xi32> {
72+
73+
! CHECK-LABEL: acc.global_ctor @_QMacc_declare_device_link_testEdata1_acc_ctor {
74+
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_device_link_testEdata1) {acc.declare = #acc.declare<dataClause = acc_declare_link>} : !fir.ref<!fir.array<5000xi32>>
75+
! CHECK: %[[LINK:.*]] = acc.declare_link varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<5000xi32>>) -> !fir.ref<!fir.array<5000xi32>> {name = "data1", structured = false}
76+
! CHECK: acc.declare_enter dataOperands(%[[LINK]] : !fir.ref<!fir.array<5000xi32>>)
77+
! CHECK: acc.terminator
78+
! CHECK: }

flang/test/Lower/OpenACC/acc-declare.f90

Lines changed: 2 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -1,82 +1,8 @@
1-
! This test checks lowering of OpenACC declare directive.
1+
! This test checks lowering of OpenACC declare directive in subroutine and
2+
! function specification parts.
23

34
! RUN: bbc -fopenacc -emit-fir %s -o - | FileCheck %s
45

5-
module acc_declare_test
6-
integer, parameter :: n = 100000
7-
real, dimension(n) :: data1
8-
!$acc declare create(data1)
9-
end module
10-
11-
! CHECK-LABEL: fir.global @_QMacc_declare_testEdata1 {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.array<100000xf32>
12-
13-
! CHECK-LABEL: acc.global_ctor @_QMacc_declare_testEdata1_acc_ctor {
14-
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_testEdata1) {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.ref<!fir.array<100000xf32>>
15-
! CHECK: %[[CREATE:.*]] = acc.create varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {name = "data1", structured = false}
16-
! CHECK: acc.declare_enter dataOperands(%[[CREATE]] : !fir.ref<!fir.array<100000xf32>>)
17-
! CHECK: acc.terminator
18-
! CHECK: }
19-
20-
! CHECK-LABEL: acc.global_dtor @_QMacc_declare_testEdata1_acc_dtor {
21-
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_testEdata1) {acc.declare = #acc.declare<dataClause = acc_create>} : !fir.ref<!fir.array<100000xf32>>
22-
! CHECK: %[[DEVICEPTR:.*]] = acc.getdeviceptr varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {dataClause = #acc<data_clause acc_create>, name = "data1", structured = false}
23-
! CHECK: acc.declare_exit dataOperands(%[[DEVICEPTR]] : !fir.ref<!fir.array<100000xf32>>)
24-
! CHECK: acc.delete accPtr(%[[DEVICEPTR]] : !fir.ref<!fir.array<100000xf32>>) {dataClause = #acc<data_clause acc_create>, name = "data1", structured = false}
25-
! CHECK: acc.terminator
26-
! CHECK: }
27-
28-
module acc_declare_copyin_test
29-
integer, parameter :: n = 100000
30-
real, dimension(n) :: data1
31-
!$acc declare copyin(data1)
32-
end module
33-
34-
35-
! CHECK-LABEL: acc.global_ctor @_QMacc_declare_copyin_testEdata1_acc_ctor {
36-
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_copyin_testEdata1) {acc.declare = #acc.declare<dataClause = acc_copyin>} : !fir.ref<!fir.array<100000xf32>>
37-
! CHECK: %[[COPYIN:.*]] = acc.copyin varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<100000xf32>>) -> !fir.ref<!fir.array<100000xf32>> {name = "data1", structured = false}
38-
! CHECK: acc.declare_enter dataOperands(%[[COPYIN]] : !fir.ref<!fir.array<100000xf32>>)
39-
! CHECK: acc.terminator
40-
! CHECK: }
41-
42-
module acc_declare_device_resident_test
43-
integer, parameter :: n = 5000
44-
integer, dimension(n) :: data1
45-
!$acc declare device_resident(data1)
46-
end module
47-
48-
! CHECK-LABEL: fir.global @_QMacc_declare_device_resident_testEdata1 {acc.declare = #acc.declare<dataClause = acc_declare_device_resident>} : !fir.array<5000xi32>
49-
50-
! CHECK-LABEL: acc.global_ctor @_QMacc_declare_device_resident_testEdata1_acc_ctor {
51-
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_device_resident_testEdata1) {acc.declare = #acc.declare<dataClause = acc_declare_device_resident>} : !fir.ref<!fir.array<5000xi32>>
52-
! CHECK: %[[DEVICERESIDENT:.*]] = acc.declare_device_resident varPtr(%0 : !fir.ref<!fir.array<5000xi32>>) -> !fir.ref<!fir.array<5000xi32>> {name = "data1", structured = false}
53-
! CHECK: acc.declare_enter dataOperands(%[[DEVICERESIDENT]] : !fir.ref<!fir.array<5000xi32>>)
54-
! CHECK: acc.terminator
55-
! CHECK: }
56-
57-
! CHECK-LABEL: acc.global_dtor @_QMacc_declare_device_resident_testEdata1_acc_dtor {
58-
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_device_resident_testEdata1) {acc.declare = #acc.declare<dataClause = acc_declare_device_resident>} : !fir.ref<!fir.array<5000xi32>>
59-
! CHECK: %[[DEVPTR:.*]] = acc.getdeviceptr varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<5000xi32>>) -> !fir.ref<!fir.array<5000xi32>> {dataClause = #acc<data_clause acc_declare_device_resident>, name = "data1", structured = false}
60-
! CHECK: acc.declare_exit dataOperands(%[[DEVICEPTR]] : !fir.ref<!fir.array<5000xi32>>)
61-
! CHECK: acc.delete accPtr(%[[DEVICEPTR]] : !fir.ref<!fir.array<5000xi32>>) {dataClause = #acc<data_clause acc_declare_device_resident>, name = "data1", structured = false}
62-
! CHECK: acc.terminator
63-
! CHECK: }
64-
65-
module acc_declare_device_link_test
66-
integer, parameter :: n = 5000
67-
integer, dimension(n) :: data1
68-
!$acc declare link(data1)
69-
end module
70-
71-
! CHECK-LABEL: fir.global @_QMacc_declare_device_link_testEdata1 {acc.declare = #acc.declare<dataClause = acc_declare_link>} : !fir.array<5000xi32> {
72-
73-
! CHECK-LABEL: acc.global_ctor @_QMacc_declare_device_link_testEdata1_acc_ctor {
74-
! CHECK: %[[GLOBAL_ADDR:.*]] = fir.address_of(@_QMacc_declare_device_link_testEdata1) {acc.declare = #acc.declare<dataClause = acc_declare_link>} : !fir.ref<!fir.array<5000xi32>>
75-
! CHECK: %[[LINK:.*]] = acc.declare_link varPtr(%[[GLOBAL_ADDR]] : !fir.ref<!fir.array<5000xi32>>) -> !fir.ref<!fir.array<5000xi32>> {name = "data1", structured = false}
76-
! CHECK: acc.declare_enter dataOperands(%[[LINK]] : !fir.ref<!fir.array<5000xi32>>)
77-
! CHECK: acc.terminator
78-
! CHECK: }
79-
806
module acc_declare
817
contains
828

0 commit comments

Comments
 (0)