[flang-commits] [flang] Revert "[flang][runtime] Use cuda::std::complex in F18 runtime CUDA build." (PR #109173)

via flang-commits flang-commits at lists.llvm.org
Wed Sep 18 11:23:01 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-flang-runtime

Author: Slava Zakharin (vzakhari)

<details>
<summary>Changes</summary>

Reverts llvm/llvm-project#<!-- -->109078

---

Patch is 91.70 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/109173.diff


23 Files Affected:

- (removed) flang/include/flang/Common/float80.h (-43) 
- (removed) flang/include/flang/Runtime/complex.h (-31) 
- (modified) flang/include/flang/Runtime/cpp-type.h (+4-5) 
- (modified) flang/include/flang/Runtime/matmul-instances.inc (+3-3) 
- (modified) flang/include/flang/Runtime/numeric.h (+16-16) 
- (modified) flang/include/flang/Runtime/reduce.h (+85-129) 
- (modified) flang/include/flang/Runtime/reduction.h (+52-60) 
- (modified) flang/include/flang/Runtime/transformational.h (+8-12) 
- (modified) flang/runtime/complex-powi.cpp (+10-13) 
- (modified) flang/runtime/complex-reduction.c (+4-4) 
- (modified) flang/runtime/dot-product.cpp (+14-7) 
- (modified) flang/runtime/extrema.cpp (+5-5) 
- (modified) flang/runtime/matmul-transpose.cpp (+17) 
- (modified) flang/runtime/matmul.cpp (+28-6) 
- (modified) flang/runtime/numeric.cpp (+18-18) 
- (modified) flang/runtime/product.cpp (+11-4) 
- (modified) flang/runtime/random.cpp (+1-1) 
- (modified) flang/runtime/reduce.cpp (+82-98) 
- (modified) flang/runtime/reduction-templates.h (+2-2) 
- (modified) flang/runtime/sum.cpp (+10-12) 
- (modified) flang/runtime/transformational.cpp (+4-4) 
- (modified) flang/unittests/Runtime/Numeric.cpp (+2-2) 
- (modified) flang/unittests/Runtime/Transformational.cpp (+5-5) 


``````````diff
diff --git a/flang/include/flang/Common/float80.h b/flang/include/flang/Common/float80.h
deleted file mode 100644
index 1838f7b13c8bb2..00000000000000
--- a/flang/include/flang/Common/float80.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*===-- flang/Common/float80.h --------------------------------------*- C -*-===
- *
- * Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- * See https://llvm.org/LICENSE.txt for license information.
- * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- *
- *===----------------------------------------------------------------------===*/
-
-/* This header is usable in both C and C++ code.
- * Isolates build compiler checks to determine if the 80-bit
- * floating point format is supported via a particular C type.
- * It defines CFloat80Type and CppFloat80Type aliases for this
- * C type.
- */
-
-#ifndef FORTRAN_COMMON_FLOAT80_H_
-#define FORTRAN_COMMON_FLOAT80_H_
-
-#include "api-attrs.h"
-#include <float.h>
-
-#if LDBL_MANT_DIG == 64
-#undef HAS_FLOAT80
-#define HAS_FLOAT80 1
-#endif
-
-#if defined(RT_DEVICE_COMPILATION) && defined(__CUDACC__)
-/*
- * 'long double' is treated as 'double' in the CUDA device code,
- * and there is no support for 80-bit floating point format.
- * This is probably true for most offload devices, so RT_DEVICE_COMPILATION
- * check should be enough. For the time being, guard it with __CUDACC__
- * as well.
- */
-#undef HAS_FLOAT80
-#endif
-
-#if HAS_FLOAT80
-typedef long double CFloat80Type;
-typedef long double CppFloat80Type;
-#endif
-
-#endif /* FORTRAN_COMMON_FLOAT80_H_ */
diff --git a/flang/include/flang/Runtime/complex.h b/flang/include/flang/Runtime/complex.h
deleted file mode 100644
index b7ad1376bffbf1..00000000000000
--- a/flang/include/flang/Runtime/complex.h
+++ /dev/null
@@ -1,31 +0,0 @@
-//===-- include/flang/Runtime/complex.h -------------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-
-// A single way to expose C++ complex class in files that can be used
-// in F18 runtime build. With inclusion of this file std::complex
-// and the related names become available, though, they may correspond
-// to alternative definitions (e.g. from cuda::std namespace).
-
-#ifndef FORTRAN_RUNTIME_COMPLEX_H
-#define FORTRAN_RUNTIME_COMPLEX_H
-
-#if RT_USE_LIBCUDACXX
-#include <cuda/std/complex>
-namespace Fortran::runtime::rtcmplx {
-using cuda::std::complex;
-using cuda::std::conj;
-} // namespace Fortran::runtime::rtcmplx
-#else // !RT_USE_LIBCUDACXX
-#include <complex>
-namespace Fortran::runtime::rtcmplx {
-using std::complex;
-using std::conj;
-} // namespace Fortran::runtime::rtcmplx
-#endif // !RT_USE_LIBCUDACXX
-
-#endif // FORTRAN_RUNTIME_COMPLEX_H
diff --git a/flang/include/flang/Runtime/cpp-type.h b/flang/include/flang/Runtime/cpp-type.h
index aef0fbd7ede586..fe21dd544cf7d8 100644
--- a/flang/include/flang/Runtime/cpp-type.h
+++ b/flang/include/flang/Runtime/cpp-type.h
@@ -13,9 +13,8 @@
 
 #include "flang/Common/Fortran.h"
 #include "flang/Common/float128.h"
-#include "flang/Common/float80.h"
 #include "flang/Common/uint128.h"
-#include "flang/Runtime/complex.h"
+#include <complex>
 #include <cstdint>
 #if __cplusplus >= 202302
 #include <stdfloat>
@@ -71,9 +70,9 @@ template <> struct CppTypeForHelper<TypeCategory::Real, 8> {
   using type = double;
 #endif
 };
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 template <> struct CppTypeForHelper<TypeCategory::Real, 10> {
-  using type = CppFloat80Type;
+  using type = long double;
 };
 #endif
 #if __STDCPP_FLOAT128_T__
@@ -90,7 +89,7 @@ template <> struct CppTypeForHelper<TypeCategory::Real, 16> {
 #endif
 
 template <int KIND> struct CppTypeForHelper<TypeCategory::Complex, KIND> {
-  using type = rtcmplx::complex<CppTypeFor<TypeCategory::Real, KIND>>;
+  using type = std::complex<CppTypeFor<TypeCategory::Real, KIND>>;
 };
 
 template <> struct CppTypeForHelper<TypeCategory::Character, 1> {
diff --git a/flang/include/flang/Runtime/matmul-instances.inc b/flang/include/flang/Runtime/matmul-instances.inc
index 88e3067ca029d4..32c6ab06d25219 100644
--- a/flang/include/flang/Runtime/matmul-instances.inc
+++ b/flang/include/flang/Runtime/matmul-instances.inc
@@ -111,7 +111,7 @@ FOREACH_MATMUL_TYPE_PAIR(MATMUL_DIRECT_INSTANCE)
 FOREACH_MATMUL_TYPE_PAIR_WITH_INT16(MATMUL_INSTANCE)
 FOREACH_MATMUL_TYPE_PAIR_WITH_INT16(MATMUL_DIRECT_INSTANCE)
 
-#if MATMUL_FORCE_ALL_TYPES || HAS_FLOAT80
+#if MATMUL_FORCE_ALL_TYPES || LDBL_MANT_DIG == 64
 MATMUL_INSTANCE(Integer, 16, Real, 10)
 MATMUL_INSTANCE(Integer, 16, Complex, 10)
 MATMUL_INSTANCE(Real, 10, Integer, 16)
@@ -133,7 +133,7 @@ MATMUL_DIRECT_INSTANCE(Complex, 16, Integer, 16)
 #endif
 #endif // MATMUL_FORCE_ALL_TYPES || (defined __SIZEOF_INT128__ && !AVOID_NATIVE_UINT128_T)
 
-#if MATMUL_FORCE_ALL_TYPES || HAS_FLOAT80
+#if MATMUL_FORCE_ALL_TYPES || LDBL_MANT_DIG == 64
 #define FOREACH_MATMUL_TYPE_PAIR_WITH_REAL10(macro)         \
   macro(Integer, 1, Real, 10)                               \
   macro(Integer, 1, Complex, 10)                            \
@@ -193,7 +193,7 @@ MATMUL_DIRECT_INSTANCE(Complex, 10, Complex, 16)
 MATMUL_DIRECT_INSTANCE(Complex, 16, Real, 10)
 MATMUL_DIRECT_INSTANCE(Complex, 16, Complex, 10)
 #endif
-#endif // MATMUL_FORCE_ALL_TYPES || HAS_FLOAT80
+#endif // MATMUL_FORCE_ALL_TYPES || LDBL_MANT_DIG == 64
 
 #if MATMUL_FORCE_ALL_TYPES || (LDBL_MANT_DIG == 113 || HAS_FLOAT128)
 #define FOREACH_MATMUL_TYPE_PAIR_WITH_REAL16(macro)         \
diff --git a/flang/include/flang/Runtime/numeric.h b/flang/include/flang/Runtime/numeric.h
index c3923ee2e0d889..84a5a7cd7a361c 100644
--- a/flang/include/flang/Runtime/numeric.h
+++ b/flang/include/flang/Runtime/numeric.h
@@ -44,7 +44,7 @@ CppTypeFor<TypeCategory::Integer, 8> RTDECL(Ceiling8_8)(
 CppTypeFor<TypeCategory::Integer, 16> RTDECL(Ceiling8_16)(
     CppTypeFor<TypeCategory::Real, 8>);
 #endif
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Integer, 1> RTDECL(Ceiling10_1)(
     CppTypeFor<TypeCategory::Real, 10>);
 CppTypeFor<TypeCategory::Integer, 2> RTDECL(Ceiling10_2)(
@@ -78,7 +78,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(ErfcScaled4)(
     CppTypeFor<TypeCategory::Real, 4>);
 CppTypeFor<TypeCategory::Real, 8> RTDECL(ErfcScaled8)(
     CppTypeFor<TypeCategory::Real, 8>);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(ErfcScaled10)(
     CppTypeFor<TypeCategory::Real, 10>);
 #endif
@@ -96,7 +96,7 @@ CppTypeFor<TypeCategory::Integer, 4> RTDECL(Exponent8_4)(
     CppTypeFor<TypeCategory::Real, 8>);
 CppTypeFor<TypeCategory::Integer, 8> RTDECL(Exponent8_8)(
     CppTypeFor<TypeCategory::Real, 8>);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Integer, 4> RTDECL(Exponent10_4)(
     CppTypeFor<TypeCategory::Real, 10>);
 CppTypeFor<TypeCategory::Integer, 8> RTDECL(Exponent10_8)(
@@ -134,7 +134,7 @@ CppTypeFor<TypeCategory::Integer, 8> RTDECL(Floor8_8)(
 CppTypeFor<TypeCategory::Integer, 16> RTDECL(Floor8_16)(
     CppTypeFor<TypeCategory::Real, 8>);
 #endif
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Integer, 1> RTDECL(Floor10_1)(
     CppTypeFor<TypeCategory::Real, 10>);
 CppTypeFor<TypeCategory::Integer, 2> RTDECL(Floor10_2)(
@@ -168,7 +168,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(Fraction4)(
     CppTypeFor<TypeCategory::Real, 4>);
 CppTypeFor<TypeCategory::Real, 8> RTDECL(Fraction8)(
     CppTypeFor<TypeCategory::Real, 8>);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(Fraction10)(
     CppTypeFor<TypeCategory::Real, 10>);
 #endif
@@ -180,7 +180,7 @@ CppTypeFor<TypeCategory::Real, 16> RTDECL(Fraction16)(
 // ISNAN / IEEE_IS_NAN
 bool RTDECL(IsNaN4)(CppTypeFor<TypeCategory::Real, 4>);
 bool RTDECL(IsNaN8)(CppTypeFor<TypeCategory::Real, 8>);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 bool RTDECL(IsNaN10)(CppTypeFor<TypeCategory::Real, 10>);
 #endif
 #if LDBL_MANT_DIG == 113 || HAS_FLOAT128
@@ -212,7 +212,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(ModReal4)(
 CppTypeFor<TypeCategory::Real, 8> RTDECL(ModReal8)(
     CppTypeFor<TypeCategory::Real, 8>, CppTypeFor<TypeCategory::Real, 8>,
     const char *sourceFile = nullptr, int sourceLine = 0);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(ModReal10)(
     CppTypeFor<TypeCategory::Real, 10>, CppTypeFor<TypeCategory::Real, 10>,
     const char *sourceFile = nullptr, int sourceLine = 0);
@@ -247,7 +247,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(ModuloReal4)(
 CppTypeFor<TypeCategory::Real, 8> RTDECL(ModuloReal8)(
     CppTypeFor<TypeCategory::Real, 8>, CppTypeFor<TypeCategory::Real, 8>,
     const char *sourceFile = nullptr, int sourceLine = 0);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(ModuloReal10)(
     CppTypeFor<TypeCategory::Real, 10>, CppTypeFor<TypeCategory::Real, 10>,
     const char *sourceFile = nullptr, int sourceLine = 0);
@@ -283,7 +283,7 @@ CppTypeFor<TypeCategory::Integer, 8> RTDECL(Nint8_8)(
 CppTypeFor<TypeCategory::Integer, 16> RTDECL(Nint8_16)(
     CppTypeFor<TypeCategory::Real, 8>);
 #endif
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Integer, 1> RTDECL(Nint10_1)(
     CppTypeFor<TypeCategory::Real, 10>);
 CppTypeFor<TypeCategory::Integer, 2> RTDECL(Nint10_2)(
@@ -319,7 +319,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(Nearest4)(
     CppTypeFor<TypeCategory::Real, 4>, bool positive);
 CppTypeFor<TypeCategory::Real, 8> RTDECL(Nearest8)(
     CppTypeFor<TypeCategory::Real, 8>, bool positive);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(Nearest10)(
     CppTypeFor<TypeCategory::Real, 10>, bool positive);
 #endif
@@ -333,7 +333,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(RRSpacing4)(
     CppTypeFor<TypeCategory::Real, 4>);
 CppTypeFor<TypeCategory::Real, 8> RTDECL(RRSpacing8)(
     CppTypeFor<TypeCategory::Real, 8>);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(RRSpacing10)(
     CppTypeFor<TypeCategory::Real, 10>);
 #endif
@@ -347,7 +347,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(SetExponent4)(
     CppTypeFor<TypeCategory::Real, 4>, std::int64_t);
 CppTypeFor<TypeCategory::Real, 8> RTDECL(SetExponent8)(
     CppTypeFor<TypeCategory::Real, 8>, std::int64_t);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(SetExponent10)(
     CppTypeFor<TypeCategory::Real, 10>, std::int64_t);
 #endif
@@ -361,7 +361,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(Scale4)(
     CppTypeFor<TypeCategory::Real, 4>, std::int64_t);
 CppTypeFor<TypeCategory::Real, 8> RTDECL(Scale8)(
     CppTypeFor<TypeCategory::Real, 8>, std::int64_t);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(Scale10)(
     CppTypeFor<TypeCategory::Real, 10>, std::int64_t);
 #endif
@@ -410,7 +410,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(Spacing4)(
     CppTypeFor<TypeCategory::Real, 4>);
 CppTypeFor<TypeCategory::Real, 8> RTDECL(Spacing8)(
     CppTypeFor<TypeCategory::Real, 8>);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(Spacing10)(
     CppTypeFor<TypeCategory::Real, 10>);
 #endif
@@ -425,7 +425,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(FPow4i)(
 CppTypeFor<TypeCategory::Real, 8> RTDECL(FPow8i)(
     CppTypeFor<TypeCategory::Real, 8> b,
     CppTypeFor<TypeCategory::Integer, 4> e);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(FPow10i)(
     CppTypeFor<TypeCategory::Real, 10> b,
     CppTypeFor<TypeCategory::Integer, 4> e);
@@ -442,7 +442,7 @@ CppTypeFor<TypeCategory::Real, 4> RTDECL(FPow4k)(
 CppTypeFor<TypeCategory::Real, 8> RTDECL(FPow8k)(
     CppTypeFor<TypeCategory::Real, 8> b,
     CppTypeFor<TypeCategory::Integer, 8> e);
-#if HAS_FLOAT80
+#if LDBL_MANT_DIG == 64
 CppTypeFor<TypeCategory::Real, 10> RTDECL(FPow10k)(
     CppTypeFor<TypeCategory::Real, 10> b,
     CppTypeFor<TypeCategory::Integer, 8> e);
diff --git a/flang/include/flang/Runtime/reduce.h b/flang/include/flang/Runtime/reduce.h
index c016b37f9592a1..60f54c393b4bbd 100644
--- a/flang/include/flang/Runtime/reduce.h
+++ b/flang/include/flang/Runtime/reduce.h
@@ -188,26 +188,22 @@ void RTDECL(ReduceReal8DimValue)(Descriptor &result, const Descriptor &array,
     ValueReductionOperation<double>, const char *source, int line, int dim,
     const Descriptor *mask = nullptr, const double *identity = nullptr,
     bool ordered = true);
-#if HAS_FLOAT80
-CppTypeFor<TypeCategory::Real, 10> RTDECL(ReduceReal10Ref)(const Descriptor &,
-    ReferenceReductionOperation<CppTypeFor<TypeCategory::Real, 10>>,
-    const char *source, int line, int dim = 0, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Real, 10> *identity = nullptr,
-    bool ordered = true);
-CppTypeFor<TypeCategory::Real, 10> RTDECL(ReduceReal10Value)(const Descriptor &,
-    ValueReductionOperation<CppTypeFor<TypeCategory::Real, 10>>,
-    const char *source, int line, int dim = 0, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Real, 10> *identity = nullptr,
-    bool ordered = true);
+#if LDBL_MANT_DIG == 64
+long double RTDECL(ReduceReal10Ref)(const Descriptor &,
+    ReferenceReductionOperation<long double>, const char *source, int line,
+    int dim = 0, const Descriptor *mask = nullptr,
+    const long double *identity = nullptr, bool ordered = true);
+long double RTDECL(ReduceReal10Value)(const Descriptor &,
+    ValueReductionOperation<long double>, const char *source, int line,
+    int dim = 0, const Descriptor *mask = nullptr,
+    const long double *identity = nullptr, bool ordered = true);
 void RTDECL(ReduceReal10DimRef)(Descriptor &result, const Descriptor &array,
-    ReferenceReductionOperation<CppTypeFor<TypeCategory::Real, 10>>,
-    const char *source, int line, int dim, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Real, 10> *identity = nullptr,
-    bool ordered = true);
+    ReferenceReductionOperation<long double>, const char *source, int line,
+    int dim, const Descriptor *mask = nullptr,
+    const long double *identity = nullptr, bool ordered = true);
 void RTDECL(ReduceReal10DimValue)(Descriptor &result, const Descriptor &array,
-    ValueReductionOperation<CppTypeFor<TypeCategory::Real, 10>>,
-    const char *source, int line, int dim, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Real, 10> *identity = nullptr,
+    ValueReductionOperation<long double>, const char *source, int line, int dim,
+    const Descriptor *mask = nullptr, const long double *identity = nullptr,
     bool ordered = true);
 #endif
 #if LDBL_MANT_DIG == 113 || HAS_FLOAT128
@@ -229,152 +225,112 @@ void RTDECL(ReduceReal16DimValue)(Descriptor &result, const Descriptor &array,
     const CppFloat128Type *identity = nullptr, bool ordered = true);
 #endif
 
-void RTDECL(CppReduceComplex2Ref)(CppTypeFor<TypeCategory::Complex, 4> &,
-    const Descriptor &,
-    ReferenceReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
-    const char *source, int line, int dim = 0, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
-void RTDECL(CppReduceComplex2Value)(CppTypeFor<TypeCategory::Complex, 4> &,
-    const Descriptor &,
-    ValueReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
-    const char *source, int line, int dim = 0, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
+void RTDECL(CppReduceComplex2Ref)(std::complex<float> &, const Descriptor &,
+    ReferenceReductionOperation<std::complex<float>>, const char *source,
+    int line, int dim = 0, const Descriptor *mask = nullptr,
+    const std::complex<float> *identity = nullptr, bool ordered = true);
+void RTDECL(CppReduceComplex2Value)(std::complex<float> &, const Descriptor &,
+    ValueReductionOperation<std::complex<float>>, const char *source, int line,
+    int dim = 0, const Descriptor *mask = nullptr,
+    const std::complex<float> *identity = nullptr, bool ordered = true);
 void RTDECL(CppReduceComplex2DimRef)(Descriptor &result,
-    const Descriptor &array,
-    ReferenceReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
+    const Descriptor &array, ReferenceReductionOperation<std::complex<float>>,
     const char *source, int line, int dim, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
+    const std::complex<float> *identity = nullptr, bool ordered = true);
 void RTDECL(CppReduceComplex2DimValue)(Descriptor &result,
-    const Descriptor &array,
-    ValueReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
+    const Descriptor &array, ValueReductionOperation<std::complex<float>>,
     const char *source, int line, int dim, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
-void RTDECL(CppReduceComplex3Ref)(CppTypeFor<TypeCategory::Complex, 4> &,
-    const Descriptor &,
-    ReferenceReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
-    const char *source, int line, int dim = 0, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
-void RTDECL(CppReduceComplex3Value)(CppTypeFor<TypeCategory::Complex, 4> &,
-    const Descriptor &,
-    ValueReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
-    const char *source, int line, int dim = 0, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
+    const std::complex<float> *identity = nullptr, bool ordered = true);
+void RTDECL(CppReduceComplex3Ref)(std::complex<float> &, const Descriptor &,
+    ReferenceReductionOperation<std::complex<float>>, const char *source,
+    int line, int dim = 0, const Descriptor *mask = nullptr,
+    const std::complex<float> *identity = nullptr, bool ordered = true);
+void RTDECL(CppReduceComplex3Value)(std::complex<float> &, const Descriptor &,
+    ValueReductionOperation<std::complex<float>>, const char *source, int line,
+    int dim = 0, const Descriptor *mask = nullptr,
+    const std::complex<float> *identity = nullptr, bool ordered = true);
 void RTDECL(CppReduceComplex3DimRef)(Descriptor &result,
-    const Descriptor &array,
-    ReferenceReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
+    const Descriptor &array, ReferenceReductionOperation<std::complex<float>>,
     const char *source, int line, int dim, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
+    const std::complex<float> *identity = nullptr, bool ordered = true);
 void RTDECL(CppReduceComplex3DimValue)(Descriptor &result,
-    const Descriptor &array,
-    ValueReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
+    const Descriptor &array, ValueReductionOperation<std::complex<float>>,
     const char *source, int line, int dim, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
-void RTDECL(CppReduceComplex4Ref)(CppTypeFor<TypeCategory::Complex, 4> &,
-    const Descriptor &,
-    ReferenceReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
-    const char *source, int line, int dim = 0, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
-void RTDECL(CppReduceComplex4Value)(CppTypeFor<TypeCategory::Complex, 4> &,
-    const Descriptor &,
-    ValueReductionOperation<CppTypeFor<TypeCategory::Complex, 4>>,
-    const char *source, int line, int dim = 0, const Descriptor *mask = nullptr,
-    const CppTypeFor<TypeCategory::Complex, 4> *identity = nullptr,
-    bool ordered = true);
+    const std::complex<float> *identity = nullptr, bool ordered = true);
+void RTDECL(CppReduceComplex4Ref)(std::complex<float> &, const Descriptor &,
+    ReferenceReductionOperati...
[truncated]

``````````

</details>


https://github.com/llvm/llvm-project/pull/109173


More information about the flang-commits mailing list