Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions flang/module/cudadevice.f90
Original file line number Diff line number Diff line change
Expand Up @@ -743,11 +743,11 @@ attributes(device) real(8) function sinpi(x) bind(c,name='__nv_sinpi')
end interface

interface __ffs
attributes(device) integer function __ffs(i) bind(c)
attributes(device) integer function __ffs(i) bind(c, name='__nv_ffs')
!dir$ ignore_tkr (d) i
integer, value :: i
end function
attributes(device) integer function __ffsll(i) bind(c)
attributes(device) integer function __ffsll(i) bind(c, name='__nv_ffsll')
!dir$ ignore_tkr (d) i
integer(8), value :: i
end function
Expand Down
7 changes: 7 additions & 0 deletions flang/test/Lower/CUDA/cuda-device-proc.cuf
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ attributes(global) subroutine devsub()
integer(8) :: al
integer(8) :: time
integer :: smalltime
integer(4) :: res

call syncthreads()
call syncwarp(1)
Expand Down Expand Up @@ -49,6 +50,9 @@ attributes(global) subroutine devsub()
smalltime = clock()
time = clock64()
time = globalTimer()

res = __ffs(ai)
res = __ffs(al)
end

! CHECK-LABEL: func.func @_QPdevsub() attributes {cuf.proc_attr = #cuf.cuda_proc<global>}
Expand Down Expand Up @@ -89,6 +93,9 @@ end
! CHECK: %{{.*}} = nvvm.read.ptx.sreg.clock64 : i64
! CHECK: %{{.*}} = nvvm.read.ptx.sreg.globaltimer : i64

! CHECK: %{{.*}} = fir.call @__nv_ffs(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i32) -> i32
! CHECK: %{{.*}} = fir.call @__nv_ffsll(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> i32

subroutine host1()
integer, device :: a(32)
integer, device :: ret
Expand Down