[libc][math]fadd implementation (#99694)

- **[libc] math fadd**
- **[libc][math] implemented fadd**
This commit is contained in:
aaryanshukla 2024-07-19 14:40:34 -07:00 committed by GitHub
parent 84658fb82b
commit a2f61ba08b
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
16 changed files with 115 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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 |
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+

View File

@ -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>]>,

View File

@ -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
View 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

View File

@ -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

View 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

View File

@ -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

View 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)

View File

@ -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

View 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)