[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 function
end interface end interface
interface __ull2double_rn interface __ull2double_rd
attributes(device) double precision function __ull2double_rn(i) bind(c) attributes(device) double precision function __ull2double_rd(i) bind(c, name='__nv_ull2double_rd')
!dir$ ignore_tkr (d) i !dir$ ignore_tkr (d) i
integer(8), value :: i integer(8), value :: i
end function end function
end interface end interface
interface __ull2double_rz interface __ull2double_rn
attributes(device) double precision function __ull2double_rz(i) bind(c) attributes(device) double precision function __ull2double_rn(i) bind(c, name='__nv_ull2double_rn')
!dir$ ignore_tkr (d) i !dir$ ignore_tkr (d) i
integer(8), value :: i integer(8), value :: i
end function end function
end interface end interface
interface __ull2double_ru 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 !dir$ ignore_tkr (d) i
integer(8), value :: i integer(8), value :: i
end function end function
end interface end interface
interface __ull2double_rd interface __ull2double_rz
attributes(device) double precision function __ull2double_rd(i) bind(c) attributes(device) double precision function __ull2double_rz(i) bind(c, name='__nv_ull2double_rz')
!dir$ ignore_tkr (d) i !dir$ ignore_tkr (d) i
integer(8), value :: i integer(8), value :: i
end function end function

View File

@ -84,6 +84,10 @@ attributes(global) subroutine devsub()
af = __powf(af, af) af = __powf(af, af)
ad = __dsqrt_rd(ad) ad = __dsqrt_rd(ad)
ad = __dsqrt_ru(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) r2 = __float2half_rn(af)
af = __half2float(r2) af = __half2float(r2)
end end
@ -156,6 +160,10 @@ end
! CHECK: %{{.*}} = fir.call @__nv_powf(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32, f32) -> f32 ! 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_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_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_float2half_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32) -> f16
! CHECK: %{{.*}} = fir.call @__nv_half2float(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f16) -> f32 ! CHECK: %{{.*}} = fir.call @__nv_half2float(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f16) -> f32