Skip to content

Commit 2e3c1bf

Browse files
committed
[libc][math][c23] Add ufromfpxf16 C23 math function
1 parent 740ddab commit 2e3c1bf

File tree

12 files changed

+125
-44
lines changed

12 files changed

+125
-44
lines changed

libc/config/linux/aarch64/entrypoints.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -503,6 +503,7 @@ if(LIBC_TYPES_HAS_FLOAT16)
503503
libc.src.math.fromfpf16
504504
libc.src.math.fromfpxf16
505505
libc.src.math.ufromfpf16
506+
libc.src.math.ufromfpxf16
506507
)
507508
endif()
508509

libc/config/linux/x86_64/entrypoints.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -536,6 +536,7 @@ if(LIBC_TYPES_HAS_FLOAT16)
536536
libc.src.math.fromfpf16
537537
libc.src.math.fromfpxf16
538538
libc.src.math.ufromfpf16
539+
libc.src.math.ufromfpxf16
539540
)
540541
endif()
541542

libc/docs/c23.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ Additions:
5858
* fromfp* |check|
5959
* ufromfp* |check|
6060
* fromfpx* |check|
61+
* ufromfpx* |check|
6162
* nextup*
6263
* nextdown*
6364
* canonicalize*

libc/docs/math/index.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ Basic Operations
214214
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
215215
| ufromfp | |check| | |check| | |check| | |check| | |check| | 7.12.9.10 | F.10.6.10 |
216216
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
217-
| ufromfpx | |check| | |check| | |check| | | |check| | 7.12.9.11 | F.10.6.11 |
217+
| ufromfpx | |check| | |check| | |check| | |check| | |check| | 7.12.9.11 | F.10.6.11 |
218218
+------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
219219

220220

