Skip to content

Commit 0425cc9

Browse files
authored
[flang][cuda] Add bind name for __ull2double_rX interfaces (#153465)
1 parent 022bd53 commit 0425cc9

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
@@ -667,29 +667,29 @@ attributes(device) real(8) function sinpi(x) bind(c,name='__nv_sinpi')
667667
end function
668668
end interface
669669

670-
interface __ull2double_rn
671-
attributes(device) double precision function __ull2double_rn(i) bind(c)
670+
interface __ull2double_rd
671+
attributes(device) double precision function __ull2double_rd(i) bind(c, name='__nv_ull2double_rd')
672672
!dir$ ignore_tkr (d) i
673673
integer(8), value :: i
674674
end function
675675
end interface
676676

677-
interface __ull2double_rz
678-
attributes(device) double precision function __ull2double_rz(i) bind(c)
677+
interface __ull2double_rn
678+
attributes(device) double precision function __ull2double_rn(i) bind(c, name='__nv_ull2double_rn')
679679
!dir$ ignore_tkr (d) i
680680
integer(8), value :: i
681681
end function
682682
end interface
683683

684684
interface __ull2double_ru
685-
attributes(device) double precision function __ull2double_ru(i) bind(c)
685+
attributes(device) double precision function __ull2double_ru(i) bind(c, name='__nv_ull2double_ru')
686686
!dir$ ignore_tkr (d) i
687687
integer(8), value :: i
688688
end function
689689
end interface
690690

691-
interface __ull2double_rd
692-
attributes(device) double precision function __ull2double_rd(i) bind(c)
691+
interface __ull2double_rz
692+
attributes(device) double precision function __ull2double_rz(i) bind(c, name='__nv_ull2double_rz')
693693
!dir$ ignore_tkr (d) i
694694
integer(8), value :: i
695695
end function

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,10 @@ attributes(global) subroutine devsub()
8484
af = __powf(af, af)
8585
ad = __dsqrt_rd(ad)
8686
ad = __dsqrt_ru(ad)
87+
ad = __ull2double_rd(al)
88+
ad = __ull2double_rn(al)
89+
ad = __ull2double_ru(al)
90+
ad = __ull2double_rz(al)
8791
r2 = __float2half_rn(af)
8892
af = __half2float(r2)
8993
end
@@ -156,6 +160,10 @@ end
156160
! CHECK: %{{.*}} = fir.call @__nv_powf(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32, f32) -> f32
157161
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
158162
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
163+
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
164+
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
165+
! CHECK: %{{.*}} = fir.call @__nv_ull2double_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
166+
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rz(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
159167
! CHECK: %{{.*}} = fir.call @__nv_float2half_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32) -> f16
160168
! CHECK: %{{.*}} = fir.call @__nv_half2float(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f16) -> f32
161169

0 commit comments

Comments
 (0)