mirror of
https://github.com/intel/llvm.git
synced 2026-01-25 19:44:38 +08:00
[libc][math][c23] Add dfma{l,f128} and dsub{l,f128} C23 math functions (#101089)
Co-authored-by: OverMighty <its.overmighty@gmail.com>
This commit is contained in:
@@ -136,7 +136,9 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.cos
|
||||
libc.src.math.cosf
|
||||
libc.src.math.cospif
|
||||
libc.src.math.dfmal
|
||||
libc.src.math.dsqrtl
|
||||
libc.src.math.dsubl
|
||||
libc.src.math.erff
|
||||
libc.src.math.exp
|
||||
libc.src.math.expf
|
||||
|
||||
@@ -119,7 +119,9 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
#libc.src.math.ceill
|
||||
#libc.src.math.coshf
|
||||
#libc.src.math.cosf
|
||||
#libc.src.math.dfmal
|
||||
#libc.src.math.dsqrtl
|
||||
#libc.src.math.dsubl
|
||||
#libc.src.math.expf
|
||||
#libc.src.math.exp2f
|
||||
#libc.src.math.expm1f
|
||||
|
||||
@@ -361,8 +361,10 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.cosf
|
||||
libc.src.math.coshf
|
||||
libc.src.math.cospif
|
||||
libc.src.math.dfmal
|
||||
libc.src.math.dmull
|
||||
libc.src.math.dsqrtl
|
||||
libc.src.math.dsubl
|
||||
libc.src.math.erff
|
||||
libc.src.math.exp
|
||||
libc.src.math.exp10
|
||||
@@ -612,7 +614,9 @@ if(LIBC_TYPES_HAS_FLOAT128)
|
||||
# math.h C23 _Float128 entrypoints
|
||||
libc.src.math.ceilf128
|
||||
libc.src.math.copysignf128
|
||||
libc.src.math.dfmaf128
|
||||
libc.src.math.dsqrtf128
|
||||
libc.src.math.dsubf128
|
||||
libc.src.math.fabsf128
|
||||
libc.src.math.fdimf128
|
||||
libc.src.math.floorf128
|
||||
|
||||
@@ -228,7 +228,9 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.cos
|
||||
libc.src.math.cosf
|
||||
libc.src.math.coshf
|
||||
libc.src.math.dfmal
|
||||
libc.src.math.dsqrtl
|
||||
libc.src.math.dsubl
|
||||
libc.src.math.erff
|
||||
libc.src.math.exp
|
||||
libc.src.math.exp10
|
||||
|
||||
@@ -383,8 +383,10 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.cosf
|
||||
libc.src.math.coshf
|
||||
libc.src.math.cospif
|
||||
libc.src.math.dfmal
|
||||
libc.src.math.dmull
|
||||
libc.src.math.dsqrtl
|
||||
libc.src.math.dsubl
|
||||
libc.src.math.erff
|
||||
libc.src.math.exp
|
||||
libc.src.math.exp10
|
||||
|
||||
@@ -383,8 +383,10 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.cosf
|
||||
libc.src.math.coshf
|
||||
libc.src.math.cospif
|
||||
libc.src.math.dfmal
|
||||
libc.src.math.dmull
|
||||
libc.src.math.dsqrtl
|
||||
libc.src.math.dsubl
|
||||
libc.src.math.erff
|
||||
libc.src.math.exp
|
||||
libc.src.math.exp10
|
||||
@@ -653,8 +655,10 @@ if(LIBC_TYPES_HAS_FLOAT128)
|
||||
libc.src.math.canonicalizef128
|
||||
libc.src.math.ceilf128
|
||||
libc.src.math.copysignf128
|
||||
libc.src.math.dfmaf128
|
||||
libc.src.math.dmulf128
|
||||
libc.src.math.dsqrtf128
|
||||
libc.src.math.dsubf128
|
||||
libc.src.math.fabsf128
|
||||
libc.src.math.fdimf128
|
||||
libc.src.math.floorf128
|
||||
|
||||
@@ -133,6 +133,8 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.cos
|
||||
libc.src.math.cosf
|
||||
libc.src.math.coshf
|
||||
libc.src.math.dfmal
|
||||
libc.src.math.dsubl
|
||||
libc.src.math.erff
|
||||
libc.src.math.exp
|
||||
libc.src.math.expf
|
||||
|
||||
@@ -118,11 +118,11 @@ Basic Operations
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
| ddiv | N/A | N/A | | N/A | | 7.12.14.4 | F.10.11 |
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
| dfma | N/A | N/A | | N/A | | 7.12.14.5 | F.10.11 |
|
||||
| dfma | N/A | N/A | |check| | N/A | |check|\* | 7.12.14.5 | F.10.11 |
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
| dmul | N/A | N/A | |check| | N/A | |check|\* | 7.12.14.3 | F.10.11 |
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
| dsub | N/A | N/A | | N/A | | 7.12.14.2 | F.10.11 |
|
||||
| dsub | N/A | N/A | |check| | N/A | |check|\* | 7.12.14.2 | F.10.11 |
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
| f16add | |check|\* | |check|\* | |check|\* | N/A | |check| | 7.12.14.1 | F.10.11 |
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
|
||||
@@ -57,7 +57,10 @@ def LLVMLibcExt : StandardSpec<"llvm_libc_ext"> {
|
||||
[], // Types
|
||||
[], // Enumerations
|
||||
[
|
||||
GuardedFunctionSpec<"dfmaf128", RetValSpec<DoubleType>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
|
||||
GuardedFunctionSpec<"dsqrtf128", RetValSpec<DoubleType>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
|
||||
GuardedFunctionSpec<"dsubf128", RetValSpec<DoubleType>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
|
||||
|
||||
|
||||
GuardedFunctionSpec<"f16add", RetValSpec<Float16Type>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>], "LIBC_TYPES_HAS_FLOAT16">,
|
||||
GuardedFunctionSpec<"f16addf", RetValSpec<Float16Type>, [ArgSpec<FloatType>, ArgSpec<FloatType>], "LIBC_TYPES_HAS_FLOAT16">,
|
||||
|
||||
@@ -397,6 +397,9 @@ def StdC : StandardSpec<"stdc"> {
|
||||
GuardedFunctionSpec<"ceilf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
|
||||
GuardedFunctionSpec<"ceilf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
|
||||
|
||||
FunctionSpec<"dfmal", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
|
||||
FunctionSpec<"dsubl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
|
||||
|
||||
FunctionSpec<"fabs", RetValSpec<DoubleType>, [ArgSpec<DoubleType>], [ConstAttr]>,
|
||||
FunctionSpec<"fabsf", RetValSpec<FloatType>, [ArgSpec<FloatType>]>,
|
||||
FunctionSpec<"fabsl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
|
||||
|
||||
@@ -89,9 +89,15 @@ add_math_entrypoint_object(cospif)
|
||||
add_math_entrypoint_object(dmull)
|
||||
add_math_entrypoint_object(dmulf128)
|
||||
|
||||
add_math_entrypoint_object(dfmal)
|
||||
add_math_entrypoint_object(dfmaf128)
|
||||
|
||||
add_math_entrypoint_object(dsqrtl)
|
||||
add_math_entrypoint_object(dsqrtf128)
|
||||
|
||||
add_math_entrypoint_object(dsubl)
|
||||
add_math_entrypoint_object(dsubf128)
|
||||
|
||||
add_math_entrypoint_object(erf)
|
||||
add_math_entrypoint_object(erff)
|
||||
|
||||
|
||||
21
libc/src/math/dfmaf128.h
Normal file
21
libc/src/math/dfmaf128.h
Normal file
@@ -0,0 +1,21 @@
|
||||
//===-- Implementation header for dfmaf128 ----------------------*- 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIBC_SRC_MATH_DFMAF128_H
|
||||
#define LLVM_LIBC_SRC_MATH_DFMAF128_H
|
||||
|
||||
#include "src/__support/macros/config.h"
|
||||
#include "src/__support/macros/properties/types.h"
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
double dfmaf128(float128 x, float128 y, float128 z);
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
|
||||
#endif // LLVM_LIBC_SRC_MATH_DFMAF128_H
|
||||
20
libc/src/math/dfmal.h
Normal file
20
libc/src/math/dfmal.h
Normal file
@@ -0,0 +1,20 @@
|
||||
//===-- Implementation header for dfmal -------------------------*- 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIBC_SRC_MATH_DFMAL_H
|
||||
#define LLVM_LIBC_SRC_MATH_DFMAL_H
|
||||
|
||||
#include "src/__support/macros/config.h"
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
double dfmal(long double x, long double y, long double z);
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
|
||||
#endif // LLVM_LIBC_SRC_MATH_DFMAL_H
|
||||
21
libc/src/math/dsubf128.h
Normal file
21
libc/src/math/dsubf128.h
Normal file
@@ -0,0 +1,21 @@
|
||||
//===-- Implementation header for dsubf128 ----------------------*- 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIBC_SRC_MATH_DSUBF128_H
|
||||
#define LLVM_LIBC_SRC_MATH_DSUBF128_H
|
||||
|
||||
#include "src/__support/macros/config.h"
|
||||
#include "src/__support/macros/properties/types.h"
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
double dsubf128(float128 x, float128 y);
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
|
||||
#endif // LLVM_LIBC_SRC_MATH_DSUBF128_H
|
||||
20
libc/src/math/dsubl.h
Normal file
20
libc/src/math/dsubl.h
Normal file
@@ -0,0 +1,20 @@
|
||||
//===-- Implementation header for dsubl -------------------------*- 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIBC_SRC_MATH_DSUBL_H
|
||||
#define LLVM_LIBC_SRC_MATH_DSUBL_H
|
||||
|
||||
#include "src/__support/macros/config.h"
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
double dsubl(long double x, long double y);
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
|
||||
#endif // LLVM_LIBC_SRC_MATH_DSUBL_H
|
||||
@@ -129,6 +129,31 @@ add_entrypoint_object(
|
||||
libc.src.__support.FPUtil.nearest_integer_operations
|
||||
)
|
||||
|
||||
add_entrypoint_object(
|
||||
dfmaf128
|
||||
SRCS
|
||||
dfmaf128.cpp
|
||||
HDRS
|
||||
../dfmaf128.h
|
||||
DEPENDS
|
||||
libc.src.__support.FPUtil.fma
|
||||
libc.src.__support.macros.properties.types
|
||||
COMPILE_OPTIONS
|
||||
-O3
|
||||
)
|
||||
|
||||
add_entrypoint_object(
|
||||
dfmal
|
||||
SRCS
|
||||
dfmal.cpp
|
||||
HDRS
|
||||
../dfmal.h
|
||||
DEPENDS
|
||||
libc.src.__support.FPUtil.fma
|
||||
COMPILE_OPTIONS
|
||||
-O3
|
||||
)
|
||||
|
||||
add_entrypoint_object(
|
||||
dsqrtl
|
||||
SRCS
|
||||
@@ -154,6 +179,32 @@ add_entrypoint_object(
|
||||
-O3
|
||||
)
|
||||
|
||||
|
||||
add_entrypoint_object(
|
||||
dsubf128
|
||||
SRCS
|
||||
dsubf128.cpp
|
||||
HDRS
|
||||
../dsubf128.h
|
||||
DEPENDS
|
||||
libc.src.__support.FPUtil.generic.add_sub
|
||||
libc.src.__support.macros.properties.types
|
||||
COMPILE_OPTIONS
|
||||
-O3
|
||||
)
|
||||
|
||||
add_entrypoint_object(
|
||||
dsubl
|
||||
SRCS
|
||||
dsubl.cpp
|
||||
HDRS
|
||||
../dsubl.h
|
||||
DEPENDS
|
||||
libc.src.__support.FPUtil.generic.add_sub
|
||||
COMPILE_OPTIONS
|
||||
-O3
|
||||
)
|
||||
|
||||
add_header_library(
|
||||
range_reduction
|
||||
HDRS
|
||||
|
||||
25
libc/src/math/generic/dfmaf128.cpp
Normal file
25
libc/src/math/generic/dfmaf128.cpp
Normal file
@@ -0,0 +1,25 @@
|
||||
//===-- Implementation of dfmaf128 function -------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_LIBC_SRC_MATH_DFMAf128_H
|
||||
#define LLVM_LIBC_SRC_MATH_DFMAf128_H
|
||||
|
||||
#include "src/math/dfmaf128.h"
|
||||
#include "src/__support/FPUtil/FMA.h"
|
||||
#include "src/__support/common.h"
|
||||
#include "src/__support/macros/config.h"
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
LLVM_LIBC_FUNCTION(double, dfmaf128, (float128 x, float128 y, float128 z)) {
|
||||
return fputil::fma<double>(x, y, z);
|
||||
}
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
|
||||
#endif // LLVM_LIBC_SRC_MATH_DFMAf128_H
|
||||
21
libc/src/math/generic/dfmal.cpp
Normal file
21
libc/src/math/generic/dfmal.cpp
Normal file
@@ -0,0 +1,21 @@
|
||||
//===-- Implementation of dfmal function ----------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "src/math/dfmal.h"
|
||||
#include "src/__support/FPUtil/FMA.h"
|
||||
#include "src/__support/common.h"
|
||||
#include "src/__support/macros/config.h"
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
LLVM_LIBC_FUNCTION(double, dfmal,
|
||||
(long double x, long double y, long double z)) {
|
||||
return fputil::fma<double>(x, y, z);
|
||||
}
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
20
libc/src/math/generic/dsubf128.cpp
Normal file
20
libc/src/math/generic/dsubf128.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
//===-- Implementation of dsubf128 function -------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "src/math/dsubf128.h"
|
||||
#include "src/__support/FPUtil/generic/add_sub.h"
|
||||
#include "src/__support/common.h"
|
||||
#include "src/__support/macros/config.h"
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
LLVM_LIBC_FUNCTION(double, dsubf128, (float128 x, float128 y)) {
|
||||
return fputil::generic::sub<double>(x, y);
|
||||
}
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
20
libc/src/math/generic/dsubl.cpp
Normal file
20
libc/src/math/generic/dsubl.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
//===-- Implementation of dsubl function ----------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "src/math/dsubl.h"
|
||||
#include "src/__support/FPUtil/generic/add_sub.h"
|
||||
#include "src/__support/common.h"
|
||||
#include "src/__support/macros/config.h"
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
LLVM_LIBC_FUNCTION(double, dsubl, (long double x, long double y)) {
|
||||
return fputil::generic::sub<double>(x, y);
|
||||
}
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
@@ -2391,6 +2391,35 @@ add_fp_unittest(
|
||||
libc.src.stdlib.srand
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
dfmal_test
|
||||
NEED_MPFR
|
||||
SUITE
|
||||
libc-math-unittests
|
||||
SRCS
|
||||
dfmal_test.cpp
|
||||
HDRS
|
||||
FmaTest.h
|
||||
DEPENDS
|
||||
libc.src.math.dfmal
|
||||
libc.src.stdlib.rand
|
||||
libc.src.stdlib.srand
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
dsubl_test
|
||||
NEED_MPFR
|
||||
SUITE
|
||||
libc-math-unittests
|
||||
SRCS
|
||||
dsubl_test.cpp
|
||||
HDRS
|
||||
SubTest.h
|
||||
DEPENDS
|
||||
libc.src.math.dsubl
|
||||
)
|
||||
|
||||
|
||||
add_subdirectory(generic)
|
||||
add_subdirectory(smoke)
|
||||
|
||||
|
||||
13
libc/test/src/math/dfmal_test.cpp
Normal file
13
libc/test/src/math/dfmal_test.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
//===-- Unittests for dfmal -----------------------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "FmaTest.h"
|
||||
|
||||
#include "src/math/dfmal.h"
|
||||
|
||||
LIST_NARROWING_FMA_TESTS(double, long double, LIBC_NAMESPACE::dfmal)
|
||||
13
libc/test/src/math/dsubl_test.cpp
Normal file
13
libc/test/src/math/dsubl_test.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
//===-- Unittests for dsubl -----------------------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "SubTest.h"
|
||||
|
||||
#include "src/math/dsubl.h"
|
||||
|
||||
LIST_SUB_TESTS(double, long double, LIBC_NAMESPACE::dsubl)
|
||||
@@ -358,6 +358,58 @@ add_fp_unittest(
|
||||
libc.src.__support.FPUtil.fp_bits
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
dfmal_test
|
||||
SUITE
|
||||
libc-math-smoke-tests
|
||||
SRCS
|
||||
dfmal_test.cpp
|
||||
HDRS
|
||||
FmaTest.h
|
||||
DEPENDS
|
||||
libc.src.math.dfmal
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
dfmaf128_test
|
||||
SUITE
|
||||
libc-math-smoke-tests
|
||||
SRCS
|
||||
dfmaf128_test.cpp
|
||||
HDRS
|
||||
FmaTest.h
|
||||
DEPENDS
|
||||
libc.src.math.dfmaf128
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
dsubl_test
|
||||
SUITE
|
||||
libc-math-smoke-tests
|
||||
SRCS
|
||||
dsubl_test.cpp
|
||||
HDRS
|
||||
SubTest.h
|
||||
DEPENDS
|
||||
libc.src.errno.errno
|
||||
libc.hdr.fenv_macros
|
||||
libc.src.math.dsubl
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
dsubf128_test
|
||||
SUITE
|
||||
libc-math-smoke-tests
|
||||
SRCS
|
||||
dsubf128_test.cpp
|
||||
HDRS
|
||||
SubTest.h
|
||||
DEPENDS
|
||||
libc.hdr.errno_macros
|
||||
libc.hdr.fenv_macros
|
||||
libc.src.math.dsubf128
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
floor_test
|
||||
SUITE
|
||||
@@ -3903,8 +3955,8 @@ add_fp_unittest(
|
||||
HDRS
|
||||
SubTest.h
|
||||
DEPENDS
|
||||
libc.hdr.errno_macros
|
||||
libc.hdr.fenv_macros
|
||||
libc.src.__support.FPUtil.basic_operations
|
||||
libc.src.math.f16sub
|
||||
)
|
||||
|
||||
@@ -3917,8 +3969,8 @@ add_fp_unittest(
|
||||
HDRS
|
||||
SubTest.h
|
||||
DEPENDS
|
||||
libc.hdr.errno_macros
|
||||
libc.hdr.fenv_macros
|
||||
libc.src.__support.FPUtil.basic_operations
|
||||
libc.src.math.f16subf
|
||||
)
|
||||
|
||||
@@ -3931,8 +3983,8 @@ add_fp_unittest(
|
||||
HDRS
|
||||
SubTest.h
|
||||
DEPENDS
|
||||
libc.hdr.errno_macros
|
||||
libc.hdr.fenv_macros
|
||||
libc.src.__support.FPUtil.basic_operations
|
||||
libc.src.math.f16subl
|
||||
)
|
||||
|
||||
@@ -3945,8 +3997,8 @@ add_fp_unittest(
|
||||
HDRS
|
||||
SubTest.h
|
||||
DEPENDS
|
||||
libc.hdr.errno_macros
|
||||
libc.hdr.fenv_macros
|
||||
libc.src.__support.FPUtil.basic_operations
|
||||
libc.src.math.f16subf128
|
||||
)
|
||||
|
||||
|
||||
@@ -9,8 +9,8 @@
|
||||
#ifndef LLVM_LIBC_TEST_SRC_MATH_SMOKE_SUBTEST_H
|
||||
#define LLVM_LIBC_TEST_SRC_MATH_SMOKE_SUBTEST_H
|
||||
|
||||
#include "hdr/errno_macros.h"
|
||||
#include "hdr/fenv_macros.h"
|
||||
#include "src/__support/FPUtil/BasicOperations.h"
|
||||
#include "test/UnitTest/FEnvSafeTest.h"
|
||||
#include "test/UnitTest/FPMatcher.h"
|
||||
#include "test/UnitTest/Test.h"
|
||||
|
||||
13
libc/test/src/math/smoke/dfmaf128_test.cpp
Normal file
13
libc/test/src/math/smoke/dfmaf128_test.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
//===-- Unittests for dfmaf128 --------------------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "FmaTest.h"
|
||||
|
||||
#include "src/math/dfmaf128.h"
|
||||
|
||||
LIST_NARROWING_FMA_TESTS(double, float128, LIBC_NAMESPACE::dfmaf128)
|
||||
13
libc/test/src/math/smoke/dfmal_test.cpp
Normal file
13
libc/test/src/math/smoke/dfmal_test.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
//===-- Unittests for dfmal -----------------------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "FmaTest.h"
|
||||
|
||||
#include "src/math/dfmal.h"
|
||||
|
||||
LIST_NARROWING_FMA_TESTS(double, long double, LIBC_NAMESPACE::dfmal)
|
||||
13
libc/test/src/math/smoke/dsubf128_test.cpp
Normal file
13
libc/test/src/math/smoke/dsubf128_test.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
//===-- Unittests for dsubf128 --------------------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "SubTest.h"
|
||||
|
||||
#include "src/math/dsubf128.h"
|
||||
|
||||
LIST_SUB_TESTS(double, float128, LIBC_NAMESPACE::dsubf128)
|
||||
13
libc/test/src/math/smoke/dsubl_test.cpp
Normal file
13
libc/test/src/math/smoke/dsubl_test.cpp
Normal file
@@ -0,0 +1,13 @@
|
||||
//===-- Unittests for dsubl -----------------------------------------------===//
|
||||
//
|
||||
// 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
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "SubTest.h"
|
||||
|
||||
#include "src/math/dsubl.h"
|
||||
|
||||
LIST_SUB_TESTS(double, long double, LIBC_NAMESPACE::dsubl)
|
||||
@@ -1086,6 +1086,9 @@ template void
|
||||
explain_ternary_operation_one_output_error(Operation,
|
||||
const TernaryInput<long double> &,
|
||||
long double, double, RoundingMode);
|
||||
|
||||
template void explain_ternary_operation_one_output_error(
|
||||
Operation, const TernaryInput<long double> &, double, double, RoundingMode);
|
||||
#ifdef LIBC_TYPES_HAS_FLOAT16
|
||||
template void explain_ternary_operation_one_output_error(
|
||||
Operation, const TernaryInput<float> &, float16, double, RoundingMode);
|
||||
@@ -1271,6 +1274,9 @@ template bool
|
||||
compare_ternary_operation_one_output(Operation,
|
||||
const TernaryInput<long double> &,
|
||||
long double, double, RoundingMode);
|
||||
|
||||
template bool compare_ternary_operation_one_output(
|
||||
Operation, const TernaryInput<long double> &, double, double, RoundingMode);
|
||||
#ifdef LIBC_TYPES_HAS_FLOAT16
|
||||
template bool compare_ternary_operation_one_output(Operation,
|
||||
const TernaryInput<float> &,
|
||||
|
||||
Reference in New Issue
Block a user