libc/spec/stdc.td

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -492,7 +492,8 @@ def StdC : StandardSpec<"stdc"> {
492492
FunctionSpec<"ufromfpx", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
493493
FunctionSpec<"ufromfpxf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
494494
FunctionSpec<"ufromfpxl", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>]>,
495-
GuardedFunctionSpec<"ufromfpxf128", RetValSpec<LongDoubleType>, [ArgSpec<LongDoubleType>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT128">,
495+
GuardedFunctionSpec<"ufromfpxf16", RetValSpec<Float16Type>, [ArgSpec<Float16Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT16">,
496+
GuardedFunctionSpec<"ufromfpxf128", RetValSpec<Float128Type>, [ArgSpec<Float128Type>, ArgSpec<IntType>, ArgSpec<UnsignedIntType>], "LIBC_TYPES_HAS_FLOAT128">,
496497

497498
FunctionSpec<"hypot", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
498499
FunctionSpec<"hypotf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>]>,

libc/src/math/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,4 +344,5 @@ add_math_entrypoint_object(ufromfpf128)
344344
add_math_entrypoint_object(ufromfpx)
345345
add_math_entrypoint_object(ufromfpxf)
346346
add_math_entrypoint_object(ufromfpxl)
347+
add_math_entrypoint_object(ufromfpxf16)
347348
add_math_entrypoint_object(ufromfpxf128)

libc/src/math/generic/CMakeLists.txt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2758,6 +2758,19 @@ add_entrypoint_object(
27582758
-O3
27592759
)
27602760

2761+
add_entrypoint_object(
2762+
ufromfpxf16
2763+
SRCS
2764+
ufromfpxf16.cpp
2765+
HDRS
2766+
../ufromfpxf16.h
2767+
DEPENDS
2768+
libc.src.__support.macros.properties.types
2769+
libc.src.__support.FPUtil.nearest_integer_operations
2770+
COMPILE_OPTIONS
2771+
-O3
2772+
)
2773+
27612774
add_entrypoint_object(
27622775
ufromfpxf128
27632776
SRCS

libc/src/math/generic/ufromfpxf16.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//===-- Implementation of ufromfpxf16 function ----------------------------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#include "src/math/ufromfpxf16.h"
10+
#include "src/__support/FPUtil/NearestIntegerOperations.h"
11+
#include "src/__support/common.h"
12+
13+
namespace LIBC_NAMESPACE {
14+
15+
LLVM_LIBC_FUNCTION(float16, ufromfpxf16,
16+
(float16 x, int rnd, unsigned int width)) {
17+
return fputil::fromfpx</*IsSigned=*/false>(x, rnd, width);
18+
}
19+
20+
} // namespace LIBC_NAMESPACE

libc/src/math/ufromfpxf16.h

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//===-- Implementation header for ufromfpxf16 -------------------*- C++ -*-===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#ifndef LLVM_LIBC_SRC_MATH_UFROMFPXF16_H
10+
#define LLVM_LIBC_SRC_MATH_UFROMFPXF16_H
11+
12+
#include "src/__support/macros/properties/types.h"
13+
14+
namespace LIBC_NAMESPACE {
15+
16+
float16 ufromfpxf16(float16 x, int rnd, unsigned int width);
17+
18+
} // namespace LIBC_NAMESPACE
19+
20+
#endif // LLVM_LIBC_SRC_MATH_UFROMFPXF16_H

libc/test/src/math/smoke/CMakeLists.txt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1140,6 +1140,18 @@ add_fp_unittest(
11401140
libc.src.math.ufromfpxl
11411141
)
11421142

1143+
add_fp_unittest(
1144+
ufromfpxf16_test
1145+
SUITE
1146+
libc-math-smoke-tests
1147+
SRCS
1148+
ufromfpxf16_test.cpp
1149+
HDRS
1150+
UfromfpxTest.h
1151+
DEPENDS
1152+
libc.src.math.ufromfpxf16
1153+
)
1154+
11431155
add_fp_unittest(
11441156
ufromfpxf128_test
11451157
SUITE

libc/test/src/math/smoke/UfromfpxTest.h

Lines changed: 40 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -87,9 +87,9 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
8787
FE_INEXACT);
8888
EXPECT_FP_EQ_WITH_EXCEPTION(T(11.0), func(T(10.65), FP_INT_UPWARD, 4U),
8989
FE_INEXACT);
90-
EXPECT_FP_EQ_WITH_EXCEPTION(T(1235.0), func(T(1234.38), FP_INT_UPWARD, 11U),
90+
EXPECT_FP_EQ_WITH_EXCEPTION(T(124.0), func(T(123.38), FP_INT_UPWARD, 7U),
9191
FE_INEXACT);
92-
EXPECT_FP_EQ_WITH_EXCEPTION(T(1235.0), func(T(1234.96), FP_INT_UPWARD, 11U),
92+
EXPECT_FP_EQ_WITH_EXCEPTION(T(124.0), func(T(123.96), FP_INT_UPWARD, 7U),
9393
FE_INEXACT);
9494
}
9595

@@ -114,13 +114,13 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
114114
FE_INVALID);
115115
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-10.65), FP_INT_UPWARD, 3U),
116116
FE_INVALID);
117-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(1234.38), FP_INT_UPWARD, 10U),
117+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(123.38), FP_INT_UPWARD, 6U),
118118
FE_INVALID);
119-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-1234.38), FP_INT_UPWARD, 32U),
119+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-123.38), FP_INT_UPWARD, 32U),
120120
FE_INVALID);
121-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(1234.96), FP_INT_UPWARD, 10U),
121+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(123.96), FP_INT_UPWARD, 6U),
122122
FE_INVALID);
123-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-1234.96), FP_INT_UPWARD, 32U),
123+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-123.96), FP_INT_UPWARD, 32U),
124124
FE_INVALID);
125125
}
126126

