[libc][math]fadd implementation (#99694)
- **[libc] math fadd** - **[libc][math] implemented fadd**
This commit is contained in:
parent
84658fb82b
commit
a2f61ba08b
@ -266,6 +266,7 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.expm1f
|
||||
libc.src.math.fabs
|
||||
libc.src.math.fabsf
|
||||
libc.src.math.fadd
|
||||
libc.src.math.fdim
|
||||
libc.src.math.fdimf
|
||||
libc.src.math.floor
|
||||
|
||||
@ -370,6 +370,7 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.fabs
|
||||
libc.src.math.fabsf
|
||||
libc.src.math.fabsl
|
||||
libc.src.math.fadd
|
||||
libc.src.math.fdim
|
||||
libc.src.math.fdimf
|
||||
libc.src.math.fdiml
|
||||
|
||||
@ -239,6 +239,7 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.fabs
|
||||
libc.src.math.fabsf
|
||||
libc.src.math.fabsl
|
||||
libc.src.math.fadd
|
||||
libc.src.math.fdim
|
||||
libc.src.math.fdimf
|
||||
libc.src.math.fdiml
|
||||
|
||||
@ -371,6 +371,7 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.fabs
|
||||
libc.src.math.fabsf
|
||||
libc.src.math.fabsl
|
||||
libc.src.math.fadd
|
||||
libc.src.math.fdim
|
||||
libc.src.math.fdimf
|
||||
libc.src.math.fdiml
|
||||
|
||||
@ -396,6 +396,7 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.fabs
|
||||
libc.src.math.fabsf
|
||||
libc.src.math.fabsl
|
||||
libc.src.math.fadd
|
||||
libc.src.math.fdim
|
||||
libc.src.math.fdimf
|
||||
libc.src.math.fdiml
|
||||
|
||||
@ -144,6 +144,7 @@ set(TARGET_LIBM_ENTRYPOINTS
|
||||
libc.src.math.fabs
|
||||
libc.src.math.fabsf
|
||||
libc.src.math.fabsl
|
||||
libc.src.math.fadd
|
||||
libc.src.math.fdim
|
||||
libc.src.math.fdimf
|
||||
libc.src.math.fdiml
|
||||
|
||||
@ -136,7 +136,7 @@ Basic Operations
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
| fabs | |check| | |check| | |check| | |check| | |check| | 7.12.7.3 | F.10.4.3 |
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
| fadd | N/A | | | N/A | | 7.12.14.1 | F.10.11 |
|
||||
| fadd | N/A | |check| | |check| | N/A | |check| | 7.12.14.1 | F.10.11 |
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
| fdim | |check| | |check| | |check| | |check| | |check| | 7.12.12.1 | F.10.9.1 |
|
||||
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
|
||||
|
||||
@ -402,6 +402,7 @@ def StdC : StandardSpec<"stdc"> {
|
||||
FunctionSpec<"fabsl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>]>,
|
||||
GuardedFunctionSpec<"fabsf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>], "LIBC_TYPES_HAS_FLOAT16">,
|
||||
GuardedFunctionSpec<"fabsf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>], "LIBC_TYPES_HAS_FLOAT128">,
|
||||
FunctionSpec<"fadd", RetValSpec<FloatType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
|
||||
|
||||
FunctionSpec<"fdim", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
|
||||
FunctionSpec<"fdimf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,
|
||||
|
||||
@ -141,6 +141,7 @@ add_math_entrypoint_object(fabsf)
|
||||
add_math_entrypoint_object(fabsl)
|
||||
add_math_entrypoint_object(fabsf16)
|
||||
add_math_entrypoint_object(fabsf128)
|
||||
add_math_entrypoint_object(fadd)
|
||||
|
||||
add_math_entrypoint_object(fdim)
|
||||
add_math_entrypoint_object(fdimf)
|
||||
|
||||
20
libc/src/math/fadd.h
Normal file
20
libc/src/math/fadd.h
Normal file
@ -0,0 +1,20 @@
|
||||
//===-- Implementation of fadd 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/__support/macros/config.h"
|
||||
|
||||
#ifndef LLVM_LIBC_SRC_MATH_FADD_H
|
||||
#define LLVM_LIBC_SRC_MATH_FADD_H
|
||||
|
||||
namespace LIBC_NAMESPACE_DECL {
|
||||
|
||||
float fadd(double x, double y);
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
|
||||
#endif // LLVM_LIBC_SRC_MATH_FADD_H
|
||||
@ -452,6 +452,18 @@ add_entrypoint_object(
|
||||
-O3
|
||||
)
|
||||
|
||||
add_entrypoint_object(
|
||||
fadd
|
||||
SRCS
|
||||
fadd.cpp
|
||||
HDRS
|
||||
../fadd.h
|
||||
DEPENDS
|
||||
libc.src.__support.FPUtil.basic_operations
|
||||
COMPILE_OPTIONS
|
||||
-O3
|
||||
)
|
||||
|
||||
add_entrypoint_object(
|
||||
trunc
|
||||
SRCS
|
||||
|
||||
20
libc/src/math/generic/fadd.cpp
Normal file
20
libc/src/math/generic/fadd.cpp
Normal file
@ -0,0 +1,20 @@
|
||||
//===-- Implementation of fadd 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/fadd.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(float, fadd, (double x, double y)) {
|
||||
return fputil::generic::add<float>(x, y);
|
||||
}
|
||||
|
||||
} // namespace LIBC_NAMESPACE_DECL
|
||||
@ -174,6 +174,20 @@ add_fp_unittest(
|
||||
libc.src.__support.FPUtil.fp_bits
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
fadd_test
|
||||
NEED_MPFR
|
||||
SUITE
|
||||
libc-math-unittests
|
||||
SRCS
|
||||
fadd_test.cpp
|
||||
HDRS
|
||||
AddTest.h
|
||||
DEPENDS
|
||||
libc.src.math.fadd
|
||||
libc.src.__support.FPUtil.basic_operations
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
trunc_test
|
||||
NEED_MPFR
|
||||
|
||||
13
libc/test/src/math/fadd_test.cpp
Normal file
13
libc/test/src/math/fadd_test.cpp
Normal file
@ -0,0 +1,13 @@
|
||||
//===-- Unittests for fadd ----------------------------------------------===//
|
||||
//
|
||||
// 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 "AddTest.h"
|
||||
|
||||
#include "src/math/fadd.h"
|
||||
|
||||
LIST_ADD_TESTS(float, double, LIBC_NAMESPACE::fadd)
|
||||
@ -141,6 +141,20 @@ add_fp_unittest(
|
||||
libc.src.__support.FPUtil.fp_bits
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
fadd_test
|
||||
SUITE
|
||||
libc-math-smoke-tests
|
||||
SRCS
|
||||
fadd_test.cpp
|
||||
HDRS
|
||||
AddTest.h
|
||||
DEPENDS
|
||||
libc.src.math.fadd
|
||||
libc.src.__support.FPUtil.basic_operations
|
||||
|
||||
)
|
||||
|
||||
add_fp_unittest(
|
||||
trunc_test
|
||||
SUITE
|
||||
|
||||
13
libc/test/src/math/smoke/fadd_test.cpp
Normal file
13
libc/test/src/math/smoke/fadd_test.cpp
Normal file
@ -0,0 +1,13 @@
|
||||
//===-- Unittests for fadd ----------------------------------------------===//
|
||||
//
|
||||
// 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 "AddTest.h"
|
||||
|
||||
#include "src/math/fadd.h"
|
||||
|
||||
LIST_ADD_TESTS(float, double, LIBC_NAMESPACE::fadd)
|
||||
Loading…
x
Reference in New Issue
Block a user