Skip to content

Commit 9171f18

Browse files
committed
[flang][cuda] Add interfaces for __dsqrt_rn and __dsqrt_rz
1 parent 177f27d commit 9171f18

File tree

3 files changed

+29
-4
lines changed

3 files changed

+29
-4
lines changed

flang/module/cudadevice.f90

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -716,13 +716,27 @@ attributes(device) real(8) function sinpi(x) bind(c,name='__nv_sinpi')
716716
end function
717717
end interface
718718

719+
interface __dsqrt_rn
720+
attributes(device) double precision function __dsqrt_rn(x) bind(c, name='__nv_dsqrt_rn')
721+
!dir$ ignore_tkr (d) x
722+
double precision, value :: x
723+
end function
724+
end interface
725+
719726
interface __dsqrt_ru
720727
attributes(device) double precision function __dsqrt_ru(x) bind(c, name='__nv_dsqrt_ru')
721728
!dir$ ignore_tkr (d) x
722729
double precision, value :: x
723730
end function
724731
end interface
725732

733+
interface __dsqrt_rz
734+
attributes(device) double precision function __dsqrt_rz(x) bind(c, name='__nv_dsqrt_rz')
735+
!dir$ ignore_tkr (d) x
736+
double precision, value :: x
737+
end function
738+
end interface
739+
726740
interface __ddiv_rn
727741
attributes(device) double precision function __ddiv_rn(x,y) bind(c, name='__nv_ddiv_rn')
728742
!dir$ ignore_tkr (d) x, (d) y

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

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,6 @@ attributes(global) subroutine devsub()
8282
ai = __mul24(ai, ai)
8383
ai = __umul24(ai, ai)
8484
af = __powf(af, af)
85-
ad = __dsqrt_rd(ad)
86-
ad = __dsqrt_ru(ad)
8785
ad = __ull2double_rd(al)
8886
ad = __ull2double_rn(al)
8987
ad = __ull2double_ru(al)
@@ -162,8 +160,6 @@ end
162160
! CHECK: %{{.*}} = fir.call @__nv_mul24(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i32, i32) -> i32
163161
! CHECK: %{{.*}} = fir.call @__nv_umul24(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i32, i32) -> i32
164162
! CHECK: %{{.*}} = fir.call @__nv_powf(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32, f32) -> f32
165-
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
166-
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
167163
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
168164
! CHECK: %{{.*}} = fir.call @__nv_ull2double_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64
169165
! CHECK: %{{.*}} = fir.call @__nv_ull2double_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i64) -> f64

flang/test/Lower/CUDA/cuda-libdevice.cuf

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,18 @@ end subroutine
1919

2020
! CHECK-LABEL: _QPtest_usad
2121
! CHECK: %{{.*}} = fir.call @__nv_usad(%{{.*}}, %{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i32, i32, i32) -> i32
22+
23+
attributes(global) subroutine test_dsqrt_rX()
24+
double precision :: res
25+
double precision :: p
26+
res = __dsqrt_rd(p)
27+
res = __dsqrt_rn(p)
28+
res = __dsqrt_ru(p)
29+
res = __dsqrt_rz(p)
30+
end subroutine
31+
32+
! CHECK-LABEL: _QPtest_dsqrt_rx
33+
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
34+
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
35+
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64
36+
! CHECK: %{{.*}} = fir.call @__nv_dsqrt_rz(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f64

0 commit comments

Comments
 (0)