Skip to content

Commit b811d4d

Browse files
authored
[flang][cuda] Add bind name for __double2int_XX interfaces (#153279)
Also reorder the interfaces to be in alphabetical order
1 parent 7350112 commit b811d4d

File tree

2 files changed

+16
-7
lines changed

2 files changed

+16
-7
lines changed

flang/module/cudadevice.f90

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -450,29 +450,29 @@ attributes(device) real(8) function sinpi(x) bind(c,name='__nv_sinpi')
450450
end function
451451
end interface
452452

453-
interface __double2int_rn
454-
attributes(device) integer function __double2int_rn(r) bind(c)
453+
interface __double2int_rd
454+
attributes(device) integer function __double2int_rd(r) bind(c, name='__nv_double2int_rd')
455455
!dir$ ignore_tkr (d) r
456456
double precision, value :: r
457457
end function
458458
end interface
459459

460-
interface __double2int_rz
461-
attributes(device) integer function __double2int_rz(r) bind(c)
460+
interface __double2int_rn
461+
attributes(device) integer function __double2int_rn(r) bind(c, name='__nv_double2int_rn')
462462
!dir$ ignore_tkr (d) r
463463
double precision, value :: r
464464
end function
465465
end interface
466466

467467
interface __double2int_ru
468-
attributes(device) integer function __double2int_ru(r) bind(c)
468+
attributes(device) integer function __double2int_ru(r) bind(c, name='__nv_double2int_ru')
469469
!dir$ ignore_tkr (d) r
470470
double precision, value :: r
471471
end function
472472
end interface
473473

474-
interface __double2int_rd
475-
attributes(device) integer function __double2int_rd(r) bind(c)
474+
interface __double2int_rz
475+
attributes(device) integer function __double2int_rz(r) bind(c, name='__nv_double2int_rz')
476476
!dir$ ignore_tkr (d) r
477477
double precision, value :: r
478478
end function

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ attributes(global) subroutine devsub()
5858
res = __ffs(al)
5959
res = __brev(ai)
6060
resl = __brev(al)
61+
6162
res = __clz(ai)
6263
res = __clz(al)
6364
af = __cosf(af)
@@ -69,6 +70,10 @@ attributes(global) subroutine devsub()
6970
af = __double2float_rz(ad)
7071
af = __double2float_ru(ad)
7172
af = __double2float_rd(ad)
73+
ai = __double2int_rd(ad)
74+
ai = __double2int_rn(ad)
75+
ai = __double2int_ru(ad)
76+
ai = __double2int_rz(ad)
7277
ai = __mul24(ai, ai)
7378
ai = __umul24(ai, ai)
7479
af = __powf(af, af)
@@ -129,6 +134,10 @@ end
129134
! CHECK: %{{.*}} = fir.call @__nv_double2float_rz(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f32
130135
! CHECK: %{{.*}} = fir.call @__nv_double2float_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f32
131136
! CHECK: %{{.*}} = fir.call @__nv_double2float_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> f32
137+
! CHECK: %{{.*}} = fir.call @__nv_double2int_rd(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> i32
138+
! CHECK: %{{.*}} = fir.call @__nv_double2int_rn(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> i32
139+
! CHECK: %{{.*}} = fir.call @__nv_double2int_ru(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> i32
140+
! CHECK: %{{.*}} = fir.call @__nv_double2int_rz(%{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f64) -> i32
132141
! CHECK: %{{.*}} = fir.call @__nv_mul24(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i32, i32) -> i32
133142
! CHECK: %{{.*}} = fir.call @__nv_umul24(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (i32, i32) -> i32
134143
! CHECK: %{{.*}} = fir.call @__nv_powf(%{{.*}}, %{{.*}}) proc_attrs<bind_c> fastmath<contract> : (f32, f32) -> f32

0 commit comments

Comments
 (0)