@@ -141,10 +141,10 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
141141
FE_INEXACT);
142142
EXPECT_FP_EQ_WITH_EXCEPTION(T(10.0), func(T(10.65), FP_INT_DOWNWARD, 4U),
143143
FE_INEXACT);
144-
EXPECT_FP_EQ_WITH_EXCEPTION(
145-
T(1234.0), func(T(1234.38), FP_INT_DOWNWARD, 11U), FE_INEXACT);
146-
EXPECT_FP_EQ_WITH_EXCEPTION(
147-
T(1234.0), func(T(1234.96), FP_INT_DOWNWARD, 11U), FE_INEXACT);
144+
EXPECT_FP_EQ_WITH_EXCEPTION(T(123.0), func(T(123.38), FP_INT_DOWNWARD, 7U),
145+
FE_INEXACT);
146+
EXPECT_FP_EQ_WITH_EXCEPTION(T(123.0), func(T(123.96), FP_INT_DOWNWARD, 7U),
147+
FE_INEXACT);
148148
}
149149

150150
void testFractionsDownwardOutsideRange(UfromfpxFunc func) {
@@ -168,13 +168,13 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
168168
FE_INVALID);
169169
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-10.65), FP_INT_DOWNWARD, 32U),
170170
FE_INVALID);
171-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(1234.38), FP_INT_DOWNWARD, 10U),
171+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(123.38), FP_INT_DOWNWARD, 6U),
172172
FE_INVALID);
173-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-1234.38), FP_INT_DOWNWARD, 32U),
173+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-123.38), FP_INT_DOWNWARD, 32U),
174174
FE_INVALID);
175-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(1234.96), FP_INT_DOWNWARD, 10U),
175+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(123.96), FP_INT_DOWNWARD, 6U),
176176
FE_INVALID);
177-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-1234.96), FP_INT_DOWNWARD, 32U),
177+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-123.96), FP_INT_DOWNWARD, 32U),
178178
FE_INVALID);
179179
}
180180

@@ -202,9 +202,9 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
202202
EXPECT_FP_EQ_WITH_EXCEPTION(T(10.0), func(T(10.65), FP_INT_TOWARDZERO, 4U),
203203
FE_INEXACT);
204204
EXPECT_FP_EQ_WITH_EXCEPTION(
205-
T(1234.0), func(T(1234.38), FP_INT_TOWARDZERO, 11U), FE_INEXACT);
205+
T(123.0), func(T(123.38), FP_INT_TOWARDZERO, 7U), FE_INEXACT);
206206
EXPECT_FP_EQ_WITH_EXCEPTION(
207-
T(1234.0), func(T(1234.96), FP_INT_TOWARDZERO, 11U), FE_INEXACT);
207+
T(123.0), func(T(123.96), FP_INT_TOWARDZERO, 7U), FE_INEXACT);
208208
}
209209

210210
void testFractionsTowardZeroOutsideRange(UfromfpxFunc func) {
@@ -222,13 +222,13 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
222222
FE_INVALID);
223223
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-10.65), FP_INT_TOWARDZERO, 32U),
224224
FE_INVALID);
225-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(1234.38), FP_INT_TOWARDZERO, 10U),
225+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(123.38), FP_INT_TOWARDZERO, 6U),
226226
FE_INVALID);
227-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-1234.38), FP_INT_TOWARDZERO, 32U),
227+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-123.38), FP_INT_TOWARDZERO, 32U),
228228
FE_INVALID);
229-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(1234.96), FP_INT_TOWARDZERO, 10U),
229+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(123.96), FP_INT_TOWARDZERO, 6U),
230230
FE_INVALID);
231-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-1234.96), FP_INT_TOWARDZERO, 32U),
231+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-123.96), FP_INT_TOWARDZERO, 32U),
232232
FE_INVALID);
233233
}
234234

