diff --git a/flang/module/cudadevice.f90 b/flang/module/cudadevice.f90 index 82571704032f0..cec1147ed5b21 100644 --- a/flang/module/cudadevice.f90 +++ b/flang/module/cudadevice.f90 @@ -507,28 +507,28 @@ attributes(device) real(8) function sinpi(x) bind(c,name='__nv_sinpi') end interface interface __double2float_rn - attributes(device) real function __double2float_rn(r) bind(c) + attributes(device) real function __double2float_rn(r) bind(c, name='__nv_double2float_rn') !dir$ ignore_tkr (d) r double precision, value :: r end function end interface interface __double2float_rz - attributes(device) real function __double2float_rz(r) bind(c) + attributes(device) real function __double2float_rz(r) bind(c, name='__nv_double2float_rz') !dir$ ignore_tkr (d) r double precision, value :: r end function end interface interface __double2float_ru - attributes(device) real function __double2float_ru(r) bind(c) + attributes(device) real function __double2float_ru(r) bind(c, name='__nv_double2float_ru') !dir$ ignore_tkr (d) r double precision, value :: r end function end interface interface __double2float_rd - attributes(device) real function __double2float_rd(r) bind(c) + attributes(device) real function __double2float_rd(r) bind(c, name='__nv_double2float_rd') !dir$ ignore_tkr (d) r double precision, value :: r end function diff --git a/flang/test/Lower/CUDA/cuda-device-proc.cuf b/flang/test/Lower/CUDA/cuda-device-proc.cuf index ae336445532b9..4fb658ecfdaed 100644 --- a/flang/test/Lower/CUDA/cuda-device-proc.cuf +++ b/flang/test/Lower/CUDA/cuda-device-proc.cuf @@ -65,10 +65,13 @@ attributes(global) subroutine devsub() ad = __ddiv_rz(ad, ad) ad = __ddiv_ru(ad, ad) ad = __ddiv_rd(ad, ad) + af = __double2float_rn(ad) + af = __double2float_rz(ad) + af = __double2float_ru(ad) + af = __double2float_rd(ad) ai = __mul24(ai, ai) ai = __umul24(ai, ai) af = __powf(af, af) - end ! CHECK-LABEL: func.func @_QPdevsub() attributes {cuf.proc_attr = #cuf.cuda_proc} @@ -122,6 +125,10 @@ end ! CHECK: %{{.*}} = fir.call @__nv_ddiv_rz(%{{.*}}, %{{.*}}) proc_attrs fastmath : (f64, f64) -> f64 ! CHECK: %{{.*}} = fir.call @__nv_ddiv_ru(%{{.*}}, %{{.*}}) proc_attrs fastmath : (f64, f64) -> f64 ! CHECK: %{{.*}} = fir.call @__nv_ddiv_rd(%{{.*}}, %{{.*}}) proc_attrs fastmath : (f64, f64) -> f64 +! CHECK: %{{.*}} = fir.call @__nv_double2float_rn(%{{.*}}) proc_attrs fastmath : (f64) -> f32 +! CHECK: %{{.*}} = fir.call @__nv_double2float_rz(%{{.*}}) proc_attrs fastmath : (f64) -> f32 +! CHECK: %{{.*}} = fir.call @__nv_double2float_ru(%{{.*}}) proc_attrs fastmath : (f64) -> f32 +! CHECK: %{{.*}} = fir.call @__nv_double2float_rd(%{{.*}}) proc_attrs fastmath : (f64) -> f32 ! CHECK: %{{.*}} = fir.call @__nv_mul24(%{{.*}}, %{{.*}}) proc_attrs fastmath : (i32, i32) -> i32 ! CHECK: %{{.*}} = fir.call @__nv_umul24(%{{.*}}, %{{.*}}) proc_attrs fastmath : (i32, i32) -> i32 ! CHECK: %{{.*}} = fir.call @__nv_powf(%{{.*}}, %{{.*}}) proc_attrs fastmath : (f32, f32) -> f32