From 6dc8676a09077f716059bd0e087a2ef1bd816711 Mon Sep 17 00:00:00 2001 From: Valentin Clement Date: Fri, 10 Jan 2025 13:40:03 -0800 Subject: [PATCH] [flang][cuda] Add bind(c) interfaces for __fadd_rd and __fadd_ru --- flang/module/cudadevice.f90 | 14 ++++++++++++++ flang/test/Lower/CUDA/cuda-intrinsic.cuf | 17 +++++++++++++++++ 2 files changed, 31 insertions(+) create mode 100644 flang/test/Lower/CUDA/cuda-intrinsic.cuf diff --git a/flang/module/cudadevice.f90 b/flang/module/cudadevice.f90 index 1402bd4e15041..74825c36f7a95 100644 --- a/flang/module/cudadevice.f90 +++ b/flang/module/cudadevice.f90 @@ -71,4 +71,18 @@ attributes(device) subroutine threadfence_system() end interface public :: threadfence_system + interface + attributes(device) function __fadd_rd(x, y) bind(c, name='__nv_fadd_rd') + real :: x, y, __fadd_rd + end function + end interface + public :: __fadd_rd + + interface + attributes(device) function __fadd_ru(x, y) bind(c, name='__nv_fadd_ru') + real :: x, y, __fadd_ru + end function + end interface + public :: __fadd_ru + end module diff --git a/flang/test/Lower/CUDA/cuda-intrinsic.cuf b/flang/test/Lower/CUDA/cuda-intrinsic.cuf new file mode 100644 index 0000000000000..9723afc532387 --- /dev/null +++ b/flang/test/Lower/CUDA/cuda-intrinsic.cuf @@ -0,0 +1,17 @@ +! RUN: bbc -emit-hlfir -fcuda %s -o - | FileCheck %s + +module mod1 + type int + real :: inf, sup + end type int +contains + attributes(global) subroutine fadd(c, a, b) + type (int) :: c, a, b + c%inf = __fadd_rd(a%inf, b%inf) + c%sup = __fadd_ru(a%sup, b%sup) + end subroutine +end + +! CHECK-LABEL: func.func @_QMmod1Pfadd +! CHECK: fir.call @__nv_fadd_rd +! CHECK: fir.call @__nv_fadd_ru