@@ -252,9 +252,9 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
252252
EXPECT_FP_EQ_WITH_EXCEPTION(
253253
T(11.0), func(T(10.65), FP_INT_TONEARESTFROMZERO, 4U), FE_INEXACT);
254254
EXPECT_FP_EQ_WITH_EXCEPTION(
255-
T(1234.0), func(T(1234.38), FP_INT_TONEARESTFROMZERO, 11U), FE_INEXACT);
255+
T(123.0), func(T(123.38), FP_INT_TONEARESTFROMZERO, 7U), FE_INEXACT);
256256
EXPECT_FP_EQ_WITH_EXCEPTION(
257-
T(1235.0), func(T(1234.96), FP_INT_TONEARESTFROMZERO, 11U), FE_INEXACT);
257+
T(124.0), func(T(123.96), FP_INT_TONEARESTFROMZERO, 7U), FE_INEXACT);
258258
}
259259

260260
void testFractionsToNearestFromZeroOutsideRange(UfromfpxFunc func) {
@@ -281,13 +281,13 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
281281
EXPECT_FP_EQ_WITH_EXCEPTION(
282282
aNaN, func(T(-10.65), FP_INT_TONEARESTFROMZERO, 32U), FE_INVALID);
283283
EXPECT_FP_EQ_WITH_EXCEPTION(
284-
aNaN, func(T(1234.38), FP_INT_TONEARESTFROMZERO, 10U), FE_INVALID);
284+
aNaN, func(T(123.38), FP_INT_TONEARESTFROMZERO, 6U), FE_INVALID);
285285
EXPECT_FP_EQ_WITH_EXCEPTION(
286-
aNaN, func(T(-1234.38), FP_INT_TONEARESTFROMZERO, 32U), FE_INVALID);
286+
aNaN, func(T(-123.38), FP_INT_TONEARESTFROMZERO, 32U), FE_INVALID);
287287
EXPECT_FP_EQ_WITH_EXCEPTION(
288-
aNaN, func(T(1234.96), FP_INT_TONEARESTFROMZERO, 10U), FE_INVALID);
288+
aNaN, func(T(123.96), FP_INT_TONEARESTFROMZERO, 6U), FE_INVALID);
289289
EXPECT_FP_EQ_WITH_EXCEPTION(
290-
aNaN, func(T(-1234.96), FP_INT_TONEARESTFROMZERO, 32U), FE_INVALID);
290+
aNaN, func(T(-123.96), FP_INT_TONEARESTFROMZERO, 32U), FE_INVALID);
291291
}
292292

293293
void testFractionsToNearestWithinRange(UfromfpxFunc func) {
@@ -311,10 +311,10 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
311311
FE_INEXACT);
312312
EXPECT_FP_EQ_WITH_EXCEPTION(T(11.0), func(T(10.65), FP_INT_TONEAREST, 4U),
313313
FE_INEXACT);
314-
EXPECT_FP_EQ_WITH_EXCEPTION(
315-
T(1234.0), func(T(1234.38), FP_INT_TONEAREST, 11U), FE_INEXACT);
316-
EXPECT_FP_EQ_WITH_EXCEPTION(
317-
T(1235.0), func(T(1234.96), FP_INT_TONEAREST, 11U), FE_INEXACT);
314+
EXPECT_FP_EQ_WITH_EXCEPTION(T(123.0), func(T(123.38), FP_INT_TONEAREST, 7U),
315+
FE_INEXACT);
316+
EXPECT_FP_EQ_WITH_EXCEPTION(T(124.0), func(T(123.96), FP_INT_TONEAREST, 7U),
317+
FE_INEXACT);
318318

