[libc-commits] [libc] [libc][math] implemented dadd and ddiv (PR #100456)
via libc-commits
libc-commits at lists.llvm.org
Wed Jul 24 14:12:19 PDT 2024
================
@@ -397,6 +397,11 @@ 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<"daddf128", RetValSpec<DoubleType>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>]>,
+ FunctionSpec<"daddl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
+ FunctionSpec<"ddivl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
+ FunctionSpec<"ddivf128", RetValSpec<DoubleType>, [ArgSpec<Float128Type>, ArgSpec<Float128Type>]>,
----------------
overmighty wrote:
`daddf128` and `ddivf128` should be LLVM libc extensions, so they should be moved to libc/spec/llvm_libc_ext.td. C23 only defines these:
```c
double daddl(long double x, long double y);
_FloatM fMaddfN(_FloatN x, _FloatN y); // M < N
double ddivl(long double x, long double y);
_FloatM fMdivfN(_FloatN x, _FloatN y); // M < N
```
Also, `daddf128` and `ddivf128` should be guarded by `LIBC_TYPES_HAS_FLOAT128`.
```suggestion
FunctionSpec<"daddl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
FunctionSpec<"ddivl", RetValSpec<DoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<LongDoubleType>]>,
```
https://github.com/llvm/llvm-project/pull/100456
More information about the libc-commits
mailing list