@@ -146,3 +146,48 @@ // Test that global used in device function are flagged with the correct
146
146
147
147
// CHECK- LABEL: gpu.module @cuda_device_mod
148
148
// CHECK: fir.global linkonce @_QQclX5465737420504153534544 constant
149
+
150
+ // -----
151
+
152
+ func.func @_QQmain() attributes {fir.bindc_name = " cufkernel_global" } {
153
+ % c10 = arith.constant 10 : index
154
+ % c5_i32 = arith.constant 5 : i32
155
+ % c6_i32 = arith.constant 6 : i32
156
+ % c1 = arith.constant 1 : index
157
+ % c1_i32 = arith.constant 1 : i32
158
+ % c10_i32 = arith.constant 10 : i32
159
+ % 0 = fir.alloca i32 {bindc_name = " i" , uniq_name = " _QFEi" }
160
+ % 1 :2 = hlfir.declare % 0 {uniq_name = " _QFEi" } : (! fir.ref<i32>) -> (!fir.ref<i32>, !fir.ref<i32>)
161
+ cuf.kernel<<<% c10_i32, % c1_i32>>> (% arg0 : index) = (% c1 : index) to (% c10 : index) step (% c1 : index) {
162
+ % 2 = fir.convert % arg0 : (index) - > i32
163
+ fir.store % 2 to % 1 #1 : ! fir.ref<i32>
164
+ % 3 = fir.load % 1 #0 : ! fir.ref<i32>
165
+ % 4 = arith.cmpi eq, % 3 , % c1_i32 : i32
166
+ cf.cond_br % 4 , ^bb1, ^bb2
167
+ ^bb1: // pred: ^bb0
168
+ % 5 = fir.address_of(@_QQclX91d13f6e74caa2f03965d7a7c6a8fdd5) : ! fir.ref<!fir.char<1,50>>
169
+ % 6 = fir.convert % 5 : (! fir.ref<!fir.char<1,50>>) -> !fir.ref<i8>
170
+ % 7 = fir.call @_FortranAioBeginExternalListOutput(% c6_i32, % 6 , % c5_i32) fastmath< contract> : (i32, ! fir.ref<i8>, i32) -> !fir.ref<i8>
171
+ % 8 = fir.load % 1 #0 : ! fir.ref<i32>
172
+ % 9 = fir.call @_FortranAioOutputInteger32(% 7 , % 8 ) fastmath< contract> : (! fir.ref<i8>, i32) -> i1
173
+ % 10 = fir.call @_FortranAioEndIoStatement(% 7 ) fastmath< contract> : (! fir.ref<i8>) -> i32
174
+ cf.br ^bb2
175
+ ^bb2: // 2 preds: ^bb0, ^bb1
176
+ " fir.end" () : () - > ()
177
+ }
178
+ return
179
+ }
180
+ func.func private @_FortranAioBeginExternalListOutput(i32, ! fir.ref<i8>, i32) -> !fir.ref<i8> attributes {fir.io, fir.runtime}
181
+ fir.global linkonce @_QQclX91d13f6e74caa2f03965d7a7c6a8fdd5 constant : ! fir.char<1,50> {
182
+ % 0 = fir.string_lit " /local/home/vclement/llvm-project/build/dummy.cuf\00" (50 ) : ! fir.char<1,50>
183
+ fir.has_value % 0 : ! fir.char<1,50>
184
+ }
185
+ func.func private @_FortranAioOutputInteger32(! fir.ref<i8>, i32) -> i1 attributes {fir.io, fir.runtime}
186
+ func.func private @_FortranAioEndIoStatement(! fir.ref<i8>) -> i32 attributes {fir.io, fir.runtime}
187
+ func.func private @_FortranAProgramStart(i32, ! llvm.ptr, !llvm.ptr, !llvm.ptr)
188
+ func.func private @_FortranAProgramEndStatement()
189
+
190
+ // CHECK- LABEL: func.func @_QQmain()
191
+ // CHECK: fir.global linkonce @_QQclX91d13f6e74caa2f03965d7a7c6a8fdd5 constant : ! fir.char<1,50>
192
+ // CHECK: gpu.module @cuda_device_mod
193
+ // CHECK: fir.global linkonce @_QQclX91d13f6e74caa2f03965d7a7c6a8fdd5 constant : ! fir.char<1,50>
0 commit comments