Skip to content

Commit 8d0668c

Browse files
authored
[flang][cuda] Add bind name for __ll2double_rX interfaces (llvm#153462)
1 parent f9b9e9b commit 8d0668c

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

flang/module/cudadevice.f90

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -639,29 +639,29 @@ attributes(device) real(8) function sinpi(x) bind(c,name='__nv_sinpi')
639639
end function
640640
end interface
641641

642-
interface __ll2double_rn
643-
attributes(device) double precision function __ll2double_rn(i) bind(c)
642+
interface __ll2double_rd
643+
attributes(device) double precision function __ll2double_rd(i) bind(c, name='__nv_ll2double_rd')
644644
!dir$ ignore_tkr (d) i
645645
integer(8), value :: i
646646
end function
647647
end interface
648648

649-
interface __ll2double_rz
650-
attributes(device) double precision function __ll2double_rz(i) bind(c)
649+
interface __ll2double_rn
650+
attributes(device) double precision function __ll2double_rn(i) bind(c, name='__nv_ll2double_rn')
651651
!dir$ ignore_tkr (d) i
652652
integer(8), value :: i
653653
end function
654654
end interface
655655

656656
interface __ll2double_ru
657-
attributes(device) double precision function __ll2double_ru(i) bind(c)
657+
attributes(device) double precision function __ll2double_ru(i) bind(c, name='__nv_ll2double_ru')
658658
!dir$ ignore_tkr (d) i
659659
integer(8), value :: i
660660
end function
661661
end interface
662662

663-
interface __ll2double_rd
664-
attributes(device) double precision function __ll2double_rd(i) bind(c)
663+
interface __ll2double_rz
664+
attributes(device) double precision function __ll2double_rz(i) bind(c, name='__nv_ll2double_rz')
665665
!dir$ ignore_tkr (d) i
666666
integer(8), value :: i
667667
end function

flang/test/Lower/CUDA/cuda-device-proc.cuf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,10 @@ attributes(global) subroutine devsub()
9090
ad = __ull2double_rz(al)
9191
r2 = __float2half_rn(af)
9292
af = __half2float(r2)
93+
ad = __ll2double_rd(al)
94+
ad = __ll2double_rn(al)
95+
ad = __ll2double_ru(al)
96+
ad = __ll2double_rz(al)
9397
end
9498

9599
! CHECK-LABEL: func.func @_QPdevsub() attributes {cuf.proc_attr = #cuf.cuda_proc<global>}
@@ -166,6 +170,10 @@ end
166170
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rz(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
167171
! CHECK: %{{.*}} = fir.call @__nv_float2half_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32) -> f16
168172
! CHECK: %{{.*}} = fir.call @__nv_half2float(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f16) -> f32
173+
! CHECK: %{{.*}} = fir.call @__nv_ll2double_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
174+
! CHECK: %{{.*}} = fir.call @__nv_ll2double_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
175+
! CHECK: %{{.*}} = fir.call @__nv_ll2double_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
176+
! CHECK: %{{.*}} = fir.call @__nv_ll2double_rz(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
169177

170178
subroutine host1()
171179
integer, device :: a(32)

0 commit comments

Comments
 (0)