[clang] [CUDA][Win32] Add `fma(long double,..)` to math forward declares. (PR #73756)

Joachim Meyer via cfe-commits cfe-commits at lists.llvm.org
Tue Mar 10 05:55:54 PDT 2026


https://github.com/fodinabor updated https://github.com/llvm/llvm-project/pull/73756

>From 25b80809e1875778cc968342da181c6a3b1a8304 Mon Sep 17 00:00:00 2001
From: fodinabor <5982050+fodinabor at users.noreply.github.com>
Date: Wed, 29 Nov 2023 07:49:09 +0100
Subject: [PATCH 1/2] [CUDA][Win32] Add `fma(long double,..)` to math forward
 declares.

---
 clang/lib/Headers/__clang_cuda_math_forward_declares.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/clang/lib/Headers/__clang_cuda_math_forward_declares.h b/clang/lib/Headers/__clang_cuda_math_forward_declares.h
index c0f1f47cc9930..2d1bdd0f9bb0f 100644
--- a/clang/lib/Headers/__clang_cuda_math_forward_declares.h
+++ b/clang/lib/Headers/__clang_cuda_math_forward_declares.h
@@ -70,6 +70,9 @@ __DEVICE__ double floor(double);
 __DEVICE__ float floor(float);
 __DEVICE__ double fma(double, double, double);
 __DEVICE__ float fma(float, float, float);
+#ifdef _MSC_VER
+__DEVICE__ long double fma(long double, long double, long double);
+#endif
 __DEVICE__ double fmax(double, double);
 __DEVICE__ float fmax(float, float);
 __DEVICE__ double fmin(double, double);

>From 493304d32696afeb3885bc21879e506a3cc7d227 Mon Sep 17 00:00:00 2001
From: Joachim Meyer <5982050+fodinabor at users.noreply.github.com>
Date: Tue, 10 Mar 2026 13:55:43 +0100
Subject: [PATCH 2/2] Add MS-STL comment to fma long double variant.

---
 clang/lib/Headers/__clang_cuda_math_forward_declares.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/clang/lib/Headers/__clang_cuda_math_forward_declares.h b/clang/lib/Headers/__clang_cuda_math_forward_declares.h
index 2d1bdd0f9bb0f..45fe1e5b1772d 100644
--- a/clang/lib/Headers/__clang_cuda_math_forward_declares.h
+++ b/clang/lib/Headers/__clang_cuda_math_forward_declares.h
@@ -71,6 +71,8 @@ __DEVICE__ float floor(float);
 __DEVICE__ double fma(double, double, double);
 __DEVICE__ float fma(float, float, float);
 #ifdef _MSC_VER
+// long double fma variant is not actually supported by CUDA (PTX).
+// However, MS-STL requires that this is forward declared anyways.
 __DEVICE__ long double fma(long double, long double, long double);
 #endif
 __DEVICE__ double fmax(double, double);



More information about the cfe-commits mailing list