xref: /llvm-project/flang/test/Lower/CUDA/cuda-module-use.cuf (revision 45daa4fdc68f5faa5bd5c33da052d2415cd88540)
1! RUN: bbc -emit-hlfir -fcuda %S/cuda-mod.cuf
2! RUN: bbc -emit-hlfir -fcuda %s -o - | FileCheck %s
3
4! Test importing module containing variable and subroutine with CUDA attributes.
5
6subroutine sub1()
7  use cuf_mod
8!  md = 1.0 ! currently a TODO
9end
10
11! CHECK-LABEL: func.func @_QPsub1()
12! CHECK: %[[ADDR:.*]] = fir.address_of(@_QMcuf_modEmd) : !fir.ref<f32>
13! CHECK: %{{.*}}:2 = hlfir.declare %[[ADDR]] {data_attr = #cuf.cuda<device>, uniq_name = "_QMcuf_modEmd"} : (!fir.ref<f32>) -> (!fir.ref<f32>, !fir.ref<f32>)
14
15attributes(device) subroutine sub2()
16  use cuf_mod
17  call devsub()
18end
19
20! CHECK-LABEL: func.func @_QPsub2() attributes {cuf.proc_attr = #cuf.cuda_proc<device>}
21! CHECK: fir.call @_QMcuf_modPdevsub()
22
23! CHECK-LABEL: fir.global @_QMcuf_modEmd {data_attr = #cuf.cuda<device>} : f32
24
25! CHECK-LABEL: func.func private @_QMcuf_modPdevsub() attributes {cuf.proc_attr = #cuf.cuda_proc<device>}
26