[flang][cuda] Add bind name for __ull2double_rX interfaces (#153465)

This commit is contained in:
Valentin Clement (バレンタイン クレメン) 2025-08-13 14:42:57 -07:00 committed by GitHub
parent 022bd53b88
commit 0425cc95bd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 15 additions and 7 deletions

View File

@ -667,29 +667,29 @@ implicit none
end function
end interface
interface __ull2double_rn
attributes(device) double precision function __ull2double_rn(i) bind(c)
interface __ull2double_rd
attributes(device) double precision function __ull2double_rd(i) bind(c, name='__nv_ull2double_rd')
!dir$ ignore_tkr (d) i
integer(8), value :: i
end function
end interface
interface __ull2double_rz
attributes(device) double precision function __ull2double_rz(i) bind(c)
interface __ull2double_rn
attributes(device) double precision function __ull2double_rn(i) bind(c, name='__nv_ull2double_rn')
!dir$ ignore_tkr (d) i
integer(8), value :: i
end function
end interface
interface __ull2double_ru
attributes(device) double precision function __ull2double_ru(i) bind(c)
attributes(device) double precision function __ull2double_ru(i) bind(c, name='__nv_ull2double_ru')
!dir$ ignore_tkr (d) i
integer(8), value :: i
end function
end interface
interface __ull2double_rd
attributes(device) double precision function __ull2double_rd(i) bind(c)
interface __ull2double_rz
attributes(device) double precision function __ull2double_rz(i) bind(c, name='__nv_ull2double_rz')
!dir$ ignore_tkr (d) i
integer(8), value :: i
end function

View File

@ -84,6 +84,10 @@ attributes(global) subroutine devsub()
af = __powf(af, af)
ad = __dsqrt_rd(ad)
ad = __dsqrt_ru(ad)
ad = __ull2double_rd(al)
ad = __ull2double_rn(al)
ad = __ull2double_ru(al)
ad = __ull2double_rz(al)
r2 = __float2half_rn(af)
af = __half2float(r2)
end
@ -156,6 +160,10 @@ end
! CHECK: %{{.*}} = fir.call @__nv_powf(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32, f32) -> f32
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
! CHECK: %{{.*}} = fir.call @__nv_ull2double_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rz(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
! CHECK: %{{.*}} = fir.call @__nv_float2half_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32) -> f16
! CHECK: %{{.*}} = fir.call @__nv_half2float(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f16) -> f32