319319
EXPECT_FP_EQ_WITH_EXCEPTION(T(2.0), func(T(2.3), FP_INT_TONEAREST, 2U),
320320
FE_INEXACT);
@@ -351,13 +351,13 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
351351
FE_INVALID);
352352
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-10.65), FP_INT_TONEAREST, 32U),
353353
FE_INVALID);
354-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(1234.38), FP_INT_TONEAREST, 10U),
354+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(123.38), FP_INT_TONEAREST, 6U),
355355
FE_INVALID);
356-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-1234.38), FP_INT_TONEAREST, 32U),
356+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-123.38), FP_INT_TONEAREST, 32U),
357357
FE_INVALID);
358-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(1234.96), FP_INT_TONEAREST, 10U),
358+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(123.96), FP_INT_TONEAREST, 6U),
359359
FE_INVALID);
360-
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-1234.96), FP_INT_TONEAREST, 32U),
360+
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(-123.96), FP_INT_TONEAREST, 32U),
361361
FE_INVALID);
362362

363363
EXPECT_FP_EQ_WITH_EXCEPTION(aNaN, func(T(2.3), FP_INT_TONEAREST, 1U),
@@ -414,10 +414,10 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
414414
T(11.0), func(T(10.65), UNKNOWN_MATH_ROUNDING_DIRECTION, 4U),
415415
FE_INEXACT);
416416
EXPECT_FP_EQ_WITH_EXCEPTION(
417-
T(1234.0), func(T(1234.38), UNKNOWN_MATH_ROUNDING_DIRECTION, 11U),
417+
T(123.0), func(T(123.38), UNKNOWN_MATH_ROUNDING_DIRECTION, 7U),
418418
FE_INEXACT);
419419
EXPECT_FP_EQ_WITH_EXCEPTION(
420-
T(1235.0), func(T(1234.96), UNKNOWN_MATH_ROUNDING_DIRECTION, 11U),
420+
T(124.0), func(T(123.96), UNKNOWN_MATH_ROUNDING_DIRECTION, 7U),
421421
FE_INEXACT);
422422

423423
EXPECT_FP_EQ_WITH_EXCEPTION(
@@ -459,16 +459,14 @@ class UfromfpxTestTemplate : public LIBC_NAMESPACE::testing::FEnvSafeTest {
459459
aNaN, func(T(-10.65), UNKNOWN_MATH_ROUNDING_DIRECTION, 32U),
460460
FE_INVALID);
461461
EXPECT_FP_EQ_WITH_EXCEPTION(
462-
aNaN, func(T(1234.38), UNKNOWN_MATH_ROUNDING_DIRECTION, 10U),
463-
FE_INVALID);
462+
aNaN, func(T(123.38), UNKNOWN_MATH_ROUNDING_DIRECTION, 6U), FE_INVALID);
464463
EXPECT_FP_EQ_WITH_EXCEPTION(
465-
aNaN, func(T(-1234.38), UNKNOWN_MATH_ROUNDING_DIRECTION, 32U),
464+
aNaN, func(T(-123.38), UNKNOWN_MATH_ROUNDING_DIRECTION, 32U),
466465
FE_INVALID);
467466
EXPECT_FP_EQ_WITH_EXCEPTION(
468-
aNaN, func(T(1234.96), UNKNOWN_MATH_ROUNDING_DIRECTION, 10U),
469-
FE_INVALID);
467+
aNaN, func(T(123.96), UNKNOWN_MATH_ROUNDING_DIRECTION, 6U), FE_INVALID);
470468
EXPECT_FP_EQ_WITH_EXCEPTION(
471-
aNaN, func(T(-1234.96), UNKNOWN_MATH_ROUNDING_DIRECTION, 32U),
469+
aNaN, func(T(-123.96), UNKNOWN_MATH_ROUNDING_DIRECTION, 32U),
472470
FE_INVALID);
473471

474472
EXPECT_FP_EQ_WITH_EXCEPTION(
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
//===-- Unittests for ufromfpxf16 -----------------------------------------===//
2+
//
3+
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
//===----------------------------------------------------------------------===//
8+
9+
#include "UfromfpxTest.h"
10+
11+
#include "src/math/ufromfpxf16.h"
12+
13+
LIST_UFROMFPX_TESTS(float16, LIBC_NAMESPACE::ufromfpxf16)

0 commit comments

Comments
 (0)