47
47
48
48
! CHECK-LABEL: func.func @_QPdevsub() attributes {cuf.proc_attr = #cuf.cuda_proc<global>}
49
49
! CHECK: fir.call @llvm.nvvm.barrier0() fastmath<contract> : () -> ()
50
- ! CHECK: fir.call @__syncwarp(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (!fir.ref< i32> ) -> ()
50
+ ! CHECK: fir.call @__syncwarp(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i32) -> ()
51
51
! CHECK: fir.call @llvm.nvvm.membar.gl() fastmath<contract> : () -> ()
52
52
! CHECK: fir.call @llvm.nvvm.membar.cta() fastmath<contract> : () -> ()
53
53
! CHECK: fir.call @llvm.nvvm.membar.sys() fastmath<contract> : () -> ()
79
79
! CHECK: %{{.*}} = llvm.atomicrmw uinc_wrap %{{.*}}, %{{.*}} seq_cst : !llvm.ptr, i32
80
80
! CHECK: %{{.*}} = llvm.atomicrmw udec_wrap %{{.*}}, %{{.*}} seq_cst : !llvm.ptr, i32
81
81
82
- ! CHECK: func.func private @llvm.nvvm.barrier0()
83
- ! CHECK: func.func private @__syncwarp(!fir.ref<i32> {cuf.data_attr = #cuf.cuda<device>}) attributes {cuf.proc_attr = #cuf.cuda_proc<device>, fir.bindc_name = "__syncwarp", fir.proc_attrs = #fir.proc_attrs<bind_c>}
84
- ! CHECK: func.func private @llvm.nvvm.membar.gl()
85
- ! CHECK: func.func private @llvm.nvvm.membar.cta()
86
- ! CHECK: func.func private @llvm.nvvm.membar.sys()
87
- ! CHECK: func.func private @llvm.nvvm.barrier0.and(i32) -> i32
88
- ! CHECK: func.func private @llvm.nvvm.barrier0.popc(i32) -> i32
89
- ! CHECK: func.func private @llvm.nvvm.barrier0.or(i32) -> i32
90
-
91
82
subroutine host1()
92
83
integer, device :: a(32)
84
+ integer, device :: ret
93
85
integer :: i, j
94
86
95
87
block; use cudadevice
@@ -98,6 +90,28 @@ block; use cudadevice
98
90
a(i) = a(i) * 2.0
99
91
call syncthreads()
100
92
a(i) = a(i) + a(j) - 34.0
93
+
94
+ call syncwarp(1)
95
+ ret = syncthreads_and(1)
96
+ ret = syncthreads_count(1)
97
+ ret = syncthreads_or(1)
101
98
end do
102
99
end block
103
100
end
101
+
102
+ ! CHECK-LABEL: func.func @_QPhost1()
103
+ ! CHECK: cuf.kernel
104
+ ! CHECK: fir.call @llvm.nvvm.barrier0() fastmath<contract> : () -> ()
105
+ ! CHECK: fir.call @__syncwarp(%c1{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i32) -> ()
106
+ ! CHECK: fir.call @llvm.nvvm.barrier0.and(%c1{{.*}}) fastmath<contract> : (i32) -> i32
107
+ ! CHECK: fir.call @llvm.nvvm.barrier0.popc(%c1{{.*}}) fastmath<contract> : (i32) -> i32
108
+ ! CHECK: fir.call @llvm.nvvm.barrier0.or(%c1{{.*}}) fastmath<contract> : (i32) -> i32
109
+
110
+ ! CHECK: func.func private @llvm.nvvm.barrier0()
111
+ ! CHECK: func.func private @__syncwarp(i32) attributes {cuf.proc_attr = #cuf.cuda_proc<device>, fir.bindc_name = "__syncwarp", fir.proc_attrs = #fir.proc_attrs<bind_c>}
112
+ ! CHECK: func.func private @llvm.nvvm.membar.gl()
113
+ ! CHECK: func.func private @llvm.nvvm.membar.cta()
114
+ ! CHECK: func.func private @llvm.nvvm.membar.sys()
115
+ ! CHECK: func.func private @llvm.nvvm.barrier0.and(i32) -> i32
116
+ ! CHECK: func.func private @llvm.nvvm.barrier0.popc(i32) -> i32
117
+ ! CHECK: func.func private @llvm.nvvm.barrier0.or(i32) -> i32
0 commit comments